基于EDA技术的单片机IP核设计

发布者:二进制游侠最新更新时间:2011-12-20 关键字:电子设计自动化  知识产权核  设计 手机看文章 扫描二维码
随时随地手机看文章

1.   引言

EDA(Electronic Design Automatic),简单的说就是通过有关的开发软件,自动完成用软件的方式设计的电子系统到最终形成集成电子系统或专用集成芯片的一门新技术。其中, EDA关键技术之一就是可以用硬件描述语言(HDL)来描述具有广泛应用前景、且具备自主知识产权的IP核(Intellectual Property)。这种IP核具有很高的通用性和灵活性,可以通过软件编程完成不同特定的功能,可以任意使用在各种嵌入式微控制系统中。嵌入式IP核的应用,由于重用设计思想、设计知识,极大地降低了设计成本,缩短了设计周期,成为当今片上系统(SoC)的重要设计手段。【1】

MCS-51系列单片机是目前国内应用时间最长、最普及、可获得应用资料最多的功能强大的8位MCU,建立兼容MCS-51单片机IP核对于各种嵌入式系统和SoC的应用具有重要意义。针对MCS-51单片机的应用前景,笔者成功设计了与MCS-51系列微处理器指令集完全兼容且功能更强的8位嵌入式微处理器芯片,通过IP核重用技术,可广泛应用在各种SoC中。

2.系统简介

本课题采用Altera公司的MAX+plusⅡ10.0设计平台,以超高速集成电路硬件描述语言VHDL为系统逻辑描述的唯一表达方式,采用自顶向下的设计原则,对MCS-51单片机进行反相设计。同时选用 Altera 公司的 ACEX系列器件来实现最终的IP核。由于篇幅的关系,笔者不打算对开发平台、开发工具以及最终实现硬件电路的FPGA芯片进行介绍,而是着重介绍整体的设计思想。图1是本课题进行设计的顶层设计层次图。实线部分是MCS-51单片机的内核部分,虚线部分是外围存储电路部分。下面介绍各部分的实现方法。


                          图1   MCS-51单片机顶层设计层次图

3.系统现实

3.1 算术逻辑单元(ALU)的实现

算术、逻辑运算模块的功能是按照控制单元给出的指令,对来自数据存储器、程序存储器、累加器A以及程序状态字的相关位的数据,进行相关的算术和逻辑运算。图2是用VHDL语言对ALU模块进行描述的设计层次图。由图中可以看出整个ALU由6个模块组成:加/减法器,乘法器、除法器、十进制调整器、逻辑运算器以及一个多路选择器。其中加/减法器又可以分成两个子模块。本模块将用较为简单的纯组合逻辑电路来实现。限于篇幅,具体的实现不再赘述,请读者参阅参考文献【2】。

          
                             图 2  ALU设计层次图

3.2定时器/计数器(Timer/Counter)模块的实现

分析MCS-51单片机的定时器/计数器的功能和原理可知,本单元将必须以时序逻辑电路的方式来实现。图3中的左图就是本模块设计完成后形成的符号文件。图中的输入除时钟CLK、复位RESET、外部中断0 INT0_I和外部中断1 INT1_I直接来自芯片的外部输入之外,其余的输入信号全部来自控制器。其中的RELOAD_I[7 to 0]、WT_EN以及WT_I[7 to 0]用于重写定时器/计数器内部寄存器。所有的输出信号全部送往控制器,用于及时更新特殊功能寄存器的内容。

定时器/计数器的两种工作方式决定了要设计好定时器/计数器首先必须设计一个分频器和两个(因为有两个定时器/计数器)负跳变的检测器。负跳变的检测器,可以用一个双稳态的触发器来实现;分频器的实质是计数器。触发器和计数器都是时序逻辑电路中的基本单元,VHDL语言的实现方法请读者参考相关书籍【1】。因此本设计实体的结构体将由3个进程来实现。除了分频器和两个负跳变的检测器各占用一个进程外,第三个进程用于实现时器/计数器的四种工作模式。对定时器/计数器的各种工作于模式的原理分析可知,要实现这样一个电路,其VHDL语言的结构体应该包括两个大的部分:一是置中断标志位,二是改变计数寄存器的值。同时,改变计数寄存器的值又可以细分为两块——写高8位寄存器和写低8位寄存器。各个进程之间相互关联,内部信号将作为进程之间传输信息的纽带。[page]


                 图 3  8051_tmrctr和8051_siu的符号文件图

3.3串行接口模块

MC5—51单片机的串行接口既可以作通用异步接收和发送器(UART)用,又可以作同步移位寄存器用。图3中的右图就是本模块设计完成后形成的符号文件。由于本设计不支持I/O口的复用,所以为串行口工作于模式0下增加了RXD_O和RXDWR两个输出引脚,前者用于输出,后者为输出有效控制位。串行口控制寄存器SCON在设计中也被分成两部分,一部分接收来自控制器的输入(一共6位,SM0、SM1、SM2、REN、TB8和RI),一部分作为输出送往控制器(一共3位,RB8以及分别指示发送和接收完毕的两位,控制器会根据这两位来对中断标志置位)。至于发送中断标志位TI,由于其不会影响串行口的工作过程所以在此并未列出,它将在控制器中得到体现。

串行口有四种工作方式,方式0和方式2是对时钟频率分频的结果;方式1和方式3的波特率是对定时器/计数器1的溢出率进行分频。由此可见,首先必须要解决的问题就是设计分频器。由于在方式0下,串行口是作半双工的同步移位寄存器使用,其发送和接收的波特率是一样的,因此对于方式0,串行口内部的分频信号只需要一路即可。但是对于其他方式,串行口均是工作在全双工的状态下,因此,每种方式下均需要两路分频信号。分频器的设计在上已经述及,在此不加赘述。对于方式1和方式3,其分频的对象都是定时器/计数器1的溢出率,且分频的系数是一样的。由于串行口只有一个,它不可能同时工作在方式1和3,因此方式1和方式3可以共用分频信号。要对定时器/计数器1的溢出率进行分频,首先必须测出其频率,为此需要一个上升沿的检测器来监测外部输入的定时器/计数器1的溢出信号(图3中的右图中的TF_I引脚),这样的检测器同样可以用双稳态触发器来实现。检测器在监测到TF_I引脚的上升沿时就使其输出信号保持一个时钟周期的高电平,再来另外设计计数器对此高电平进行计数,以达到对其分频的效果。

除了作为同步移位寄存器的方式0外,其他的三种方式在接收外部输入的时候均需要对外部的输入信号采样监测以确定信号的值。因此一个位检测器是必需的。同时,串行口工作在方式1、方式2和方式3时,每一个接收的数据帧都有一个起始位,这个起始位被固定为0,也就是说在输入端RXD_I监测到1到0的负跳变就会启动接收过程(注:负跳变检测器对外部输入引脚的采样频率为波特率的16倍)。位检测器的设计原理是把一个接收位的时间分为16等分(以内部计数器的16个状态来表示),在计数器的7、8、9状态时,位检测器对外部输入端的值进行采样。采用3取2的表决方法来抑制噪声。如果位检测器检测到接收的第一位不是0,那么就说明它不是一帧数据的起始位,应该摈弃,接收电路复位。

至于接收和发送,这里采用有限状态机的方式来实现。由于要工作在全双工模式下,所以接收和发送要采用两个有限状态机,有限状态机的每一个状态用来发送/接收移位数据,发送和接收的具体实现方式是移位【3】。移位的时钟来自上面所述的分频器,也就是根据各自的波特率进行。限于篇幅,在此不再详述。

3.4控制器模块

控制器的设计是MCS-51单片机IP核设计中最复杂的部分,也是设计中最重要的组成模块。控制器的将分为两个模块来实现。一个模块(在此命名为control_mem)主要用于与存储器(包括内部RAM,特殊功能寄存器SFR,外部RAM以及程序存储器)的控制。另一个模块(在此命名为control_fsm)主要用来实现指令系统。control_mem以时序电路的方式来实现,它的作用是根据状态机传来的各种控制指令来对相应的存储器进行操作。本状态机的主控时序进程是control_mem模块中的一个以时序逻辑电路现实的进程。它的启动由control_mem模块的相应输出信号来实现,启动后每经过已过状态,其输出的信号就会部分改变,这些改变就会指示control_mem下一步的动作,如此周而复始。下面简要介绍一下二者的实现原理。

control_mem模块的主要任务是根据状态机的相应指令,实现对存储器的相应操作。其总共要完成7个任务(7个任务分别以7个进程来实现,除前3个以时序逻辑电路的方式来实现外,后面的4个进程全部是以组合逻辑电路的方式来实现的。),分别是:

1.监测各个中断源的变化。使指示中断源有变化的相应信号位置位。监测外部引脚的变化的方法,一个简单的双稳态触发器就可以实现。

2.根据状态机的指令写一些用户没有直接地址的芯片内部辅助寄存器。它主要的作用是作为状态机的主控进程,同时它也会根据状态机的状态置位相应的内部辅助寄存器(例如:指示高、低优先级的中断是否正在运行的寄存器等)。同时,取指令也是在本进程中实现的。

3.写内部RAM和SFR,包括写“字节”和写“位”。它由时序逻辑电路来实现,写“位”和写“字节”的控制信号由状态机给出,每次写操作均由时钟上升沿触发。

4.根据检测中断源的变化的结果,在必要时向状态机发送中断请求类别指示信号。它是一个纯组合逻辑电路,进程1中一旦监测到中断源有变化,它的输出信号(与状态机相连接)就会改变,从而指示状态机进入中断。

[page]

5.读内部RAM和SFR,包括读“字节”和读“位”。此进程为一纯组合逻辑电路。RAM和SFR任何单元的内容的改变均可以启动该进程,同时地址信号也是进程的敏感信号之一。每一次读的过程会读到两个值,一个是“字节”数据,一个是“位”数据,至于状态机在指令的执行过程中会使用“字节”数据还是“位”数据,由状态机根据当前指令自己决定。

6.根据状态机发出的各种多路选择器的值,输出相应的地址和数据的值。多路选择器的作用是根据状态机的指示,即时的输出内部RAM的地址、内部RAM数据(包括“位”数据和“字节”数据)、外部RAM的地址等。

7.计算下一个指令指针的值。它根据状态机的指示,实现对程序计数器值的改写。

control_fsm模块的作用则很单一,就是实现指令系统。不过需要说明的是,这个状态机在接收到来自control_mem模块的有关中断源有变化的信号时,它会优先发出控制指令,指示control_mem模块改变指令指针的值,进入中断。没有中断发生的时候,它就会根据程序存储器的指令来运作。关于指令状态机的设计细节读者可以参阅参考文献【4】。

3.5.外围存储器模块的实现

由于对存储器容量在不同的场合有不同的要求,且实现的方式多种多样,故本设计才把整个设计分为MCS-51内核和存储器两个大的部分。这样做一方面可以方便裁减,使IP核可以在更多的可编程器件上综合;另外实现起来也相对容易。

MAX+ plusⅡ中为了增加原件库的灵活性,为一些常用的功能模块提供了参数化的元件,这些元件的规模以及具体功能可以由用户直接指定,如同可编程元件。这一类元件就是MAX+ plusⅡ中的LPM,即——可调参数元件。利用LPM所提供的RAM、ROM例化设计文件,设计实现了128字节内部RAM和4k ROM模块,其中ROM模块是一个空结构实体,在有内部程序时换成相应的结构。内部程序必须以ASCII码形式或十六进制形式的文件写入,表明每个地址的初始值,用于设计的仿真和综合。

4.功能仿真

下面通过几条简单的指令,来对所设计的IP核进行软件仿真。几条仿真的指令助记符和指令的操作码、操作数、字节数、周期数如下表1所示。仿真的结果如图5所示。图中rom_data_i表示的程序存储器中的数据;rom_adr_o是程序计数器PC的值;state_i为芯片内部信号,指示的是指令执行的状态,“7”表示在取指令状态,其他值为执行状态。acc_o是内部寄存器ACC的值。从图中可以清楚的看到各信号的变化。

                            表1 仿真指令表

指令助记符

操作码

操作数

指令字节

指令周期

AJMP FFH

01H

FFH

2

2

CPL

F4H

/

1

1

MOV A,#23H

74H

23H

2

2

MOV R0,A

F8H

/

1

1

MOV23H,#05H

75H

23H,5H

3

3

ADDC A, @R0

36H

/

1

2


                            图4 8051-Core软件仿真图

5 结束语

嵌入式微处理器具有广泛的应用前景,特别是随着信息技术的发展,信息安全性和可靠性正逐步受到人们的重视。在FPGA的可用门和性能对高档功能的支持中,IP核的价值正在充分展现。IP核已成为有效地进行大规模设计和缩短设计时间的基础。因此,积极开发具有自主知识产权的IP模块,在SoC领域占有一席之地,即符合我国国情,有具有重要意义。本课题设计出的MSC-51系列单片机IP核不仅通过了软件仿真,而且其功能已经通过了硬件测试,所以其不仅是一个成熟的软IP核,也是一个成熟的硬IP核。

本项目经济效益:本IP核主要应用于SoC中,向相关有偿机构购买类似IP核一次的使用价格在3美元左右,但是附带开发工具在300美元左右,本IP核完全利用免费版本的MAX+plusⅡ进行设计以及后期使用,因此若本IP核应用3000次,那么项目的经济效益在8万元左右。

本文作者创新点:本次要设计的兼容MCS-51单片机IP核有以下特色:1.完全同步的设计,系统在统一的时钟下工作。2.指令集与工业标准的MCS-51系列单片机完全兼容。3.指令周期较原MCS-51系列大幅提高,所有指令都可在1到4个时钟周期内完成,时钟周期只与所选用的FPGA/CPLD芯片的延时有关,而与设计无关。4.没有复用的I/O口。5.IP核升级方便,对于不需要的部件可以任意裁减。

 

 

关键字:电子设计自动化  知识产权核  设计 引用地址:基于EDA技术的单片机IP核设计

上一篇:基于AT89S52单片机的多功能音乐播放器
下一篇:基于51单片机的脑波治疗仪研制

推荐阅读最新更新时间:2024-03-16 12:49

选择LED驱动电源设计应考虑的九大要素
根据电网的用电规则和LED驱动电源的特性要求,在选择和设计led驱动电源时要考虑到以下9大性能特点要求: 1、高可靠性,特别像LED路灯的驱动电源,装在高空,维修不方便,维修的花费也大。 2、高功率因素,功率因素是电网对负载的要求。一般70瓦以下的用电器,没有强制性指标。虽然功率不大的单个用电器功率因素低一点对电网的影响不大,但晚上大家点灯,同类负载太集中,会对电网产生较严重的污染。对于30瓦~40瓦的LED驱动电源,据说不久的将来,也许会对功率因素方面有一定的指标要求。 3、高效率,LED是节能产品,驱动电源的效率要高。对于电源安装在灯具内的结构,尤为重要。因为LED的发光效率随着LED温度的升高而下降,所以LE
[电源管理]
半导体技术如何改变汽车照明硬件设计线路图
汽车照明持续飞速发展。尽管LED光源可提高效率并具有独特的车辆风格,但原始设备制造商(OEM)现在正在实现新颖且有用的照明用例。在本技术文章中,我想重点介绍几种半导体技术,他们正在影响大灯、尾灯和内饰照明系统的路线图。 自适应大灯系统 自适应前灯系统和自适应远光大灯系统分别调整近光灯和远光灯的形状。尽管欧洲生产汽车都可使用自适应大灯,但美国汽车制造商无法使用这些高级灯。不过,这种情况可能很快就会改变。自适应系统使用大功率LED作为光源,这需要大功率LED驱动器来调节电流,并达到所需亮度。开关LED驱动器必须用于实现高效率,并实现用于热管理的两级功率处理拓扑。 第一级是升压稳压器。它管理变化较广的汽车输入电压,并创建
[汽车电子]
半导体技术如何改变汽车照明硬件<font color='red'>设计</font>线路图
笔记本电脑用LED背光组件的设计方案
  引言   随着LED 技术的发展,特别是发光效率的提高,节能、环保的LED 产品在显示领域的应用已越来越广泛。LED 封装、SMT 贴片、发光条制作均发展到较高水平,LED 背光制造和产业化水平也达到了相当高的水准。目前小尺寸产品市场需求大约以每年20% 的水平剧增,LED 背光在笔记本电脑上的应用已独领风骚,CCFL 背光在笔记本电脑上的应用将逐渐退出历史的舞台。目前全球大厂都在积极发展LED 背光产品,目前市场的主流笔记本电脑几乎全部采用LED 背光技术。   本文介绍了笔记本电脑用LED 背光组件的设计开发,分别从光学、电路、结构角度阐述了开发的过程。光学方面,采用STAMPER 技术,一体成型射出导光板,减少印刷环
[电源管理]
笔记本电脑用LED背光组件的<font color='red'>设计</font>方案
人机界面设计原则及设计思想
人机界面是计算机科学和认知心理学两大学科相结合的产物(变频器基础知识),同时也吸收了语言学、人机工程学和社会学等学科的研究成果。经过40余年的发展,已经成为一门以研究用户及其与计算机的关系为特征的主流学科之一(伺服驱动系统)。   人机界面(HumanComputerInterface,简称HCI)也可以称为用户界面或使用者界面,它是系统和用户之间进行交互和信息交换的媒介。利用人机界面可以实现信息的内部形式与人类可以接受形式之间的转换(伺服控制系统)。在实际生活中,凡参与人机信息交流的领域都存在着人机界面。那么什么是人机界面设计呢,人机界面设计原则有哪些呢?小编通过搜集整理资料对有关人机界面设计原则、设计思想及设计所包含的内容作了简
[嵌入式]
用ATmega8单片机设计串行编程器
  通常进行单片机实验和开发,编程器是必不可少的。仿真、调试完的程序要借助编程器写入单片机的存储器中,随着单片机技术的发展出现了MTP(可多次编程)存储器技术和ISP(在系统可编程)技术,这样就可以省去昂贵的仿真器,只要通过计算机接口和一条串行下载线就可直接在目标芯片上编程。ATmega8就是一种具有MTP与ISP功能的单片机,他也是AVR单片机中价格性能比最高的单片机,因此研究他的串行编程特性对利用他的上述功能来开发应用单片机有很高的实用价值。 1 ATmega8的体系结构与主要性能特点   ATmega8是ATMEL公司在2002年推出的一款新型的AVR高档单片机,他的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路
[单片机]
用ATmega8单片机<font color='red'>设计</font>串行编程器
基于ECL门电路的UWB信号发生器的设计
  0 引 言   超宽带(Ultra Wide Band,UWB)技术在通信时,不使用载波电路,而是通过发送纳秒级脉冲传输数据的,因此具有发射和接收电路简单,功耗低,多径分辨能力强,穿透力强,隐蔽性好,系统容量大,定位精度高,对现存通信系统影响小,传输速率快等优势。由于UWB技术具有这些优良独特的技术特性,该技术已普遍受到各国政府的高度重视。   UWB通信系统中必不可少的关键之一是如何产生高带宽信号。由于极窄脉冲含有丰富的频谱,因而产生足够窄的脉冲和适于信道传输的脉冲形状是UWB技术的研究热点和关键所在。从国内外对UWB技术的研究来看,目前已有的UWB脉冲信号实现方式基本上可分为两大类:一类是利用 模拟 器件来产生所需的极
[测试测量]
基于ECL门电路的UWB信号发生器的<font color='red'>设计</font>
胎压监测系统(TPMS)技术与设计考虑
TPMS对于提高汽车安全性有举足轻重的影响,轮胎是汽车和路面唯一直接接触的部分。轮胎过于膨胀或处于充气不足状态都会影响汽车安全性。有很多车祸都因轮胎出现状况而导致的。美国高速公路安全协会(NHTSA)也因此立法强制实施TPMS。 各种TPMS 系统技术和市场状况 目前TPMS主要有三种实现方式:直接TPMS系统、间接TPMS系统和正在推出的混合TPMS。 现在的间接TPMS是与车辆的防抱死系统(ABS)一起使用的。ABS采用车轮转速传感器测量每个车轮的转速。当一个轮胎的气压减小时,滚动半径就减小,而车轮的旋转速度就相应地加快。 这个比率可用下列等式来表达(见公式1)。 如果这个比率偏离设定的公差,一个或更多
[嵌入式]
蓝牙车载音频流播放器的设计与实现
    现在的车载信息娱乐系统中标准配置有带CD播放功能的收音机、液晶屏,其他可选配置有GPS和蓝牙免提装置等设备。随着蓝牙技术在音视频传输中的应用,一种可以增强用户娱乐体验的蓝牙音频流播放功能正逐步在车载信息娱乐系统中得到应用。蓝牙音频流播放功能是指将蓝牙MP3或蓝牙手机上的音乐通过蓝牙以流媒体的方式传输到远端设备上进行解码后通过远端设备的功放系统播放,同时远端设备还带有远程控制功能,使得用户可以在远端设备上操作音乐,使其暂停、播放、快进快退或进行上下首切换。笔者设计实现了一款蓝牙车载音频流播放器,该播放器和收音机及液晶屏之间通过CAN总线进行连接,控制操作在收音机上实现,液晶屏显示音乐的tagID3、播放时间、音轨、总音轨等信息
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved