1. IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为D 。
A .瘦IP B.固IP C.胖IP D.都不是
2.综合是EDA设计流程的关键步骤,在下面对综合的描述中,_________是错误的。D A.综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;
B.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件; C.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束; D.综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。 3.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__C__。 A. FPGA全称为复杂可编程逻辑器件;
B. FPGA是基于乘积项结构的可编程逻辑器件;
C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。 4.进程中的信号赋值语句,其信号更新是___C____。
A. 按顺序完成;B.比变量更快完成;C.在进程的最后完成;
5.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述B
A.器件外部特性;B. 器件的内部功能;C.器件的综合约束; D.器件外部特性与内部功能。
6.不完整的IF语句,其综合结果可实现A
A. 时序逻辑电路 B.组合逻辑电C. 双向电路 D. 三态控制电路
7. 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化B
①流水线设计 ②资源共享 ③逻辑优化 ④串行化 ⑤寄存器配平 ⑥关键路径法
A. ①③⑤ B. ②③④ C. ②⑤⑥ D. ①④⑥ 8.下列标识符中,__________是不合法的标识符。B
A. State0 B. 9moon C. Not_Ack_0 D. signall 9.关于VHDL中的数字,请找出以下数字中最大的一个: A A. 2#1111_1110# B.8#276# C.10#170# D. 16#E#E1 10.下列EDA软件中,哪一个不具有逻辑综合功能:B
A.Max+Plus II B.ModelSim C.QuartusII D. Synplify 11.在EDA工具中,能完成在目标系统器件上布局布线软件称为(C ) A.仿真器 B.综合器 C.适配器 D.下载
12.在执行MAX+PLUSⅡ的(D)命令,可以精确分析设计电路输入与输出波形间的延时量。 A .Create default symbol B. Simulator C. Compiler D.Timing Analyzer
13.VHDL常用的库是(A )
A. IEEE B.STD C. WORK D. PACKAGE 14.下面既是并行语句又是串行语句的是( C )
1
A.变量赋值 B.信号赋值 C.PROCESS语句 D.WHEN…ELSE语句 15.在VHDL中,用语句(D )表示clock的下降沿。
A.clock’EVENT B.clock’EVENT AND clock=’1’ C.clock=’0’ D.clock’EVENT AND clock=’0’
1.一般把EDA技术的发展分为(MOS时代)、(CMOS时代)和 (ASIC时代)三个阶段。
2.EDA设计流程包括 设计输入 、设计实现 、实际设计检验 和 下载编程 四个步骤。 3.EDA设计输入主要包括 图形输入HDL文本输入和状态机输入。
4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为 功能仿真
5.VHDL的数据对象包括 变量 、 常量 和 信号 ,它们是用来存放各种类型数据的容器。 6.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。 7.以EDA方式设计实现的电路设计文件,最终可以编程下载到 FPGA 和 CPLD 芯片中,完
成硬件设计和验证。 8.MAX+PLUS的文本文件类型是(后缀名) .VHD 。
9.在PC上利用VHDL进行项目设计,不允许在 根目录 下进行,必须在根目录为设计建立一个工程目录(即文件夹)。 10.VHDL源程序的文件名应与 实体名 相同,否则无法通过编译。
1. VHDL语言中端口模式分为IN,OUT,INOUT和BUFFER。
2. 一般来说大部分CPLD是基于 乘积项 结构,大部分FPGA是基于查找表逻辑结构。 3. VHDL语言中信号赋值的符号是<=,变量赋值的符号是:=。
4.可编程逻辑器件StratixII系列属于FPGA;MAXII系列属于CPLD。 5. 进程语句必须由敏感信号的变化启动。
6. 仿真分时序和功能两种。
7. 在MAX+PLUSA文本输入中,要求文件名与实体名相一致。
1.常用的硬件语言是VHDL和VERILOG。
2.任何一个VHDL程序必须包含实体和结构体。
3.时钟上升可用CLK’EVENT AND CLK=’1’语句表示。
4.可编程逻辑器件的开发过程可分为 输入,综合,适配,仿真和编程五个步骤。
5.数字电路中的状态机主要功能是实现高效率高可靠的逻辑控制。 6. 可编程逻辑器件中最基本的触发器是D触发器。7.数据对象有 常数,变量和信号。
2
三、VHDL程序填空:(10分)
LIBRARY IEEE; -- 8位分频器程序设计
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS
PORT ( CLK : IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR (7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END;
ARCHITECTURE one OF PULSE IS
SIGNAL FULL : STD_LOGIC; BEGIN
P_REG: PROCESS(CLK)
VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
IF CLK’EVENT 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; P_DIV: PROCESS(FULL)
VARIABLE CNT2 : STD_LOGIC; BEGIN
IF FULL'EVENT 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;
四、VHDL程序改错:(10分) 01 LIBRARY IEEE ;
02 USE IEEE.STD_LOGIC_1164.ALL ; 03 USE IEEE.STD_LOGIC_UNSIGNED.ALL; 04 ENTITY LED7CNT IS
05 PORT ( CLR : IN STD_LOGIC; 06 CLK : IN STD_LOGIC;
3
07 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; 08 END LED7CNT;
09 ARCHITECTURE one OF LED7CNT IS
10 SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0); 11 BEGIN
12 CNT:PROCESS(CLR,CLK) 13 BEGIN
14 IF CLR = '1' THEN 15 TMP <= 0;
16 ELSE IF CLK'EVENT AND CLK = '1' THEN 17 TMP <= TMP + 1; 18 END IF; 19 END PROCESS;
20 OUTLED:PROCESS(TMP) 21 BEGIN
22 CASE TMP IS
23 WHEN \"0000\" => LED7S <= \"0111111\" ; 24 WHEN \"0001\" => LED7S <= \"0000110\" ; 25 WHEN \"0010\" => LED7S <= \"1011011\" ; 26 WHEN \"0011\" => LED7S <= \"1001111\" ; 27 WHEN \"0100\" => LED7S <= \"1100110\" ; 28 WHEN \"0101\" => LED7S <= \"1101101\" ; 29 WHEN \"0110\" => LED7S <= \"1111101\" ; 30 WHEN \"0111\" => LED7S <= \"0000111\" ; 31 WHEN \"1000\" => LED7S <= \"1111111\" ; 32 WHEN \"1001\" => LED7S <= \"1101111\" ;
33 WHEN OTHERS => LED7S <= (OTHERS => '0'); 34 END CASE; 35 END PROCESS; 36 END one;
在程序中存在两处错误,试指出,并说明理由:
提示:在MAX+PlusII 10.2上编译时报出的第一条错误为:
Error:Line 15: File ***/led7cnt.vhd: Type error: type in waveform element must be “std_logic_vector”
第 15 行, 错误:整数0不能直接赋值给TMP矢量 改正:TMP <= (OTHERS => ‘0’);
第 16 行, 错误:ELSE IF 缺少一条对应的END IF语句 改正:将ELSE IF 改为关键字ELSIF
4-5.给出1位全减器的VHDL描述。要求: (1) 首先设计1位半减器,然后用例化语句将它们连接起来,图3-32中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。
(2) 以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr)
底层文件1:or2a.VHD实现或门操作 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
4
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY or2a IS
PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC); END ENTITY or2a;
ARCHITECTURE one OF or2a IS BEGIN
c <= a OR b;
END ARCHITECTURE one;
底层文件2:h_subber.VHD实现一位半减器 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY h_subber IS PORT(x,y:IN STD_LOGIC;
diff,s_out::OUT STD_LOGIC); END ENTITY h_subber;
ARCHITECTURE ONE OF h_subber IS
SIGNAL xyz: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN
xyz <= x & y; PROCESS(xyz) BEGIN
CASE xyz IS
WHEN \"00\" => diff<='0';s_out<='0'; WHEN \"01\" => diff<='1';s_out<='1'; WHEN \"10\" => diff<='1';s_out<='0'; WHEN \"11\" => diff<='0';s_out<='0'; WHEN OTHERS => NULL; END CASE; END PROCESS;
END ARCHITECTURE ONE;
顶层文件:f_subber.VHD实现一位全减器 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY f_subber IS
PORT(x,y,sub_in:IN STD_LOGIC; diffr,sub_out:OUT STD_LOGIC); END ENTITY f_subber;
ARCHITECTURE ONE OF f_subber IS COMPONENT h_subber PORT(x,y:IN STD_LOGIC; diff,S_out:OUT STD_LOGIC); END COMPONENT; COMPONENT or2a
PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT;
5
SIGNAL d,e,f: STD_LOGIC; BEGIN
u1:h_subber PORT MAP(x=>x,y=>y,diff=>d,s_out=>e);
u2:h_subber PORT MAP(x=>d,y=>sub_in,diff=>diffr,s_out=>f); u3:or2a PORT MAP(a=>f,b=>e,c=>sub_out); END ARCHITECTURE ONE; END ARCHITECTURE ART;
6
因篇幅问题不能全部显示,请点此查看更多更全内容