讲VHDL设计实例及分析

上传人:油条 文档编号:1616656 上传时间:2017-06-28 格式:PPT 页数:67 大小:1.65MB
返回 下载 相关 举报
讲VHDL设计实例及分析_第1页
第1页 / 共67页
讲VHDL设计实例及分析_第2页
第2页 / 共67页
讲VHDL设计实例及分析_第3页
第3页 / 共67页
讲VHDL设计实例及分析_第4页
第4页 / 共67页
讲VHDL设计实例及分析_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《讲VHDL设计实例及分析》由会员分享,可在线阅读,更多相关《讲VHDL设计实例及分析(67页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、个输入所对应的二进制编码。图7.7所示就是最简单的优先级编码器的引脚图,它有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所示

5、为用VHDL描述的3-8译码器的程序。,34选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所示

6、。求补电路的输入为a(0)a(7),补码输出为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描述的双向总

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

9、OCESS语句后的敏感信号列表中。描述时钟脉冲的上升沿可采用如下语句: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.18

11、PROCESSBEGINWAIT UNTIL (clock_edge_condition) 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 (cloc

12、k_edge_condition) THEN 时序语句; END IF;END PROCESS;,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,故cl

13、r端又称清零输入端。当置位端口pset=0时,其q端输出被强迫置为1。当复位端口和置位端口同时有效,即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。例

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

15、位移位寄存器的结构级的VHDL程序,如例7.25所示。,2循环移位寄存器在计算机的运算操作中经常用到循环移位,它可以用硬件电路来实现。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位数据并行输出端口。8位串入并出移位寄存器的VHDL描述如例7.28所示。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号