您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > EDA技术实用教程(第四版)》习题答案
《EDA技术实用教程(第四版)》习题1习题1-1EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?P3~41-2与软件描述语言相比,VHDL有什么特点?P6l-3什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么?P51-4在EDA技术中,自顶向下的设计方法的重要意义是什么?P7~101-5IP在EDA技术的应用和发展中的意义是什么?P22~141-6叙述EDA的FPGA/CPLD设计流程,以及涉及的EDA工具及其在整个流程中的作用。(P11~13)2习题2-1OLMC(输出逻辑宏单元)有何功能?说明GAL是怎样实现可编程组合电路与时序电路的。P34~362-2什么是基于乘积项的可编程逻辑结构?P33~34,40什么是基于查找表的可编程逻辑结构?P40~412-3FPGA系列器件中的LAB有何作用?P43~452-5解释编程与配置这两个概念。P582-6请参阅相关资料,并回答问题:按本章给出的归类方式,将基于乘积项的可编程逻辑结构的PLD器件归类为CPLD;将基于查找表的可编程逻辑结构的PLD器什归类为FPGA,那么,APEX系列属于什么类型PLD器件?MAXII系列又属于什么类型的PLD器件?为什么?P54~563习题3-1画出与以下实体描述对应的原理图符号元件:ENTITYbuf3sIS--实体1:三态缓冲器PORT(input:INSTD_LOGIC;--输入端enable:INSTD_LOGIC;--使能端output:OUTSTD_LOGIC);--输出端ENDbuf3s;ENTITYmux21IS--实体2:2选1多路选择器PORT(in0,in1,sel:INSTD_LOGIC;output:OUTSTD_LOGIC);buf3sinputoutputenable3-2图3-16所示的是4选1多路选择器,试分别用IF_THEN语句和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多路选择器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux41ISPORT(a,b,c,d:INSTD_LOGIC;s0:INSTD_LOGIC;s1:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYmux41;ARCHITECTUREif_mux41OFmux41ISSIGNALs0s1:STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据BEGINs0s1=s1&s0;--s1相并s0,即s1与s0并置操作PROCESS(s0s1,a,b,c,d)BEGINIFs0s1=00THENy=a;ELSIFs0s1=01THENy=b;ELSIFs0s1=10THENy=c;ELSEy=d;ENDIF;ENDPROCESS;ENDARCHITECTUREif_mux41;--解2:用CASE语句实现4选1多路选择器mux21in0outputin1selLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux41ISPORT(a,b,c,d:INSTD_LOGIC;s0:INSTD_LOGIC;s1:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYmux41;ARCHITECTUREcase_mux41OFmux41ISSIGNALs0s1:STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据类型BEGINs0s1=s1&s0;--s1相并s0,即s1与s0并置操作PROCESS(s0s1,a,b,c,d)BEGINCASEs0s1IS--类似于真值表的case语句WHEN00=y=a;WHEN01=y=b;WHEN10=y=c;WHEN11=y=d;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREcase_mux41;3-3图3-17所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s=’0’和s=’1’时,分别有y=‘a’和y=’b’。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。图3-17含2选1多路选择器的模块--解:用CASE语句实现图4-18所示的是双2选1多路选择器构成的电路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux31ISPORT(a1,a2,a3,s0,s1:INSTD_LOGIC;outy:OUTSTD_LOGIC);ENDENTITYmux31;ARCHITECTUREcase_mux31OFmux31ISSIGNALy:STD_LOGIC;BEGINu1:PROCESS(s0,a1,a2,a3)BEGINCASEs0IS--类似于真值表的case语句WHEN'0'=y=a2;WHEN'1'=y=a3;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;u2:PROCESS(s1,a1,a2,a3,y)BEGINCASEs1IS--类似于真值表的case语句WHEN'0'=outy=a1;WHEN'1'=outy=y;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREcase_mux31;3-4将例3-20程序的计数器改为十二进制计数器,程序用例3-21的方式表述,并且将复位RST改为同步清零控制,加载信号LOAD改为异步控制方式。讨论例3-20与例3-21的异同点。--解:十二进制计数器VHDL程序设计。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT12ISPORT(CLK,RST,EN,LOAD:INSTD_LOGIC;DATA:INSTD_LOGIC_VECTOR(3DOWNTO0);--4位预置数DOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--计数值输出COUT:OUTSTD_LOGIC);--计数进位输出ENDCNT12;ARCHITECTUREbehavOFCNT12ISSIGNALQ:STD_LOGIC_VECTOR(3DOWNTO0);BEGINREG:PROCESS(CLK,RST,EN,LOAD,Q)BEGINIFLOAD='0'THENQ=DATA;--允许加载ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFRST='0'THENQ=(OTHERS='0');--计数器异步复位ELSEIFEN='1'THEN--检测是否允许计数或加载(同步使能)IFLOAD='0'THENQ=DATA;--允许加载ELSEIFQ12THENQ=Q+1;--允许计数,检测是否小于9ELSEQ=(OTHERS='0');--大于等于9时,计数值清零ENDIF;ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;COM:PROCESS(Q)BEGINIFQ=12THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;DOUT=Q;--将计数值向端口输出ENDPROCESS;ENDbehav;3-5设计含有异步清零和计数使能的16位二进制加减可控计数器。--解:用VHDL实现含有异步清零和计数使能的16位二进制加减可控计数器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADD_SUB_16ISPORT(CLK,RST,ADD_EN,SUB_EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(15DOWNTO0);COUT:OUTSTD_LOGIC);ENDENTITYADD_SUB_16;ARCHITECTUREA_S_16OFADD_SUB_16ISBEGINPROCESS(CLK,RST,ADD_EN,SUB_EN)VARIABLECQI:STD_LOGIC_VECTOR(15DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS='0');--计数器异步复位ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFADD_EN='1'THEN--检测是否允许计数(同步他能)IFCQI16#FFFF#THENCQI:=CQI+1;--允许计数,检测是否小于65535ELSECQI:=(OTHERS='0');--大于65535,计数值清零ENDIF;IFCQI=16#FFFF#THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;ENDIF;IFSUB_EN='1'THEN--检测是否允许计数(同步他能)IFCQI0THENCQI:=CQI-1;--允许计数,检测是否小于65535ELSECQI:=(OTHERS='1');--大于65535,计数值清零ENDIF;IFCQI=0THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;ENDIF;ENDIF;CQ=CQI;--将计数值向端口输出ENDPROCESS;ENDARCHITECTUREA_S_16;3-6图3-18是一个含有上升沿触发的D触发器的时序电路(sxdl),试写出此电路的VHDL设计文件。图3-18时序电路--解:实现图4-19电路的VHDL程序t4_19.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYt4_19ISPORT(CL,CLK0:INSTD_LOGIC;OUT1:OUTSTD_LOGIC);ENDENTITYt4_19;ARCHITECTUREsxdlOFt4_19IS----时序电路sxdlSIGNALQ:STD_LOGIC;BEGINPROCESS(CLK0)BEGINIFCLK0'EVENTANDCLK0='1'THEN--检测时钟上升沿Q=NOT(QORCL);ENDIF;ENDPROCESS;OUT1=NOTQ;ENDARCHITECTUREsxdl;3-7给出1位全减器的VHDL描述;最终实现8位全减器。要求:1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-20中h_suber是半减器,diff是输出差(diff=x-y),s_out是借位输出(s_out=1,xy),sub_in是借位输入。图3-191位全加器xinyinabdiff_outc--解(1.1):实现1位半减器h_suber(diff=x-y;s_out=1,xy)LIBRARYIEEE;--半减器描述(1):布尔方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_suberISPORT(x,y:INSTD_LOGIC;diff,s_out:OUTSTD_LOGIC);ENDENTITYh_suber;ARCHITECTUREhs1OFh_suberISBEGINDiff=xXOR(NOTy);s_out=(NOTx)ANDy;ENDARCHITECTUREhs1;--解(1.2):采用例化实现图4-20的1
本文标题:EDA技术实用教程(第四版)》习题答案
链接地址:https://www.777doc.com/doc-2911027 .html