数字逻辑与数字系统设计
第1章 习题解答
1.3 (1)86
(2)219
(3)106.25
(4)0.6875 (4)0.101
1.4 (1)101111
(2)1001000
(3)100001l.11
1.5 (1)(117)10=(165)8=(1110101)2=(75)16
(2)(3452)10=(6574)8=(110101111100)2=(D7C)16
(3)(23768.6875)10=(56330.54)8=(101110011011000.1011)2=(5CD8.B)16 (4)(0.625)10=(0.5)8=(0.101)2=(0.A)16 1.6 (1)(117)8=(1001111)2=(79)10
(2)(7456)8=(111100101110)2=(3886)10
(3)(23765.64)8=(10 0111 1111 0101.1101)2=(10229.8125)10 (4)(0.746)8=(0.11111)2=(0.96875)10 1.7 (1) (9A)16=(10011010)2=(154)10
(2) (3CF6)16=(11110011110110)2=(15606)10
(3) (7FFE.6)16=(111111111111110.011)2=(32766.375)10 (4) (0.C4)16=(0.110001)2=(0.765625)10 1-8 (1)(125)10=(000100100101)8421BCD
(2)(7342)10=(0111001101000010)8421BCD
(3)(2018.49)10=(0010000000011000.01001001)8421BCD (4)(0.785)10=(0.011110000101)8421BCD
1.9
(1)(106)10=(1101010)2 原码=反码=补码=01101010 (2)(-98)10=(-1100010)2 原码=11100010
反码=10011101 补码=11100011
(3)(-123)10=(-1111011)2 原码=11111011
反码=10000101 补码=11111011
(4)(-0.8125)10=(-0.1101)2 原码=1.1101000
反码=1.0010111 补码=1.0011000
1.10
(1)(104)10=(1101000)2 [1101000]补=01101000
(-97)10=(-1100001)2 [-1100001]补=10011111
01101000 + 10011111 00000111
10000011 + 01001111 11010010
[104-97]补=01101000+10011111=00000111, 104-97=(00000111)2=7 (2) (-125)10=(-1111101)2
(79)10=(01001111)2
[-1111101]补=10000011 [01001111]补=01001111
01111000 [-125+79]补=10000011+01001111=11010010,-125+79=(-0101110)2=-46 (3) (120)10=(1111000)2 [01111000]补=01111000
(-67)10=(-1000011)2 [-1000011]补=10111101
[120-67]补=10000011+01001111=00110101,-125+79=(00110101)2=53 (4) (-87)10=(-1010111)2 [-1010111]补=10101001
(12)10=(1100)2 [1100]补=00001100
[-87+12]补=10101001+00001100=10110101,-125+79=(-1001011)2=-75
+ 10111101 00110101
10101001
+ 00001100 10110101
第2章 习题解答
2.3 解:根据逻辑图可直接写出逻辑表达式:(a) F=AB?BC;(b) F=ABBCAC
解:设3个输入变量分别为A、B、C,输出为F,按题意,其中有奇数个为1,则输出F=1,因此可写出其逻辑表达式为F=ABC?ABC?ABC?ABC。根据逻辑表达式可绘制逻辑习题2.3图如下:
习题2.3图
2.4 解:根据逻辑图可直接写出逻辑表达式:(a) F=AB?BC;(b) F=ABBCAC 2.5 解:
(1) 若A+B=A+C,则B=C
不正确。若A=1,B和C为不同值(如B=0,C=1或B=1,C=0),A+B=A+C仍然成立。 (2)若AB=BC,则A=C
不正确。若B=0,A和C为不同值,等式仍然成立。 (3)若1+A=B,则A+AB=B
不正确。若1+A=B,则B=1,此时若A=0,则A+AB=0,不可能有A+AB=B (4)若1+A=A,则A+AB=A+B
正确,因为若1+A=A,则A=1,无论B=0或B=1,均有A+AB=A+B 2.6 解:
(1)A+BC=(A+B)(A+C)
证明:右边=A(A+C)+B(A+C)=A+AC+AB+BC=A+BC=左边 (2)AB+AB=(A+B)(A+B)
证明:右边=AA+AB+AB+BB=AB+AB=左边 (3)(AB+C)B=ABC+ABC+ABC 证明:左边=AB+BC
右边=AB(C+C)+BC(A+A)=AB+BC=左边 (4)BC+AD=(B+A)(B+D)(A+C)(C+D)
证明:右边=(B+AB+BD+AD)(AC+C+AD+CD)
=(B+AD)(C+AD)
=BC+ACD+ABD+AD=BC+AD=左边
2.7 解:
(1) F=(A+B+C) (A+B+C) (A+B+C)
=(AB?AC?AB?BC?AC?BC?C)(A?B?C) =(AB?AB?C)(A?B?C) =ABC?AB?ABC?AC?BC =AB?BC?AC?ABC (2) F=(B+D)(A+C)(B+D)
=(AB+AD+BC+CD)(B+D) =ABD+BCD+ABD+BCD (3) F=(A?C)(B?C)(A?B)
=(AB?AC?BC)(A?B) =AB?AC?ABC?BC =AB?AC?BC (4) F=AB+BC 2.8 解:
(1) F=ABC?A(B?B)C?(A?A)BC =ABC?ABC?ABC?ABC?ABC =∑m(1,3,5,7)
(2) F= ABCD+ACD+AD
= ABCD+ A(B+B)CD+A(B+B)(C+C)D
= ABCD+ ABCD+ ABCD+ABCD+ABCD+ABCD+ABCD = ∑m(1,3,5,7,9,11,13)
(3) F=∑m(3,6,7,8,9,10,11,12,13,14,15) (4) F=∑m(3,11,12,13,14,15) (5) F=∑m(1,2,3,4,5,6) (6) F=∑m(4,7,8,11) 2.9 解:
(1)F?A?B?BCD?A?B?CD
(2)F?AB?BC?AC?AB?BC?ABC?ABC?AB?BC
(3)F?A(B?C)?BC?ACD?A(BC)?BC?ACD?A?BC?ACD?A?BC (4)F?(A?C)(A?D)?A?AC?CD?A?CD
(5)F?D?D?B?C?AD?B?D??B?C?AD?B?D?ABD?ACD?BC?D?BC (6)F?ABC?(A?B?C)D?ABC?ABCD?ABC?D (7)F?(AC?BC)B?A?C??(AC?BC)(B?A?C)
?(AC?BC)(B?AC?AC)?ABC?AC?BC?ABC?AC?BC
????(8)F?(A?B)?(B?C)?AB?AB?BC?BC
?AB?BC?AC 或=AB?BC?AC
2.10 解:(1) F=AB?AC (2) F=1 (3) F=BC?AB
(4) F=AB?C?D
(6) F=BC+BD
(5) F=ABCD, F=A?B?C?D
(7) F=AB?BD?C
(8) F=AC?BD
(2) F(A,B,C)=B?C
(3) F(A,B,C)=AC?AC?B
2.11 解:(1) F(A,B,C)=A+B?C
(4) F(A,B,C,D)=A?BD
(5)F(A,B,C,D)=BD?AC?CD
(6) F(A,B,C,D)=BC?BC
第4章 习题解答
4.4解:
F1=A⊕B F2=AB 输 入 A 0 0 1 1 B 0 1 0 1 输 出 F1 0 1 1 0 F2 0 1 0 0 分析真值表可见,其功能相当于半减器功能,即a-b,F1是本位差,F2是向高位的借位。 4.5解:
F1=A⊕B⊕C
F2=AB?CA?B=AB?CAB?AB?AB?C(AB?AB)?AB?ABC?ABC
输 入 A 0 0 0 0 1 1 1 1
分析真值表可见,电路实现的是全减器功能:F1是A-B-C的本位差,F2是A-B-C向高位
B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 输 出 F1 0 1 1 0 1 0 0 1 F2 0 1 1 1 0 0 0 1 的进位。
4.6 解:根据题意:F=SA?SB,所以,可绘制电路如习题4.6图所示
习题4.6图
4.7解:根据题意:F=XYA?XYB?XYC?XYD,所以,可绘制电路如习题4.7图所示
习题4.7图
4.8解:
习题4.8图
4.9 解:根据题意,三个变量有两个为1的卡诺图如习题4.9图(a)所示:
习题4.9图(a)
由此可列出逻辑表达式为:F=ABC?ABC?ABC,根据逻辑表达式可绘制逻辑电路习题4.9图(b)所示:
习题4.9图(b)
4.10 解:根据题意,列出功能表如下:
十进制数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 余3码ABCD d d d 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 d d d 输出F 1 1 1 0 0 0 0 1 1 1 根据功能表绘制卡诺图如下: 考虑无关项可得化简后的表达式: F=AB?BC?AC
不考虑无关项,化简后的表达式: F=ABCD?ABC?ABCD?ABC
按考虑无关项化简结果绘制的逻辑电路习题4.10图(a)所示:
习题4.10图(a)
按不考虑无关项化简结果绘制的逻辑电路如习题4.10图(b)所示
习题4.10图(b)
4.11 解:这是一个优先编码器的问题,设特快为A,直快为B,慢车为C,没有开车要求,输出为0,若A要求开车则输出,1,B要求开车输出为2,C要求开车输出3,根据A-B-C的优先顺序列功能表如下:
输 入 A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 输 出 T1 0 1 1 1 0 0 0 0 T0 0 1 0 0 1 1 1 1
T1=AC?AB
T0=A+BC
根据化简后的逻辑表达式可绘制逻辑电路图如下:
习题4.11图
4.12 解:
根据题意,输入为BCD码,输出为余3码,其轮换功能表如下表所示
A B C D W X Y Z A B C D W X Y Z 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 X X X X X X X X X X X X X X X X X X X X X X X X 余3码的四位从高到低依次为WXYZ,其逻辑表达式如下: W=∑m(5,6,7,8,9)+∑d(10,11,12,13,14,15) X=∑m(1,2,3,4,9)+∑d(10,11,12,13,14,15) Y=∑m(0,3,4,7,8)+∑d(10,11,12,13,14,15) Z=∑m(0,2,4,6,8)+∑d(10,11,12,13,14,15) 用卡诺图化简得:
W=A+BD+BC =ABDBC
X=BD?BCD?BCD Y=CD?CD Z=CD?CD
=BDBCDBCD
=CDCD
=CDCD
根据化简并变换后的逻辑表达式可绘制逻辑习题4-12图所示下:
习题4.12图
4.13 解:
//4.6的Verilog HDL描述 module ex6(a,b,s,f);// input a,b,s; output f;
assign f=(s?b:a); endmodule
//4.7的Verilog HDL描述 module ex7(a,b,c,d,x,y,f); input a,b,c,d; input x,y; output f; reg f; always @(a or b or c or d or x or y) begin case({x,y}) 2'b00: f<=a; 2'b01: f<=b; 2'b10: f<=c; 2'b11: f<=d; default: f<=a; endcase end endmodule
//4.8的Verilog HDL描述 module ex8(e,b,a,f); input e,b,a; output[0:3] f; reg[0:3] f; always @(e or b or a ) if(~e) case({b,a}) 2'b00: f<=4'b0111; 2'b01: f<=4'b1011; 2'b10: f<=4'b1101; 2'b11: f<=4'b1110; default: f<=4'b0111; endcase else f<=4'b1111; endmodule
//4.9的Verilog HDL描述 module ex9(a,b,c,f); input a,b,c;
output f; reg f; always @(a or b or c ) case({a,b,c}) 3'b011: f<=1'b1; 3'b101: f<=1'b1; 3'b110: f<=1'b1; default: f<=1'b0; endcase endmodule
//4.10的Verilog HDL描述 module ex10(a,b,c,d,f); input a,b,c,d; output f; reg f; always @(a or b or c or d) case({a,b,c,d}) 4'b0011: f<=1'b1; 4'b0100: f<=1'b1; 4'b0101: f<=1'b1; 4'b1010: f<=1'b1; 4'b1011: f<=1'b1; 4'b1100: f<=1'b1; default: f<=1'b0; endcase endmodule
//4.11的Verilog HDL描述 module ex11(a,b,c,f); input a,b,c; output[1:0] f; reg[1:0] f;
always @(a or b or c) if(a) f<=2'b01; else if(b) f<=2'b10; else if(c) f<=2'b11; else f<=2'b00; endmodule
//4.12的Verilog HDL描述 module ex11 (a,b,c,d,f); input a,b,c,d; output[3:0] f; reg[3:0] f;
always @(a or b or c or d) case({a,b,c,d})
4'b0000: f<=4'b0011; 4'b0001: f<=4'b0100; 4'b0010: f<=4'b0101; 4'b0011: f<=4'b0110; 4'b0100: f<=4'b0111; 4'b0101: f<=4'b1000; 4'b0110: f<=4'b1001; 4'b0111: f<=4'b1010; 4'b1000: f<=4'b1011; 4'b1001: f<=4'b1100; default: f<=4'b0011; endcase endmodule 4.14 解:
(a) 根据所给电路可列出逻辑表达式如下:
F=AB?AC,当B=1,C=1时,F=A?A,由于非门的延迟,使得A和A到达F的时间不同时,从而使该电路在A改变时存在竞争-冒险 (b) 根据所给电路可列出逻辑表达式如下:
F=(A?B)(B?C),当A=1,C=1时,F=BB,由于非门的延迟,使得B和B到达F的时间不同时,从而使该该电路在B改变时存在竞争-冒险 4.15 解:
(a) 根据所给电路可列出逻辑表达式如下:
F=ABBACAE= AB+BAC+AE=B(A+AC)+AE=BC?AE 根据表达式可画出卡诺图如下习题4.15图(a)所示:
题4.15图(a) 题4.15图(b)
从图中可见,卡诺图中的化简包围圈有相切,所以存在竞争-冒险,为了消除竞争-冒险,可以通过增加冗余项的方法实现,即增加一项BCD,如题4.15图(b)所示,消除相切的包围圈即可。
(b) 根据所给电路可列出逻辑表达式如下: F=A?B?C?B?C?C?D?C?D?D
=(A+B+C)(B+C+C?D)+C?D+D=(A+B+C)(B+C+C+D)(C+D+D)
=(A+B+C)(B+D)C=(A+B+C)(BC+CD)=ABC?BC?ACD?BCD=BC?ACD 从表达式可见,无论A、B、C、D为何值,电路都不存在竞争-冒险
第5章 习题解答
5.15 解: F1=ABC?ABC
F2=ABC?ABC?ABC?ABC?ABC?ABC 5.16 解:
F1= AB + BC + AC= CBA?CBA?CBA?CBA?CBA?CBA=m7+m3+m6+m5 =∑(m3,m5,m6,m7) F2=∑(m1,m2,m4,m7) 电路如习题5.16图所示
题5.16图
5.17 解:
8选1多路选择器选用74HC151,根据其输出与输入的逻辑方程:
CBA?CBA?CBA?CBA?CBA?CBA
F1=ABC?AC?BC=1CBA?1C1A?1CB1
F2=ACD?ABCD?BC?BCD=DC1A?DCBA?1CB1?DCB1 电路如习题5.17图(a)和图(b)所示。
习题5.17图(a) 习题5.17图(b)
5.18 解:
一片HC85可以实现两个4位二进制数比较,所以需要两片才能实现8位二进制数的比较,其中高4位用一片,低4位用另一片,高4位的A=B输入接1,低4位的A=B输入高4位的QA=B输出电路如习题5.18图所示。
习题5.18图
5.19 解:根据习题5.19图
习题5.19图
可列出B2和B1的逻辑表达式:
D?B?A?D?C?(D?B?A)(D?C)?D?DC?DB?CB?DA?CA
?D?CB?CA?D?C(B?A)上式表明:
(1) 如果8421码的最高位D为0,次高位C为0,则输出值不变;
(2) 如果8421码的最高位D为0,次高位C为1,则只要B和A任一位为1,即加0110; (3) 如果8421码的最高位D为1,则不管其低三位为何值,都必须加上0110。 根据以上规则列出输入与输出值的对应关系表如下表所示,可见输出为2421码。
输入 十进制数 DCBA 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 ZYXW 0000 0001 0010 0011 0100 1011 1100 1101 输出
8 9 1000 1001 1110 1111 5.20 解:
将8421BCD码转换成余3码,只需将8421BCD码作为74HC283的一个4位二进制数输入,与另一个输入数0011相加即可。 5.21解:
要用8选1数据选择器74HC151和门电路设计一个四位二进制码产生偶校验,在当输入的四位二进制码中有奇数个1时,输出F为1,否则为0。设四位二进制码DCBA为输入逻辑变量,校验结果F为输出逻辑变量。所对应的偶校验的逻辑关系见表。
若由8选1数据选择器74HC151和门电路实现此逻辑关系,可以将输入变量C、B、A送入74HC151的C、B、A端,当CBA从000~111取8组值时,F与D的关系参见下表,又知当ABC从000~111取8组值时,数据选择器将依次选通D0~ D7,据此可将输入变量D送入D0、D3、D5、D6,D送入D1、D2、D4、D7。电路如习题5.21图所示,它可以完成一个四位二进制码的奇偶校验功能。
D C B A 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 F 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
习题5.21图
5.22解:
设5个变量为A、B、C、D、E,输出为F
输入与输出之间的关系
A B C D E 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 F 0 0 0 0 0 A B C D E 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 F 0 0 0 1 0
0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 用B、C、D作为8选1数据选择器的通道选择信号,则由上面的真值表可知,8选1数据选择器的数据各输入端与A、E的关系如下:
D0=0
A=0时,D1=0;A=1时,D1=E A=0时,D2=0;A=1时,D2=E A=0时,D3=E;A=1时,D3=1 A=0时,D4=0;A=1时,D4=E A=0时,D5=E;A=1时,D5=1 A=0时,D6=E;A=1时,D6=1 D7=1
由此,可用两个2选1数据选择器:一个选择器根据A的状态从0和E中选择一个送给D1、D2、D4;另一个选择器根据A的状态从E和1中选择一个送给D3、D5、D6。
原理框图如习题5.22(a)所示:
BA20D0D1D2FASelF1D1Mux211D6D7D3D4D5D0Mux81CA1DA0Mux210ED0FD1SelE 习题5.22(a)图
8选1选择器可用74HC151,2选1选择器可由两个与门、一个非门和一个或门构成,可绘制Proteus中的仿真原理图如习题5.22 (b)图所示。
习题5.22图(b)
5.23解:
表5.6 74HC148的功能表
输 入 EI 1 0 0 0 0 0 0 0 0 0 I0 × 1 × × × × × × × 0 I1 × 1 × × × × × × 0 1 I2 × 1 × × × × × 0 1 1 I3 × 1 × × × × 0 1 1 1 I4 × 1 × × × 0 1 1 1 1 I5 × 1 × × 0 1 1 1 1 1 I6 × 1 × 0 1 1 1 1 1 1 I7 × 1 0 1 1 1 1 1 1 1 A2 1 1 0 0 0 0 1 1 1 1 A1 1 1 0 0 1 1 0 0 1 1 输 出 A0 1 1 0 1 0 1 0 1 0 1 GS 1 1 0 0 0 0 0 0 0 0 EO 0 0 1 1 1 1 1 1 1 1 根据74HC148的功能表中可见,当输入使能EI=1时,禁止编码,此时,编码输出3位全1,
且输出使能EO为低电平,表示无有效编码输出,扩展端GS为高电平;只有当EI=0时才允许编码,编码输出取决于有效输入信号,若无有效信号输入,即输入仍全为1,则EO=0,表示输出A2A1A0=111不是有效编码,GS仍为高电平;若存在有效输入信号,则EO=1,表示输出编码有效,按信号优先级别,输出反码形式的编码,且GS=0。比如EI=0,且I7=0,无论其它输入是0或1,输出使能EO=1,表示输出编码A2A1A0=000为有效编码。将上片的使能输出端接到下片的使能输入端,再将两片对应的输出编码端作为与门的输入,其输出即为应用的4位编码输出,4位编码的最高位用上片的GS即可,两片的EO的相或作为最后的EO输出,即构成16线-4线编码器,如习题5.21图所示。
习题5.23图
5.24解:
设一位全加器的输入为A、B、C,输出本位和为F2,向高位的进位为F2,根据全加器的输出逻辑表达式,F2(A,B,C)=m1+m2+m4+m7,F1(A,B,C)= m7+m3+m6+m5,可绘制电路与习题5.16图相同。
5.25解:根据余3码的定义,其编码如下表所示
余3码 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 数字 0 1 2 3 4 5 6 7 8 9
习题5.24图
在用74283做两个余3码加法运算时,如果要得到余3码表示相加结果,在有进位时,应该做加0011的修正,如果没有进位,则应该做减0011的修正,而减0011又可以用加上-0011的补码来实现,-0011的补码可通过对0011各位求反,然后在最低位加1实现,因此可设计电路如上图所示。U1的输出是两个余3码的当成二进制数相加的结果,U2的输出即为修正后的余3码表示的和,如习题5.24图所示。 5.26解:
根据8421与其它编码的对应关系表,要将余3码转换成8421码,只需用74283将余3码与-0011的补码(即1101)相加即可;要将5421码转换成8421码,只需在5421码大于4时,将5421码与-0011的补码(即1101)相加即可;要将2421码转换成8421码,只需在2421码大
于4时,将2421与-0110的补码(即1010)相加即可。
有权码 十进制数 8421码 0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 5421码 0000 0001 0010 0011 0100 1000 1001 1010 1011 1100 2421码 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 余3码 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 无权码 (1) 要将余3码转换成8421码,只需将余3码减去0011,也就是加上(-0011)的补码1101
即可。所以只需将B3、B2和B0直接接高电平,而B1接低电平,电路如习题5.26-1所示。其中DCBA是余3码输入,ZWYX是8421码输出。
(2) 要将5421码转换成8421码的转换,当5421码小于5时,两者相同,大于或等于5时,
才需要变换,而变换的规则是减去0110,即加上1101,所以只需将5421的最高位直接连到B3、B2和B0即可。电路如习题5.26-2图所示。其中DCBA是5421码输入,ZWYX是8421码输出。
(3) 要将2421码转换成8421码的转换,当2421码小于5时,两者相同,大于或等于5时,
才需要变换,而变换的规则减去0110,即是加上1010,所以只需将2421的最高位直接连到B3和B1即可。电路如习题5.26-3图所示。其中DCBA是2421码输入,ZWYX是8421码输出。
题5.26-1图 题5.26-2图 题5.26-3图
5.27解:
根据对编码表的分析比较:
有权码 十进制数 8421码 0 0000 5421码 0000 2421码 0000 余3码 0011 无权码
1 2 3 4 5 6 7 8 9 0001 0010 0011 0100 0101 0110 0111 1000 1001 0001 0010 0011 0100 1000 1001 1010 1011 1100 0001 0010 0011 0100 1011 1100 1101 1110 1111 0100 0101 0110 0111 1000 1001 1010 1011 1100 (1) 要将8421码转换成5421码,可将8421码在小于5时保持不变,在大于或等于5时加上0011即可。而大于或等于5的条件是用DCBA表示的8421码中D为1,或C为1并且B和A之一为1,即D+C(B+A),由此可设计出转换电路如习题5.27-1图所示,其中DCBA是余8421码输入,ZWYX是5421码输出。
(2) 要将5421码转换成余3码,可将5421码在大于或等于5时保持不变,在小于5时加上0011即可。而小于5的条件是用DCBA表示的8421码中D为0,而且C为0,或者D为0而且(B+A)也为0,即D?C?DA?B,由此可设计出转换电路如习题5.27-2图所示,其中DCBA是余5421码输入,ZWYX是余3码输出。
(3) 要将余3码转换成5421码,可将余3码在大于或等于5时保持不变,在小于5时减去0011即加上1101即可。而小于5的条件是用DCBA表示的余3码中D为0,所以只需在条件D的输出送到B3、B2和B0即可得到相应的转换电路相同,如习题5.27-3图所示。 (4) 将5421码转换成2421码,可将5421码在小于5时保持不变,在大于或等于5时加上0011即可,所以设计出转换电路与8421码到5421码的转换电路相同,如习题5.27-1图所示。
习题5.27-1图 习题5.27-2图
习题5.27-3图
5.28解:
4个二选1的数据选择器用74HC157,用X作为其选择端,当X=0时,做加法A+B,将B的原值输出送到74283的B3B2B1B0与74283的另一个数A3A2A1A0相加,当X=1时,做减法,将B的反值输出送到74283的B3B2B1B0与74283的另一个数A3A2A1A0相加同时将X本身作为进位输入接到74283的C0,即可实现由X控制的加/减法器。如习题5-28图所示
习题5-28图
第6章 习题解答
6.1 在图6.3由两个与非门构成的基本RS触发器中,如果R、S两端的输入电压波形如图6.60所示,试画出输出端Q和Q的波形。
解:
由给定的图形可知,R、S两端的输入信号状态可分为7个时间段 (1)第1个时间段内,R?1,S?0,输出为Q?1,Q?0 (2)第2个时间段内,R?0,S?0,输出为Q?1,Q?1 (3)第3个时间段内,R?0,S?1,输出为Q?0,Q?1 (4)第4个时间段内,R?1,S?1,输出保持不变 同理,可画出其他几个时间段内的输出波形,如图所示。
RSQQ
6.2 试用两个2输入或非门构成一个基本RS触发器,画出逻辑电路图并分析其工作原理。
解:
由或非门构成的基本RS触发器逻辑电路如图所示。
R习题6.1图QS习题6.2图Q
分析该电路的工作过程,可列出其特性表如表所示。
或非门构成的基本RS触发器的特性表
R 0 0 1 1 S 0 1 0 1 Q 0 1 0 1 0 1 0 1 Q* 0 1 1 1 0 0 0* 0* Q* 1 0 0 0 1 1 0* 0* 保持原状态 说明 置位 复位 禁止的输入状态,输入信号同时撤消时输出状态不确定 6.3 与非门构成的同步RS触发器(逻辑电路如图6.5所示)中,R、S端的输入波形如图6.61所示,试画出Q和Q的输出波形,设触发器的初态Q=0。
解:
由同步RS触发器的工作特性可知,在CLK=1期间,R、S的状态决定了输出的状态。CLK=0期间,输出状态保持不变。
在第1个CLK为高电平期间,R=0,S=1,输出被置位,Q=1,Q?0,CLK下降沿到达后,该状态被保持
在第2个CLK为高电平期间,R=1,S=0,输出被复位,Q=0,Q?1,CLK下降沿到达后,该状态被保持
在第3个CLK为高电平期间,首先是R=0,S=1,输出被置位,Q=1,Q?0;然后,R=1,S=0,输出被复位,Q=0,Q?1,CLK下降沿到达后,该状态被保持
同理可画出后面两个CLK脉冲中输出的波形,如图所示。
CLK0R0S0Q0Q0习题6.3图ttttt
6.4 同步D触发器(逻辑电路如图6.11所示)的输入波形如图6.62所示,试画出Q端的输出波形,设触发器的初态Q=0。
解:
由同步D触发器的工作特性可知,在CLK=1期间,输出Q跟随D的状态而变化。CLK=0期间,输出状态保持不变。可画出输出的波形图如图所示。
CLK0D0Q 0Q0习题6.4图tttt
6.5 同步JK触发器(逻辑电路如图6.15)的输入波形如图6.63所示,试画出Q端的输出波形,设触发器的初态Q=0。
解:
由同步JK触发器的工作特性可知,在CLK=1期间,J、K输入端的状态决定了输出的状态。CLK=0期间,输出状态保持不变。
在第1个CLK为高电平期间,J=0,K=1,输出被复位,Q=0,CLK下降沿到达后,该状态被保持
在第2个CLK为高电平期间,J=1,K=0,输出被置位,Q=1,CLK下降沿到达后,该状态被保持
在第3个CLK为高电平期间,首先是J=0,K=1,输出被复位,Q=0;然后,J=1,K=1,触发器翻转,输出Q=1,CLK下降沿到达后,该状态被保持
同理可画出后面两个CLK脉冲中输出的波形,如图所示。
CLK0J0K0Q0习题6.5图tttt
6.6 在一个下降沿触发的JK触发器上施加如图6.64所示的输入波形,试画出Q端的输出波形,设触发器的初态Q=0。
解:
由下降沿触发JK触发器的工作特性可知,触发器的输出状态取决于CLK下降沿到达瞬间J、K输入端的状态,由此可画出输出波形如图所示。
CLK0J0K0Q0习题6.6图tttt
6.7 设图6.65所示的各触发器都是上升沿触发,且初态均为Q=1,试画出5个CLK脉冲作用下各触发器Q端的输出波形。
DSETQJSETQDTSETQCLKCLRCLKQCLKKCLRQCLRQ图6.65 习题6.7图
解:
三个触发器都是上升沿触发,初态为Q=1。
由D触发器的连接方式可知,其特性方程为Q*?D?Q,所以每个CLK上升沿到达时,其输出都会翻转,如图(a)所示。
CLK0D=Q0Q 0习题6.7波形图(a)ttt
该JK触发器的J?Q,K=Q,所以其特性方程为Q*?JQ?KQ?Q,所以每个CLK上升沿到达时,其输出都会翻转,如图(b)所示。
CLK0J0K0Q0习题6.7波形图(b)tttt
该T触发器的T?Q,初态Q=1,所以T?Q?0,触发器的输出保持不变,一直维持为1不变,即Q=1,输出波形图略。
6.8 试写出图6.66所示各触发器的特性方程。
DSETQJSETQDTSETQSSETQCLKCLRCLKQCLKKCLRCLKCLRQQRCLRQDSETQJSETQDTSETQSSETQCLKCLRCLKQCLKKCLRCLKCLRQQRCLRQ1JSETQ1CLKDTSETQCLKKCLRQCLRQ图6.66 习题6.8图
解:
(1)D?Q,所以,其特性方程为Q*?D?Q
(2)J?Q,K=Q,所以其特性方程为Q*?JQ?KQ?Q?Q?Q?Q?Q
(3)T?Q,所以其特性方程为Q*?TQ?TQ?Q?Q?Q?Q?1 (4)S?Q,R=Q,所以其特性方程为Q*?S?RQ?Q?Q?Q?Q (5)D=Q,所以,其特性方程为Q*=D=Q
(6)J=Q,K?Q,所以其特性方程为Q*?JQ?KQ?Q?Q?Q?Q?Q (7)T=Q,所以其特性方程为Q*?TQ?TQ?Q?Q?Q?Q?0 (8)S=Q,R?Q,所以其特性方程为Q*?S?RQ?Q?Q?Q?Q (9)J=K=1,所以其特性方程为Q*?JQ?KQ?Q (10)T=1,所以其特性方程为Q*?TQ?TQ?Q
6.9 试用T触发器和与非门构成JK触发器,画出逻辑电路图。 解:
用T触发器构成JK触发器,就是要找出其输入端T的逻辑函数式。列出JK触发器的特性表,并找出如果用T触发器实现该功能,每种状态变化情况对应的T输入端状态,如下表所示。
JK触发器的特性表及其与T触发器输入端的对应关系 J 0 0 0 0 1 1 1 1 K 0 0 1 1 0 0 1 1 Q 0 1 0 1 0 1 0 1 Q* 0 1 0 0 1 1 1 0 T 0 0 0 1 1 0 1 1 说明 维持原状态,故T=0 维持原状态,故T=0 维持原状态,故T=0 翻转,故T=1 翻转,故T=1 维持原状态,故T=0 翻转,故T=1 翻转,故T=1 由上表可写出T与J、K、Q之间的逻辑关系式:
T?J?K?Q?J?K?Q?J?K?Q?J?K?Q?J?Q?K?Q,将其代入T触发器的特性方
程,得
Q*?TQ?TQ?JQ?KQQ?JQ?KQ?Q?JQ?J?K?K?Q?J?QQ?JQ?J?K?Q?K?Q?JQ?KQ将T的逻辑表达式化为用与非门实现,得:T?JQ?KQ?JQ?KQ 由此可画出逻辑电路图如下图所示。
????
KDTSETQQQJ 习题6.9图CLRQ
6.10 设某触发器有两个输入信号X、Y,且特性方程为Q*=X?Y?Q,试用JK触发器实现该触发器。
解:
特性方程Q*?X?Y?Q??X?Y??Q?X?Y?Q
与JK触发器的特性方程Q*?JQ?KQ进行比较得,J?X?Y,K?X?Y 逻辑电路图如图所示。
XYCLK习题6.10图J SETQQQKCLR Q
6.11 试分析图6.67所示时序电路的逻辑功能,写出电路的驱动方程和状态方程,画出电路的状态转换图,并说明电路是否能够自启动。
1JFF0Q Q0SETCLRFF1J QSETQ1FF2J QSETQ2K QKCLR QKCLR QCLK图6.67 习题6.11图
解:
该电路是一个同步时序逻辑电路,3个触发器FF0、FF1、FF2都是在CLK的上升沿动作,故不需写时钟方程。
(1) 写出3个触发器的驱动方程 由逻辑电路图,可写出各驱动方程如下。 J0=K0=1 J1=K1= Q0 J2= K2=Q1Q0
(2) 将驱动方程代入到JK触发器的特性方程Q*?JQ?KQ中,求得各触发器的状态
方程
Q*0?Q0
*Q1?Q1Q0?Q1Q0?Q1?Q0
Q*2?Q2Q1Q0?Q2Q1Q0?Q2??Q1Q0?
(3) 列出状态转换真值表,并画出状态转换图
**设触发器的初始状态为Q2Q1Q0=000,代入状态方程,可得Q*2Q1Q0?001。依次求出**Q2Q1Q0的所有取值情况下,对应的次态Q*2Q1Q0,列成状态转换表如下。
习题6.11的状态转换表
Q2 Q1 Q0 0 0 0 0 0 1 0 1 0 0 1 1 Q*2*Q1Q*0 Q2 Q1 Q0 1 0 0 1 0 1 1 1 0 1 1 1 Q*2*Q1Q*0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 由状态转换表可以看出,8个状态000?111都是有效状态,不存在无效状态。画出状态
转换图如下图所示。
Q2Q1Q0000001010011111110101100习题6.11的状态转换图
(4) 归纳该电路的逻辑功能
在CLK脉冲上升沿的作用下,Q2Q1Q0的状态从000到111,以递增的形式每输入8个CLK脉冲循环一次。所以,该电路是一个同步八进制加法计数器。由于没有无效状态,所以该电路能够自启动。
6.12 试分析图6.68所示时序电路的逻辑功能,X为输入变量。
XFF0Q0D QSETCLRFF1Q1D QSETCLR Q QCLK图6.68 习题6.12图
解:
(1)该电路是一个同步时序逻辑电路,由逻辑电路可写出2个触发器FF0、FF1的驱动方程及状态方程如下。
Q*0?D0?Q0X?Q1
*Q1?D1?XQ1Q0?Q1Q0
??(2)列出状态转换真值表
根据各触发器的状态方程,可列成状态转换表如下。
习题6.12的状态转换表
X Q1 Q0 0 0 0 0 0 1 0 1 0 *Q1Q*0 *Q1Q*0 X Q1 Q0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 0 (3)归纳电路的逻辑功能
由状态转换表可以看出,当X=0时,Q1Q0的状态转换过程为00→01→10→00;当X=1时,Q1Q0的状态转换过程为00→01→10→11→00。
当X=0时,Q1Q0=11为无效状态,由状态方程可得其次态是00,故该电路能自启动。 综合以上分析可知,电路的逻辑功能是一个可控的加法计数器——X=0时是三进制计数器,X=1时是四进制计数器,且能够自启动。
6.13试画出图6.69所示时序电路的状态转换图,并判断是否能够自启动。
JFF0Q Q0SETCLRFF1J KSETQQ111FF2J QSETQ21CLKK QCLR QKCLR Q图6.69 习题6.13图
解:
(1)该电路是一个异步时序逻辑电路,由逻辑电路可写出3个触发器FF0、FF1、FF2
的驱动方程及时钟方程如下。
J0?Q2Q1,K0=1, CP0=CLK
J1=Q0,K1?Q2Q0,CP1=CLK J2=K2=1,CP2=Q1
(2)将驱动方程代入到JK触发器的特性方程Q*?JQ?KQ中,求得各触发器的状态方程
Q*0?Q2Q1Q0,在CLK的上升沿动作
*Q1?Q0Q1?Q2Q0Q1,在CLK的上升沿动作
Q*2?Q2,在Q1的上升沿动作
(3)列出状态转换真值表
根据各触发器的状态方程及时钟方程,可列成状态转换表如下(由于Q1作为FF2的时钟,所以标出Q1的变化趋势)。
习题6.13的状态转换表
Q2 Q1 Q0 0 0 0 0 0 1 1 1 0 1 0 0 **Q*2Q1Q0 **Q*2Q1Q0 Q2 Q1 Q0 1 0 1 0 1 0 0 1 1 0 0 1 1 1↑ 0 1 0↓ 0 1 0 1 0 1↑ 0 0 1 1 0 0↓ 0 由状态转换表可以看出,电路有7个状态,111是无效状态。由状态方程和时钟方程可
得,111的次态是100,故该电路可自启动。
(4)画出状态转换图
在CLK脉冲上升沿的作用下,Q2Q1Q0的状态转换过程为000→001→110→100→101→010→011→000,且能自启动。其状态转换图如下所示。
Q2Q1Q0000001110100011010101111习题6.13的状态转换图
6.14 试用上升沿触发的D触发器构成一个异步八进制加法计数器。 解:
电路应有八个状态,需3位编码表示,因而需要3个触发器,分别记为FF0、FF1和FF2。 (1)状态编码、画出编码状态转换图及状态转换表
编码状态用Q2Q1Q0表示,选择000?111对八个状态进行编码,画出编码状态转换图如下图所示。
Q2Q1Q0000001010011111110101100八进制加法计数器的编码状态转换图
根据状态转换图列出状态转换表,如下表所示。考虑到设计的是异步时序电路,某个触发器的输出信号可能是其他触发器的时钟脉冲信号,所以在转换表中标出了每个触发器的状态变化方向。
异步八进制加法计数器的状态转换表
Q2 Q1 Q0 0 0 0 0 0 1 0 1 0 0 1 1 **Q*2Q1Q0 **Q*2Q1Q0 Q2 Q1 Q0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1↑ 0 1↑ 0↓ 0 1 1↑ 1↑ 0↓ 0↓ 1 0 1↑ 1 1↑ 0↓ 1 1 1↑ 0↓ 0↓ 0↓ (2)求驱动方程和时钟方程
首先要确定每个触发器的时钟脉冲输入信号。
对于任何一个触发器,如果没有时钟脉冲到达,无论输入端接什么信号,其输出都没有变化。所以,凡是在触发器的状态需要改变时(表中,Q*旁标注箭头↑或↓的地方),必须为其提供时钟脉冲的有效边沿信号(上升沿)。值得注意的是,即使提供了时钟脉冲的上升沿,触发器的状态也不一定发生变化,这取决于触发器的输入。因此这是一个必要条件,但不是充分条件。同时,在满足此项要求的前提下,整个电路的时钟脉冲越少越好。
下面以FF2为例,说明如何求时钟方程及状态方程。观察状态转换表可发现,凡是Q2
要变化的地方(标有↑或↓,对应的现态分别为011和111),Q1都有一个下降沿。也就是说,当现态为011或111时, FF1在它的下一个时钟脉冲到达时,Q1端会产生一个下降沿
(Q1则会产生上升沿),故可用Q1去触发FF2。由此可得FF2的时钟方程为CLK2?Q1。同理,观察到凡是Q1要变化的地方,Q0都有一个下降沿,所以CLK1?Q0;而Q0只要电路的状态发生变化,它一定改变,所以FF0采用外部时钟,即CLK0=CLK。
确定了时钟方程后,画出触发器的次态卡诺图。对于某个触发器而言,一个不会为其产生有效时钟脉冲的现态作为约束项处理。例如,在Q1的次态卡诺图中,凡是Q0不会出现上升沿的现态(000、010、100、110)都可作为约束项。各触发器的次态卡诺图如下图所示。
Q 1Q0 Q200xx01xx111010 Q 1Q000xx Q20111110010 Q 1Q000 Q20100110010110101xxxx0111(a) Q2的次态卡诺图(b) Q1的次态卡诺图(c) Q0的次态卡诺图异步八进制加法计数器各触发器的次态卡诺图
由次态卡诺图可写出各触发器的状态方程如下。
**Q*2?Q2; Q1?Q1; Q0?Q0
所以,D2?Q2(CLK2?Q1);D1?Q1(CLK1?Q0); D0?Q0(CLK0=CLK)
由于8个编码都是有效编码,不存在无效编码,故该电路能够自启动。 (3)画出逻辑电路图
根据驱动方程和时钟方程,画出逻辑电路图如下图所示。
FF0FF1FF2DCLKSETQQ0DSETQQ1DSETQQ2CLK0CLRCLK1CLK2CLRQCLRQQ异步八进制加法计数器的逻辑电路图
6.15 试用JK触发器设计一个同步十进制加法计数器。 解:
(1)根据逻辑要求,画出编码状态转换图
依题意,电路有十个有效状态,选择常用的8421码对十个状态进行编码,编码状态用Q3Q2Q1Q0表示,C表示进位输出信号,画出编码状态转换图如下图所示。
Q3Q2Q1Q00000/11001/01000/00111/00110/0/00001/00010/00011/00100/00101十进制加法计数器的编码状态转换图
根据状态转换图列出状态转换表,如下表所示。
同步十进制加法计数器的状态转换表
Q3 Q2 Q1 Q0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 ***Q*3Q2Q1Q0 ***Q*3Q2Q1Q0 C 0 0 0 0 0 Q3 Q2 Q1 Q0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 C 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 (2)画出次态卡诺图和输出卡诺图,求出状态方程、驱动方程和输出方程
编码1010?1111为无关项,由此可画出分解后Q3、Q2、Q1、Q0的次态卡诺图如下。
Q 1Q0Q3Q2000100x00111x01101xx1100xx1000xx1011xx00 0011110 Q1Q0 Q3Q2 Q1Q0 Q3Q2000101x00100x01110xx1100xx1001xx1011xx00 0011110 Q1Q0 Q3Q20x1001x000(a) Q3的次态卡诺图(b) Q2的次态卡诺图00 00111100x000 10111101x1(c) Q1的次态卡诺图(d) Q0的次态卡诺图同步十进制加法计数器各触发器的次态卡诺图
由上面的次态卡诺图,可写出如下的状态方程,并对状态方程变形,与JK触发器的特性方程Q*?JQ?KQ进行比较,求出驱动方程。
为了与JK触发器的特性方程对应,Q3的次态方程不写成最简与或式,而是写出:
Q*3?Q3Q2Q1Q0?Q3Q0
Q*=Q2Q1Q0?Q2Q1Q0 02?Q2Q1Q0?Q2Q1?Q2Q*Q1?Q3Q1Q0?Q1Q0
Q*0?Q0
由此得:J0= K0=1 J3?Q2Q1Q0,K3?Q0,J2?K2=Q1Q0,J1?Q3Q0,K1?Q0,同理,可列出输出的卡诺图如下,并写出输出方程为C=Q3Q0
Q1Q0 Q3Q2000100x11100xx1000xx
Q3Q2Q1Q01010110011101011110111110000010000 00111100x0进位输出C卡诺图同步十进制加法计数器的无效状态转换图
(3)检查电路是否能够自启动
Q3Q2Q1Q0=1010?1111是无效状态,由状态方程可画出各无效状态的状态转换图如图所示。由图中可以看出,各无效状态经历有限个时钟脉冲后都能自动进入有效循环,所以该电路能够自启动。
(4)画出逻辑电路图
根据驱动方程、时钟方程和输出方程,画出逻辑电路图如图所示。
C1FF0JSETQQ0FF1JSETQQ1FF2JSETQQ2FF3JSETQQ3KCLKCLRQKCLRQKCLRQKCLRQ同步十进制加法计数器的逻辑电路图
6.16 试用上升沿触发的D触发器设计一个异步十进制减法计数器。 解:
电路应有十个状态,需4位编码表示,因而需要4个触发器,分别记为FF0、FF1、FF2
和FF3。
(1)状态编码、画出编码状态转换图及状态转换表
选择常用的8421码对十个状态进行编码,编码状态用Q3Q2Q1Q0表示,画出编码状态
转换图如下图所示。
Q3Q2Q1Q00000100110000111011000010010001101000101十进制减法计数器的编码状态转换图
根据状态转换图列出状态转换表,如下表所示。考虑到设计的是异步时序电路,某个触发器的输出信号可能是其他触发器的时钟脉冲信号,所以在转换表中标出了每个触发器的状态变化方向。
异步十进制减法计数器的状态转换表
Q3 Q2 Q1 Q0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 ***Q*3Q2Q1Q0 ***Q*3Q2Q1Q0 Q3 Q2 Q1 Q0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1↑ 0 0 1↑ 1 0 0 0↓ 0↓ 1↑ 1↑ 1↑ 0 1 1 0↓ 0 1 0↓ 1↑ 0 1 0 0↓ 0 0↓ 1↑ 1↑ 0 0 1 0↓ 0 0 0↓ 1↑ 0 0 0 0↓ (2)求驱动方程和时钟方程
首先要确定每个触发器的时钟脉冲输入信号。
对于任何一个触发器,如果没有时钟脉冲到达,无论输入端接什么信号,其输出都没有变化。所以,凡是在触发器的状态需要改变时(表中,Q*旁标注箭头↑或↓的地方),必须为其提供时钟脉冲的有效边沿信号(上升沿)。值得注意的是,即使提供了时钟脉冲的上升沿,触发器的状态也不一定发生变化,这取决于触发器的输入。因此这是一个必要条件,但不是充分条件。同时,在满足此项要求的前提下,整个电路的时钟脉冲越少越好。
下面以FF2为例,说明如何求时钟方程及状态方程。观察状态转换表可发现,凡是Q2
要变化的地方(标有↑或↓,对应的现态分别为1000和0100),Q1都有一个上升沿。也就是说,当现态为1000或0100时, FF1在它的下一个时钟脉冲到达时,Q1端会产生一个上升沿,刚好可以用它去触发FF2。由此可得FF2的时钟方程为CLK2= Q1。同理,观察到凡是Q1、Q3要变化的地方,Q0都有一个上升沿,所以CLK1= Q0,CLK3= Q0;而Q0只要电路的状态发生变化,它一定改变,所以FF0采用外部时钟,即CLK0=CLK。
确定了时钟方程后,画出触发器的次态卡诺图。状态1010?1111在十进制计数中不会出现,作为约束项处理。另外,对于某个触发器而言,一个不会为其产生时钟脉冲的现态也作为约束项处理。例如,在Q1的次态卡诺图中,凡是Q0不会出现上升沿的现态都可作为约束项,所以除了1010?1111外,0001、0011、0101、0111、1001也是约束项。各触发器的次态卡诺图如下图所示。
Q 1Q0Q3Q20001xxxx01xxxx11xxxx11xxxx1000xx1000xx00 1011110 Q1Q0 Q3Q2 Q1Q0 Q3Q20001xxxx0100x011xxxx1100xx10xxxx1011xx00 x011110 Q1Q0 Q3Q20x0000x100(a) Q3的次态卡诺图(b) Q2的次态卡诺图00 00111101x100 10111101x1(c) Q1的次态卡诺图(d) Q0的次态卡诺图异步十进制减法计数器各触发器的次态卡诺图
由次态卡诺图可写出各触发器的状态方程如下。
***Q*3?Q3Q2Q1; Q2?Q2;Q1?Q3?Q2Q1;Q0?Q0
所以,D3?Q3Q2Q1(CLK3= Q0);D2?Q2(CLK2= Q1); D1?Q3?Q2Q1(CLK1= Q0);D0?Q0(CLK0=CLK)
(3)检查电路能否自启动
把该电路的无效状态1010?1111分别作为电路的初态,由前面求出的时钟方程和状态方程,可画出无效状态的转换图如下所示。由图中可以看出,经历有限个时钟脉冲后,所有的无效状态都可自动进入有效循环,所以该电路能够自启动。
Q3Q2Q1Q010111101111110100011110011100111十进制减法计数器的无效状态转换图
(4)画出逻辑电路图
根据驱动方程和时钟方程,画出逻辑电路图如下图所示。
FF0DCLKSETQQ0FF1DSETQQ1FF2DSETQQ2FF3DSETQQ3CLK0CLRCLK1CLK2CLRCLK3QCLRQQCLRQ异步十进制减法计数器的逻辑电路图
6.17 试用JK触发器设计一个同步五进制加法计数器。 解:
电路应有五个状态,需3位编码表示,因而需要3个触发器,分别记为FF0、FF1和FF2。 (1)状态编码、画出编码状态转换图及状态转换表
编码状态用Q2Q1Q0表示,选择000?100对五个有效状态进行编码,画出编码状态转换图如下图所示。
Q2Q1Q0000001010100011五进制加法计数器的编码状态转换图
根据状态转换图列出状态转换表,如下表所示。
同步五进制加法计数器的状态转换表
Q2 Q1 Q0 0 0 0 0 0 1 0 1 0 **Q*2Q1Q0 **Q*2Q1Q0 Q2 Q1 Q0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 (2)求状态方程和驱动方程
对于该五进制加法计数器,编码101?111为无效状态,根据状态转换表画出各触发器的次态卡诺图如下图所示。
Q 1Q0 Q20000010x111x10 Q 1Q0000x Q2011x110x10 Q 1Q000 Q2010x110x101x0101001x0110(a) Q2的次态卡诺图(b) Q1的次态卡诺图(c) Q0的次态卡诺图同步五进制加法计数器各触发器的次态卡诺图
由次态卡诺图可写出各触发器的状态方程如下。
**Q*2?Q1Q0; Q1?Q1Q0?Q1Q0; Q0?Q2Q0
与JK触发器的特性方程进行比较,可得驱动方程为: J2=Q1Q0,K2?Q1Q0;J1=K1=Q0;J0?Q2,K0=1
(3)检查电路是否能够自启动
该电路有3个无效状态编码101?111,根据状态方程可画出无效状态的状态转换图如图所示。
Q2Q1Q0101111010100110
由无效状态转换图可知,所有无效状态在经历有限个时钟脉冲后均可自动进入有效循环,故该电路能够自启动。
(4)画出逻辑电路图
根据驱动方程可画出逻辑电路图如下图所示。
五进制加法计数器无效状态转换图FF0J1CLKSETQQ0FF1JSETQQ1FF2JSETQQ2KCLRQKCLRQKCLRQ同步五进制加法计数器的逻辑电路图
6.18 试用T触发器设计一个同步三进制计数器电路,要求计数器的3个有效状态依次为:S0=00,S1=01,S2=11,并且要求电路能够自启动。
解:
根据题意,该电路有3个有效状态,需要2个触发器:FF0、FF1。 (1)画出状态转换表
同步三进制计数器的状态转换表 Q1 Q0 0 0 0 1 1 1 *Q1Q*0 0 1 1 1 0 0 (2)求状态方程和驱动方程
用T触发器实现,而由T触发器的特性方程可知,当T=1时翻转,T=0时保持。即:若要使Qi状态发生变化,则Ti应该为1,否则Ti应该为0,列出状态转换及对应T触发器的输入如下表所示:
同步三进制计数器的状态转换表及与Ti对应关系 Q1 Q0 0 0 0 1 1 1 *Q1Q*0 T1 0 1 1 T0 1 0 1 0 1 1 1 0 0 由此,可写出驱动方程为:
*T1=Q0,进而写出状态方程为:T0?Q1?Q0;Q1?TQ?TQ?Q0Q1?Q0Q1?Q1?Q0;
Q*0?Q1?Q0Q0??Q1?Q0?Q0?Q1
(3)检查电路是否能够自启动
该电路有1个无效状态编码10,代入上面的状态方程可求出其次态仍为10,所以该电路不能够自启动。为了使电路能够自启动,需要把无效状态引导到有效循环中。例如,可将无效状态10的次态设置为00(当然,也可以把10的次态设置为其他的有效状态),则状态转换表变为如下形式:
修改后的状态转换表及与Ti对应关系 Q1 Q0 0 0 0 1 1 1 1 0 *Q1Q*0 T1 0 1 1 1 T0 1 0 1 0 0 1 1 1 0 0 0 0 由此,可写出新的驱动方程为:T1?Q0?Q1Q0?Q1?Q0,T0?Q1?Q0;进而写
*出状态方程为:Q1??Q1?Q0?Q1?Q1?Q0Q1?Q1Q0;Q*0?Q1
此时,无效状态10的次态是00,电路能够自启动。
(4)画出逻辑电路图
根据驱动方程可画出逻辑电路图如下图所示。
FF0DTSETQQ0FF1DTSETQQ1CLRQCLRQCLK同步三进制加法计数器的逻辑电路图
6.19 试用上升沿触发的T触发器构成一个异步五进制加法计数器。
解:
电路应有五个状态,需3位编码表示,因而需要3个触发器,分别记为FF0、FF1和FF2。 (1)状态编码、画出编码状态转换图及状态转换表
编码状态用Q2Q1Q0表示,选择000?100对五个有效状态进行编码,画出编码状态转换图如下图所示。
Q2Q1Q0000001010100011五进制加法计数器的编码状态转换图
根据状态转换图列出状态转换表,如下表所示。考虑到设计的是异步时序电路,某个触发器的输出信号可能是其他触发器的时钟脉冲信号,所以在转换表中标出了每个触发器的状态变化方向。
异步五进制加法计数器的状态转换表
Q2 Q1 Q0 0 0 0 0 0 1 0 1 0 **Q*2Q1Q0 **Q*2Q1Q0 Q2 Q1 Q0 0 1 1 1 0 0 0 0 1↑ 0 1↑ 0↓ 0 1 1↑ 1↑ 0↓ 0↓ 0↓ 0 0 (2)求时钟方程和驱动方程
首先要确定每个触发器的时钟脉冲输入信号。
对于任何一个触发器,如果没有时钟脉冲到达,无论输入端接什么信号,其输出都没有变化。所以,凡是在触发器的状态需要改变时(表中,Q*旁标注箭头↑或↓的地方),必须为其提供时钟脉冲的有效边沿信号(上升沿)。值得注意的是,即使提供了时钟脉冲的上升沿,触发器的状态也不一定发生变化,这取决于触发器的输入。因此这是一个必要条件,但不是充分条件。同时,在满足此项要求的前提下,整个电路的时钟脉冲越少越好。
从表中可以看出,凡是Q1要变化的地方(标有↑或↓,对应的现态分别为001和011),Q0都有一个下降沿。也就是说,当现态为001或011时,FF0在它的下一个时钟脉冲到达时,
Q0端会产生一个下降沿,故可用Q0去触发FF1。由此可得FF1的时钟方程为CLK1=Q0。而Q2要变化的地方,有时Q1、Q0上有边沿,有时无边沿信号(现态为100时)。所以FF2需要使用外部时钟信号,即CLK2= CLK。而Q0只要电路的状态发生变化,它一定改变,所以FF0也采用外部时钟,即CLK0=CLK。
确定了时钟方程后,画出触发器的次态卡诺图。状态101?111在五进制计数中不会出现,作为约束项处理。另外,对于某个触发器而言,一个不会为其产生时钟脉冲的现态也作为约束项处理。即在Q1的次态卡诺图中,凡是Q0不会出现下降沿的现态都可作为约束项,所以除了101?111外,000、010、100也是约束项。各触发器的次态卡诺图如下图所示。
Q 1Q0 Q20000010x111x10 Q 1Q0000x Q2011x110x10 Q 1Q000 Q2010x110x101x0101xxxx0110(a) Q2的次态卡诺图(b) Q1的次态卡诺图(c) Q0的次态卡诺图异步五进制加法计数器各触发器的次态卡诺图
由次态卡诺图可写出各触发器的状态方程如下。
**Q*2?Q1Q0?Q1Q0Q2?Q2;Q1?Q1;Q0?Q2Q0
??与T触发器的特性方程进行比较,可得驱动方程为: T2=(Q1Q0)?Q2(CLK2=CLK);T1=1(CLK1=Q0);
对于FF0,为了得到与T触发器特性方程形式类似的次态方程,将次态卡诺图中的无关项引入,即考虑到101和111为无关项,所以Q0的次态方程也可以写成
Q*0?Q2Q0?Q2Q0 ,由此可得其驱动方程为T0?Q2(CLK0=CLK)
(3)检查电路是否能够自启动
该电路有3个无效状态编码101?111,根据状态方程求出它们的次态分别为010、010和100,故该电路能够自启动。
(4)画出逻辑电路图
根据时钟方程和驱动方程可画出逻辑电路图如下图所示。
FF0DTSETQQ01FF1DTSETQQ1FF2DTSETQQ2CLRQCLRQCLRQCLK异步五进制加法计数器的逻辑电路图
6.20 试用D触发器设计一个可逆同步六进制计数器。当控制端X=0时进行加法计数;当X =1时进行减法计数。
解:
(1)根据题目要求,画出状态转换图
依题意,电路有6个有效状态S0?S5,分别用000?101表示,需要3个D触发器。电路有一个输入信号X,当X=0时,进行加法计数,当X=1时,进行减法计数。设电路的输出信号为Y,加法计数时表示进位信号,减法计数时表示借位信号,则编码状态转换图如下图所示。
1/00/01/10/11010/01/0状态转换图1000/01/01/00/00/01/0X/Y000001010011
(2)画出次态卡诺图和输出卡诺图,求出状态方程、驱动方程和输出方程
对于六进制计数器,编码110和111是无效编码,作无关项处理,由此画出可逆计数器的次态卡诺图如图所示。
Q 1Q0XQ20001111000 001/0010/0100/0011/001101/0000/111011/0100/0xxxx Q1Q0 XQ200010010010000111xx0110xx0100xx0101xx100 0011110 Q1Q0 XQ21010010101/1000/0010/0001/0(a) 次态卡诺图 Q1Q0 XQ2(b) Q2的次态卡诺图00011000110xx1101xx000 001111001000 1011110111(c) Q1的次态卡诺图(d) Q0的次态卡诺图可逆同步六进制计数器的次态卡诺图
由上面的次态卡诺图,可写出状态方程,再与D触发器的特性方程Q*?D进行比较,求出驱动方程。
所
以
Q*2?XQ2Q0?XQ1Q0?XQ2Q0?XQ2Q1Q0
*Q1?XQ1Q0?XQ2Q0?XQ1Q0?XQ2Q1Q0
Q*0?Q0
,
D2?XQ2Q0?XQ1Q0?XQ2Q0?XQ2Q1Q0;
D1?XQ1Q0?XQ2Q0?XQ1Q0?XQ2Q1Q0;D0?Q0
由卡诺图中,可直接写出输出方程为:Y?XQ2Q0?XQ2Q1Q0
(3)检查电路是否能够自启动
由状态方程可知:当X=0时,110和111的次态分别是:111和100;当X=1时,110和111的次态分别是:011和110,所以该电路能够自启动。
(4)画出逻辑电路图
根据驱动方程和输出方程,画出逻辑电路图如下图所示。
FF0DCLKSETQQ0FF1DSETQQ1FF2DSETQQ2CLK0CLRCLK1CLK2CLRQCLRQQXY可逆同步六进制计数器的逻辑电路图
6.21 试用JK触发器设计一个时序逻辑电路,要求电路能够重复产生脉冲串“1101010”。 解:
(1)根据要求列出状态转换表
由于脉冲序列长度为7,所以需要一个七进制的计数器。
首先要用JK触发器构成一个七进制的计数器,取7个有效计数状态Q2Q1Q0的转换顺序为000→001→010→011→100→101→110→000,其状态转换表及其对应的输出如下表所示。
习题6.21的状态转换表
Q2 Q1 Q0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 * * Q*2Q1Q00 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 Y 1 1 0 1 0 1 0
(2)画出次态卡诺图和输出卡诺图,求出状态方程、驱动方程和输出方程
对于本设计中的七进制计数器,编码111是无效编码,作无关项处理,由此画出各触发器的次态卡诺图如图所示。
Q 1Q0 Q200010101111x10 Q 1Q00000 Q20111110x10 Q 1Q000 Q20100110x1010010100100111(a) Q2的次态卡诺图(b) Q1的次态卡诺图习题6.21各触发器的次态卡诺图(c) Q0的次态卡诺图
Q 1Q0 Q200100111111x100001
由上面的次态卡诺图和输出卡诺图,可写出如下的状态方程和输出方程,并将状态方程与JK触发器的特性方程Q*?JQ?KQ进行比较,求出驱动方程。值得注意的是,为了得到比较简单的驱动方程,写Q2的次态方程时,没有考虑无关项,写出的也不是简与或式。
输出卡诺图Q*2?Q2Q1Q0?Q2Q1
*Q1?Q1Q0?Q2Q1Q0
Q*Q1Q0 2Q0?Q0?Q1Q0?Q2所以,J2?Q1Q0,K2?Q1;J1?Q0,K1?Q2Q0;J0?Q2Q1,K0=1
Y?Q2Q1?Q0
(3)检查电路是否能够自启动
由状态方程可求出无效状态111的次态为100,进入有效循环,所以该电路能够自启动。 (4)画出逻辑电路图
根据驱动方程和输出方程,画出逻辑电路图如下图所示。
FF0J1SETQQ0FF1JSETQQ1FF2JSETQQ2KCLRQKCLRQKCLRQCLKY习题6.21的逻辑电路图
6.22 试用JK触发器设计一个串行数据检测器,当输入数据连续三个或三个以上为1时,检测器输出为1;其他输入情况下,输出为0。
解:
(1)画出原始状态转换图,并进行状态编码
设电路的输入为X,输出为Y。按题意要求,电路应具有4个状态。其中:S0表示收到0以后的状态;S1表示收到一个1以后的状态;S2表示连续收到两个1以后的状态;S3表示连续收到三个或三个以上1以后的状态。依据题意,可画出原始状态转换表如下所示。值得注意的是,电路的输出是与现态有关,而不是与次态有关。
检测器的状态转换表
X S* S S0 S1 S2 S3 0 S0/0 S0/0 S0/0 S0/1 1 S1/0 S2/0 S3/0 S3/1 不存在等价状态,所以不需要状态化简。
电路有4个有效状态,用2位二进制编码,分别用00、01、10、11表示S0?S3。 (2)求驱动方程和输出方程
根据状态转换表及状态分配,可画出次态卡诺图和输出卡诺图如图所示,4个编码全部使用,不存在无效状态。
Q 1Q0 X00011110 Q 1Q000 X010011111000
000/000/000/100/0101/010/011/111/0Q1Q0的次态及Y的卡诺图0100输出Y的卡诺图