收藏 分享(赏)

第六章 CPLDFPGA的常用设计.ppt

上传人:tkhy51908 文档编号:8011459 上传时间:2019-06-04 格式:PPT 页数:53 大小:3.67MB
下载 相关 举报
第六章 CPLDFPGA的常用设计.ppt_第1页
第1页 / 共53页
第六章 CPLDFPGA的常用设计.ppt_第2页
第2页 / 共53页
第六章 CPLDFPGA的常用设计.ppt_第3页
第3页 / 共53页
第六章 CPLDFPGA的常用设计.ppt_第4页
第4页 / 共53页
第六章 CPLDFPGA的常用设计.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、6.1 基本数学运算模块 6.2 分频器设计 6.3 存储模块设计 6.4 状态机设计,第六章 CPLD/FPGA的常用设计,6.1 基本数学运算模块,一、加法器二、减法器三、乘法器,6.1 基本数学运算模块,一、加法器加法是最基本的算术运算。无论减法、乘法、除法或其他运算最终都要分解为加法运算。加法器是数字电路中最常用最基本的算术运算单元电路。,6.1 基本数学运算模块,加法器的实现方法有很多,下面介绍几种常用的加法器设计方法。 1、串行进位加法器2、并行进位加法器3、流水线加法器,6.1 基本数学运算模块,1、串行进位加法器串行进位加法器是最简单的加法器结构,它是将多个一位全加器串联构成的

2、,其中前一级的进位输出作为后一级的进位输入,故该加法器又称为行(xing)波进位加法器。串行进位加法器的优点是结构简单,实现方便;缺点是速度慢,这是因为位数为N的加法运算会产生N-1级迟延,位数越多迟延越大。 例6-1,6.1 基本数学运算模块,例1:设计一个8位的串行进位加法器。设计8位串行进位加法器首先需要设计一个1位全加器,然后将八个1位全加器级联起来即可。全加器的设计采用结构化的设计方法。先设计一个半加器电路,然后由半加器和门电路构成全加器。半加器电路如图6-1所示。半加器电路有两个输入端a、b,两个输出端s、c。输入出之间的逻辑函数表达式为:sabcab全加器电路如图6-2所示。全加

3、器电路有三个输入端a、b、c,两个输出端sum、co。输入、输出之间的逻辑函数表达式为:sumabccoab十ac十bc,6.1 基本数学运算模块,6.1 基本数学运算模块,2、并行进位加法器并行进位加法器是预先将N位加法表存放在一个查找表中,然后使用操作数作为地址去访问查找表,来得到加法值。该加法器又称为查找型加法器。并行进位加法器的优点是速度快,只有一级延迟;缺点是当加法器位数较多时,查找表的容量太大,需要占用太多的存储单元。 例6-2,6.1 基本数学运算模块,设计一个2位加2位的并行加法器。,例,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; US

4、E IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder2 IS PORT(a,b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);ci:IN STD_LOGIC;sum:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);co:OUT STD_LOGIC); END adder2; ARCHITECTURE add OF adder2 ISSUBTYPE romword IS STD_LOGIC_VECTOR(2 DOWNTO 0);TYPE romtable IS ARR

5、AY (0 TO 15) OF romword;CONSTANT addertable:romtable:=(B“000“),(B“001“),(B“010“),(B“011“),(B“001“),(B“010“),(B“011“),(B“100“),6.1 基本数学运算模块,(B“010“),(B“011“),(B“100“),(B“101“),(B“011“),(B“100“),(B“101“),(B“110“);SIGNAL sumtemp:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINPROCESS(a,b,ci)VARIABLE com:STD_LOGIC_V

6、ECTOR(3 DOWNTO 0);BEGINcom:=a ,6.1 基本数学运算模块,2位加2位的并行加法器的时序仿真波形如图所示。,6.1 基本数学运算模块,3、流水线加法器流水线加法器是将每一步的运算结果都用寄存器锁存。尽管单个运算需要多个时钟周期才能得到结果,但是由于操作数是不断加到运算端的,所以总的效果是每个加法运算平均耗费的时间等于锁存时钟的周期。,6.1 基本数学运算模块,二、减法器减法运算实际上也是借助加法器来完成的。要完成减法运算a-b,实际上是将减法运算转换补码的加法运算来做的,即:a-b=a+(-b)补。 例6-5,6.1 基本数学运算模块,三、乘法器硬件乘法器也有许多设

7、计方法,常用的有:移位相加查询表逻辑树加法器树混合乘法器这5种乘法器各有优缺点。,6.1 基本数学运算模块,移位相加乘法器实现起来相对较简单,大多数的单片机和微处理器的乘法运算都采用这种方法,CPLD/FPGA器件也可采用此法。移位相加乘法器的优点是原理简单、易于实现;最大缺点是速度慢。,6.1 基本数学运算模块,设计一个8位乘8位的乘法器。,例,LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY multi8 ISPOR

8、T(clk:IN STD_LOGIC;x,y:IN INTEGER RANGE 0 TO 127;f:OUT INTEGER RANGE 0 TO 65535); END multi8; ARCHITECTURE multi OF multi8 ISTYPE statetype IS(st0,st1,st2);SIGNAL state:statetype;SIGNAL ytemp:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINp1:PROCESSVARIABLE preg,treg: INTEGER RANGE 0 TO 65535;VARIABLE count: IN

9、TEGER RANGE 0 TO 7;,6.1 基本数学运算模块,BEGINytemp state -乘法IF count=7 THENstate f=preg; -输出乘法结果state=st0;END CASE;END PROCESS; END multi;,6.1 基本数学运算模块,乘法器的仿真波形如图所示。,6.1 基本数学运算模块,查询表法是把乘积放在存储器中,使用被乘数和乘数组成的操作数作为地址访问存储器,得到的输出数据就是乘法运算的结果。对于位数不多的乘法器使用查询表法非常合适。该方法的缺点是随着操作数位数增多,查找表将会变得非常庞大。,6.1 基本数学运算模块,逻辑树的输出数据

10、的每一位都可以写成所有操作数的逻辑函数。该方法的速度和查找表一样快,但实现起来比较困难,因为乘法器需要占用很多资源,而逻辑器件的资源不一定能满足乘法运算的需要。,6.1 基本数学运算模块,加法器树乘法器由移位相加器和查询表组成。混合乘法器是利用存储部分乘积的小型查找表和加法器组合得到最后的乘积结果。例如完成一个8位乘8位AB的乘法运算,可将a分解为两个半字节AHAL,则乘法运算可改写为:AB=(AH24+AL)B= AH24B+ ALB。这就将8位乘法运算转化为两个4位的乘法运算,从而缩小了乘法查找表的规模。这样实现一个8位乘法运算只需要两个2412位的查找表和一个16位加法器即可。注意在用该

11、方法设计到最后进行加法运算时,必须对高位乘积进行加权,对低位乘积高位补0;此外还须注意在用CPLD/FPGA进行设计时,不同器件查找表的规模不同。,6.2 分频器设计,分频器就是对某个给定较高频率的信号进行分频操作,以期得到所需的较低频率的电路。分频器一般分为整数分频器和小数分频器。整数分频器分为偶数分频器和奇数分频器。在时钟源与所需的频率不成整数倍的场合下,采用小数分频器,此类分频器设计较整数分频器复杂。 一、偶数分频器设计二、奇数分频器设计三、半整数分频器设计,6.2 分频器设计,一、偶数分频器设计所谓偶数分频器就是指分频系数为偶数的分频器,即分频系数N=2n(n=1,2,)。若输入的信号

12、频率为f,那么分频器的输出信号的频率为f/2n(n=1,2,)。偶数分频器完全可以通过计数器计数来实现。 例6-6 6-7 6-8,6.2 分频器设计,例,设计一个分频系数分别为2、4和8的分频器。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt1 IS PORT(clk:IN STD_LOGIC;div2,div4,div8:OUT STD_LOGIC); END cnt1;,6.2 分频器设计,ARCHITE

13、CTURE divcnt OF cnt1 ISSIGNAL temp:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINPROCESS(clk)BEGINIF (clkEVENT AND clk=1) THENIF (temp=“111“) THENtemp0);ELSEtemp=temp+1;END IF;END IF;END PROCESS;div2=NOT temp(0);div4=NOT temp(1);div8= temp(2); END divcnt;,6.2 分频器设计,上述分频器的时序仿真波形如下图所示。,6.2 分频器设计,1占空比为1:1的偶数分频器例6

14、:设计一个分频系数分别为2(21)、4(22)和8(23)的分频器。例7:设计一个分频系数是6的分频器。2占空比不为1:1的偶数分频器例8:设计一占空比为1:3的6分频电路。,6.2 分频器设计,二、奇数分频器设计所谓奇数分频器就是指分频系数为奇数的分频器,即分频系数N=2n+1(n=1,2,)。若输入的信号频率为f,那么分频器的输出信号的频率为f/(2n+1)(n=1,2,)。奇数分频器完全可以通过计数器计数来实现。,6.2 分频器设计,例,设计一个占空比为12的3分频电路。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LO

15、GIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt4 IS PORT(clk:IN STD_LOGIC;div3:OUT STD_LOGIC); END cnt4; ARCHITECTURE divcnt OF cnt4 ISSIGNAL temp:STD_LOGIC_VECTOR(1 DOWNTO 0);CONSTANT cst:STD_LOGIC_VECTOR(1 DOWNTO 0):=“10“;,6.2 分频器设计,BEGINp1:PROCESS(clk)BEGINIF (clkEVENT AND clk=1) THENI

16、F (temp=cst) THENtemp0);ELSEtemp=temp+1;END IF;END IF;END PROCESS;p2:PROCESS(clk)BEGINIF (clkEVENT AND clk=1) THENIF (temp1) THENdiv3=1;ELSEdiv3=0;END IF;END IF;END PROCESS; END divcnt;,6.2 分频器设计,上述分频器的时序仿真波形如下图所示。,6.2 分频器设计,6.2 分频器设计,三、半整数分频器设计半整数分频器的设计相对整数分频器要复杂。它的实现方法是:首先需要设计一个计数器,计数器的模为分频系数的整数部分

17、加1;然后设计一个扣除脉冲的电路,并把它加在计数器的输出之后;这样便可以得到任意半整数的分频器。,6.2 分频器设计,例,设计一个分频系数为2.5的分频器。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt6 IS PORT(clk:IN STD_LOGIC;div25:OUT STD_LOGIC); END cnt6; ARCHITECTURE divcnt OF cnt6 ISCONSTANT cst:STD

18、_LOGIC_VECTOR(1 DOWNTO 0):=“11“;SIGNAL temp:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL clktemp,div2,divtemp:STD_LOGIC;,6.2 分频器设计,BEGINclktemp=clk xor div2;p1:PROCESS(clktemp)BEGINIF (clktempEVENT AND clktemp=1) THENIF (temp=0) THENtemp=cst-1;divtemp=1;ELSEtemp=temp-1;divtemp=0;END IF;END IF;END PROCESS;p2:

19、PROCESS(divtemp)BEGINIF (divtempEVENT AND divtemp=1) THENdiv2=not div2;END IF;END PROCESS;div25=divtemp; END divcnt;,6.2 分频器设计,上述分频器的时序仿真波形如下图所示。,6.3 存储模块设计,一、只读存储器(ROM)二、随机存储器(RAM)三、顺序存取存储器(SAM),6.3 存储模块设计,一、只读存储器(ROM)只读存储器是一种重要的时序逻辑存储电路,它的逻辑功能是在地址信号的选择下从指定的存储单元中读取相应的数据。由于只读存储器只能进行数据的读取而不能修改或写入新的数据

20、,因此它一般不能用来存储动态数据。,6.3 存储模块设计,ROM的设计通常有两种方法:一种是采用逻辑单元设计;另外一种是利用CPLD/FPGA中的EAB/ESB等嵌入式模块构成的LPM宏功能模块设计。只有具有EAB/ESB资源的可编程逻辑器件才支持用后一种方法设计的ROM。,注意,6.3 存储模块设计,二、随机存储器(RAM)随机存储器的逻辑功能是在地址信号的选择下对指定的存储单元进行相应的读写操作。随机存储器不仅可以读取数据,而且还可以进行存储数据的修改或重新写入,因此此类存储器常用于动态数据的存储。随机存储器的最大优点是可以方便读/写数据,但存在易失性的缺点,掉电后所存数据便会丢失。,6.

21、3 存储模块设计,三、顺序存取存储器(SAM)顺序存取存储器对信息的存入或取出是按顺序进行的,即具有“先入先出(FIFO)”或“先入后出(FILO)”的特点,此类存储器也称为队列或堆栈。FIFO是一种特殊功能的存储器,数据以到达FIFO输入端口的先后顺序依次存储在存储器中,并以相同的顺序从FIFO的输出端口送出。 FIFO在数字系统中有着十分广泛的应用,可以用作并行数据延迟线、数据缓冲存储器以及速率变换器等。,6.4 状态机设计,一、状态机的VHDL描述二、 状态机编码三、 状态机设计中需要注意的问题,6.4 状态机设计,一、状态机的VHDL描述用VHDL设计的状态机有多种形式。从输出信号的特

22、点可将状态机分为:摩尔(Moore)型状态机和米里(Mealy)型状态机。从结构上分为:单进程状态机和多进程状态机。从状态表达方式上分为:有符号化状态机和确定状态编码的状态机。从编码方式上分为:有顺序编码状态机、一位热码编码状态机和其他编码方式状态机。,6.4 状态机设计,状态机的结构模式相对简单,设计方案相对固定。这里给出状态机一种风格的完整VHDL描述。设计者可以以此为模板方便地进行有限状态机的设计。状态机的完整VHDL描述如下: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ISPORT(input: IN ; reset,clock

23、:IN STD_LOGIC; output:OUT ); END ; ARCHITECTURE OF ISTYPE state IS (state0,state1,state2,state3,);-状态说明部分SIGNAL current_state, next_state:state; BEGIN,6.4 状态机设计,IF (reset=1) THENcurrent_state IF (input=) THENoutput ;next_state =state1;ELSE .END IF;,6.4 状态机设计,WHEN state1=IF (input=) THENoutput ;next_

24、state IF (input=) THENoutput ;next_state ;,6.4 状态机设计,二、状态机编码状态机的状态编码方式有多种,具体采用哪一种需根据要设计的状态机的实际情况来确定。从编码方式上分为:有顺序编码状态机、一位热码编码状态机和其他编码方式状态机。,6.4 状态机设计,1顺序编码顺序编码是采用自然数的方式对状态机的状态进行编码。采用顺序编码方式的优点是编码方式简单;需要的触发器数量最少.缺点是尽管节省了触发器,却增加了从一种状态向另一种状态转换的译码组合逻辑,这对于在那些触发器资源丰富而组合逻辑资源相对较少的CPLD/FPGA器件中实现是不利的;此外该编码方式的速度

25、慢。,6.4 状态机设计,2一位热码编码一位热码编码方式是用n个触发器来实现具有n个状态的状态机,在这种编码方式下,每个状态都需要一个触发器.因此,它需要的触发器数量最多.在这种情况下,对n个状态编码就需要n个触发器。 一位热码编码的编码方式简单;并具有最快的状态转换速度.建议在CPLD/FPGA器件在寄存器资源比较多而组合逻辑资源较少的情况下采用此编码方式。此外,许多面向CPLD/FPGA设计的VHDL综合器都有将符号化状态机自动优化设置成为一位热码编码状态的功能。,6.4 状态机设计,3状态位直接输出型编码 状态位直接输出型编码方式是指状态机的状态位可以直接用于输出的编码方式。该编码方式要求状态位码的编制具有一定的规律。采用该编码方式可以节省器件资源。,6.4 状态机设计,三、 状态机设计中需要注意的问题在状态机设计中,有些状态在状态机的正常运行中是不需要出现的,通常称为剩余状态。 在器件上电的随机启动过程中,或在外界不确定的干扰或内部电路产生毛刺的作用下,状态机可能进入不可预测的非法状态而使状态机失控,或无法摆脱非法状态而失去正常的功能。这就需要对状态机的剩余状态进行处理。对于非法状态的处理,常用的方法是将状态变量改变为初始状态;自动复位;或将状态变量导向专门用于处理出错恢复的状态中。,6.4 状态机设计,第六章内容到此为止,课下请加强练习,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报