数字逻辑:第5章 硬件描述语言2_第1页
数字逻辑:第5章 硬件描述语言2_第2页
数字逻辑:第5章 硬件描述语言2_第3页
数字逻辑:第5章 硬件描述语言2_第4页
数字逻辑:第5章 硬件描述语言2_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.7多路复用器多路复用器(multiplexer)是一种数据开关,它将n个数据源之一的数据连接到其输出端。在典型的商用多路复用器中,n=1,2,4,8,16,b=1,2,4;s个输入用于选择n个数据源,所以s=「log2n」;使能输入EN允许多路复用器工作,当EN=0时,所有输出为0。对多路复用器输出,可以写出一般逻辑等式:5.7.1标准MSI多路复用器74x1518输入1位多路复用器,选择输入为C、B、A,其中C是最高有效位;使能输入EN_L低电平有效;输出为Y及Y_L。Y=EN_L’·C’·B’·A’·D0+EN_L’·C’·B’·A·D1+…+EN_L’·C·B·A·D774x1572输入4位多路复用器。其中选择输入为S,使能输入低电平有效。74x1534输入2位多路复用器,具有分开的1位使能输入(1G、2G)。有些多路复用器带三态输出,这种多路复用器的使能输入不是迫使输出为0,而是迫使输出为高阻态。例如,74x251同74x151在管脚引线和内部逻辑设计上都一样。当使能输入无效时,74x251迫使输出为高阻态而不是无效。类似地,74x253和74x257是74x153和74x

157的三态版本。5.7.2扩展多路复用器多路复用器可用于扩展输出的数目。

假设要实现一个8输入、16位输出的多路复用器,这个复用器可用16个74x151多路复用器或等效的ASIC单元实现,多路复用器还可扩展数据源的数目。假设要实现一个32输入、1位的输出多路复用器,图5-66显示了一种构建方法,它需5个选择位(XA4-XA0),其中两个最高选择位通过用一个2-4译码器(1/274x139)选择4个74x151多路复用器中的一个;三个低选择位将74x151的8个数据源之一连接至输出端

。5.7.3多路复用器、多路分配器及总线

多路复用器可以用于选择发往总线的n个数据源之一,即从多路信号中选择一路信号输出。

多路分配器可以用于把总线数据送到m个目的地之一,即将总线数据传送到所选择的输出端口。完成对多路数据的选择与分配,在公共传输线上实现多路数据的分时传送。多路复用器和多路分配器的关系3#4#1#2#3#4#1#2#多路分配器多路复用器总线选择输入

A1A0数据输入

D0D1D2

D3输出W00011011D0

D1

D2

D3D0D1D2D3多路分配器的功能恰好与多路复用器的功能相反。b位、n输出的多路分配器,其有b个数据输入、s个选择输入选择n=2s个b位数据输出集合之一。在正常操作中,被选中的输出等于数据输入,其它输出均为0。带使能输入的二进制译码器可以用做多路分配器。译码器的使能输入连于数据线,其选择输入决定用数据位去驱动哪一条输出线,其余的输出线无效。74x139可以用做1位、4输出多路分配器,74x138可以用做1位、8输出多路分配器。b位数据输入S=2n=22=4个b位数据Y0=A’

·B’

·G即

DST0DATA_L’=SRCDTA_L’·DSTSEL0’

·DSTSRL1’DST1DATA_L’=SRCDTA_L’·DSTSEL0’

·DSTSRL1DST2DATA_L’=SRCDTA_L’·DSTSEL0

·DSTSRL1’DST3DATA_L’=SRCDTA_L’·DSTSEL0

·DSTSRL1(AB=00时,输出Y0为输入SRCDATA_L的值,Y1,Y2,Y3均为0)5.7.5用VHDL实现多路复用器用VHDL描述多路复用器是非常容易的。用SELECT语句实现多路复用器的数据流描述。用CASE语句实现多路复用器的行为描述。在多路复用器VHDL程序中定制选择标准是非常容易的。5.8异或门和奇偶校验电路5.8.1异或门和异或非门异或(XOR)门是2输入门,如果其2个输入不同,则输出为1。它的逻辑表示式为:异或非(XNOR)门与异或门的运算相反,如果其2个输入相同,则输出为1。它的逻辑表示式为:“异或非”和“异或”运算的性质:2.和为对偶符号:

如:F=AB+B(CD)+ADFD=(A+B)·B(C+D)·(A+D)

1.“异或非”逻辑和“异或”互补,“异或非”也称作“同或”:

AB=(AB)'

AB=(AB)'

3.交换律AB=BAAB=BA

结合律A(BC)=(AB)CA(BC)=(AB)C

分配律A(BC)=(AB)(AC)

A(BC)=(AB)(AC)

4.

AA'=1(置1)AA=0(清零)

A1=A'(取反)A0=A0A的个数为偶数

AA.....A=AA的个数为奇数

5.

AA'=0AA=1A0=A'A1=A1A的个数为偶数

AA.....A=AA的个数为奇数每个异或门、异或非门都有4个等效的逻辑符号。注意:这些等效符号是一个简单规则的推论:即对异或门或异或非门的任何2个信号(输入或输出)取反,不改变结果的逻辑功能。单个14引脚的SSIIC74x86集成了4个异或门。5.8.2奇偶校验电路

n个异或门级联形成具有n+1个输入和一个输出的电路,这电路称为奇校验电路(odd-paritycircuit)。菊花链式连接树状连接如果图中任一电路的输出取反,则得到偶校验电路。5.8.39位奇偶校验发生器74x280

9位奇偶校验发生器74x280集成10个异或门,该器件有9个输入和2个输出,这2个输出分别指明输入包含奇数个1还是偶数个1。74x280的逻辑符号奇偶校验发生器74x280既可用于在存储和发送码字时生成正确的奇偶校验位值,也可用于在恢复和接收码字时检查奇偶校验位。EVEN=1表示输入包含偶数个1奇校验位5.8.4奇偶校验的应用应用一:如何在微处理器系统的存储器电路中用奇偶校验电路。应用二:奇偶校验电路与纠错码一起使用,实现检错、纠错。5.8.6用VHDL实现异或门和奇偶校验电路为指定“异或”和“异或非”操作,VHDL提供了原语操作符xor和xnor(xnor仅在VHDL_93可用)。由于典型的VHDL综合工具还远不足以从类似表5-47的行为程序中生成有效的树结构,因此,取而代之,我们可以用结构化程序实现类似74x280的奇偶校验器。5.9比较器比较器(comparator)是比较2个二进制字并指示它们是否相等的电路。数值比较器(magnitudecomparator)是将其输入字解释为有符号或无符号数,并指出字之间的算术关系(大于或小于)的电路。5.9.1比较器结构异或门和异或非门可以被视为1位比较器。

4个异或门的输出相“或”就能生成4位比较器。如有足够多的异或门和宽度足够的或门,即可搭建任意输入位数的比较器。DIFF=A0ÅB0+A1ÅB1+A2ÅB2+A3ÅB3如果任一输入位对(Ai和Bi,i=0,1,2,3)不同,则DIFF输出就有效5.9.2迭代电路迭代电路包括n个相同的模块;每个模块均有主输入和主输出、级联输入和级联输出;最左边的级联输入称为边界输入,在多数迭代电路中,它被接入固定的逻辑值;最右边的级联输出称做边界输出,它通常提供重要的信息。迭代电路非常适合于能用简单的迭代算法解决的问题:1)置C0为其初值且置i为0。2)用Ci和PIi确定POi和Ci+1的值。3)递增i。4)如果i<n,返回第2步。在迭代电路中,使用分开的组合电路对每个i值执行步骤2,所以步骤2~4的循环是“摊开”的。

4位比较器74x85和4位加法器74x283都是MSI电路的例子,在较大的迭代电路中,它们可以用做单独的模块。5.9.3迭代比较器电路可以逐步逐位地对2个n位数值X和Y进行比较,在每一步用单个位EQi跟踪迄今是否所有的位对都相等:1)置EQ0为1且置i为0。2)如果EQi=1且Xi和Yi相等,置EQi+1为1,否则置EQi+1为0。3)递增i。4)如果i<n,返回第2步。迭代比较电路相对并行比较器,速度要慢些。因此,在实际设计中,采用类似4位比较器74x85和4位加法器74x283模块,使用的多半是每次处理多位的迭代电路。一位数值比较器,其真值表如下A BF1(A>B) F2(A<B) F3(A=B)0 0 0 0 10 1 0

1 01 0 1 0 01 1 0 0 1F1=AB’F2=A’B中间函数F3=A’B’+AB=(AÅB)’

FA=B

FA<B

FA>B

A=BA<BA>BB0A0B1A1B2A2B3A3四位数值比较器7485有8个数据输入端A3,A2,A1,A0,B3,B2,B1,B0,3个输出端,还有3个级联输入端。先从高位A3,B3开始比较5.9.4标准MSI比较器

74x85为4位比较器,它比较两个4位数是相等、小于还是大于。

74x85也提供级联输入(AGTBIN、ALTBIN、AEQBIN),以扩展输入位数,实现多于4位的比较器。每个74x85依据下面的准逻辑等式导出其级联输出:尽管A=B,但级联输入(低一级)的为A>BXD0XD1XD2XD3

74x682是一个8位的MSI比较器,当所有8个输入对均一一相等时,则PEQQ_L输出有效。如果P[7-0]>Q[7-0],则PGTQ_L有效。不同于74x85,74x682没有级联输入;没有提供“小于”、“大于”输出。然而,任何需要的条件(包括≤和≥),能被表示为PEQQ_L和PGTQ_L输出的函数。S7R6R7从图5-848位比较器74x682的逻辑图知PGTQ_L=R7+R6+…+R0 =R7’

·R6’

·…

·R0’R7=Q7’·P7若Q7>P7则Q7

·P7=10R7=Q7’

·P7=1’

·0=0PGTQ_L=R7’

·R6’

·…

·R0’=0有效∴知Q>P要使R7=0成立,Q7P7有三种输入组合,但Q7=P7的情况反映在S7,即在Q7=P7时,再比较次高位Q6P6的大小,S7=Q7P7’=Q7P7,当Q7P7为00或11时,S7=1,将R6的与门打开,输出为Q6和P6比较的结果Q7P7R7000011100110·PNEQ=PEQQ’,即PNEQ=1,表示P=QPEQQ=(PEQQ’)’=PEQQ,PEQQ=0,表示P≠QPGTQ=(PGTQ’)’=PGTQ=1,表示P>QPGEQ=PEQQ+PGTQ=1,表示P≥QPLEQ=PGTQ’=0,表示P>Q,即PLEQ=1,表示P≤QPLTQ=PEQQ’+PGTQ’=0,表示P≥Q,即PLTQ=1,表示P<Q5.9.6用VHDL实现比较器对于所有内置类型,VHDL都有比较操作符。相等(=)和不等(/=)操作符适用于所有类型;对于数组和记录类型,操作数必须具有相同大小和结构,且操作数是一个分量接一个分量进行比较的。

VHDL的其他比较操作符(>、<、>=、<=)只适用于整型、枚举类型(如STD_LOGIC)和一维枚举或整型数组。由此可知,内置比较操作符是对类型为BIT_VECTOR或STD_LOGIC_VECTOR的等长数组进行比较,并且表示为无符号整数。为了实现更灵活的比较和算术操作,IEEE标准1076-3创建了标准包std_logic_arith,它定义了两个重要的新类型及作用于它们的一大批比较和算术函数。这两个新类型是:SIGNED和UNSIGNED:这个包定义了新的比较函数,当任一或两个比较操作数为新类型之一时,这些函数被调用。如,包定义了8个新的“小于”函数:例中涉及D的比较,进行了显式类型转换,因为std_logic_arith包没有对STD_LOGIC_VECTOR进行任何解释,而包std_logic_signed和std_logic_unsigned做了解决。5.10加法器、减法器和ALU5.10.1半加器和全加器半加器是将2个1位二进制操作数X和Y相加,产生一个2位和。和的较低位命名为HS(半加和),较高位命名为CO(半加进位或进位输出)。全加器是加数X和Y与进位输入CIN(来自低位的进位)相加,产生输出:S(全加和)和COUT(送给高位的进位)。*5.10.2串行进位加法器串行进位加法器(又叫行波进位加法器)为n个全加器的级联,每个处理1位。总的最长延迟为:其中,tXYCout为最低有效级上从X或Y到COUT的延迟,tCinCout为中间级上从CIN到COUT的延迟,tCinS为最高有效级上从CIN到S的延迟。5.10.3减法器全减器处理二进制的1位减,其输入位为X(被减数)、Y(减数)和BIN(借位输入),其输出位为D(差)和BOUT(借位输出)。将上式与全加器的输出等式(幻灯片45页中“*”式)比较,可以从全加器构建全减器。用Y’取代Y,BIN’取代CIN,BOUT’取代COUT全加器等式注意:对于减法操作,最低有效位的借位输入应该为1或高电平。5.10.4先行进位加法器二进制加法器第i位全加和si的和进位ci逻辑等式可写为:如令:

进位产生函数gi,若gi=1,说明xi=yi=1,表示可以产生进位;进位传递函数pi,若pi=1,说明xiyi可能是01或10,表示低位到本位的进位可以传递到下一位。即如果两个加数位都为1,则这一级无条件地产生进位;如果两个加数位中至少一个为1,则这一级传递进位。为了避免串行进位,每一级的进位ci都可递归地展开为二级“与-或”表达式。依据进位产生信号和进位传递信号,现在这一级的进位输出可以写为:思考为什么只设计4位二进制先行进位加法器?可以是8位的吗?5.10.5MSI加法器74x283是4位二进制先行进位加法器。逻辑符号逻辑结构按如下方法代数地处理半加和等式:且原当pi=0时,表示xi=yi=0,gi一定为0;当pi=1时,pi

·gi=1

·gi

=gi无论pi=1,还是pi=0,ci+1=gi+pi

·ci=pi

·gi+pi

·ci总成立将低位’283的进位输出与高位‘283的进位输入级联,可生成多于4位且速度块的组间串行进位加法器。该电路C0到C16的延迟约为8个反相门的延迟。5.10.6MSI算术逻辑单元算术逻辑单元(ALU)能对2个b位操作数进行若干不同的算术和逻辑操作。执行的操作由一组功能选择输入指定。典型的MSIALU是4位的,有3到5个功能选择输入,允许执行多至32种不同的操作。74x181是4位的ALU,它所执行的操作由输入M和S3~S0来选择。74x381和74x382二者的区别在于:一个提供组间先行进位输出,而另一个提供串行进位输出和溢出输出。5.10.7组间先行进位74x181和74x381提供了组间先行进位输出,允许多个ALU级联,且在4位一组的组与组之间没有串行进位。先行进位信号G_L和P_L的公式:先行进位电路74x182的输入是C0,G0~G3和P0~P3(ALU0~3的进位产生和进位传递输出)。生成ALU1~3的进位输入C1~C3。当ALU级联时,只用两级逻辑就可以组合组间先行进位输出,以生成每个ALU的进位输入。5.11组合乘法器5.11.1组合乘法器的结构大多数组合乘法器都是基于手算的移位-累加算法来实现的。被乘数X=x7x6x5x4x3x2x1x0,乘数Y=y7y6y5y4y3y2y1y0时序乘法器使用单个加法器和一个寄存器累加部分积。部分积寄存器初始化为第一个乘积分量。时序乘法器使用进位保留加法来加速乘法过程。具体思路是:断开串行进位加法器的进位链,以缩短每次加法的延迟。实现是:将第j步第i位的进位输出连到下一步(第j+1步)第i+1位的进位输入。

除能实现二进制加法运算外,还可实现代码转换、二进制减法运算,二进制乘法运算,十进制加法运算等功能。例1:用四位二进制并行加法器设计一个将8421BCD码转换成余3码的代转换电路。解:余3码比8421码多3.A4A3A2A1B4B3B2B1F4

F3F2F1余3码FC4C08421BCD码0011“0”5.12中规模通用集成电路应用举例

二进制并行加法器5.12中规模通用集成电路应用举例(续)例2:用四位二进制并行加法器设计一个四位二进制并行加法/减法器。F4F3F2

F1FC4C0A4

A3A2A1B4B3

B2 B1S4S3

S2

S1=1=1=1=1被加数(被减数)加数(减数)a4a3a2 a1b4b3b2

b1功能选择M和(差)解:利用补码,将减法变为加法。B⊕1=B'(取反)B⊕0=B进位输入A4A3A2A1B4B3B2B1F4F3F2F1和数余3码FC4C0“1”A4A3A2A1B4B3B2B1F4F3F2F1FC4C0被加数余3码加数余3码1III5.12中规模通用集成电路应用举例(续)例3:用四位二进制并行加法器设计一个用余3码表示的一位十进制数加法器解:余3码相加无进位时,结果要减3;有进位时,结果要加3。减3(0011)可以变为加13(1101)。A2A1A0Y0Y1Y2Y3Y4Y5Y6Y7AiBiGi-1S1S2S3&&DiGi“1”例4:用一片74138三输入八输出译码器和适当的与非门实现全减器的功能输入Ai

BiGi-1输 出Di Gi0000010100111001011101110 01 11 10 11 00 00 01 1解:5.12中规模通用集成电路应用举例(续)例5:用译码器和与门实现逻辑函数

F(A,B,C,D)=m(2,4,6,8,10,12,14)解:&Y0

Y1Y2Y3Y4Y5Y6Y7A2

A1A0S3S2S1B

C

DA1Fm2,m4,m6m8,m10,m12,m14Y0

Y1Y2Y3Y4Y5Y6Y7A2

A1A0S3S2S15.12中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论