数字逻辑(第六版 白中英)课后习题答案 下载本文

第六章习题答案

1现有D触发器组成的三个n位寄存器,需要连接起来传送数据。当控制信号Sa有效时,执行(Ra)→Rc的操作;当控制信号Sb有效时,执行(Rb)→RC的操作。试写出连接电路的逻辑表达式,并画出逻辑电路图。 解:

RcLDCSaSbRa

Rc = Ra·Sa·LDC + Rb·Sb·LDC

Rb

2 现有D触发器组成的四个8位寄存器,要求它们之间实现数据传送,试设计连接电路。 解:

BUSA BUSB BUSC BUSD BUSABCDLDALDBLDCLDD

3 ALU的输出端一般带有一个移位器,其功能为:①ALU输出正常传送;②ALU输出左移1位(ALUi+1)传送;③ALU输出右移一位(ALUi-1)传送。试设计移位器的逻辑电路。 解:

4 一个系统有A,B两条总线,为了接收来自任何一条总线上的数据并驱动任何一条总线,需要一个总线缓冲寄存器。请用D触发器和三态门设计一个总线缓冲寄存器。 解:

ABUSBBUSR ABUSR BBUSR ( 缓冲寄存器 )LDRABUS RBBUS RABUSBBUS

5 试构造能完成下列程序操作的ASM图:

(a) if X = N, then … 。

(b) if X≠N, then …, else …。

解:

(c) for X from A to B, step C, do… 。 解:

(d) while X = Y, do …。 解:

Rx? XRy? YRx- Ry0A=B1 (e) if X > N OR X < O, then …, else …。 解:

6 有一个数字比较系统,它能对两个8位二进制进行比较。其操作过程如下:先将两个8位二进制数存入寄存器A和B, 然后进行比较,最后将大数移入寄存器A中。要求:

⑴画出此系统方框图,并构造ASM流程图。

⑵设计一个计数器型控制器。 解:(1)

②状态转移真值表

aLDRb00PSNS转移条件 CB AB( D ) A( D )b01LDRac10LDRbd11CAP0A > B1

③ 电路图

0 00 1无条件转移0 11 0无条件转移1 01 1无条件转移1 11 0( A > B ) = 10 1 A > B = 0根据 NS = PS·C 公式,激励方程表达式为:B ( D ) = BA + BA + BA·( A > B )A ( D ) = BA + BA + BA·( A > B ) = A + BA ·( A > B )

LDRbLDRaCAPT2控 制 信 号 译 码 逻 辑BB0 1B D请 OAA0 1A DT1B A B ABA(A>B)ABA(A>B)

④ 控制信号表达式:

LDRb = ( 状态 a + 状态 c ) T2 = ( BA + BA ) T2 = AT2LDRa = 状态 b·T2 = BAT2 CAP = 状态 d = BA

LDRbLDRaCAPA T2

BAT2B A

7. 根据题6的条件,设计一个MUX型控制器。

① ASM流程图

aLDRB00bLDRA01cLDRB10dCAP110A>B1 ②状态转移表

十进制编码PSBA0101B(D)01110NSA(D)10101转移条件C0 (00)1 (01)2 (10)3 (11)0011CB=0 , CA=1CB=1, CA=0CB=1, CA=1CB=(A>B), CA=0CB=0, CA=A?B

③电路图

MU×B011A>B0123BAT2MU×A101A?BFBD>10BB0123BAD>FA10A控制信号译码电路LDRALDRBCAPAT1清0

④控制信号表达式为:

LDRB=(状态a+状态c)?T2=(BA+BA)?T2

LDRA=状态b?T2=BA?T2 CAP=状态d=BA

8. 根据题6的条件,设计一个定序型控制器。

① ASM流程图

②状态转移表

(3)写出激励方程 NS=Σ PS·C

控制信号表达式

(4)逻辑电路图

9. 某控制器的状态表如下表所示,其中X和Y为输入变量,试设计一个计数器型控制器。

PSABCDNS输出FXY=00 01 10 11XY=00 01 10 11AAAABABBCCBCDDDD1001010100110001

① ASM流程图与编码(Q1,Q2为两个触发器)

令状态A=00, B=01, C=10, D=11

A 00F=10001B XY10011100F=101C XY10101100XY011011F=1D F=10001XY1011 11 ②状态转移表

PSQ2Q10 0 NSQ1Q20 0 0 11 01 10 0 0 01 01 10 0 0 10 11 10 0 0 11 01 1转移条件xyxyxy xyxyxyxy xyxyxyxy xyxyxyxy xy0 1 1 0 1 1

③ 激励方程表达式

利用NS=∑PS?C公式,使用D触发器。

Q2(D)=Q2Q1?XY + Q2Q1?XY + Q2Q1?XY + Q2Q1?XY + Q2Q1?XY + Q2 Q1?XY + Q2 Q1?XY

= Q2Q1?X + Q1?XY + Q1?X

Q1(D) = Q2Q1?Y + Q2Q1?XY + Q2Q1(X+Y) + Q2Q1?Y = Q2?Y + Q2Q1?X + Q2?Y ④电路图

Q20Q21Q10Q11清0T1ΛQ2ΛQ1Q2Q1XQ1XYQ1XQ2YQ2Q1XQ2Y ⑤ 控制信号表达式(假设为电位控制信号)

F=状态A?XY + 状态B?XY + 状态C?XY + 状态D =Q2Q1?XY + Q2Q1?XY + Q2Q1?XY + Q2Q1

FQ2Q1XYQ2Q1XYQ2Q1XYQ2Q1

11. .根据题10的条件,设计一个MUX型控制器 解答:

1) ASM流程图与编码同计数器型控制器(见第10题答案) 2) 按MUX方式列出状态转移真值表

3) 画出电路图

12.根据题10的条件,设计一个定序型控制器 解答:

1) ASM流程图与计数器法相同

2) 使用Qa、Qb、Qc、Qd四个触发器,编码分别为Qa=1000,Qb=0100,Qc=0010,Qd=0001 3) 状态转移真值表

4) 写出激励方程 NS=Σ PS·C

5)画出电路图

13.设计一个累加运算系统定序型控制器 解答:

1) 算法流程图

2) 状态转移真值表及激励函数表达式

NS=∑PS·C(C=1,无条件转移)

3) 控制信号表达式

4) 电路图

14.设计一个累加运算系统MUX型控制器 解答:

1) ASM流程图

2)状态转移真值表及激励表达式

NS=∑PS·C

3)电路图

4)控制信号表达式

15. 图P6.1所示ASM流程图,设计计数器型控制器 解:(1)ASM流程图与编码(Q1,Q2为两个触发器) 令状态a=00, b=01, c=11, d=10 ②状态转移表

PSQ2Q1Q20 0 0 1 NSQ1转移条件0 1 0 1 1 01 10 0 1 01 10 0 xyxyzx x?wxwxw 1 1 1 0

(3)次态方程

Q=QQxyz?QQxw?QQxwn2212121Q=QQ?QQxy?QQx?QQxw

n121212121(4)控制信号

F=QQxy

2116.根据图P6.1所示ASM流程图,设计一个MUX型控制器 解:(1)ASM流程图、编码、状态转移真值表同计数器型控制器(见第15题答案)

(2) MUXA的输出接触发器D2,MUXB的输出接触发器D1,则

MUXA(0)=0MUXA(1)=xyz?x=yz?xMUXA(2)=0MUXA(3)=xw?xwMUXB(0)=1MUXB(1)=xy?x=y?xMUXB(2)=0MUXB(3)=xw

(3)控制信号

F=QQxy

21

17. 根据图P6.1所示ASM流程图,设计一个定序型控制器

解: 1)使用Qa、Qb、Qc、Qd四个触发器对应四个状态a,b,c,d

2)状态转移真值表及激励方程表达式

PSQaQbQcQd1 0 0 0 0 1 0 0 NSQaQbQcQd0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 转移条件xyxyzx x?wxwxw 0 0 1 0 0 0 0 1

Q(D)=Qx?w?QacdQ(D)=Q?QxybabQ(D)=Qx?QxwcbcQ(D)=Qxyz?Qxw

dbc(3)控制信号

F=Qxy

b18.根据图P6.1所示ASM流程图,设计一个微程序控制器。

解:步骤如下

? 将ASM流程图转化为微程序流程图 ? 确定微指令地址 ? 确定微命令

? 确定微指令格式和字长 ? 确定控制存储器容量

? 写出微地址转移逻辑表达式 ? 将微指令编译成二进制代码。

19. 设计十字路口交通灯控制器 解:交通灯控制系统结构框图

主干道AgAyAr乡间道BgByBr显示电路控制器Q0 Q1 Q2 Q3B0B1B2B3CP定时电路

控制系统ASM图如下

Ag, BrNOT=60sYESAy, BrNOT=4sYESAr, BgNOT=20sYESAr, ByNOT=4sYES

21.设计一个彩灯控制器。 解:彩灯电路框图如下

12路彩灯A0……A5B0……B5控制电路CP

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity light is port(clk1: in std_logic; light: buffer std_logic_vector(11 downto 0)); end light;

architecture behv of light is constant len: integer:=11;

---时钟信号--输出

signal banner: std_logic:='0'; ----定义信号banner为两种节拍转换信号;

signal clk,clk2: std_logic; ----信号CLK,CLK2作为辅助时钟

begin

clk<=(clk1 and banner) or (clk2 and not banner); process(clk1) begin if clk1'event and clk1='1' then ---CLK1二分频得CLK2 clk2<=not clk2; end if; end process;

process(clk) ---- variable flag: bit_vector(3 downto 0):=\ begin if clk'event and clk='1' then if flag=\ light<='1' &light(len downto 1); ----顺序向右循环移位 if light(1)='1' then ----依次点亮 flag:=\ end if; elsif flag=\ ———依次熄灭 light<=light(len-1 downto 0) & '0'; if light(10)='0' then flag:=\ end if;

elsif flag=\ light<= light(len-1 downto 0) & '1'; ----顺序向左循环移位 if light(10)='1' then ----依次点亮 flag:=\ end if; elsif flag=\ ———依次熄灭 light<= '0' & light(len downto 1); if light(1)='0' then flag:=\ end if; elsif flag=\ light(len downto 6)<=light(len-1 downto 6)&'1'; ---从中间向两边点 light(len-6 downto 0)<='1'&light(len-6 downto 1); if light(1)='1' then flag:=\ end if; elsif flag=\ light(len downto 6)<='0'&light(len downto 7); ----从两边向中间熄

light(len-6 downto 0)<=light(len-7 downto 0)&'0'; if light(2)='0' then flag:=\ end if;

elsif flag=\ light(len downto 6)<='1'&light(len downto 7); ----奇偶位循环点亮 light(len-6 downto 0)<='1'&light(len-6 downto 1); if light(1)='1' then flag:=\ end if;

elsif flag=\ light<=\ flag:=\

elsif flag=\ banner<=not banner; 拍 flag:=\ end if; end if; end process; end behv;

----从新开始 ---banner信号转换,实现第二种节