EDA技术实用教程(第四版)习题答案 联系客服

发布时间 : 星期二 文章EDA技术实用教程(第四版)习题答案更新完毕开始阅读ebe07e9752ea551811a68792

4-8 设计一个7人表决电路(用4位二进制全加器),参加表决者7人,同意为1,不同意为0,同意者过半则表决通过,绿指示灯亮;表决不通过则红指示灯亮。

4-9 基于原理图输入方式,用D触发器构成按循环码(000->001->011->111->101->100->000)规律工作的六进制同步计数器。

4-10 基于原理图输入方式,应用4位全加器和74374(8D触发器)构成4位二进制加法计数器。如果使用74299(8位通用移位寄存器)、74373(8D锁存器)、D触发器和非门来完成上述功能,应该有怎样的电路?

4-11 用一片74163(可预置4位二进制计数器)和两片74138(3线-8线译码器)构成一个具有12路脉冲输出的数据分配器。要求在原理图上标明第1路到第12路输出的位置。若改用一片74195(4位通用移位寄存器)代替以上的74163 (可预置4位二进制计数器),试完成同样的设计。

4-12 用同步时序电路对串行二进制输入进行奇偶校验,每检测5位输入,输出一个结果。当5位输入中1的数目为奇数时,在最后一位的时刻输出1。

--解:4-12 用同步时序电路对串行二进制输入进行奇偶校验,每检测5位输入,输出一个结果。

-- 当5位输入中1的数目为奇数时,在最后一位的时刻输出1。 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY odd_even_p_RXD_5 IS

PORT(CLK,RST,S_in: IN STD_LOGIC;--CLK、RST、S_in:时钟、复位、串行输入数据 P_out: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);--P_out:并行输出数据 o_e_out: OUT STD_LOGIC); --o_e_out:奇校验输出位 END ENTITY odd_even_p_RXD_5;

ARCHITECTURE one OF odd_even_p_RXD_5 IS BEGIN

PROCESS(CLK,RST)

VARIABLE shift_Q : STD_LOGIC_VECTOR(4 DOWNTO 0);--shift_Q:移位寄存器 VARIABLE shift_cnt : STD_LOGIC_VECTOR(2 DOWNTO 0);--shift_cnt:移位计数器 BEGIN

IF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿

IF RST = '1' THEN shift_cnt:=\移位寄存器和计数器复位 ELSE

IF shift_cnt=4 THEN --检测到接收5位串行输入数据

shift_cnt:=\移位计数器清零,为接收下一组数据做准备。 P_out<=shift_Q;--接收数据并行输出 o_e_out<=shift_Q(4) XOR shift_Q(3) XOR shift_Q(2) XOR shift_Q(1) XOR shift_Q(0);--奇校验输出

shift_Q:=S_in & shift_Q(4 DOWNTO 1);--采样移位串行输入 ELSE

shift_cnt:=shift_cnt+1;--移位计数

shift_Q:=S_in & shift_Q(4 DOWNTO 1);--采样移位串行输入 END IF; END IF; END IF; END PROCESS;

END ARCHITECTURE one;

4-13 用7490(十进制计数器)设计模为872的计数器,且输出的个位、十位、百位都应符合8421码权重。

5 习 题

5-1 什么是固有延时?什么是惯性延时?P150~151 5-2 δ是什么?在VHDL中,δ有什么用处?P152

5-3 哪些情况下需要用到程序包STD_LOGIC_UNSIGNED? 试举一例。

答:无符号整数的STD_LOGIC的数据。 (第三版)【例6-20】数控分频器的设计 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF IS

PORT(CLK : IN STD_LOGIC;

D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC); END ENTITY DVF;

ARCHITECTURE one OF DVF IS SIGNAL FULL : STD_LOGIC; BEGIN

P_REG: PROCESS(CLK)