VHDL设计实例及分析.ppt

上传人:牧羊曲112 文档编号:5452206 上传时间:2023-07-08 格式:PPT 页数:67 大小:728.50KB
返回 下载 相关 举报
VHDL设计实例及分析.ppt_第1页
第1页 / 共67页
VHDL设计实例及分析.ppt_第2页
第2页 / 共67页
VHDL设计实例及分析.ppt_第3页
第3页 / 共67页
VHDL设计实例及分析.ppt_第4页
第4页 / 共67页
VHDL设计实例及分析.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《VHDL设计实例及分析.ppt》由会员分享,可在线阅读,更多相关《VHDL设计实例及分析.ppt(67页珍藏版)》请在三一办公上搜索。

1、第7讲 VHDL设计实例及分析,7.1组合逻辑单元的VHDL描述基本逻辑门的VHDL描述编码器、译码器和多路选通器的VHDL描述加法器和求补器的VHDL描述三态门及总线缓冲器7.2 时序电路的VHDL描述7.2.1时钟信号和复位信号7.2.2触发器7.2.3寄存器7.2.4计数器,7.1 组合逻辑单元的VHDL描述组合逻辑电路有基本逻辑门电路、编码器、译码器、多路选通器、三态门等。7.1.1 基本逻辑门的VHDL描述逻辑门电路是构成所有逻辑电路的基本电路,本节将通过二输入“与非”门、二输入“或非”门、反相器和二输入“异或”门等简单门电路的VHDL描述实例来介绍逻辑门电路的VHDL描述方法。,1

2、二输入“与非”门电路二输入“与非”门电路是逻辑门电路中最简单的,其逻辑电路图如图7.1所示。,图7.1 二输入“与非”门电路的逻辑电路图,利用VHDL描述二输入“与非”门有多种形式,如例7.1所示。,2二输入“或非”门电路二输入“或非”门电路的逻辑电路图如图7.2所示。,图7.2 二输入“或非”门电路的逻辑电路图,例7.2所示为用VHDL描述的二输入“或非”门电路的程序。,3反相器反相器电路的逻辑电路图如图7.3所示。,图7.3 反相器的逻辑电路图,例7.3所示为用VHDL描述的反相器的程序。,4二输入“异或”门电路二输入“异或”门电路的逻辑表达式如下:y=ab其逻辑电路图如图7.4所示。,图

3、7.4 二输入“异或”门电路的逻辑电路图,例7.4所示为用VHDL描述的二输入“异或”门的程序。,7.1.2 编码器、译码器和多路选通器的VHDL描述编码器、译码器和多路选通器是组合电路中较简单的3种通用电路,它们可以直接由简单的门电路组合连接而构成。通过门电路构造译码器过于复杂,如果使用VHDL进行行为级的描述就清楚多了,本节将介绍编码器、译码器和多路选通器的VHDL描述方式。,1优先级编码器优先级编码器常用于中断的优先级控制。当优先级编码器的某一个输入电平有效时,编码器输出一个对应的3位二进制编码。另外,当同时有多个输入有效时,将输出优先级最高的那个输入所对应的二进制编码。图7.7所示就是

4、最简单的优先级编码器的引脚图,它有8个输入D0D7和3位二进制输出A0A2。例7.5所示为用VHDL描述的优先级编码器的程序。,23-8译码器3-8译码器是一种常用的小规模集成电路,如图7.8所示。它有3位二进制输入端A、B、C和8位译码器输出端Y0Y7。对输入A、B、C的值进行译码,就可以确定输出端Y0Y7的某一个输出端变为有效(低电平),从而达到译码的目的。除了基本的输入、输出端口外,3-8译码器还有3个选通输入端G1、G2A和G2B。只有在G1=l,G2A=0,G2B=0时,3-8译码器才能进行正常译码,否则Y0Y7输出将均为高电平。例7.6所示为用VHDL描述的3-8译码器的程序。,3

5、4选1多路选通器多路选通器用于信号的切换。4选1多路选通器如图7.9所示,它用于4路信号的切换。4选1多路选通器有4个信号输入端input(0)input(3)、2个选择信号a和b及1个信号输出端y。当a、b输入不同的选择信号时,input(0)input(3)中某个相应的输入信号就与输出y端接通。,7.1.3 加法器和求补器的VHDL描述1加法器本小节将介绍关于加法器的结构级描述。多位的加法器由多个全加器和一个半加器构成。全加器可以用两个半加器构成。,2求补器在二进制的运算过程中,经常要用到求补的操作。8位二进制数的同步求补器引脚框图如图7.13所示。求补电路的输入为a(0)a(7),补码输

6、出为b(0)b(7),其中a(7)和b(7)为符号位,该电路结构较复杂,可以采用如例7.11所示的行为级的VHDL描述,其语句更加简洁、清楚。,7.1.4 三态门及总线缓冲器三态门和双向缓冲器是接口电路和总线驱动电路经常用到的器件。本小节将介绍三态门和总线缓冲器的VHDL描述方法。,1三态门的VHDL描述三态门的引脚框图如图7.14所示。它具有一个数据输入端din、一个数据输出端dout和一个控制端en。当en=1时,dout=din;当en=0时,dout=Z(高阻)。例7.12所示为用VHDL描述的三态门的程序。,2单向总线缓冲器单向总线缓冲器常用于微型计算机的总线驱动,通常由多个三态门并

7、列组成,用来驱动地址总线和控制总线。一个8位的单向总线缓冲器如图7.15所示,它由8个三态门组成,具有8个输入端和8个输出端,所有的三态门的控制端连在一起,由一个控制输入端en控制。,3双向总线缓冲器双向总线缓冲器用于对数据总线的驱动和缓冲。典型的双向总线缓冲器的引脚框图如图7.16所示。图中的双向总线缓冲器有两个数据输入/输出端a和b、一个方向控制端dir和一个选通端en。当en=1时,双向总线缓冲器未被选通,a和b都呈现高阻。当en=0时,双向总线缓冲器被选通。如果dr=0,那么ab;如果dir=1,那么ba。例7.14所示为用VHDL描述的双向总线缓冲器的程序。,7.2 时序电路的VHD

8、L描述与组合电路不同,时序电路的输出不仅取决于该时刻的输入信号,而且与电路的原状态有关。在时序电路中常常存在时钟信号和复位信号,时钟信号和复位信号的描述在时序电路的描述中至关重要,因此本节先介绍时钟信号和复位信号的描述。,7.2.1 时钟信号和复位信号1时钟信号的描述一般情况下,时序电路均以时钟信号为驱动信号,时序电路只是在时钟信号的驱动下运行,其状态才发生改变。因此,时钟信号通常是描述时序电路的程序的执行条件。时序电路也总是以时钟进程形式来进行描述的,其描述方式一般有两种。,(1)时钟信号作为进程的敏感信号。时钟信号应作为敏感信号,显式地出现在PROCESS语句后的敏感信号列表中。描述时钟脉

9、冲的上升沿可采用如下语句:clock_signalevent and clock_signal=1 同理,描述时钟脉冲的下降沿可采用如下语句:clock_signalevent and clock_signal=0(2)用进程中的“WAIT ON”语句判断时钟。进程通常停留在“WAIT ON”语句上,只有在时钟信号到来且满足边沿条件时,其余的语句才能被执行。WAIT ON语句只能放在进程的最前面或者最后面。,2复位信号的描述时序电路的初始状态常常由复位信号来设置。分为同步复位和非同步复位两种。所谓同步复位,就是当复位信号有效且在给定的时钟边缘到来时,触发器才被复位,此时复位的状态与时钟同步,有

10、助于信号的稳定和系统毛刺的消除;而非同步复位状态与时钟状态不要求同步,一旦复位信号有效,触发器就被复位。1)同步复位在用VHDL描述时,同步复位的语句必须在以时钟为敏感信号的进程中,常用“IF”语句来描述复位条件。例7.17和例7.18就是同步复位方式的程序实例。,例7.17PROCESS(clock_signal)BEGIN IF(clock_edge_condition)THEN IF(reset_condition)THEN 复位语句;ELSE 时序语句;END IF;END IF;END PROCESS;,例7.18PROCESSBEGINWAIT UNTIL(clock_edge_c

11、ondition)IF(reset_condition)THEN 复位语句;ELSE 时序语句;END IF;END PROCESS;,2)异步复位带有复位语句的进程的敏感信号表应包含复位信号;判定复位条件的“IF”语句的结构必须在判断时钟同步的语句结构之上,也就是说,复位条件的优先级要比同步条件的优先级高。其描述方式如例7.19所示。例7.19PROCESS(reset_signal,clock_signal)BEGIN IF(reset_condition)THEN 复位语句;ELSIF(clock_edge_condition)THEN 时序语句;END IF;END PROCESS;,

12、7.2.2 触发器触发器是指能存储1位二进制信息的基本单元,又称双稳态触发器。,1D触发器1)基本D触发器正沿(上升沿)触发的D触发器的引脚框图如图7.17所示。它是最基本的D触发器,仅有一个数据输入端d、一个时钟输入端clk和一个数据输出端q。在时钟上升沿,输出端q输出d端的状态。,2)非同步复位、置位的D触发器非同步复位、置位的D触发器的引脚框图如图7.18所示。它是在基本D触发器的基础上增加了一个复位端口clr和一个置位端口pset。当复位端口clr=0时,其q端输出被强迫置为0,故clr端又称清零输入端。当置位端口pset=0时,其q端输出被强迫置为1。当复位端口和置位端口同时有效,即

13、clr和pset都为0时,clr端口的优先级高于pset端口的优先级,故q端输出被强迫置为0。例7.21所示为用VHDL描述的非同步复位、置位的D触发器的程序。,3)同步复位、置位的D触发器同步复位、置位的D触发器的引脚框图如图7.19所示。,图7.19 同步复位、置位的D触发器的引脚框图,2JK触发器带有复位/置位功能的JK触发器的引脚框图如图7.20所示。JK触发器的输入端有置位输入pset、复位输入clr、控制输入j和k以及时钟信号输入clk;输出端有正向输出端q和反向输出端qb。例7.23所示为用VHDL描述的JK触发器的程序。,图7.20 JK触发器的引脚框图,7.2.3 寄存器寄存

14、器一般由多个触发器连接而成,通常有锁存寄存器和移位寄存器等。下面主要介绍一些移位寄存器的实例。1串行输入、串行输出移位寄存器8位串行输入、串行输出移位寄存器的引脚框图如图7.21所示。它具有一个数据输入端a、一个时钟输入端clk和一个数据输出端b。8位的串行移位寄存器最多能同时保存8位数据,在时钟信号作用下,前级的数据向后级移动。例7.24所示为8位串行输入、串行输出寄存器的VHDL的行为级描述程序。,图7.22 8位移位寄存器结构,利用“GENERATE”语句和D触发器的描述很容易写出8位移位寄存器的结构级的VHDL程序,如例7.25所示。,2循环移位寄存器在计算机的运算操作中经常用到循环移

15、位,它可以用硬件电路来实现。8位循环左移寄存器的引脚框图如图7.23所示。该电路有一个8位并行数据输入端din、移位和数据输出控制端end、时钟信号输入端clk、3位移位位数控制输入端s和8位数据输出端dout。当end=1时,根据s(0)s(2)输入的数值,确定在时钟脉冲作用下,循环左移几位。当end=0时,din直接输出至dout。,图7.23 8位循环左移寄存器的引脚框图,3串入并出(SIPO)移位寄存器8位串入并出移位寄存器的引脚框图如图7.24所示。串入并出移位寄存器用于实现串行数据向并行数据的转换,其中din端口用于串行输入数据,clk端口是系统时钟输入端口,dout端口是8位数据

16、并行输出端口。8位串入并出移位寄存器的VHDL描述如例7.28所示。,图7.24 8位串入并出移位寄存器的引脚框图,4并入串出(PISO)移位寄存器并入串出(PISO)移位寄存器的功能与串入并出(SIPO)移位寄存器的相反,其能实现并行数据向串行数据的转化。并入串出(PISO)移位寄存器的引脚框图如图7.25所示。并入串出(PISO)移位寄存器的工作过程如下:首先将load端口置0,同时向din端口并行写入数据,然后将load端口置1,dout端口将在clk时钟信号的驱动下按照从高位到低位的顺序依次输出数据的值。,图7.25 并入串出(PISO)移位寄存器的引脚框图,7.2.4 计数器计数器是

17、一个典型的时序电路,在数字电子设计中使用非常普遍。常用的计数器分同步计数器和异步计数器两种。1同步计数器 所谓同步计数器,就是在时钟脉冲(计数脉冲)的控制下,构成计数器的各触发器的状态同时发生变化的那一类计数器。,1)带允许端的十进制BCD计数器带允许端的十进制BCD计数器的引脚框图如图7.26所示。该计数器由4个触发器构成,clr输入端用于清零,en端用于控制计数器工作,clk为时钟脉冲(计数脉冲)输入端,q为计数器的4位二进制计数值输出端。例7.30所示为用VHDL描述的带允许端的十进制BCD计数器的程序。,图7.26 带允许端的十进制BCD计数器的引脚框图,图7.27 8位二进制可逆计数

18、器的引脚框图,可逆计数器有一个特殊的控制端,这就是updn端。当updn=1时,计数器进行加1操作;当updn=0时,计数器进行减1操作。例所示为用VHDL描述的8位二进制可逆计数器的程序。,2)可逆计数器所谓可逆计数器,就是根据计数控制信号的不同,在时钟脉冲作用下,计数器可以进行加1或减1操作的一种计数器。8位二进制可逆计数器的引脚框图如图7.27所示。,2异步计数器异步计数器又称行波计数器,它的低位计数器的输出作为高位计数器的时钟信号,然后一级一级串行连接起来。异步计数器与同步计数器的不同之处就在于时钟脉冲的提供方式,除此之外就完全相同了,它同样可以构成各种各样的计数器。但是,异步计数器采

19、用行波计数,从而增加了计数延迟,在要求延迟小的应用领域受到了很大的限制。尽管如此,由于它的电路简单,因此仍有广泛的应用。用VHDL描述的异步计数器与上述同步计数器的不同之处主要表现在对各级时钟脉冲的描述上,这一点请读者在阅读例程时多加注意。,图7.29 六十进制BCD计数器的引脚框图,1)六十进制BCD计数器六十进制BCD计数器常用于时钟计数。用一个4位二进制计数器可以构成1个十进制BCD计数器,而1个十进制计数器和1个六进制计数器串接起来就可以构成1个六十进制的计数器。六十进制BCD计数器的引脚框图如图7.29所示。,六十进制BCD计数器中的clk是时钟输入端;clr是人工清零端,当clr=

20、1时,计数值输出为0;en是计数允许端,当en=1时,才会对时钟信号进行计数;co是进位输出端,当计数器计数值超过60时,就会发出一个进位脉冲;bcd_1是计数值的个位输出,共有4位,输出计数值的个位BCD码;bcd_10是计数值的十位输出,共有3位,输出计数值的十位BCD码。,2)8位异步计数器异步计数器还可以进行结构级的描述。由8个触发器串联可构成一个8位行波计数器,其程序如例7.34所示。,3格雷码计数器格雷码计数器与普通的累加计数器或递减计数器不同,其计数输出值不是按照数字大小,而是按照格雷码的编码规律排列的,这样可以减少电路的毛刺。所谓格雷码,就是由“1111”、“1110”、“1100”、“1000”、“0000”、“0001”、“0011”、“0111”组成,相邻两位编码之间只有一个数据位发生了变化,这样降低了由于电路延时不同而导致的电路毛刺发生的可能。格雷码计数器的引脚框图如图7.30所示。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号