☆☆密封线内不要答题☆☆姓名学号班级本套试卷共5页一、选择题:(20分)1.大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是:___D__A.CPLD是基于查找表结构的可编程逻辑器件B.CPLD即是现场可编程逻辑器件的英文简称C.早期的CPLD是从FPGA的结构扩展而来D.在Xilinx公司生产的器件中,XC9500系列属CPLD结构2.基于VHDL设计的仿真包括有①门级时序仿真、②行为仿真、③功能仿真和④前端功能仿真这四种,按照自顶向下的设计流程,其先后顺序应该是:_________DA.①②③④B.②①④③C.④③②①D.②④③①3.下面对利用原理图输入设计方法进行数字电路系统设计,哪一种说法是正确的:__________BA.原理图输入设计方法直观便捷,很适合完成较大规模的电路系统设计B.原理图输入设计方法多用于较规范、规模不大的电路设计,和HDL代码描述方法均可以被综合,相得益彰C.原理图输入设计方法无法对电路进行功能描述D.原理图输入设计方法不适合进行层次化设计4.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是:_______DA.PROCESS为一无限循环语句B.敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动C.当前进程中声明的变量不可用于其他进程D.进程由说明语句部分、并行语句部分和敏感信号参数表三部分组成5.对于信号和变量的说法,哪一个是不正确的:_________AA.信号用于作为进程中局部数据存储单元B.变量的赋值是立即完成的C.信号在整个结构体内的任何地方都能适用D.变量和信号的赋值符号不一样6.进程中的信号赋值语句,其信号更新是___C____。A.按顺序完成;B.比变量更快完成;C.在进程的最后完成;D.都不对。7.VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库:_______DA.IEEE库B.VITAL库C.STD库D.WORK工作库☆☆密封线内不要答题☆☆姓名学号班级8.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___________。BA.器件外部特性;B.器件的内部功能;C.器件的综合约束;D.器件外部特性与内部功能。9.下列语句中,不属于并行语句的是:_______BA.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句10.下列标识符中,__________是不合法的标识符。BA.State0B.9moonC.Not_Ack_0D.signall二、EDA名词解释或者简述(10分)写出下列缩写的中文(或者英文)含义:1.ASIC专用集成电路2.FPGA现场可编程门阵列3.IP知识产权核(软件包)4.FSM有限状态机5.HDL硬件描述语言三、VHDL程序填空:(20分)1.以下程序是一个BCD码表示0~99计数器的VHDL描述,试补充完整。(10分)答案:答案:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt100bisport(clk,rst,en:instd_logic;cq:outstd_logic_vector(7downto0);--计数输出cout:outstd_logic);--进位输出endentitycnt100b;architecturebhvofcnt100bisbeginprocess(clk,rst,en)variablecqi:std_logic_vector(7downto0);beginifrst='1'thencqi:=(others=‘0’);--计数器清零复位elseifclk’eventandclk=‘1’then--上升沿判断ifen='1'thenifcqi(3downto0)1001then--比较低4位cqi:=cqi+1;--计数加1elseifcqi(7downto4)1001then--比较高4位cqi:=cqi+16;elsecqi:=(others='0');endif;cqi(3downto0):=“0000”;--低4位清零endif;endif;endif;endif;ifcqi=“10011001”then--判断进位输出cout='1';elsecout='0';endif;cq=cqi;endprocess;endarchitecturebhv;☆☆密封线内不要答题☆☆姓名学号班级2.VHDL程序填空:下面程序是n输入与门的VHDL描述,试补充完整。(10分)__________ieee;use_____________________.all;entityandnis________(n:integer);--类属参数声明port(a:instd_logic_vector(______downto0);c:outstd_logic);end;________________behavof________is--结构体声明beginprocess(____)_____________int:std_logic;--变量声明beginint:=_____;--变量赋初值forIina'length–1downto0loop--循环判断ifa(i)='0'thenint:='0';endif;endloop;c=________;--输出判断结果endprocess;endbehav;答案:libraryieee.std_logic_1164genericn-1architectureandnavariable‘1’int四、VHDL程序调试改错:(10分)仔细阅读下列程序,回答问题LIBRARYIEEE;--1USEIEEE.STD_LOGIC_1164.ALL;--2ENTITYMOORE1IS--3PORT(DATAIN:INSTD_LOGIC_VECTOR(1DOWNTO0);--4CLK,RST:INSTD_LOGIC;--5Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));--6ENDMOORE1;--7ARCHITECTUREBEHAVOFMOORE1IS--8SIGNALST_TYPEIS(ST0,ST1,ST2,ST3,ST4);--9SIGNALC_ST:ST_TYPE;--10BEGIN--11PROCESS(CLK,RST)--12BEGIN--13IFRST='1'THENC_ST=ST0;Q=0000;--14ELSIFCLK'EVENTANDCLK='1'THEN--15CASEC_STIS--16WHENST0=IFDATAIN=10THENC_ST=ST1;--17ELSEC_ST=ST0;--18ENDIF;Q=1001;--19WHENST1=IFDATAIN=11THENC_ST=ST2;--20ELSEC_ST=ST1;--21ENDIF;Q=0101;--22WHENST2=IFDATAIN=01THENC_ST=ST3;--23ELSEC_ST=ST0;--24ENDIF;Q=1100;--25WHENST3=IFDATAIN=00THENC_ST=ST4;--26ELSEC_ST=ST2;--27ENDIF;Q=0010;--28WHENST4=IFDATAIN=11THENC_ST=ST0;--29ELSEC_ST=ST3;--30ENDIF;Q=1001;--31ENDCASE;--32ENDIF;--33ENDPROCESS;--34ENDBEHAV;--351.在程序中存在两处错误,试指出,并说明理由:在QuartusII中编译时,其中一个提示的错误为:Error(Line9):VHDLsyntaxerroratMOORE1.vhd(9)neartextIS;expecting:,or,第9行,状态机数据类型声明错误,关键字应为TYPE第32行,case语句缺少whenothers处理异常状态情况2.修改相应行的程序(如果是缺少语句请指出大致的行数):错误1行号:9程序改为:SIGNAL改为TYPE错误2行号:32程序改为:之前添加一句whenothers=c_st=st0;☆☆密封线内不要答题☆☆姓名学号班级五、阅读下列VHDL程序,说出总体实现了什么功能,并对代码进行解释。(10分)ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREoneY='Z';ENDIF;ENDPROCESS;ENDONE;答案:这是一个很简单的设计:数据选择器。只要能够理解这是一个数据选择器,简单描述功能:如果s='0'输出选择a;否则输出选择为b。六、写VHDL程序:(10分)1.设计10进制加法计数器,要求含异步清0和同步时钟使能。注意:时钟信号命名为CLK,使能信号为EN,清零信号为RST,计数输出为CQ。参考答案:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS='0');--计数器异步复位ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFEN='1'THEN--检测是否允许计数(同步使能)IFCQI9THENCQI:=CQI+1;--允许计数,检测是否小于9ELSECQI:=(OTHERS='0');--大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;CQ=CQI;--将计数值向端口输出ENDPROCESS;ENDbehav;☆☆密封线内不要答题☆☆姓名学号班级七、VHDL程序设计:(20分)设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。(a)用if语句。(b)用case语句。(c)用whenelse语句。Libraryieee;Useieee.std_logic_1164.all;EntitymymuxisPort(sel:instd_logic_vector(1downto0);--选择信号输入Ain,Bin:instd_logic_vector(1downto0);--数据输入Cout:outstd_logic_vector(1downto0));Endmymux;ArchitectureoneofmymuxisBeginProcess(sel,ain,bin)BeginIfsel=“00”thencout=ainandbin;Elsifsel=“01”thencout=ainxorbin;Elsifsel=“10”thencout=notain;Elsecout=notbin;Endif;Endprocess;Endone;Architecturetwoofm