4.1 用门电路设计一个4线—2线二进制优先编码器。编码器输入为A3A2A1A0,A3优先
级最高,A0优先级最低,输入信号低电平有效。输出为Y1Y0,反码输出。电路要求加一G输出端,以指示最低优先级信号A0输入有效。
题4.1 解4.1 解:根据题意,可列出真值表,求表达式,画出电路图。其真值表、表达式和电路
图如图题解4.1G=A3A2A1A0。
A3A2Y1所示。由真值表可知BIN/OCTA0A1A2
G1124012345Y0A3A4
11&G2AG2B&EN67Y7&12BIN/OCT012345Y8&G14&EN
G2AG2B&EN67Y15BIN/OCT124G1G2AG2B012345Y16&EN67Y23BIN/OCT124G1G2AG2B012345Y24&EN67Y31图题解4.3
4.5写出图P4.5所示电路输出F1和F2的最简逻辑表达式。译码器74138功能表如表4.6所
示。
BIN/OCT
ABC
124
012345
&F1
1
&
&F2
EN7413867
图 P4.5
题4.5解:由题图可得:
F1(C,B,A)=∑m(0,2,4,6)=AF2(C,B,A)=∑m(1,3,5,7)=A
4.7 试用一片4线—16线译码器74154和与非门设计能将8421BCD码转换为格雷码的代码
转换器。译码器74154的逻辑符号如图4.17所示。
解:设4位二进制码为B3B2B1B0,4位格雷码为R3R2R1R0。根据两码之间的关系可得:
R3(B3,B2,B1,B0)=∑m(8~15)=B3
R2(B3,B2,B1,B0)=∑m(4~11)=m4m5m6m7m8m9m10m11
R1(B3,B2,B1,B0)=∑m(2~5,10~13)=m2m3m4m5m10m11m12m13
R0(B3,B2,B1,B0)=∑m(1,2,5,6,9,10,13,14)=m1m2m5m6m9m10m13m14
则将译码器74154使能端均接低电平,码输入端从高位到低位分别接B3、B2、B1、B0,根 据上述表达式,在译码器后加3个8输入端与非门,可得R2、R1、R0,R3可直接输出。(图 略)
4.9试用8选1数据选择器74151实现下列逻辑函数。74151逻辑符号如图4.37(a)所示。 ⑴ F(A,B,C)=⑵ F(A,B,C)=
∑m(2,4,5,7)
∏M(0,6,7)
⑶ F(A,B,C)=(A+B)(B+C)
⑷ F(A,B,C,D)=BC+ACD+ACD+ABCD+ABCD ⑸ F(A,B,C,D)=
∑m(0,2,3,5,6,7,8,9)+∑d(10:15)
题4.9解:如将A、B、C按高低位顺序分别连接到数据选择器74151的地址码输入端,将数据选择器的输出作为函数值F。则对各题,数据选择器的数据输入端信号分别为:(注意,数据选择器的选通控制端ST必须接有效电平,图略)
⑴ D0=D1=D3=D6=0,D2=D4=D5=D7=1 ⑵ D0=D6=D7=0,D1=D2=D3=D4=D5=1 ⑶ D0=D2=D3=D6=0,D1=D4=D5=D7=1 ⑷ D0=D5=D,D1=D4=D,D2=D6=1,D3=D7=0 ⑸ D0=D,D2=D,D1=D3=D4=1,D5=D6=D7=0或1
图P4.11为4线-2线优先编码器逻辑符号,其功能见图4.3(a)真值表。试用两个线-2线优先编码器、两个2选1数据选择器和一个非门和一个与门,设计一个带无信号编码输入标志的8线-3线优先编码器。
HPRI/BCDX011XA1202AX231X34EO图 P4.11
4.11解:由图4.3(a)真值表可见,当编码器无信号输入时,EO=1,EO=0时,表示高位编码器(2)有编码信号输入,0通道,将高位编码器(2)的码送到Y1Y0端;当高位编码器(2)的
EO=1时,表示高位编码器(2)无编码信号输入,而低位编码器(1)有可能有编码信
Y1Y0Y1Y0=00)。编码器输出的最高位码,由高位编码器(2)的EOY=1表示无编码信号输入。
4
EO4.11所示,EO信号取反获 4.11
题因此可以利用的状态来判断扩展电路中哪一个芯片有编码信号输入。所设计电路如图题解由电路可见,当高位编码器(2)的故选通数据选择器的号输入,也可能无编码信号输入,则将低位编码器(1)的码送到端(当无编码信号输入输入时,得。由电路可见,HPRI/BCDX0X1X2X312341&EOYY0(1)2MUX01EOAHPRI/BCDX4X5X6X712341MUX01(2)2Y1A1EOY2
题4.13解:全加器的输出逻辑表达式为:
图题解4.11
Si(Ai,Bi,Ci−1)=(AiBi+AiBi)Ci−1+(AiBi+AiBi)Ci−1= Ci(Ai,Bi,Ci−1)=(AiBi+AiBi)Ci−1+AiBi=
∑m(1,2,4,7)
∑m(3,5,6,7)
式中,Ai、Bi为两本位加数,Ci−1为低位向本位的进位,Si为本位和, Ci为本位向高位的
进位。根据表达式,所设计电路如图题解4.13所示。
4.15 写出图P4.15所示电路的输出最小项之和表达式。
D0=S⊕CO=(ab+ab)⊕(a⊕b+ab) D1=D0 D2=CO F(a,b,c,d)=
4.17 试完善图4.47所示电路设计,使电路输出为带符号的二进制原码。
D3=CO
∑m(1,3,5,6,9,10,12,14)
题4.17解:由于加减器的输入均为二进制正数,所以,当S=1电路作加法时,输出一定为正,这时图4.47中的C4表示进位。当S=0时,电路作减法运算,电路实现(P)2−(Q)2功能。由例4.15分析可知,当(P)2−(Q)2≥0时,C4=1,电路输出Y4Y3Y2Y1即为原码;当(P)2−(Q)2<0时,C4=0,应将电路输出Y4Y3Y2Y1取码,使其成为原码。设电路符号位为F,进位位为Z5,可写出F和Y5的表达式为F=SC4,Y5=SC4。当F=1时,须对Y4Y3Y2Y1取码。所设计电路如图题解4.17所示。
ENMUXSQ1Q2Q3Q4P1P2P3P4G1011111748312347483=1=1Σ12Σ34COY1Y2Y3Y4C4A=1=1︷741571234B11234B︷CO1234Σ12Σ34Z1Z2Z3Z4Z5F
C0CI1题4.19解:(解题思路(解题思路)解题思路)首先利用两片4位二进制加法器7483和门电路设计一个BCD码加法器(见例4.16)。由于用加法器实现减法运算,须对输入的减数取10的补,另外,还须根据BCD码加法器的进位信号的状态来决定是否对BCD码加法器输出信号进行取补。所设计的电路框如图题解4.19所示。图中,A为被减数,B为减数,Y为差的原码,G为符号位。com10s为求10的补码电路,该电路可根据10的补码定义,通过列真值表,求逻辑表达式,
然后用门电路或中规模组合电路(如译码器)实现。bcdsum为BCD码加法器,可利用例
︷︷︷A︷CI&&图题解4.17
4.16结果,也可自行设计。selcom10s为判断求补电路,当bcdsum输出进位信号C为1时,
表示结果为正,Y=S;当C为0时,表示结果为负,Y应是S的10 的补码,利用com10s电路和数据选择器,很容易完成该电路设计。(电路详解略)
F=0;当A2A1A0≠B2B1B0时,F=1。
ENMUXG07A0A101}BIN/OCTA22B100B0211YF
B1422233441
&55EN6677
图题解4.23
4位数值比较器74HC85构成一个数值范围指示器,其输入变量8421BCD码,用以表示一位十进制数X。当X≥5时,该指示器输出为74HC85功能表如表4.15所示。
4.25解:该题最简单的解法是利用4位数值比较器74HC85将输入的4.25所示。
ABCD4比较,
4.25 试用一片为
1。否则输出为0。题8421BCD码与电路图如图题解 X>Y>ZX>Z>YY>X>ZY>Z>XZ>X>YZ>Y>XX=Y=Z
题4.27解:首先用3个数值比较器74HC85分别完成X和Y、X和Z、Y和Z之间的比较,比较的结果有3组,分别是F(X>Y),F(X=Y),F(X F(Y f0f1f2f3f4f5f6f7 题4.29解:两片74HC382ALU芯片连成8位减法器电路如图题解4.29所示。图中ALU(1)为低位芯片,ALU(2)为高位芯片,要实现减法运算,选择码S2S1S0必须为001,低位芯片的CN输入必须为0。 ︷︷︷︷︷︷︷︷ yn<= “000”; gsn<=’0’; eon<=’1’; ELSIF (inputn(6)='0') THEN yn<= “001”; gsn<=’0’; eon<=’1’; ELSIF (inputn(5)='0') THEN yn<= “010”; gsn<=’0’; eon<=’1’; ELSIF (inputn(4)='0') THEN yn<= “011”; gsn<=’0’; eon<=’1’; ELSIF (inputn(3)='0') THEN yn<= “100”; gsn<=’0’; eon<=’1’; ELSIF (inputn(2)='0') THEN yn<= “101”; gsn<=’0’; eon<=’1’; ELSIF (inputn(1)='0') THEN yn<= “110”; gsn<=’0’; eon<=’1’; ELSEIF (inputn(0)='0') yn<= “111”; gsn<=’0’; eon<=’1’; ELSE yn<= “111”; gsn<=’1’; eon<=’0’; END IF; END IF; END PROCESS; END rtl; B4.2编写七段显示译码器VHDL模块,译码器输入为X表示4位二进制数,输出显示器,当输入为000~1111时,其输出字符和7448正常显示时相同。 表4.9所示。 B4.3编写一个具有4通道且每个通道为4位的数据选择器VHDL模块。 题B4.3解:设数据选择器4路数据输入信号为din,2位选择输入信号为s,输出信号为数据选择器VHDL代码如下所示: ENTITY mux4 IS PORT( din0,din1,din2,din3 : IN BIT_VECTOR(3 DOWNTO 0); s : IN INTEGER RANGE 0 TO 3; 驱动共阳 7448功能如dout。 dout : OUT BIT_VECTOR(3 DOWNTO 0)); END mux4; ARCHITECTURE rtl OF mux4 IS BEGIN WITH s SELECT dout <= din0 WHEN 0, din1 WHEN 1, din2 WHEN 2, din3 WHEN 3; END rtl; B4.4半加器和全加器的VHDL模块如例4.17和例4.18所示,将该两个模块作为元件,利用 PORT MAP命令设计4位二进制串行进位加法器电路。 B4.5根据式(4.9)、(4.10)、(4.11)编写功能和4位数字比较器74HC85相同的VHDL模块。 74HC85功能表如表4.15所示。 题B4.5解:式(4.9)、(4.10)、(4.11)为: Y(A>B)=A3B3+(A3eB3)A2B2+(A3eB3)(A2eB2)A1B1+(A3eB3)(A2eB2)(A1eB1)A0B0 +(A3eB3)(A2eB2)(A1eB1)(A0eB0)I(A>B) (4.9) Y(A+(A3eB3)(A2eB2)(A1eB1)(A0eB0)I(AY(A=B)=(A3eB3)(A2eB2)(A1eB1)(A0eB0)I(A=B) (4.11) 根据表达式写出的VHDL代码如下程序所示。需要注意的是,由于在VHDL逻辑运算符中,没有同或运算,所以在程序中,由异或(XOR)取反(NOT)来替代同或运算。 ENTITY comparator IS PORT ( a,b :IN BIT_VECTOR(3 DOWNTO 0) ; gtin,ltin,eqin :IN BIT; --级联输入 agtb,altb,aeqb :OUT BIT); END comparator; ARCHITECTURE beh OF comparator IS BEGIN Agtb<=(A(3) AND (NOT B(3))) OR ((NOT(A(3) XOR B(3)))AND(A(2) AND (NOT B(2)))) OR ((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (A(1) AND (NOT B(1)))) OR ((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (NOT(A(1) XOR B(1)))AND A(0) AND (NOT B(0))) OR (((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (NOT(A(1) XOR B(1)))AND(NOT(A(0) XOR B(0)))) AND gtin); Altb<=(B(3) AND (NOT A(3))) OR ((NOT(A(3) XOR B(3)))AND(B(2) AND (NOT A(2)))) OR ((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (B(1) AND (NOT A(1)))) OR ((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (NOT(A(1) XOR B(1)))AND B(0) AND (NOT A(0))) OR (((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (NOT(A(1) XOR B(1)))AND(NOT(A(0) XOR B(0)))) AND ltin); aeqb<= (((NOT(A(3) XOR B(3))) AND (NOT(A(2) XOR B(2))) AND (NOT(A(1) XOR B(1)))AND(NOT(A(0) XOR B(0)))) AND eqin ); END beh; B4.6编写符合题4.27功能要求的比较器VHDL模块。 B4.7用VHDL语言设计一个功能和表4.17相同的4位ALU电路。 题B4.7解: 设两个4位运算数为A和B,3选择码为S,4位运算结果为F,进位输出为CO。VHDL代码如下程序所示。需注意的一点是,当两数相减,结果为负时,其F输出为二进制补码,CO表示符号位。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU IS PORT ( A,B : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; S : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ; CO : OUT STD_LOGIC; F : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ALU; ARCHITECTURE beh OF ALU IS SIGNAL tmp1: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN tmp1<=S(1)&S(0); PROCESS(A,B,S) VARIABLE tmp: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN IF(S(2)=0) THEN CASE tmp1 IS WHEN “00”=>tmp:=(’0’&A)+B; WHEN “01”=>tmp:=(’0’&A)-B; WHEN “10”=>tmp:=(’0’&A)+’1’; WHEN OTHERS=>tmp:=(’0’&A)-’1’; END CASE; ELSE CASE tmp1 IS WHEN “00”=>tmp(3 DOWNTO 0):=A AND B; WHEN “01”=>tmp(3 DOWNTO 0):=A OR B; WHEN “10”=>tmp(3 DOWNTO 0):=NOT A; WHEN OTHERS=>tmp(3 DOWNTO 0):=A XOR B; END CASE; END IF; F<=tmp(3 DOWNTO 0); CO<=tmp(4); END PROCESS; END beh; 因篇幅问题不能全部显示,请点此查看更多更全内容