VHDL硬件描述语言与数字逻辑电路设计(第五版)侯伯亨章课件8.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《VHDL硬件描述语言与数字逻辑电路设计(第五版)侯伯亨章课件8.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 硬件 描述 语言 数字 逻辑电路 设计 第五 侯伯亨章 课件
- 资源描述:
-
1、第8章 基本逻辑电路设计第8章 基本逻辑电路设计8.1 组合逻辑电路设计8.2 时序电路设计习题与思考题第8章 基本逻辑电路设计8.1 组合逻辑电路设计8.1.1 简单门电路简单门电路包括2输入“与非”门、集电极开路的2输入“与非”门、2输入“或非”门、反相器、集电极开路的反相器、3输入“与”门、3输入“与非”门、2输入“或”门和2输入“异或”门等,它们是构成所有逻辑电路的基本电路。第8章 基本逻辑电路设计12输入“与非”门电路2输入“与非”门电路的逻辑表达式为y=(ab)其逻辑电路图如图8-1所示。利用VHDL描述2输入“与非”门有多种形式,现举两个例子加以说明。第8章 基本逻辑电路设计图8
2、-1 2输入“与非”门电路第8章 基本逻辑电路设计【例8-1】用VHDL描述2输入“与非”门电路示例一。第8章 基本逻辑电路设计【例8-2】用VHDL描述2输入“与非”门电路示例二。第8章 基本逻辑电路设计第8章 基本逻辑电路设计从上面两个例子中可以看出,例8-1的描述更简洁,更接近于2输入“与非”门的行为描述,因此也更易于阅读;例8-2的描述是以2输入“与非”门的真值表为依据来编写的,罗列了2输入“与非”门的每种输入状态及其对应的输出结果。第8章 基本逻辑电路设计集电极开路的2输入“与非”门和一般的2输入“与非”门在VHDL的描述上没有什么差异,所不同的只是从不同元件库中提取相应的电路而已。
3、例如:第8章 基本逻辑电路设计在第一个例子中要生成的是一般TTL的2输入“与非”门,而在第二个例子中要生成的是TTL集电极开路的2输入“与非”门。这里所叙述的情况对其他门电路同样适用。因此,对不同类型门电路的集电极开路输出门,本节将不再赘述。第8章 基本逻辑电路设计22输入“或非”门电路2输入“或非”门电路的逻辑表达式为y=(ab)其逻辑电路图如图8-2所示。现举两个用VHDL描述2输入“或非”门电路的例子。第8章 基本逻辑电路设计图8-2 2输入“或非”门电路第8章 基本逻辑电路设计【例8-3】用VHDL描述2输入“或非”门电路示例一。第8章 基本逻辑电路设计【例8-4】用VHDL描述2输入
4、“或非”门电路示例二。第8章 基本逻辑电路设计第8章 基本逻辑电路设计3反相器反相器电路的逻辑表达式为y=a其逻辑电路图如图8-3所示。VHDL对反相器的描述如例8-5和例8-6所示。第8章 基本逻辑电路设计图8-3 反相器电路第8章 基本逻辑电路设计【例8-5】VHDL对反相器的描述一。第8章 基本逻辑电路设计【例8-6】VHDL对反相器的描述二。第8章 基本逻辑电路设计第8章 基本逻辑电路设计43输入“与非”门电路3 输入“与非”门电路的逻辑表达式为y=(abc)其逻辑电路如图8-4所示。3输入“与非”门和2输入“与非”门的差异仅在于多了一个输入引脚,在用VHDL编程时,在端口说明中应加一
5、个输入端口。例如,原来的输入端口为a、b两个,现在应变为a、b、c三个。当然,根据逻辑表达式,该输入端口的信号c应与a、b一样,一起参与逻辑运算,以得到最后的输出y。用VHDL描述3输入“与非”门电路示例如例8-7和例8-8所示。第8章 基本逻辑电路设计图8-4 3输入“与非”门电路第8章 基本逻辑电路设计【例8-7】用VHDL描述3输入“与非”门电路示例一。第8章 基本逻辑电路设计【例8-8】用VHDL描述3输入“与非”门电路示例二。第8章 基本逻辑电路设计第8章 基本逻辑电路设计52输入“异或”门电路2输入“异或”门电路的逻辑表达式为其逻辑电路如图8-5所示。用VHDL描述2输入“异或”门
6、电路示例如例8-9和例8-10所示。第8章 基本逻辑电路设计图8-5 2输入“异或”门电路第8章 基本逻辑电路设计【例8-9】用VHDL描述2输入“异或”门电路示例一。第8章 基本逻辑电路设计【例8-10】用VHDL描述2输入“异或”门电路示例二。第8章 基本逻辑电路设计第8章 基本逻辑电路设计上述简单的门电路大多用两种不同形式的VHDL程序来描述,其行为和功能是完全一样的。事实上还可以运用VHDL中所给出的语句来描述这些门电路,这就给编程人员提供了较大的编程灵活性。但是,一般来说,无论是编程人员还是阅读这些程序的人员,都希望程序能一目了然,因此尽可能采用VHDL中所提供的语言和符号,用简洁的
7、语句描述其行为,这总是首选的描述方式。第8章 基本逻辑电路设计8.1.2 编、译码器与选择器编、译码器和选择器是组合电路中较简单的3种通用电路。它们可以由简单的门电路组合连接构成。例如,图8-6所示是一个3-8译码器电路(74LS138)。由有关手册可知,该译码器由8个3输入“与非”门、4个反相器和一个3输入“或非”门构成。如果事先不作说明,只给出电路,让读者来判读该电路的功能,那么毋庸置疑,要看懂该电路就要花较多的时间。如果采用VHDL,从行为、功能来对3-8译码器进行描述,则不仅逻辑设计变得非常容易,而且阅读也会很方便。第8章 基本逻辑电路设计图8-6 3-8译码器电路第8章 基本逻辑电路
8、设计13-8译码器3-8译码器是最常用的一种小规模集成电路,它有3个二进制输入端a、b、c和8个译码输出端y0y7。对输入a、b、c的值进行译码,就可以确定输出端y0y7的哪一个输出端变为有效(低电平),从而达到译码的目的。3-8译码器的真值表如表8-1所示。第8章 基本逻辑电路设计第8章 基本逻辑电路设计3-8译码器还有3个选通输入端g1、g2a和g2b。只有在g1=1,g2a=0,g2b=0时,3-8译码器才进行正常译码,否则y0y7输出均为高电平。第8章 基本逻辑电路设计【例8-11】3-8译码器用VHDL描述如下:第8章 基本逻辑电路设计第8章 基本逻辑电路设计2优先级编码器优先级编码
9、器常用于中断的优先级控制。例如,74LS148是一个8输入、3位二进制码输出的优先级编码器。当其某一个输入有效时,就可以输出一个对应的3位二进制编码。另外,当同时有几个输入有效时,将输出优先级最高的那个输入所对应的二进制编码。图8-7是优先级编码器的引脚图,它有8个输入input(0)input(7)和3位二进制码输出y0y2。第8章 基本逻辑电路设计图8-7 优先级编码器第8章 基本逻辑电路设计该优先级编码器的真值表如表8-2所示。表中,“X”表示任意项,它可以是“0”,也可以是“1”。input(0)的优先级最高,input(7)的优先级最低。第8章 基本逻辑电路设计第8章 基本逻辑电路设
10、计【例8-12】用VHDL描述优先级编码器的程序如下:第8章 基本逻辑电路设计因为VHDL中目前还不能描述任意项,所以不能用前面一贯采用的CASE语句来描述,而采用了IF语句。第8章 基本逻辑电路设计3四选一选择器选择器常用于信号的切换。四选一选择器可以用于4路信号的切换。四选一选择器有4个信号输入端input(0)input(3)、2个信号选择端a和b及一个信号输出端y。当a、b输入不同的选择信号时,就可以使input(0)input(3)中某个相应的输入信号与输出y端接通。例如,当a=b=“0”时,input(0)就与y接通。其逻辑电路如图8-8所示。第8章 基本逻辑电路设计图8-8 四选
11、一电路第8章 基本逻辑电路设计四选一电路的真值表如表8-3所示。第8章 基本逻辑电路设计【例8-13】用VHDL对四选一电路进行描述的程序如下:第8章 基本逻辑电路设计第8章 基本逻辑电路设计例8-13中的四选一选择器是用IF语句描述的,程序中的ELSE项作为余下的条件,将选择input(3)从y端输出,这种描述比较安全。当然,不用ELSE项也可以,这时必须列出sel所有可能出现的情况,加以一一确认。第8章 基本逻辑电路设计8.1.3 加法器与求补器1加法器加法器有全加器和半加器之分,全加器可以用两个半加器构成,因此下面先以半加器为例加以说明。半加器有两个二进制一位的输入端a和b、一位和的输出
12、端s、一位进位位的输出端co。半加器的真值表如表8-4所示,其电路符号如图8-9所示。第8章 基本逻辑电路设计图8-9 半加器第8章 基本逻辑电路设计第8章 基本逻辑电路设计【例8-14】用VHDL描述半加器的程序如下:第8章 基本逻辑电路设计用两个半加器可以构成一个全加器。全加器的电路如图8-10所示。图8-10 用两个半加器构成的全加器第8章 基本逻辑电路设计【例8-15】采用COMPONENT语句和PORT MAP语句描述全加器。第8章 基本逻辑电路设计第8章 基本逻辑电路设计2求补器二进制运算经常要用到求补操作。8位二进制数的求补电路符号如图8-11所示。求补电路的输入为a(0)a(7
13、),补码输出为b(0)b(7),其中a(7)和b(7)为符号位。该电路较复杂,如果像半加器那样对每个门进行描述和连接是可以做到的,但是那样做太繁琐。这里采用RTL描述更加简洁、清楚。第8章 基本逻辑电路设计图8-11 8位二进制数的求补电路符号第8章 基本逻辑电路设计【例8-16】用RTL描述求补器。第8章 基本逻辑电路设计8.1.4 三态门与总线缓冲器三态门与双向总线缓冲器是接口电路和总线驱动电路经常用到的器件。它们虽然不属于组合电路,为简化章节,也列于此处进行介绍。1三态门电路三态门电路如图8-12所示。它具有一个数据输入端din、一个数据输出端dout和一个控制端en。当en=1时,do
14、ut=din;当en=0时,dout=Z(高阻)。三态门的真值表如表8-5所示。第8章 基本逻辑电路设计图8-12 三态门电路第8章 基本逻辑电路设计第8章 基本逻辑电路设计【例8-17】用VHDL描述三态门的程序如下:第8章 基本逻辑电路设计在第3章中读者已经知道,一个实体可以对应多种构造体。例8-18和例8-19就是用不同的VHDL描述的三态门的结构。第8章 基本逻辑电路设计【例8-18】用VHDL描述三态门的结构示例一。第8章 基本逻辑电路设计该例中采用卫式块语句结构来表示三态门。卫式块语句结构的特点是:只有块语句的条件满足时,块中所含的语句才会被执行。在这里只有en=1的条件满足时,d
15、out=GUARDED din语句才会被执行。第8章 基本逻辑电路设计第8章 基本逻辑电路设计2单向总线缓冲器在微型计算机的总线驱动中经常要用单向总线缓冲器,它通常由多个三态门组成,用来驱动地址总线和控制总线。一个8位的单向总线缓冲器如图8-13所示。8位的单向总线缓冲器由8个三态门组成,具有8个输入和8个输出端。所有三态门的控制端连在一起,由一个控制输入端en控制。用VHDL描述的8位单向总线缓冲器的程序实例如例8-20、例8-21和例8-22所示。第8章 基本逻辑电路设计图8-13 单向总线缓冲器第8章 基本逻辑电路设计【例8-20】用VHDL描述的8位单向总线缓冲器的程序实例一。第8章
16、基本逻辑电路设计第8章 基本逻辑电路设计【例8-21】用VHDL描述的8位单向总线缓冲器的程序实例二。第8章 基本逻辑电路设计【例8-22】用VHDL描述的8位单向总线缓冲器的程序实例三。第8章 基本逻辑电路设计在编写上述程序时应注意,不能将“Z”值赋予变量,否则就不能进行逻辑综合。另外,对信号赋值时“Z”和“0”或“1”不能混合使用,例如:dout=Z001ZZZZ;这样的语句是不允许出现的。但是变换赋值表达式时,分开赋值是可以的。例如:dout(7)=Z;dout(6 DOWNTO 4)=001;dout(3 DOWNTO 0)=ZZZZ;第8章 基本逻辑电路设计3双向总线缓冲器双向总线缓
17、冲器用于对数据总线进行驱动和缓冲。典型的双向总线缓冲器的电路图如图8-14所示。图中,双向缓冲器有两个数据输入输出端a和b、一个方向控制端dr和一个选通端en。当en=1时,双向总线缓冲器未被选通,a和b都呈现高阻;当en=0时,双向总线缓冲器被选通,如果dr=0,那么a=b,如果dr=1,那么b=a。双向总线缓冲器的真值表如表8-6所示。第8章 基本逻辑电路设计图8-14 双向总线缓冲器第8章 基本逻辑电路设计第8章 基本逻辑电路设计【例8-23】用VHDL描述双向总线缓冲器实例。第8章 基本逻辑电路设计第8章 基本逻辑电路设计从例8-23中可以看出,双向总线缓冲器由两组三态门组成,利用信号
18、aout和bout将两组三态门连接起来。由于在实际工作过程中a和b都不可能同时出现“0”和“1”,因此在这里没有使用判决函数。第8章 基本逻辑电路设计8.2 时序电路设计8.2.1 时钟信号和复位信号1时钟信号的描述众所周知,任何时序电路都以时钟信号为驱动信号,时序电路只是在时钟信号的边沿到来时,其状态才发生改变。因此,时钟信号通常描述时序电路程序的执行条件。另外,时序电路也总是以时钟进程的形式来进行描述的,其描述方式一般有两种。第8章 基本逻辑电路设计(1)进程的敏感信号是时钟信号。在这种情况下,时钟信号应作为敏感信号,显式地出现在PROCESS语句后跟的括号中,例如PROCESS(cloc
19、k_signal)。时钟信号边沿的到来将作为时序电路语句执行的条件。第8章 基本逻辑电路设计【例8-24】进程的敏感信号是时钟信号实例。第8章 基本逻辑电路设计(2)用进程中的WAIT ON语句等待时钟。在这种情况下,描述时序电路的进程将没有敏感信号,而是用WAIT ON语句来控制进程的执行。也就是说,进程通常停留在WAIT ON语句上,只有在时钟信号到来且满足边沿条件时,其余的语句才能执行。第8章 基本逻辑电路设计【例8-25】用进程中的AIT ON语句等待时钟实例。第8章 基本逻辑电路设计在编写上述程序时应注意:无论IF语句还是WAIT ON语句,在对时钟边沿进行说明时,一定要注明是上升沿
20、还是下降沿(前沿还是后沿),只说明是边沿是不行的。当时钟信号作为进程的敏感信号时,在敏感信号的表中不能出现一个以上的时钟信号,除时钟信号以外,复位信号等是可以和时钟信号一起出现在敏感表中的。WAIT ON语句只能放在进程的最前面或者最后面。第8章 基本逻辑电路设计(3)时钟边沿的描述。为了描述时钟边沿,一定要指定是上升沿还是下降沿,这一点可以使用时钟信号的属性描述来进行。也就是说,要指定时钟信号的值是从“0”到“1”变化,还是从“1”到“0”变化,由此可以得知是时钟脉冲信号的上升沿还是下降沿。第8章 基本逻辑电路设计 时钟脉冲上升沿的描述。时钟脉冲上升沿波形与时钟信号属性的描述关系如图8-15
展开阅读全文