为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

EDA复习题答案

2017-10-19 39页 doc 185KB 50阅读

用户头像

is_842972

暂无简介

举报
EDA复习题答案EDA复习题答案 08EDA复习题 一、单项选择题:(20分) 1( 大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是__C_____。 A. CPLD即是现场可编程逻辑器件的英文简称; B. CPLD是基于查找表结构的可编程逻辑器件; C. 早期的CPLD是从GAL的结构扩展而来; D. 在Altera公司生产的器件中,FLEX10K 系列属CPLD结构; 2( 综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程; 在下面对综合...
EDA复习题答案
EDA复习题 08EDA复习题 一、单项选择题:(20分) 1( 大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与的描述中,正确的是__C_____。 A. CPLD即是现场可编程逻辑器件的英文简称; B. CPLD是基于查找表结构的可编程逻辑器件; C. 早期的CPLD是从GAL的结构扩展而来; D. 在Altera公司生产的器件中,FLEX10K 系列属CPLD结构; 2( 综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程; 在下面对综合的描述中,__C____是错误的。 A. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件; B. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关 系不是唯一的; C. 综合是纯软件的转换过程,与器件硬件结构无关; D. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。 3( IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中, 对于硬IP的正确描述为___B_______。 A. 提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路; B. 提供设计的最终产品----掩膜; C. 以网表文件的形式提交用户,完成了综合的功能块; D. 都不是。 4( 基于EDA软件的FPGA / CPLD设计流程为:原理图/HDL文本输入?____B____?综合?适配?__________ ?编程下载?硬件测试。 ?功能仿真 ?时序仿真 ?逻辑综合 ?配置 ?引脚锁定 A(?? B.?? C.?? D.?? 5( 下面对利用原理图输入设计进行数字电路系统设计,那一种说法是不正确的__B____。 A. 原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计; B. 原理图输入设计方法无法对电路进行功能描述; C. 原理图输入设计方法一般是一种自底向上的设计方法; D. 原理图输入设计方法也可进行层次化设计。 6( 在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,正确的是__A_____。 A. PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。 B. 敏感信号参数表中,应列出进程中使用的所有输入信号; C. 进程由说明部分、结构体部分、和敏感信号参数表三部分组成; D. 当前进程中声明的信号也可用于其他进程。 7( 嵌套使用IF语句,其综合结果可实现__A______。 A. 带优先级且条件相与的逻辑电路; B. 条件相或的逻辑电路; C. 三态控制电路; D. 双向控制电路。 8( 电子系统设计优化,主要考虑提高资源利用率减少功耗----即面积优化,以及提高运行速度----即速 度优化;指出下列那种方法不属于速度优化:___A________。 A. 资源共享 B. 流水线设计 C. 寄存器配平 D. 关键路径法 9( 在一个VHDL设计中idata是一个信号,数据类型为integer,下面哪个赋值语句是不正确的___D_____。 A. idata <= 16#20#; B. idata <= 32; C. idata <= 16#A#E1; D. idata <= B#1010#; 10.下列EDA软件中,哪一不具有时序仿真功能:__D______。 A. Max+Plus II B. Quartus II C. ModelSim C. Synplify D. 单项选择题:(20分) 11.可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是__CD_。 A. CPLD是基于查找表结构的可编程逻辑器件; B. CPLD即是现场可编程逻辑器件的英文简称; C. 早期的CPLD是从GAL的结构扩展而来; D. 在Xilinx公司生产的器件中,XC9500系列属CPLD结构; 10(综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程; 在下面对综合的描述中,____A____是正确的。 A. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件; B. 综合是纯软件的转换过程,与器件硬件结构无关; C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为强制综合。 D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关 系是唯一的; 11(IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中, 对于硬IP的正确描述为__D_______。 A. 提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路; B. 提供设计的最总产品----模型库; C. 以网表文件的形式提交用户,完成了综合的功能块; D. 都不是。 12(基于EDA软件的FPGA / CPLD设计流程为:?功能仿真?___D___?适配?时序仿真?编程下载?硬件 测试。 ?原理图/HDL文本输入 ?时序仿真 ?逻辑综合 ?配置 ?引脚锁定 A(?? B. ?? C.?? D. ?? 13(下面对利用原理图输入设计方法进行数字电路系统设计,那一种说法是不正确的_D___。 A. 原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计; B. 原理图输入设计方法一般是一种自底向上的设计方法; C. 原理图输入设计方法无法对电路进行功能描述; D. 原理图输入设计方法也可进行层次化设计。 14(在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是__D____。 A. PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。 B. 敏感信号参数表中,不一定要列出进程中使用的所有输入信号; C. 进程由说明部分、结构体部分、和敏感信号三部分组成; D. 当前进程中声明的变量不可用于其他进程。 15(嵌套使用IF语句,其综合结果可实现___A___。 A. 带优先级且条件相与的逻辑电路; B. 条件相或的逻辑电路; C. 三态控制电路; D. 双向控制电路。 16(电子系统设计优化,主要考虑提高资源利用率减少功耗----即面积优化,以及提高运行速度----即速 度优化;指出下列那种方法不属于速度优化:____B______。 A. 流水线设计 B. 串行化 D. 关键路径法 D. 寄存器配平 17(在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句 是正确的__C_____。 A. idata := 32; B. idata <= 16#A0#; C. idata <= 16#7#E1; D. idata := B#1010#; 10.下列EDA软件中,哪一不具有逻辑综合功能:_B____。 E. Max+Plus II F. ModelSim D. Quartus II D.Synplify 一、单项选择题,,20分, 18(IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉 及实现该功能块的具体电路的IP核为__________。D A .瘦IP B.固IP C.胖IP D.都不是 19(综合是EDA设计流程的关键步骤,在下面对综合的描述中,_________是错误的。D A. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程; B. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件; C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束; D. 综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。 20(大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__C__。 A. FPGA全称为复杂可编程逻辑器件; B. FPGA是基于乘积项结构的可编程逻辑器件; C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。 21(进程中的信号赋值语句,其信号更新是___C____。 A. 按顺序完成; B. 比变量更快完成; C. 在进程的最后完成; D.都不对。 22(VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描 述___________。B A. 器件外部特性; B. 器件的内部功能; C. 器件的综合约束; D. 器件外部特性与内部功能。 23(不完整的IF语句,其综合结果可实现________。A A. 时序逻辑电路 B. 组合逻辑电路 C. 双向电路 D. 三态控制电路 24(子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化); 指出下列哪些方法是面积优化_________。B ?流水线设计 ?资源共享 ?逻辑优化 ?串行化 ?寄存器配平 ?关键路径法 A. ??? B. ??? C. ??? D. ??? 25(下列标识符中,__________是不合法的标识符。B A. State0 B. 9moon C. Not_Ack_0 D. signall 26(关于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.Quartus II D.Synplify 一、单项选择题:(20分) 1( 下列那个流程是正确的基于EDA软件的FPGA / CPLD设计流程:B A. 原理图/HDL文本输入?适配?综合?功能仿真?编程下载?硬件测试 B. 原理图/HDL文本输入?功能仿真?综合?适配?编程下载?硬件测试 C. 原理图/HDL文本输入?功能仿真?综合?编程下载??适配硬件测试; D. 原理图/HDL文本输入?功能仿真?适配?编程下载?综合?硬件测试 2( 综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程; 在下面对综合的描述中,_________是错误的。C A. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件; B. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束; C. 综合是纯软件的转换过程,与器件硬件结构无关; D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系 不是唯一的。 3( CPLD的可编程是主要基于什么结构:。D A .查找表(LUT); B. ROM可编程; C. PAL可编程; D. 与或阵列可编程; 4.IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为:。C A. 硬IP; B. 固IP; C. 软IP; D. 都不是; 4( 流水线设计是一种优化方式,下列哪一项对资源共享描述正确_。C A. 面积优化方法,不会有速度优化效果 B. 速度优化方法,不会有面积优化效果 C. 面积优化方法,可能会有速度优化效果 D. 速度优化方法,可能会有面积优化效果 5( 在VHDL语言中,下列对时钟边沿检测描述中,错误的是_______。D A. if clk’event and clk = ‘1’ then B. if falling_edge(clk) then C. if clk’event and clk = ‘0’ then D.if clk’stable and not clk = ‘1’ then 6( 状态机编码方式中,其中_________占用触发器较多,但其实现比较适合FPGA的应用C A. 状态位直接输出型编码 B. 顺序编码 C. 一位热码编码 D. 以上都不是 8( 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速 度(即速度优化);指出下列那种方法是速度优化_________。A A. 流水线设计 B. 资源共享 C. 逻辑优化 D. 串行化 7( 不完整的IF语句,其综合结果可实现________。A A. 时序电路 B. 双向控制电路 C. 条件相或的逻辑电路 D. 三态控制电路 10(在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错 误的。D A. idata <= “00001111” B. idata <= b”0000_1111”; C. idata <= X”AB” D. idata <= 16”01”; 二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(10分) 1. CPLD:复杂可编程逻辑器件 2. HDL:硬件描述语言 3. JTAG: 联合测试行动小组(边界扫描) 4. ASIC:专用集成电路 5. SOC:片上系统 二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(14分) 1. SOPC: 可编程片上系统; 2. LUT:查找表; 3. JTAG:联合行动测试组; 4. GAL:通用阵列逻辑; 5. EAB:嵌入式阵列快; 6. IP:知识产权(包); 7. HDL:硬件描述语言; 二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(14分) 1. LPM 参数可定制宏模块库 2. RTL 寄存器传输级 3. UART串口(通用异步收发器) 4. ISP 在系统编程 5. IEEE 电子电气工程师协会 6. ASIC 专用集成电路 7. LAB 逻辑阵列块 二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(10分) 1. SOC 单芯片系统 2. FPGA 现场可编程门阵列 3. LUT 查找表 4. EDA 电子设计自动化 5. Synthesis 综合 三、VHDL程序填空:(10分) 下面程序是带异步复位、同步置数和移位使能的8位右移移位寄存器的VHDL描述,试补充完整。 library ieee; use IEEE.STD_LOGIC_1164 .all; entity sreg8b is port ( clk, rst : in std_logic; load,en : in std_logic; din : in _STD_LOGIC_VECTOR(7 downto 0); qb : out std_logic); end sreg8b; architecture behav of SREG8B is signal reg8 : std_logic_vector( 7 downto 0); begin process (clk, RST , load, en) begin if rst='1' then ――异步清零 reg8 <= others=>’0’ ; elsif clk?event and clk=?1? then ――边沿检测 if load = '1' then ――同步置数 reg8 <= din; elsif en='1' then ――移位使能 reg8(6 downto 0) <= reg8(7 doento1) ; end if; end if; end process; qb <= _reg8__; ――输出最低位 end behav; 三、VHDL程序填空:(10分) 下面程序是n输入与门的VHDL描述,试补充完整。 __________ ieee; use _____________________.all; entity andn is ________ (n : integer); -- 类属参数声明 port ( a : in std_logic_vector( ______ downto 0); c : out std_logic); end; ________________ behav of ________ is -- 结构体声明 begin process (____) _____________ int : std_logic; -- 变量声明 begin int := _____; -- 变量赋初值 for I in a'length – 1 downto 0 loop -- 循环判断 if a(i) = '0' then int := '0'; end if; end loop; c <= ________; -- 输出判断结果 end process; end behav; 三、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分) 下面程序是一个10线,4线优先编码器的VHDL描述,试补充完整。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(9 DOWNTO 0); output : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END coder; ARCHITECTURE behav OF CODER IS SIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (DIN) BEGIN IF (din(9)='0') THEN SIN <= "1001" ; ELSIF (din(8)=?0?) THEN SIN <= "1000" ; ELSIF (din(7)='0') THEN SIN <= "0111" ; ELSIF (din(6)='0') THEN SIN <= "0110" ; ELSIF (din(5)='0') THEN SIN <= "0101" ; ELSIF (din(4)='0') THEN SIN <= "0100" ; ELSIF (din(3)='0') THEN SIN <= "0011" ; ELSIF (din(2)='0') THEN SIN <= "0010" ; ELSIF (din(1)='0') THEN SIN <= "0001" ; ELSE SIN <= “0000” ; END IF; END PROCESS ; Output <= sin ; END behav; 四、VHDL程序改错:(10分) 仔细阅读下列程序,回答问题 LIBRARY IEEE; -- 1 USE IEEE.STD_LOGIC_1164.ALL; -- 2 ENTITY LED7SEG IS -- 3 PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- 4 CLK : IN STD_LOGIC; -- 5 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); -- 6 END LED7SEG; -- 7 ARCHITECTURE one OF LED7SEG IS -- 8 SIGNAL TMP : STD_LOGIC; -- 9 BEGIN -- 10 SYNC : PROCESS(CLK, A) -- 11 BEGIN -- 12 IF CLK'EVENT AND CLK = '1' THEN -- 13 TMP <= A; -- 14 END IF; -- 15 END PROCESS; -- 16 OUTLED : PROCESS(TMP) -- 17 BEGIN -- 18 CASE TMP IS -- 19 WHEN "0000" => LED7S <= "0111111"; -- 20 WHEN "0001" => LED7S <= "0000110"; -- 21 WHEN "0010" => LED7S <= "1011011"; -- 22 WHEN "0011" => LED7S <= "1001111"; -- 23 WHEN "0100" => LED7S <= "1100110"; -- 24 WHEN "0101" => LED7S <= "1101101"; -- 25 WHEN "0110" => LED7S <= "1111101"; -- 26 WHEN "0111" => LED7S <= "0000111"; -- 27 WHEN "1000" => LED7S <= "1111111"; -- 28 WHEN "1001" => LED7S <= "1101111"; -- 29 END CASE; -- 30 END PROCESS; -- 31 END one; 1. 在程序中存在两处错误,试指出,并说明理由: 在MAX+PlusII中编译时,提示的错误为: Error: Line 14: File f:\upload\eda\maxplusii\my_proj\s8_5\led7seg.vhd: Type error: type in waveform element must be "std_ulogic" Error: Line 19: File f:\upload\eda\maxplusii\my_proj\s8_5\led7seg.vhd: VHDL syntax error: expected choices in case statement 2. 修改相应行的程序(如果是缺少语句请指出大致的行数): 错误1 行号: 9 程序改为:SIGNAL TMP : STD_LOGIC VECTOR(3 DOWN TO 0); 错误2 行号:29 程序改为:WHEN "1001" => LED7S <= "1101111"; WHEN OTNERS=> LED7S <= "1111111" 四、VHDL程序改错:(10分) 本题程序为EDA实验中的示例程序sch.vhd,仔细阅读程序,回答问题。 1.对该程序进行编译时出现错误提示:“VHDL Design File “sch” must contain an entity of the same name.” 这是什么原因,如何修改, library ieee; --1 use ieee.std_logic_1164.all; --2 entity schk is --3 port (din, clk, clr : in std_logic; -- 串行输入数据位/工作时钟/复位信号 --4 ab : out std_logic_vector(3 downto 0) -- 检测结果输出 --5 ); --6 end schk; --7 architecture bhv of schk is --8 signal q : integer range 0 to 8; --9 signal d : std_logic_vector(7 downto 0); -- 8位待检测预置数 --10 begin --11 d = "11100101"; -- 8位待检测预置数 --12 process (clk, clr) --13 begin --14 if clr = '1' then q<= 0; --15 else if clk'event and clk = '1' then --16 case q is --17 when 0 => if din = d(7) then q <= 1; else q <= 0; end if; --18 when 1 => if din = d(6) then q <= 2; else q <= 0; end if; --19 when 2 => if din = d(5) then q <= 3; else q <= 0; end if; --20 when 3 => if din = d(4) then q <= 4; else q <= 0; end if; --21 when 4 => if din = d(3) then q <= 5; else q <= 0; end if; --22 when 5 => if din = d(2) then q <= 6; else q <= 0; end if; --23 when 6 => if din = d(1) then q <= 7; else q <= 0; end if; --24 when 7 => if din = d(0) then q <= 8; else q <= 0; end if; --25 when others => q <= 0; --26 end case; --27 end if; --28 end process; --29 process (q) --30 begin --31 if q = 8 then ab <= "1010"; --32 else ab <= "1011"; --33 end if; --34 end process; --35 end bhv; --36 3. 在上述程序代码中存在两处错误,编译时出现如下提示,试修改错误: Error: Line 12: File f:\eda\schk.vhd: VHDL syntax error: unexpected signal “d” in Concurrent Statement Part Error: Line 29:File f:\eda\schk.vhd: VHDL syntax error: if statement must have END IF, but found PROCESS instead 错误1 行号:11 程序改为:d< = "11100101"; 错误2 行号:16 程序改为:elseif clk'event and clk = '1' then 2.修改问题1的错误后,如果编译时出现“Can?t open VHDL “WORK” ”这样的错误提示。 这又是什么原因,如何修改, 四、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; 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 四、VHDL程序改错:(10分) 仔细阅读下列程序,回答问题 1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_1164.ALL; 3 4 ENTITY CNT4 IS 5 PORT ( CLK : IN STD_LOGIC ; 6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; 7 END CNT4; 8 ARCHITECTURE bhv OF CNT4 IS 9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); 10 BEGIN 11 PROCESS (CLK) BEGIN 12 IF RISING_EDGE(CLK) begin 13 IF Q1 < 15 THEN 14 Q1 <= Q1 + 1 ; 15 ELSE 16 Q1 <= (OTHERS => '0'); 17 END IF; 18 END IF; 19 END PROCESS ; 20 Q <= Q1; 21 END bhv; 22 4. 在程序中存在两处错误,试指出,并说明理由: 在MAX+PlusII中编译时,提示的第一条错误为: Error: Line 12: File e:\mywork\test\cnt4.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead 12行,IF语句对应的关键字是then而非begin 14行,Q1是矢量,不能直接和整数1相加,需要使用重载函数 5. 修改相应行的程序(如果是缺少语句请指出大致的行数): 错误1 行号: 12 程序改为:BEGIN 改为 THEN 错误2 行号: 3 程序改为:USE IEEE.STD_LOGIC_UNSIGNED.ALL; 五、VHDL程序设计:(15分) 设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。 SEL(1:0)SELCOUT 00A xor BAIN(1:0)01A or BCOUT(1:0) A nor B10MUXBIN(1:0) 11A nand B OTHERS“XX” (a) 用if语句。 (b) 用case 语句。 (c) 用when else 语句。 Library ieee; Use ieee.std_logic_1164.all; Entity mymux is Port ( sel : in std_logic_vector(1 downto 0); -- 选择信号输入 Ain, Bin : in std_logic_vector(1 downto 0); -- 数据输入 Cout : out std_logic_vector(1 downto 0) ); End mymux; 五、VHDL程序设计:(16分) 设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。 (a) 用if语句。 (b) 用case 语句。 (c) 用when else 语句。 Library ieee; Use ieee.std_logic_1164.all; Entity mymux is Port ( sel : in std_logic_vector(1 downto 0); -- 选择信号输入 Ain, Bin : in std_logic_vector(1 downto 0); -- 数据输入 Cout : out std_logic_vector(1 downto 0) ); End mymux; 五、VHDL程序设计:(16分) 设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。 (a) 用if语句。 (b) 用case 语句。 (c) 用when else 语句。 Library ieee; Use ieee.std_logic_1164.all; Entity mymux is Port ( sel : in std_logic_vector(1 downto 0); -- 选择信号输入 Ain, Bin : in std_logic_vector(1 downto 0); -- 数据输入 Cout : out std_logic_vector(1 downto 0) ); End mymux; Architecture one of mymux is Begin Process (sel, ain, bin) Begin If sel = “00” then cout <= ain and bin; Elsif sel = “01” then cout <= ain xor bin; Elsif sel = “10” then cout <= not ain; Else cout <= not bin; End if; End process; End one; Architecture two of mymux is Begin Process (sel, ain, bin) Begin Case sel is when “00” => cout <= ain and bin; when “01” => cout <= ain xor bin; when “10” => cout <= not ain; when others => cout <= not bin; End case; End process; End two; Architecture three of mymux is Begin Cout <= ain and bin when sel = “00” else Ain xor bin when sel = “01” else Not ain when sel = “10” else not bin; End three; 五、阅读下列VHDL程序,画出原理图(RTL级):(10分) library ieee; use ieee.std_logic_1164.all; entity lfsr is port ( clk : in std_logic; clr : in std_logic; d : in std_logic; mout : out std_logic ); end lfsr; architecture rtl of lfsr is signal sreg : std_logic; begin shift_p : process(clk,clr) variable s : std_logic; begin if clr = '1' then s := ?0?; elsif rising_edge(clk) then s := sreg xor (not d); end if; sreg <= s; end process; mout <= sreg; end rtl; 六、根据原理图写出相应的VHDL程序:(15分) 六、根据原理图写出相应的VHDL程序:(10分) 六、根据原理图写出相应的VHDL程序:(10分) Library ieee; Use ieee.std_logic_1164.all; Entity mycir is Port ( A, B, clk : in std_logic; Qout : out std_logic); End mycir; Architecture behave of mycir is Signal ta, tb, tc; Begin tc <= ta nand tb; Process (clk) Begin If clk?event and clk = „1? then Ta <= A; Tb <= B; End if; End process; Process (clk, tc) Begin If clk = „1? then Qout <= tc; End if; End process; End behave; 六、写VHDL程序:(20分) 1(设计一个3-8译码器 输入端口: din 输入端,位宽为3位 EN 译码器输出使能,高电平有效 输出端口: xout 译码器输出,低电平有效 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DECODE3_8 IS PORT ( DIN : IN STD_LOGIC_VECTOR (2 DOWNTO 0); EN : IN STD_LOGIC; XOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END DECODE3_8; ARCHITECTURE ONE OF DECODE3_8 IS BEGIN PROCESS (DIN, EN) BEGIN IF EN = „1? THEN IF DIN = “111” THEN XOUT <= “11111110”; ELSIF DIN = “110” THEN XOUT <= “11111101”; ELSIF DIN = “101” THEN XOUT <= “11111011”; ELSIF DIN = “100” THEN XOUT <= “11110111”; ELSIF DIN = “011” THEN XOUT <= “11101111”; ELSIF DIN = “010” THEN XOUT <= “11011111”; ELSIF DIN = “001” THEN XOUT <= “10111111”; ELSE XOUT <= “11111011”; END IF; END IF; END PROCESS; END ONE; 2. 看下面原理图,写出相应VHDL描述 INPUTxin ORDFFDFF OUTPUTyoutDQDQINPUTclk LIBARRY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MYCIR IS PORT ( XIN, CLK : IN STD_LOGIC; YOUT : OUT STD_LOGIC); END MYCIR; ARCHITECTURE ONE OF MYCIR IS SIGNAL A, B, C; BEGIN B <= XIN OR A; PROCESS (CLK) BEGIN IF CLK?EVENT AND CLK = „1? THEN A <= C; C <= B; END IF; END PROCESS; YOUT <= C; END ONE; 七、综合题:(20分) 根据如下所示状态图及其状态机结构图,回答问题 ina="000" ina="100" ina="110" ina /= "100" and S0 S1 S2 S3 ina /= “011” ina="011" ina="101" / outa="1101" ina="101" / outa="0010" outa="1001" outa="1111" ina="011" / outa="1110" ina="111" / outa="1100" (a) CLK RESET CLK SIGNAL1 outa REG COM RESET SIGNAL2 ina outa FSM ina (c) (b) 1.试判断该状态机类型,并说明理由。 改状态机可以为mealy型状态机,当输入ina变化时可影响输出outa立即变化 2.请问如何消除状态机输出信号毛刺,试列出至少两种方法,并说明理由。 方法1,添加辅助进程对输出数据进行锁存 方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺 方法3,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺 3.试由b、c两图中任选一图写出其完整的VHDL程序。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY EX7 IS PORT ( CLK, RESET : IN STD_LOGIC; INA : IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUTA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END EX7; -- MOORE型状态机 ARCHITECTURE ONE OF EX7 IS TYPE STATE IS (S0, S1, S2, S3); SIGNAL C_ST : STATE; BEGIN PROCESS (CLK, RESET, INA) BEGIN IF RESET = '1' THEN C_ST <= S0; OUTA <= (OTHERS => '0'); ELSIF RISING_EDGE(CLK) THEN CASE C_ST IS WHEN S0 => IF INA = "101" THEN OUTA <= "0010"; ELSIF INA = "111" THEN OUTA <= "1100"; END IF; C_ST <= S1; WHEN S1 => IF INA = "000" THEN C_ST <= S1; ELSIF INA = "110" THEN C_ST <= S2; END IF; OUTA <= "1001"; WHEN S2 => IF INA = "100" THEN C_ST <= S2; ELSIF INA = "011" THEN C_ST <= S1; ELSE C_ST <= S3;END IF; OUTA <= "1111"; WHEN S3 => IF INA = "101" THEN OUTA <= "1101"; ELSIF INA = "011" THEN OUTA <= "1110"; END IF; C_ST <= S3; WHEN OTHERS => C_ST <= S0; OUTA <= (OTHERS => '0'); END CASE; END IF; END PROCESS; END ONE; -- MEALY型状态机 ARCHITECTURE TWO OF EX7 IS TYPE STATE IS (S0, S1, S2, S3); SIGNAL C_ST, N_ST : STATE; BEGIN REG : PROCESS (CLK, RESET) BEGIN IF RESET = '1' THEN C_ST <= S0; ELSIF CLK'EVENT AND CLK = '1' THEN C_ST <= N_ST;END IF; END PROCESS; COM : PROCESS (C_ST, INA) BEGIN CASE C_ST IS WHEN S0 => N_ST <= S1; IF INA = "101" THEN OUTA <= "0010"; ELSIF INA = "111" THEN OUTA <= "1100"; ELSE OUTA <= "0000";END IF; WHEN S1 => OUTA <= "1001"; IF INA = "000" THEN N_ST <= S1; ELSIF INA = "110" THEN N_ST <= S2; ELSE N_ST <= S1;END IF; WHEN S2 => OUTA <= "1111"; IF INA = "100" THEN N_ST <= S2; ELSIF INA = "011" THEN N_ST <= S1; ELSE N_ST <= S3;END IF; WHEN S3 => IF INA = "101" THEN OUTA <= "1101"; ELSIF INA = "011" THEN OUTA <= "1110"; ELSE OUTA <= "0000";END IF; N_ST <= S3; WHEN OTHERS => N_ST <= S0; OUTA <= (OTHERS => '0'); END CASE; END PROCESS; END TWO; 4. 已知一个简单的波形发生器的数字部分系统框图如下图所示: 图中DOWNCNT、MYROM都是在MAX+PlusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下: ENTITY DOWNCNT IS PORT ( clock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) ); END DOWNCNT; ENTITY myrom IS PORT ( address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END myrom; 试用VHDL描述该系统的顶层设计(使用例化语句)。 Library ieee; Use ieee.std_logic_1164.all; Entity mysg is Port ( clk : in std_logic; To_da : out std_logic_vector (7 downto 0) ); End mysq; Architecture one of mysq is Signal addr : std_logic_vector (5 downto 0); Component lcnt Port (clock : in std_logic; Q : out std_logic_vector (5 downto 0) ); End component; Component lrom Port (address : in std_logic_vector (5 downto 0); Q : out std_logic_vector (7 downto 0) ); End component; Begin U1 : lcnt port map (clock => clk, q => addr); U2 : lrom port map (address => addr, q => to_da); End one; 七、综合题:(20分) (一)已知状态机状态图如图(a)所示;完成下列各题: 1.试判断该状态机类型,并说明理由。 该状态机为moore型状态机,输出数据outa和输入ina没有直接逻辑关系,outa是时钟clk的同步 时序逻辑。 2.根据状态图,写出对应于结构图(b),分别由主控组合进程和主控时序进程组成的VHDL有限状态机描 述 Library ieee; Use ieee.std_logic_1164.all; Entity mooreb is Port (clk, reset : in std_logic; Ina : in std_logic_vector (1 downto 0); Outa : out std_logic_vector (3 downto 0) ); End mooreb; Architecture one of mooreb is Type ms_state is (st0, st1, st2, st3); Signal c_st, n_st : ms_state; Begin Process (clk, reset) Begin If reset = „1? then c_st <= st0; Elsif clk?event and clk = „1? then c_st <= n_st; End if; End process; Process (c_st) Begin Case c_st is When st0 => if ina = “00” then n_st <= st0; Else n_st <= st1; End if; Outa <= “0101”; When st1 => if ina = “00” then n_st <= st1; Else n_st <= st2; End if; Outa <= “1000”; When st2 => if ina = “11” then n_st <= st0; Else n_st <= st3; End if; Outa <= “1100”; When st3 => if ina = “11” then n_st <= st3; Else n_st <= st0; End if; Outa <= “1101”; When others => n_st <= st0; End case; End process; End one; 3.若已知输入信号如下图所示,分析状态机的工作时序,画出该状态机的状态转换值(current_state)和输出控制信号(outa); 4.若状态机仿真过程中出现毛刺现象,应如何消除;试指出两种方法,并简单说明其原理。 方法1,添加辅助进程对输出数据进行锁存 方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺 方法3,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺
/
本文档为【EDA复习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索