eda技术实用教程习题答案.pdf

上传人:蓝**** 文档编号:90991234 上传时间:2023-05-19 格式:PDF 页数:36 大小:1.22MB
返回 下载 相关 举报
eda技术实用教程习题答案.pdf_第1页
第1页 / 共36页
eda技术实用教程习题答案.pdf_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《eda技术实用教程习题答案.pdf》由会员分享,可在线阅读,更多相关《eda技术实用教程习题答案.pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、EDAEDA 技术实用教程技术实用教程(第四版第四版)习题习题1 1习习题题1-1EDA 技术与 ASIC 设计和 FPGA 开发有什么关系?FPGA 在 ASIC 设计中有什么用途?P341-2与软件描述语言相比,VHDL 有什么特点?P6l-3什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么?P51-4在 EDA 技术中,自顶向下的设计方法的重要意义是什么?P7101-5IP 在 EDA 技术的应用和发展中的意义是什么?P22141-6叙述 EDA 的 FPGA/CPLD 设计流程,以及涉及的 EDA 工具及其在整个流程中的作用。(P1113)2 2习习题题2-1OLMC(输出逻

2、辑宏单元)有何功能?说明 GAL 是怎样实现可编程组合电路与时序电路的。P34362-2什么是基于乘积项的可编程逻辑结构?P3334,40什么是基于查找表的可编程逻辑结构?P40412-3FPGA 系列器件中的 LAB 有何作用?P43452-5解释编程与配置这两个概念。P582-6请参阅相关资料,并回答问题:按本章给出的归类方式,将基于乘积项的可编程逻辑结构的 PLD 器件归类为 CPLD;将基于查找表的可编程逻辑结构的 PLD 器什归类为FPGA,那么,APEX 系列属于什么类型PLD 器件?MAX II 系列又属于什么类型的 PLD 器件?为什么?P54563 3习习题题3-1画出与以下

3、实体描述对应的原理图符号元件:ENTITY buf3s IS-实体 1:三态缓冲器PORT(input:IN STD_LOGIC;-输入端enable:IN STD_LOGIC;-使能端output:OUT STD_LOGIC);-输出端END buf3s;buf3sbuf3sinputoutputenableENTITY mux21 IS-实体 2:2 选 1 多路选择器PORT(in0,in1,sel:IN STD_LOGIC;output:OUT STD_LOGIC);mux21in0outputin1sel3-2图 3-16 所示的是 4 选 1 多路选择器,试分别用 IF_THEN

4、语句和 CASE 语句的表达方式写出此电路的 VHDL 程序,选择控制信号 s1 和 s0 的数据类型为 STD_LOGIC_VECTOR;当 s1=0,s0=0;s1=0,s0=1;s1=1,s0=0和 s1=1,s0=1时,分别执行 y=a、y=b、y=c、y=d。图 3-164 选 1 多路选择器-解 1:用 IF_THEN 语句实现 4 选 1 多路选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT(a,b,c,d:IN STD_LOGIC;s0:IN STD_LOGIC;s1:IN STD_LOGIC;y:O

5、UT STD_LOGIC);END ENTITY mux41;ARCHITECTUREif_mux41OF mux41ISSIGNAL s0s1:STD_LOGIC_VECTOR(1 DOWNTO 0);-定义标准逻辑位矢量数据BEGINs0s1=s1&s0;-s1 相并 s0,即 s1 与 s0 并置操作PROCESS(s0s1,a,b,c,d)BEGINIFs0s1=00THENy=a;ELSIFs0s1=01THENy=b;ELSIFs0s1=10THENy=c;ELSEy=d;END IF;END PROCESS;END ARCHITECTUREif_mux41;-解 2:用 CASE

6、 语句实现 4 选 1 多路选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT(a,b,c,d:IN STD_LOGIC;s0:IN STD_LOGIC;s1:IN STD_LOGIC;y:OUT STD_LOGIC);END ENTITY mux41;ARCHITECTUREcase_mux41OF mux41ISSIGNAL s0s1:STD_LOGIC_VECTOR(1 DOWNTO 0);-定义标准逻辑位矢量数据类型BEGINs0s1yyyyNULL;END CASE;END PROCESS;END ARCHI

7、TECTUREcase_mux41;3-3图3-17所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s=0和 s=1时,分别有 y=a和 yyyNULL;END CASE;END PROCESS;u2:PROCESS(s1,a1,a2,a3,y)BEGINCASE s1 IS-类似于真值表的 case 语句WHEN 0=outyoutyNULL;END CASE;END PROCESS;END ARCHITECTUREcase_mux31;3-4将例 3-20 程序的计数器改为十二进制计数器,程序用例 3-21 的方式表述,并且将复位 RST 改为同步清零控制,加载信号

8、LOAD 改为异步控制方式。讨论例 3-20 与例 3-21 的异同点。-解:十二进制计数器 VHDL 程序设计。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT12 ISPORT(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 CNT

9、12;ARCHITECTURE behav OF CNT12 ISSIGNALQ:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINREG:PROCESS(CLK,RST,EN,LOAD,Q)BEGINIF LOAD=0 THEN Q=DATA;-允许加载ELSIF CLKEVENT AND CLK=1 THEN-检测时钟上升沿IF RST=0 THEN Q0);-计数器异步复位ELSEIF EN=1 THEN-检测是否允许计数或加载(同步使能)IF LOAD=0 THEN Q=DATA;-允许加载ELSEIF Q12 THEN Q=Q+1;-允许计数,检测是否小于 9ELS

10、E Q0);-大于等于 9 时,计数值清零END IF;END IF;END IF;END IF;END IF;END PROCESS;COM:PROCESS(Q)BEGINIF 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,输出进位信号ELSE

11、 COUT 0 THENCQI:=CQI-1;-允许计数,检测是否小于 65535ELSE 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-63-6图 3-18 是一个含有上升沿触发的D 触发器的时序电路(sxdl),试写出此电路的 VHDL设计文件。图 3-18时序电路-解:实现图 4-19 电路的 VHDL 程序 t4_

12、19.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t4_19 ISPORT(CL,CLK0:IN STD_LOGIC;OUT1:OUT STD_LOGIC);END ENTITY t4_19;ARCHITECTUREsxdlOF t4_19IS-时序电路 sxdlSIGNAL Q:STD_LOGIC;BEGINPROCESS(CLK0)BEGINIFCLK0EVENT AND CLK0=1THEN-检测时钟上升沿Q=NOT(Q OR CL);END IF;END PROCESS;OUT1=NOT Q;END ARCHITECTUREsx

13、dl;3-73-7给出 1 位全减器的 VHDL 描述;最终实现 8 位全减器。要求:1)首先设计 1 位半减器,然后用例化语句将它们连接起来,图 4-20 中 h_suber 是半减器,diff 是axinxin输出差(diff=x-y),s_out是借位输出(s_out=1,xy),sub_in是借位输入。diff_outdiff_outcyinyinb图 3-191 位全加器-解(1.1):实现 1 位半减器 h_suber(diff=x-y;s_out=1,xy)LIBRARY IEEE;-半减器描述(1):布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL;ENT

14、ITY h_suber ISPORT(x,y:IN STD_LOGIC;diff,s_out:OUT STD_LOGIC);END ENTITYh_suber;ARCHITECTUREhs1OF h_suber ISBEGINDiff=x XOR(NOT y);s_out xin,y=yin,diff=a,s_out=b);u2:h_suber PORT MAP(x=a,y=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=x

15、1,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_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_ou

16、t=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=sout);END ARCHITECTURE s8;3-83-8给出一个 4 选 1 多路选择器的 VHDL 描述。选通控制端有四个输入:S0、S1、S2、S3。当且仅当 S0=0 时:Y=A;S1=0 时:Y=B;S2=0 时:Y=C;S3=0 时:Y=D。-解

17、:4 选 1 多路选择器 VHDL 程序设计。LIBRARYIEEE;-图 3-20(c)RTL图的 VHDL 程序顶层设计描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41a ISPORT(A,B,C,D:IN STD_LOGIC;S0,S1,S2,S3:IN STD_LOGIC;Y:OUT STD_LOGIC);END ENTITY mux41a;ARCHITECTURE one OF mux41a ISSIGNAL S0_3:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINS0_3=S0&S1&S2&S3;y=AWHEN S0_3=0

18、111 ELSEBWHEN S0_3=1011 ELSECWHEN S0_3=1101 ELSEDWHEN S0_3=1110 ELSEZ;END ARCHITECTURE one;3-9分频方法有多种,最简单的是二分频和偶数分频甚至奇数分频,这用触发器或指定计数模的计数器即可办到。但对于现场实现指定分频比或小数分频率的分频电路的设计就不是很简单了。试对例 3-20 的设计稍作修改,将其进位输出COUT 与异步加载控制 LOAD 连在一起,构成一个自动加载型 16 位二进制数计数器,也即一个 16 位可控的分频器,给出其 VHDL表述,并说明工作原理。设输入频率 fi=4MHz,输出频率 fo

19、=516.51Hz(允许误差0.1Hz),16 位加载数值是多少?-解:3-916 位数控分频器(可进行奇偶数分频)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF16 ISPORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(15 DOWNTO 0);FOUT:OUT STD_LOGIC);END ENTITY DVF16;ARCHITECTURE one OF DVF16 ISSIGNAL FULL:STD_LOGIC;BEGINP_REG

20、:PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF CLKEVENT AND CLK=1 THENIF CNT8=0000000000000000 THENCNT8:=D-1;-当 CNT8 计数归 0 时,预置 CNT8=D-1;-计数范围(D=n):n-1n/2 取整(n=10:98765 计数,前后半周期相同)FULL=1;-同时使溢出标志信号 FULL 输出为高电平-(n=11:1098765计数,前比后半周期多一个时钟)ELSIF CNT8=(0&D(15 DOWNTO 1)THENCNT8:=(0&D(1

21、5 DOWNTO 1)-1;-当 CNT8=n/2 取整时,预置 CNT8=D/2 取整-1;-计数范围(D=n):n/2 取整0(n=10:43210 计数)FULL=1;-同时使溢出标志信号 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;BEGINIF FULLEVENT AND FULL=1 THENCNT2:=NOT CN

22、T2;-如果溢出标志信号 FULL 为高电平,D 触发器输出取反IF CNT2=1 THENFOUT=1;ELSE FOUT 0);-计数器异步复位ELSIF CLKEVENT AND CLK=1 THEN-检测时钟上升沿IF EN=1 THEN-检测是否允许计数或加载(同步使能)IF LOAD=0 THEN Q:=DA TA;-允许加载ELSEIF 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 LO

23、AD=1 THEN CQI:=DATA;-LS_LOAD:=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,输出进位信号ELSE COUT 0 THENCQI:=CQI-1;-允许计数,检测是否小于 65535ELSE CQI:=(OTHERS=1);-大于 65535,计数值清零END IF;IF CQI=0 THEN COUT=1;-计数大于 9,输出进

24、位信号ELSE 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-20RTL图图 3-20RTL图(a)-解:实现图 3-20(a)RTL图的 VHDL 程序 t3_12_a.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t3_12_a ISPORT(CL,CLK0:IN STD_LOGIC;OUT1:OUT ST

25、D_LOGIC);END ENTITY t3_12_a;ARCHITECTUREsxdlOF t3_12_aIS-时序电路 sxdlSIGNAL Q:STD_LOGIC;BEGINPROCESS(CLK0)BEGINIFCLK0EVENT AND CLK0=1THEN-检测时钟上升沿Q=NOT(Q OR CL);END IF;END PROCESS;OUT1=NOT Q;END ARCHITECTUREsxdl;图 3-20RTL图(b)-解:实现图 3-20(b)RTL图的 VHDL 程序 t3_12_b.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL

26、;ENTITY t3_12_b ISPORT(A,B,C,D:IN STD_LOGIC;Y:OUT STD_LOGIC);END ENTITY t3_12_b;ARCHITECTUREsxdlOF t3_12_bIS-时序电路 sxdlSIGNAL AB,CD,ABCD:STD_LOGIC;BEGINPROCESS(A,B,C,D,AB,CD,ABCD)BEGINAB=A AND B;CD=C OR D;ABCDYYNULL;END CASE;END PROCESS;END ARCHITECTUREsxdl;图 3-20RTL图(c)-解 1:实现图 3-20(c)RTL图的 VHDL 程序

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

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

29、;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t3_12_c ISPORT(D1,D2,CLK:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITYt3_12_c;ARCHITECTURE one OF t3_12_c ISCOMPONENT mux21a-调用 2 选 1 多路选择器声明语句PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;COMPONENT DFF6-调用电平型 D 触发器声明语句PORT(CLK:IN STD_LOGIC;D:IN S

30、TD_LOGIC;Q:OUT STD_LOGIC);END COMPONENT;SIGNAL DD:STD_LOGIC;-定义 1 个信号作为内部的连接线。BEGINu1:mux21a PORT MAP(CLK,D2,D1,DD);u2:DFF6PORT MAP(CLK,DD,Q);END ARCHITECTURE one;图 3-20RTL图(d)-解 1:实现图 3-20(d)RTL图的 VHDL 程序 DFF_PRE.vhd 底层设计描述-带预置、清零和输出使能的D 触发器程序(DFF_PRE.vhd)。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;E

31、NTITY DFF_PRE_CLR_ENA ISPORT(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 ISSIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,D,Q1,ENA,PRE,CLR)BEGINIF CLR=1 THEN Q1=0;ELSIF PRE=1 THEN Q1=1;ELSIF CLK

32、EVENT 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(d)RTL图的 VHDL 程序 t3_12_d.vhd 顶层设计描述LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t3_12_d ISPORT(SET,D,CLK,EN,RESET:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITYt3_12_d;

33、ARCHITECTURE one OF t3_12_d ISCOMPONENT 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;SIGNAL SS:STD_LOGIC;-定义 1 个信号作为内部的连接线。BEGINSS=SET AND(NOT RESET);u1:DFF_PRE_CLR_ENA PORT MAP(CLK,D,Q,EN,SS,RESET)

34、;END ARCHITECTURE one;图 3-20RTL图(e)-解 1:实现图 3-20(e)RTL图的 VHDL 程序 DFF_PRE_CLR.vhd底层设计描述-带预置、清零和输出使能的D 触发器程序(DFF_PRE_CLR.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF_PRE_CLR_ENA ISPORT(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;AR

35、CHITECTURE bhv OF DFF_PRE_CLR_ENA ISSIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,D,Q1,ENA,PRE,CLR)BEGINIF 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-2

36、0(e)RTL图的 VHDL 程序 t3_12_d.vhd 顶层设计描述LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t3_12_e ISPORT(D,EN,CLK,RST:IN STD_LOGIC;Q1,Q:OUT STD_LOGIC);END ENTITYt3_12_e;ARCHITECTURE one OF t3_12_e ISCOMPONENT DFF_PRE_CLR_ENA-调用 D 触发器声明语句PORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC;ENA:IN STD_LOGIC;

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

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

39、IC_1164.ALL;ENTITY DFF_PRE_CLR_ENA ISPORT(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 ISSIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,D,Q1,ENA,PRE,CLR)BEGINIF CLR=1 THEN Q1=0;ELSIF PRE=1 THEN Q

40、1=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 顶层设计描述LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t3_12_f ISPORT(RST,D,CLK:IN STD_LOGIC;Q,DOUT:OUT STD_LOGIC);END ENTIT

41、Yt3_12_f;ARCHITECTURE one OF t3_12_f ISCOMPONENT 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;COMPONENT mux21a-调用 D 触发器声明语句PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;SIGNAL

42、DD,DDD:STD_LOGIC;-定义 1 个信号作为内部的连接线。BEGINu1:mux21a PORT MAP(D,0,RST,DD);DDD001-011-111-101-100-000)规律工作的六进制同步计数器。4-10基于原理图输入方式,应用 4 位全加器和 74374(8D 触发器)构成 4 位二进制加法计数器。如果使用 74299(8 位通用移位寄存器)、74373(8D 锁存器)、D 触发器和非门来完成上述功能,应该有怎样的电路?4-11用一片 74163(可预置 4 位二进制计数器)和两片 74138(3 线-8 线译码器)构成一个具有 12 路脉冲输出的数据分配器。要求

43、在原理图上标明第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_UNSIGN

44、ED.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

45、_VECTOR(4 DOWNTO 0);-shift_Q:移位寄存器 VARIABLE shift_cnt:STD_LOGIC_VECTOR(2 DOWNTO 0);-shift_cnt:移位计数器 BEGIN IF CLKEVENT AND CLK=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_

46、Q(4)XOR shift_Q(3)XOR shift_Q(2)XOR shift_Q(1)XORshift_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 码权重

47、。5 5习习题题5-1什么是固有延时?什么是惯性延时?P1501515-2是什么?在 VHDL 中,有什么用处?P1525-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

48、:OUT STD_LOGIC);END ENTITY DVF;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGIN P_REG:PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT8=11111111 THEN CNT8:=D;-当 CNT8 计数计满时,输入数据D 被同步预置给计数器 CNT8 FULL=1;-同时使溢出标志信号 FULL 输出为高电平 ELSE CNT8:=CNT8+1;-否则继续作加

49、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;ELSE FOUT=0;END IF;END IF;END PROCESS P_DIV;END ARCHITECTURE one;5-4说明信号和变量的功能特点,以及应用上的异同点

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理制度

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁