一、选择题:(20分)1.大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是:___D__A.CPLD是基于查找表结构的可编程逻辑器件B.CPLD即是现场可编程逻辑器件的英文简称C.早期的CPLD是从FPGA的结构扩展而来D.在Xilinx公司生产的器件中,XC9500系列属CPLD结构2.基于VHDL设计的仿真包括有①门级时序仿真、②行为仿真、③功能仿真和④前端功能仿真这四种,按照自顶向下的设计流程,其先后顺序应该是:_________DA.①②③④B.②①④③C.④③②①D.②④③①3.IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中,对于固IP的正确描述为:__________DA.提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路B.提供设计的最总产品——模型库C.以可执行文件的形式提交用户,完成了综合的功能块D.都不是4.下面对利用原理图输入设计方法进行数字电路系统设计,哪一种说法是正确的:__________BA.原理图输入设计方法直观便捷,很适合完成较大规模的电路系统设计B.原理图输入设计方法一般是一种自底向上的设计方法C.原理图输入设计方法无法对电路进行功能描述D.原理图输入设计方法不适合进行层次化设计5.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是:_______DA.PROCESS为一无限循环语句B.敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动C.当前进程中声明的变量不可用于其他进程D.进程由说明语句部分、并行语句部分和敏感信号参数表三部分组成6.对于信号和变量的说法,哪一个是不正确的:_________AA.信号用于作为进程中局部数据存储单元B.变量的赋值是立即完成的C.信号在整个结构体内的任何地方都能适用D.变量和信号的赋值符号不一样7.下列状态机的状态编码,_________方式有“输出速度快、难以有效控制非法状态出现”这个特点。AA.状态位直接输出型编码B.一位热码编码C.顺序编码D.格雷编码8.VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库:_______DA.IEEE库B.VITAL库C.STD库D.WORK工作库9.下列4个VHDL标识符中正确的是:_______BA.10#128#B.16#E#E1C.74HC124D.X_1610.下列语句中,不属于并行语句的是:_______BA.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句二、EDA名词解释(10分)写出下列缩写的中文(或者英文)含义:1.ASIC专用集成电路2.FPGA现场可编程门阵列3.IP知识产权核(软件包)4.JTAG联合测试行动小组5.HDL硬件描述语言三、VHDL程序填空:(10分)以下程序是一个BCD码表示0~99计数器的VHDL描述,试补充完整。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;四、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程序,画出相应RTL图:(10分)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTRISISPORT(CONTROL:INSTD_LOGIC;INN:INSTD_LOGIC;Q:INOUTSTD_LOGIC;Y:OUTSTD_LOGIC);ENDTRIS;ARCHITECTUREONEOFTRISISBEGINPROCESS(CONTROL,INN,Q)BEGINIF(CONTROL='0')THENY=Q;Q='Z';ELSEQ=INN;Y='Z';ENDIF;ENDPROCESS;ENDONE;六、写VHDL程序:(20分)1.试描述一个带进位输入、输出的8位全加器端口:A、B为加数,CIN为进位输入,S为加和,COUT为进位输出LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYADDER8ISPORT(A,B:INSTD_LOGIC_VECTOR(7DOWNTO0);CIN:INSTD_LOGIC;COUT:OUTSTD_LOGIC;S:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDADDER8;ARCHITECTUREONEOFADDER8ISSIGNALTS:STD_LOGIC_VECTOR(8DOWNTO0);BEGINTS=(‘0’&A)+(‘0’&B)+CIN;S=TS(7DOWNTO0);COUT=TS(8);ENDONE;2.看下面原理图,写出相应VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMYCIRISPORT(A,CLK:INSTD_LOGIC;C,B:OUTSTD_LOGIC);ENDMYCIR;ARCHITECTUREBEHAVOFMYCIRISSIGNALTA:STD_LOGIC;BEGINPROCESS(A,CLK)BEGINIFCLK’EVENTANDCLK=‘1’THENTA=A;B=TA;C=AANDTA;ENDIF;ENDPROCESS;ENDBEHAV;七、综合题(20分)下图是一个A/D采集系统的部分,要求设计其中的FPGA采集控制模块,该模块由三个部分构成:控制器(Control)、地址计数器(addrcnt)、内嵌双口RAM(adram)。控制器(control)是一个状态机,完成AD574的控制,和adram的写入操作。adram是一个LPM_RAM_DP单元,在wren为’1’时允许写入数据。试分别回答问题放大采样/保持AnalogIn信号预处理FPGA采集控制adram(lpm_ram_dp)ControlAD574CSADData8CEA0RCK12_8地址计数器CLKClkIncCntclrwraddr6wrenrddata8rddatardaddr681STATUS下面列出了AD574的控制方式和控制时序图:AD574逻辑控制真值表(X表示任意)CECSRCK12_8A0工作状态0XXXX禁止X1XXX禁止100X0启动12位转换100X1启动8位转换1011X12位并行输出有效10100高8位并行输出有效10101低4位加上尾随4个0有效AD574工作时序问题:1.要求AD574工作在8位转换模式,K12_8、A0在control中如何设置?K12_8低电平A0高电平2.试画出control的状态机的状态图3.地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对该模块进行VHDL描述。Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Entitycnt64isPort(ClkInc,Cntclr:instd_logic;--时钟信号和清零信号输入Wraddr:outstd_logic_vector(5downto0));Endcnt64;Architectureoneofcnt64isBeginProcess(clkinc,cntclr)Variablecounter:std_logic_vector(5downto0);BeginIfcntclr=‘1’thencounter:=(others=‘0’);Elsifclkinc=‘1’andclkinc’eventthencounter:=counter+1;Endif;Wraddr=counter;Endprocess;Endone;4.根据状态图,试对control进行VHDL描述Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logi