EDA技术实用教程第四版习题答案_第1页
EDA技术实用教程第四版习题答案_第2页
EDA技术实用教程第四版习题答案_第3页
EDA技术实用教程第四版习题答案_第4页
EDA技术实用教程第四版习题答案_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术实用教程 (第四版) 习题答案 EDA 技术实用教程 (第四版 )习题 1 习 题 1- 1 EDA 技术与 ASIC 设计和 FPGA 开发有 什么关系? FPGA 在 ASIC 设计中有什么用途? P34 1- 2 与软件描述语言相比, VHDL 有什么特 点 ? P6 l- 3 什么是综合 ?有哪些类型 ?综合在电子设 计自动化中的地位是什么 ? P5 1- 4 在 EDA 技术中,自顶向下的设计方法的 重要意义是什么 ? P710 1- 5 IP 在 EDA 技术的应用和发展中的意义 是什么 ? P2214 1-6 叙述 EDA 的 FPGA/CPLD 设计流程,以 及涉及的

2、 EDA 工具及其在整个流程中的作用。 (P1113) 2 习 题 2- 1 OLMC (输出逻辑宏单元)有何功能 ?说 明 GAL 是怎样实现可编程组合电路与时序电路 的。 P3436 2- 2 什么是基于乘积项的可编程逻辑结构 ? P3334,40 什么是基于查找表的可编程逻辑结 构 ? P4041 2- 3 FPGA 系列器件中的 LAB 有何作用 ? P4345 2- 5 解释编程与配置这两个概念。 P58 2- 6 请参阅相关资料,并回答问题:按本章 给出的归类方式, 将基于乘积项的可编程逻辑结 构的 PLD 器件归类为 CPLD ;将基于查找表的 可编程逻辑结构的 PLD 器什归类

3、为 FPGA ,那 么, APEX 系列属于什么类型 PLD 器件? MAX II 系列又属于什么类型的 PLD 器件?为什么 ? P5456 3 习 题 3- 1 画出与以下实体描述对应的原理图符号 元件: ENTITY buf3s IS-实体 1:三态缓冲器 PORT(input:IN STD_LOGIC; - 输入 端 enable:IN STD_LOGIC; -使能 端 output:OUT STD_LOGIC); -输出 端 END buf3s ; buf3s input ENTITY mux21 IS 路选择器 -实体 2: 2选 1多 PORT(in0, in1,sel: IN

4、STD_LOGIC; output:OUT STD_LOGIC); mux21 in0 output 3- 2 图 3-16 所示的是 4 选 1 多路选择器 ,试分 别用 IF_THEN 语句和 CASE 语句的表达方式写 出此电路的 VHDL 程序,选择控制信号 s1 和 s0 的 数 据 类 型 为 STD_LOGIC_VECTOR; 当 s1= 0 ,s0=;s10= 0 ,s0=;s1= 1 ,s0=和 0 s1= 1 ,s0时= ,分1别执行 y=a、y=b、y=c、 图 3-16 4 选 1 多路选择器 -解 1:用 IF_THEN 语句实现 4 选 1 多路选择 器 LIBRA

5、RY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC; s0:IN STD_LOGIC; s1:IN STD_LOGIC; y:OUT STD_LOGIC); END ENTITY mux41; ARCHITECTURE IS SIGNAL STD_LOGIC_VECTOR(1 标准逻辑位矢量数据 BEGIN s0s1=s1 并置操作 if_mux41 OF mux41 s0s1 : DOWNTO 0);- 定义 -s1 相并 s0,即 s1与 s0 PROCESS(s0s1,a,b,

6、c,d) BEGIN IF s0s1 = 00 THEN y = a; ELSIF s0s1 = 01 THEN y = b; ELSIF s0s1 = 10 THEN y c; ELSE y d; END IF; END PROCESS; END ARCHITECTURE if_mux41; -解 2:用 CASE 语句实现 4选 1多路选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC; s0:IN STD_LOGIC; s1:IN STD_LOGIC; y:O

7、UT STD_LOGIC); END ENTITY mux41; ARCHITECTURE case_mux41 = = OF mux41 IS SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);- 定义标准逻辑位矢量数据类型 BEGIN s0s1 y y y y NULL END CASE; END PROCESS; END ARCHITECTURE case_mux41; 3- 3 图 3-17 所示的是双 2 选 1 多路选择器构 成的电路 MUXK, 对于其中 MUX21A, 当 s=0和 s=1时,分别有 y= a和y y y NULL ; END

8、 CASE; END PROCESS; u2: PROCESS(s1,a1,a2,a3,y) BEGIN CASE s1 IS-类似于真值表的 case 语句 WHEN 0 = outy outy NULL ; END CASE; END PROCESS; END ARCHITECTURE case_mux31; 3- 4 将例 3-20 程序的计数器改为十二进制计 数器,程序用例 3-21 的方式表述,并且将复位 RST 改为同步清零控制,加载信号 LOAD 改为 异步控制方式。讨论例 3-20 与例 3-21 的异同点。 -解:十二进制计数器 VHDL 程序设计 LIBRARY IEEE;

9、 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT12 IS PORT(CLK,RST,EN,LOAD : IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4 位 预置数 DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);- 计数值输出 COUT : OUT STD_LOGIC); -计数进位输出 END CNT12; ARCHITECTURE behav OF CNT12 IS SIGNAL Q : STD

10、_LOGIC_VECTOR(3 DOWNTO 0); BEGIN REG: PROCESS(CLK,RST,EN,LOAD,Q) BEGIN IF LOAD=0 THEN Q=DATA; -允许加载 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF RST=0 THEN Q0); -计数器异步复位 ELSE IF EN=1 THEN -检测是否允许计数或加载(同步使能) IF LOAD=0 THEN Q=DATA; -允许加载 ELSE IF Q12 THEN Q=Q+1; - 允许计数 ,检测是否小于 9 ELSE Q0); -大于等于 9 时,计数值清零

11、END IF; END IF; END IF; END IF; END IF; END PROCESS; COM: PROCESS(Q) BEGIN IF Q=12 THEN COUT=1; - 计数大于 9, 输出进位信号 ELSE COUT=0; END IF; DOUT 0);- 计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN-检测时钟上升沿 IF ADD_EN=1THEN-检测是 否允许计数 (同步他能 ) IF CQI 0); -大于 65535,计数值清零 END IF; IF CQI=16#FFFF# THEN COUT=1;-计数大于 9,输出进位信

12、号 ELSE COUT 0 THEN CQI:=CQI-1; -允许计数 ,检测是否小于 65535 ELSE CQI:=(OTHERS = 1); -大于 65535,计数值清零 END IF; IF CQI=0 THEN COUT=1; - 计数大于 9,输出进位信号 ELSE COUT = 0; END IF; END IF; END IF; CQ=CQI;-将计数值向端口输出 END PROCESS; END ARCHITECTURE A_S_16; 3- 6 图 3-18是一个含有上升沿触发的 D 触发 器的时序电路 (sxdl), 试写出此电路的 VHDL 设 计文件。 图 3-1

13、8 时序电路 -解:实现图 4-19 电路的 VHDL 程序 t4_19.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY t4_19 IS PORT (CL,CLK0: IN STD_LOGIC; OUT1: OUT STD_LOGIC); END ENTITY t4_19; ARCHITECTURE sxdl OF t4_19 IS 时序电路 sxdl SIGNAL Q : STD_LOGIC; BEGIN PROCESS(CLK0) BEGIN IF CLK0EVENT AND CLK0=1 THEN -检测时钟上升沿 Q = N

14、OT(Q OR CL); END IF; END PROCESS; OUT1 = NOT Q; END ARCHITECTURE sxdl; 3- 7 给出 1 位全减器的 VHDL 描述;最终实 现 8 位全减器。要求 : 1)首xi先设计 1 位半减a 器 ,然后用例化语句将diff_它ou们 n diff_ou 连接y起i 来 ,图 4-20 中 h_suber 是半c减 器 ,diff 是输 n b 出差 (diff=x-y),s_oubt 是借位输出 (s_out=1,xy),sub_in 是借位输入。 图 3-19 1 位全加器 - 解(1.1):实现 1 位半减器 h_suber

15、(diff=x-y ; s_out=1,xy) LIBRARY IEEE;-半减器描述 (1): 布尔 方程描述方法 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_suber IS PORT( x,y: IN STD_LOGIC; diff,s_out: OUT STD_LOGIC); END ENTITY h_suber; ARCHITECTURE hs1 OF h_suber IS BEGIN Diff = x XOR (NOT y); s_out xin,y=yin, diff=a, s_out=b); u2: h_suber PORT MAP(x=a, y

16、=sub_in, diff=diff_out,s_out=c); sub_out x0,yin=y0,diff_out=diff0,sub_in= sin,sub_out=a0); u1:f_suber PORT MAP(xin=x1,yin=y1,diff_out=diff1,sub_in= a0,sub_out=a1); u2:f_suber PORT MAP(xin=x2,yin=y2,diff_out=diff2,sub_in= a1,sub_out=a2); u3:f_suber PORT MAP(xin=x3,yin=y3,diff_out=diff3,sub_in= a2,sub

17、_out=a3); u4:f_suber PORT MAP(xin=x4,yin=y4,diff_out=diff4,sub_in= a3,sub_out=a4); u5:f_suber PORT MAP(xin=x5,yin=y5,diff_out=diff5,sub_in= a4,sub_out=a5); u6:f_suber PORT MAP(xin=x6,yin=y6,diff_out=diff6,sub_in= a5,sub_out=a6); u7:f_suber PORT MAP(xin=x7,yin=y7,diff_out=diff7,sub_in= a6,sub_out=sou

18、t); END ARCHITECTURE s8; 3- 8 给出一个 4 选 1 多路选择器的 VHDL 描 述。选通控制端有四个输入: S0、S1、S2、S3。 当且仅当 S0=0 时:Y=A ;S1=0 时:Y=B ;S2=0 时:Y=C ;S3=0时:Y=D 。 -解:4 选 1多路选择器 VHDL 程序设计。 LIBRARY IEEE; -图 3-20(c)RTL 图的 VHDL 程序顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41a IS PORT(A,B,C,D : IN STD_LOGIC; S0,S1,S2,S3 : IN STD

19、_LOGIC; Y : OUT STD_LOGIC); END ENTITY mux41a; ARCHITECTURE one OF mux41a IS SIGNAL S0_3 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN S0_3=S0 y=A WHEN S0_3=0111 ELSE B WHEN S0_3=1011 ELSE C WHEN S0_3=1101 ELSE D WHEN S0_3=1110 ELSE Z; END ARCHITECTURE one; 3- 9 分频方法有多种,最简单的是二分频和 偶数分频甚至奇数分频, 这用触发器或指定计数 模的计数

20、器即可办到。 但对于现场实现指定分频 比或小数分频率的分频电路的设计就不是很简 单了。 试对例 3-20 的设计稍作修改,将其进位输 出 COUT 与异步加载控制 LOAD 连在一起,构 成一个自动加载型 16 位二进制数计数器,也即 一个 16 位可控的分频器,给出其 VHDL 表述, 并说明工作原理。 设输入频率 fi=4MHz ,输出频 率 fo=516.51Hz(允许误差 0.1Hz),16 位加载 数值是多少 ? -解:3-9 16 位数控分频器 (可进行奇偶数分频 ) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_L

21、OGIC_UNSIGNED.ALL; ENTITY DVF16 IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(15 DOWNTO 0); FOUT : OUT STD_LOGIC); END ENTITY DVF16; ARCHITECTURE one OF DVF16 IS SIGNAL FULL : STD_LOGIC; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN

22、 IF CNT8 = 0000000000000000 THEN CNT8 := D-1;- 当 CNT8 计数归 0 时, 预置 CNT8=D-1; -计数范围 (D=n) :n-1n/2 取整(n=10:98765 计数,前后半周期相同 ) FULL = 1;- 同时使溢出标志信号 FULL 输出为高电平 -(n=11:1098765 计数 ,前 比后半周期多一个时钟 ) ELSIF CNT8 = (0 - 当 CNT8=n/2 取整时,预置 CNT8=D/2 取整 -1; - 计 数 范围(D=n) : n/2 取整0(n=10:43210 计数) FULL = 1; -同时使溢出标志信

23、号 FULL 输出为高电平 (n=11:43210 计数 ) ELSE CNT8 := CNT8 - 1; -否则继续 作加 1 计数 FULL = 0;-且输出溢出 标志信号 FULL 为低电平 END IF; END IF; END PROCESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULLEVENT AND FULL = 1 THEN CNT2 := NOT CNT2;- 如果溢出标志信 号 FULL 为高电平, D 触发器输出取反 IF CNT2 = 1 THEN FOUT = 1; ELS

24、E FOUT 0); -计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF EN=1THEN -检测是否允许计数或加载(同步使能) IF LOAD=0 THEN Q:=DATA; -允许加载 ELSE IF Q0); -大于 等于 9 时,计数值清零 END IF; END IF; END IF; END IF; IF Q=9 THEN COUT=1; - 计数大于 9, 输出进位信号 ELSE COUT=0; END IF; DOUT 0);- 计数器异步复位 ELSIF LOAD = 1 THEN CQI:=DATA;-LS_LOAD:=0;

25、-计数 器异步复位 ELSIF CLKEVENT AND CLK=1 THEN-检测时钟上升沿 IF ADD_EN=1THEN- 检测 是否允许计数 (同步他能 ) IF CQI 0); -大于 65535,计数值清零 END IF; IF CQI=16#FFFF# THEN COUT=1;-计数大于 9,输出进位信号 ELSE COUT 0 THENCQI:=CQI-1; -允许计数 ,检测是否小于 65535 ELSE CQI:=(OTHERS = 1); -大于 65535,计数值清零 END IF; IF CQI=0 THEN COUT=1; - 计数大于 9,输出进位信号 ELSE

26、COUT = 0; END IF; END IF; END IF; CQ=CQI;- 将计数值向端口输 出 END PROCESS; END ARCHITECTURE A_S_16; 3- 12 分别给出图 3-20所示的六个 RTL 图的 VHDL 描述,注意其中的 D 触发器和锁存器的 表述。 图 3-20 RTL 图( a) - 解:实现图 3-20(a)RTL 图的 VHDL 程序 t3_12_a.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_a IS PORT (CL,CLK0: IN STD_LOGIC; O

27、UT OUT1: STD_LOGIC); END ENTITY t3_12_a; ARCHITECTURE sxdl OF t3_12_a IS 时序电路 sxdl SIGNAL Q : STD_LOGIC; BEGIN PROCESS(CLK0) BEGIN IF CLK0EVENT AND CLK0=1 THEN-检测时钟上升沿 Q = NOT(Q OR CL); END IF; END PROCESS; OUT1 = NOT Q; - 解:实现图 3-20(b)RTL 图的 VHDL 程序 t3_12_b.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164

28、.ALL; ENTITY t3_12_b IS PORT (A,B,C,D: IN STD_LOGIC; Y: OUT STD_LOGIC); END ENTITY t3_12_b; ARCHITECTURE sxdl OF t3_12_b IS 时序电路 sxdl SIGNAL AB,CD,ABCD : STD_LOGIC; BEGIN PROCESS(A,B,C,D,AB,CD,ABCD) BEGIN AB=A AND B; CD=C OR D; ABCD Y Y NULL END CASE; END PROCESS; END ARCHITECTURE sxdl; 图 3-20 RTL 图

29、( c) -解 1:实现图 3-20(c) RTL 图的 VHDL 程序 mux21a.vhd 底层设计描述。 - 用(WHEN_ELSE) 实现 2 选 1 多路选择器 程序(mux21a.vhd) 。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS PORT(a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b

30、; END ARCHITECTURE one; -解 2:实现图 3-20(c)RTL 图的 VHDL 程序 DFF6.vhd 底层设计描述。 电平触发 D 型触发器程序 (DFF6.vhd) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF6 IS PORT(CLK: IN STD_LOGIC; D: IN STD_LOGIC; Q:OUT STD_LOGIC); END; ARCHITECTURE bhv OF DFF6 IS BEGIN PROCESS(CLK,D) BEGIN IF CLK=1 THEN Q=D; END IF;

31、 END PROCESS; END bhv; -解 3:实现图 3-20(c)RTL 图的 VHDL 程序 t3_12_c.vhd 顶层设计描述。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_c IS PORT(D1,D2,CLK : IN STD_LOGIC; Q : OUT STD_LOGIC); END ENTITY t3_12_c; ARCHITECTURE one OF t3_12_c IS COMPONENT mux21a-调用 2 选 1 多路选择器声明语句 PORT(a,b : IN STD_LOGIC; s

32、: IN STD_LOGIC; y : OUT STD_LOGIC); END COMPONENT; COMPONENT DFF6-调用电平 型 D 触发器声明语句 PORT(CLK: IN STD_LOGIC; D: IN STD_LOGIC; Q:OUT STD_LOGIC); END COMPONENT; SIGNAL DD: STD_LOGIC; -定义 1 个信号作为内部的连接线。 BEGIN u1: mux21a PORT MAP(CLK,D2,D1,DD); u2: DFF6 PORT MAP(CLK,DD,Q); END ARCHITECTURE one; 图 3-20 RTL

33、 图( d) -解 1:实现图 3-20(d)RTL 图的 VHDL 程序 DFF_PRE.vhd 底层设计描述 - 带预置、清零和输出使能的 D 触发器程序 (DFF_PRE.vhd) 。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_PRE_CLR_ENA IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END; ARCHITEC

34、TURE bhv OF DFF_PRE_CLR_ENA IS SIGNAL Q1:STD_LOGIC; - 类似于在 芯片内部定义一个数据的暂存节点 BEGIN PROCESS(CLK,D,Q1,ENA,PRE,CLR) BEGIN IF CLR=1 THEN Q1=0; ELSIF PRE=1 THEN Q1=1; ELSIF CLKEVENT AND CLK=1 AND ENA=1 THEN Q1=D; END IF; -IF EN=1 THEN Q=Q1;-将 内部的暂存数据向端口输出 -END IF; Q=Q1;-将内部的暂存数据向端 口输出 END PROCESS; END bhv;

35、 -解 2:实现图 3-20(d)RTL 图的 VHDL 程序 t3_12_d.vhd 顶层设计描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_d IS PORT(SET,D,CLK,EN,RESET : IN STD_LOGIC; OUT STD_LOGIC); END ENTITY t3_12_d; ARCHITECTURE one OF t3_12_d IS COMPONENT DFF_PRE_CLR_ENA -调用 D 触发器声明语句 PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC

36、; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END COMPONENT; SIGNAL SS: STD_LOGIC; -定义 1 个信号作为内部的连接线。 BEGIN SS=SET AND (NOT RESET); u1: DFF_PRE_CLR_ENA PORT MAP(CLK,D,Q,EN,SS,RESET); END ARCHITECTURE one; 图 3-20 RTL 图( e) -解 1:实现图 3-20(e)RTL 图的 VHDL 程序 DFF_PRE_CLR.

37、vhd 底层设计描述 - 带预置、清零和输出使能的 D 触发器程序 (DFF_PRE_CLR.vhd) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_PRE_CLR_ENA IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END; ARCHITECTURE bhv OF DFF_PRE_CLR_ENA IS SIGNAL Q1:STD

38、_LOGIC; - 类似于在 芯片内部定义一个数据的暂存节点 BEGIN PROCESS(CLK,D,Q1,ENA,PRE,CLR) BEGIN IF CLR=1 THEN Q1=0; ELSIF PRE=1 THEN Q1=1; ELSIF CLKEVENT AND CLK=1 AND ENA=1 THEN Q1=D; END IF; -IF EN=1 THEN Q=Q1;-将 内部的暂存数据向端口输出 -END IF; Q=Q1;-将内部的暂存数据向端 口输出 END PROCESS; END bhv; -解 2:实现图 3-20(e)RTL 图的 VHDL 程序 t3_12_d.vhd

39、顶层设计描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY t3_12_e IS PORT(D,EN,CLK,RST : IN OUT STD_LOGIC; Q1,Q STD_LOGIC); END ENTITY t3_12_e; ARCHITECTURE one OF t3_12_e IS COMPONENT DFF_PRE_CLR_ENA -调用 D 触发器声明语句 PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE :

40、 IN STD_LOGIC; CLR : IN STD_LOGIC); END COMPONENT; SIGNAL D_EN: STD_LOGIC; -定义 1 个信号作为内部的连接线。 BEGIN D_ENCLK,D=D,Q=Q,ENA=EN,PR E=0,CLR=RST); Q1=(NOT D_EN) OR RST; END ARCHITECTURE one; -解 1:实现图 3-20(f)RTL 图的 VHDL 程序 mux21a.vhd 底层设计描述 - 用 WHEN_ELSE 实现 2选 1 多路选择器程 序(mux21a.vhd) LIBRARY IEEE; USE IEEE.S

41、TD_LOGIC_1164.ALL; ENTITY mux21a IS PORT(a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b; END ARCHITECTURE one; -解 2:实现图 3-20(f)RTL 图的 VHDL 程序 DFF_PRE_CLR.vhd 底层设计描述 - 带预置、清零和输出使能的上升沿 D 触发 器程序 (DFF_PRE_CLR.vhd) LIBR

42、ARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_PRE_CLR_ENA IS PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END; ARCHITECTURE bhv OF DFF_PRE_CLR_ENA IS SIGNAL Q1:STD_LOGIC; -类似于在芯 片内部定义一个数据的暂存节点 BEGIN PROCESS(CLK,D,Q1,ENA

43、,PRE,CLR) BEGIN IF CLR=1 THEN Q1=0; ELSIF PRE=1 THEN Q1=1; ELSIF CLKEVENT AND CLK=1 AND ENA=1 THEN Q1=D; END IF; -IF EN=1 THEN Q=Q1;-将内 部的暂存数据向端口输出 -END IF; Q=Q1;-将内部的暂存数据向端 口输出 END PROCESS; END bhv; -解 3:实现图 3-20(f)RTL 图的 VHDL 程序 t3_12_d.vhd 顶层设计描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY

44、t3_12_f IS PORT(RST,D,CLK : IN STD_LOGIC; Q,DOUT : OUT STD_LOGIC); END ENTITY t3_12_f; ARCHITECTURE one OF t3_12_f IS COMPONENT DFF_PRE_CLR_ENA -调用 D 触发器声明语句 PORT(CLK : IN STD_LOGIC; D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC; CLR : IN STD_LOGIC); END COMPONENT; COMPO

45、NENT mux21a-调用 D 触发器声明语句 PORT(a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC); END COMPONENT; SIGNAL DD,DDD: STD_LOGIC; -定 义 1 个信号作为内部的连接线。 BEGIN u1: mux21a PORT MAP(D,0,RST,DD); DDD001-011-111-101-100-000) 规律工作的六进制同步计数器。 应用 4 位全加器 位二进制加法计数 4- 10 基于原理图输入方式 和 74374(8D 触发器 ) 构成 4 器。如果使用 74299

46、(8 位通用移位寄存器) 、 74373(8D 锁存器)、D 触发器和非门来完成上 述功能,应该有怎样的电路? 4- 11 用一片 74163(可预置 4 位二进制计数 器)和两片 74138(3线-8 线译码器)构成一个 具有 12 路脉冲输出的数据分配器。要求在原理 图上标明第 1 路到第 12 路输出的位置。若改用 一片 74195(4 位通用移位寄存器)代替以上的 74163 (可预置 4 位二进制计数器) ,试完成同 样的设计 4-12 用同步时序电路对串行二进制输入进 行奇偶校验,每检测 5 位输入,输出一个结果。 当 5 位输入中 1 的数目为奇数时, 在最后一位的 时刻输出 1

47、。 - 解: 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_ou

48、t并: 行输出数据 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 IFCLKEVENTA NDC LK

49、=1 THEN - 检测时钟上升沿 IF RST = 1 THEN shift_cnt:=100; - 移位寄存器和计数 器复位 ELSE IF shift_cnt=4 THEN - 检测 到接收 5 位串行输入数据 shift_cnt:=000; - 移位计 数器清零,为接收下一组数据做准备。 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 -采样移位串行输入 ELSE shift_cnt:

50、=shift_cnt+1;-移 位计数 shift_Q:=S_in -采样移位串行输入 END IF; END IF; END IF; END PROCESS; END ARCHITECTURE one; 4-13 用 7490(十进制计数器)设计模为 872 的计数器,且输出的个位、十位、百位都应符合 8421码权重。 题 5- 1 什 么 是 固 有 延 时 ? 什 么 是 惯 性 延 时?P150151 5- 2 是什么 ?在 VHDL 中, 有什么用 处?P152 5- 3 哪 些 情 况 下 需 要 用 到 程 序 包 STD_LOGIC_UNSIGNED? 试举一例。 答:无符号整

51、数的 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:

52、PROCESS(CLK) VARIABLE CNT8: STD_LOGIC_VECTORD(7O WNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF CNT8 = 11111111 THEN CNT8 := D; -当 CNT8计数计满时, 输入数据 D被同步预置给计数器 CNT8 FULL = 1; - 同时使溢出标志信号 FULL输出为高电平 ELSE CNT8 := CNT8 + 1; -否则继续作 加 1 计数 且输出溢出 FULL = 0; - 标志信号 FULL为低电平 END IF; END IF; END PROCESS P_REG ;

53、 P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULLEVENT AND FULL = 1 THEN CNT2 := NOT CNT2;- 如果溢出标志信号 FULL为高电平, D 触发器输出取反 IF CNT2 = 1 THEN FOUT = 1; ELSE FOUT = 0; END IF; END IF; END PROCESS P_DIV; END ARCHITECTURE one; 5- 4 说明信号和变量的功能特点,以及应用 上的异同点。 P128P129 5- 5 什么是重载函数 ?重载算符有何用处 ?如 何调

54、用重载算符函数 ? 答:( 1)什么是重载函数 ? 根据操作对象变换 处理功能。 ( 2)重载算符有何用处 ? 用于两个不同类 型的操作数据自动转换成同种数据类型, 并进行 运算处理。 (3)如何调用重载算符函数 ?采用隐式 方式调用,无需事先声明。 5- 6 在 VHDL 设计中,给时序电路清零 (复位) 有两种力方法,它们是什么 ? 如何实现 ? 解:设 Q 定义成 信号,一种方法:Q= “000000”; 其中“ 000000”反映出信号 Q 的位宽度。第二种方法:Q0); 其中 OTHERS= 0不需要给出信号 Q 的位 宽度,即可对 Q 清零。 5- 7 用循环语句设计一个 7 人投

55、票表决器, 及一个 4位 4输入最大数值检测电路。 -解:5-7 用循环语句设计一个 7 人投票表决器, 及一个 4位 4输出最大数值检测电路。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY vote_7 IS PORT( DIN: IN STD_LOGIC_VECTOR(6 DOWNTO 0);-7 位 表决输入 (1:同意, 0:不同意 ) G_4: OUT STD_LOGIC; -超过半数指示 CNTH: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)

56、;- 表决 结果统计数 END vote_7; ARCHITECTURE BHV OF vote_7 IS BEGIN PROCESS(DIN) VARIABLE Q: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN Q:=000; FOR n IN 0 TO 6 LOOP - n 是 LOOP 的循环变量 IF(DIN(n)=1) THEN Q:=Q+1; END IF; END LOOP; CNTH=4 THEN G_4=1; ELSE G_4qqqqq=X; -null; end case; end process; END body_mux4; -【例 5-10

57、】位矢中 1码个数统计电路设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNTC IS PORT( DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CNTH: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END CNTC; ARCHITECTURE BHV OF CNTC IS BEGIN PROCESS(DIN) VARIABLE Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN Q:=0

58、000; FOR n IN 0 TO 7 LOOP - n 是 LOOP 的循环变量 IF(DIN(n)=1) THEN Q:=Q+1; END IF; END LOOP; CNTH=Q; END PROCESS; END BHV; 答:根据变量具有顺序立即赋值传送特性, 例 5-7 和例 5-10中的不完整条件语句对变量赋值 前对变量进行初始值设置;每次敏感信号触发, 对变量的赋值, 总能产生结果, 无保持状态 即输出是输入的函数; 因此,只能产生组合逻辑 电路;不可能产生时序逻辑电路。 5- 9 设计一个求补码的程序,输入数据是一 个有符号的 8位二进制 (原码)数。 -解: 5-9 设计

59、一个求补码的程序,输入数据是 一个有符号的 8 位二进制数。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY org_patch IS PORT( org_data : IN STD_LOGIC_VECTOR(7 DOWNTO 0);- 原码 输入 patch_data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);- 补码 输出 END org_patch; ARCHITECTURE BHV OF org_patch IS BEGIN PROCESS(

60、org_data) BEGIN IF(org_data(7)=0) THEN patch_data=0 ,补码 =原码。 else patch_data=org_data(7)-org_data5) END g_5_cmp; ARCHITECTURE BHV OF g_5_cmp IS BEGIN PROCESS(d_in) BEGIN IF(d_in0101) THEN cmp_out=1; - 输入数据大于 5,比 较输出 1。 else cmp_out=0; - 输入数据小于等于 5,比较输出 0。 END IF; END PROCESS; END BHV; 5-11 用 VHDL 输入

温馨提示

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

评论

0/150

提交评论