3套练习题答案版last.ppt

上传人:本田雅阁 文档编号:2146933 上传时间:2019-02-22 格式:PPT 页数:31 大小:454.01KB
返回 下载 相关 举报
3套练习题答案版last.ppt_第1页
第1页 / 共31页
3套练习题答案版last.ppt_第2页
第2页 / 共31页
3套练习题答案版last.ppt_第3页
第3页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《3套练习题答案版last.ppt》由会员分享,可在线阅读,更多相关《3套练习题答案版last.ppt(31页珍藏版)》请在三一文库上搜索。

1、练习题,1、VHDL的设计文体可以被高层次的系统( ),成为系统的一部分。 A. 输入 B. 输出 C. 仿真 D. 调用 2、 一个能为VHDL综合器接受,并能作为一个独立的设计单元的完整的VHDL程序成为( ) A. 设计输入 B. 设计输出 C. 设计实体 D. 设计结构 3、在VHDL中用( )来把特定的结构体关联到一个确定的实体,为一个大型系统的设计提供管理和进行工程组织。 A. 输入 B. 输出 C. 综合 D. 配置 4、在VHDL标识符命名规则中,以( )开头的标识符是正确的。 A. 字母 B. 数字 C. 字母或数字 D. 下划线 5、在下列标识符中,( )是VHDL合法的标

2、识符。 A4h_add B. h-adde C. h_adder D. _h_adde,6、在VHDL中,( )不能将信息带出对它定义的当前设计单元。 A. 信号 B. 常量 C. 数据 D. 变量 7、在VHDL中,乘“*”和除“/”算术运算的操作数据是( )数据类型 A. 整型 B. 实型 C. 整型和实型 D. 任意类型 8、VHDL中条件信号赋值语句WHEN_ELSE属于( )语句。 A. 并行兼顺序 B. 顺序 C. 并行 D. 不存在的 9、在VHDL中,为了使已声明的数据类型、子程序、元件能被其他设计实体调用或共享,可以把他们汇集在( )中。 A. 设计实体 B. 程序包 C.

3、结构体 D. 程序库 10、嵌套的IF语句,其综合结果可实现( )。 A. 条件相与的逻辑 B. 条件相或的逻辑 C. 条件相异或的逻辑 D. 三态控制电路,11、大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是( ) A. CPLD是基于查找表结构的可编程逻辑器件; B. CPLD即是现场可编程逻辑器件的英文简称; C. 早期的CPLD是从GAL的结构扩展而来; D. 在Xilinx公司生产的器件中,XC9500系列属CPLD结构。 12、在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句

4、是正确的( ) A. idata := 32; B. idata = 16#A0#; C. idata = 16#7#E1; D. idata := B#1010# 13、FPGA的可编程是主要基于什么结构( )。 A. 查找表(LUT); B. 与阵列可编程; C. 或阵列可编程; D. 与或阵列可编程。,14、在VHDL语言中,下列对时钟边沿检测描述中,错误的是( ) A. if clkevent and clk = 1 then B. if rising_edge(clk) then C. if not clkevent and clk =0 then D. if not clkstab

5、le and clk = 1 then 15、嵌套使用IF语句,其综合结果可实现( ) A. 带优先级且条件相与的逻辑电路 B. 双向控制电路 C. 条件相或的逻辑电路 D. 三态控制电路 16、不完整的IF语句,其综合结果可实现( ) A. 时序电路 B. 双向控制电路 C. 条件相或的逻辑电路 D. 三态控制电路,17、可以进行在系统编程的器件是( ) AEPROM B. PAL C. GAL D. CPLD 18、VHDL语言程序结构中必不可少的部分是( ) A库 B. 程序包 C. 配置 D. 实体和结构体 19、能反馈输出信号至内部的端口模式是( ) AIN B. OUT C. BU

6、FFER D. INOUT 20、VHDL语言优先级最高的运算符是( ) AAND B. OR C. NOT D. XOR 21、a已定义为信号,b已定义为变量,下面正确的表达是( ) Aa:=b B. a=b C. b:=a D. b=a,22、signal a, b:bit; signal y: bit_vector (1 downto 0);下面正确的表达式是( ) Ay=a B. y=b C. y=b and a D. y=b&a 23、进程内不能定义( ) A常量 B. 变量 C. 信号 D. 子程序 24、在VHDL的IEEE标准库中,预定义的标准逻辑位数据STD_LOGICE的Z

7、表示的意思是( ) A强未知 B. 强0 C. 强1 D. 高阻 25、在VHDL中,用语句( )表示检测clock的下降沿。 A clockEVENT B. clockEVENT AND clock=1 C. clock=1 D. clockEVENT AND clock=0,26、在VHDL的CASE 语句中,条件语句中的“=”不是操作符,它只相当于( )的作用。 AIF B. THEN C. AND D. OR 27、在自顶向下设计过程中,描述器件总功能的模块一般称为( )。 A底层设计 B. 顶层设计 C. 部分设计 D. 局部设计,3、填空,1. ASIC的中文含义是: 专用集成电路

8、 。 2. FPGA的一般采用 sram 工艺。 3. VHDL提供了四种端口模式: IN 、 OUT 、 INOUT 、 BUFFER。 4. 结构体的描述方式主要有 行为描述 、 数据流描述 和 结构化的描述 。 5. VHDL的数据对象有: 常数 、 变量 、 信号 。 6. 位类型(BIT)的取值只有 0 和 1 。 7. SIGNAL b:BIT_VECTOR(6 TO 0),信号b被定义为 7 位位宽。 8. 进程由 敏感信号参数表、进程说明 、顺序描述语句 三部分构成。 9. 选择信号赋值语句的每一子句后是 , 号,最后一句是 ; 。 10. 一个完整的VHDL程序包含: 实体

9、、 结构体 、 配置 、 包集合 、 库 五个部分。 11.编译可以检查的错误有 语法错误 和 逻辑 。 12.QuratusII仿真主要分为 时序 、 功能 。 13. BLOCK内的语句是 并行 语句。,1. VHDL程序改错,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

10、 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 clkevent and clk = 1 then -16,case q is -17 when 0 = if din

11、 = d(7) then q if din = d(6) then q if din = d(5) then q if din = d(4) then q if din = d(3) then q if din = d(2) then q if din = d(1) then q if din = d(0) then q 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

12、 if; -34 end process; -35 end bhv; -36,在上述程序代码中存在两处错误,编译时出现如下提示,试修改错误: Error: Line 12: File f:edaschk.vhd: VHDL syntax error: unexpected signal “d” in Concurrent Statement PartError: Line 29:File f:edaschk.vhd: VHDL syntax error: if statement must have END IF, but found PROCESS instead 错误1 行号: 错误2 行

13、号:,错误1 行号:12 程序改为:d = “11100101“; 错误2 行号: 16 程序改为:elsif clkevent and clk = 1 then,2、根据原理图写出相应的VHDL程序,设计一数据选择器MUX,其系统模块图和功能表如下图所示。描述该数据选择器MUX的结构体。,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

14、0); - 数据输入 Cout : out std_logic_vector(1 downto 0) ); End mymux;,方法一: IF语句,ARCHITECTURE ONE of mymux IS BEGIN PROCESS ( sel, Ain, Bin ) BEGIN IF sel=”00” THEN Cout = Ain OR Bin; ELSIF sel=”01” THEN Cout = Ain NAND Bin; ELSIF sel=”10” THEN Cout = Ain XOR Bin; ELSE Cout = NOT Bin; END IF; END PROCESS;

15、 END ONE;,方法二:CASE语句,ARCHITECTURE TWO of mymux IS BEGIN PROCESS ( sel, Ain, Bin ) BEGIN CASE sel IS WHEN=”00” = Cout Cout Cout Cout NULL; END CASE; END PROCESS; END TWO;,方法三:WHEN-ELSE语句,ARCHITECTURE THREE of mymux IS BEGIN Cout = Ain OR Bin WHEN sel=”00” ELSE Ain NAND Bin WHEN sel=”01” ELSE Ain XOR

16、Bin WHEN sel=”10” ELSE; NOT Bin; END THREE,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LX3_4 IS; PORT( CLK:IN STD_LOGIC; J,K:IN STD_LOGIC; Q:OUT STD_LOGIC); END LX3_4; ARCHITECTURE struc OF LX3_4 IS SIGNAL Q_TEMP:STD_LOGIC:=0; SIGNAL JK:STD_LOGIC_VECTOR(1 DOWNT

17、O 0); BEGIN JK=J PROCESS(CLK,J,K),BEGIN IF CLKEVENT AND CLK=0 THEN CASE JK IS WHEN “00”=Q_TEMPQ_TEMPQ_TEMPQ_TEMPQ_TEMP=X; END CASE; END IF; Q=Q_TEMP; QN=NOT Q_TEMP; END PROCESS; END struc;,1. 分析下面的VHDL源程序,说明设计电路的功能.,库和程序包 std_logic_1164, IEEE的标准库,仅定义了std_ulogic, std_ulogic_vector, std_logic, std_log

18、ic_vector等类型以及他们的逻辑操作(and, or, xor, not, nand, nxor, nor) std_logic_arith 是synopsys的一个扩展,定义了unsigned, signed与integer, std_ulogic之间的算术运算、关系运算(, =, =, =, /=)算术运算返回类型可以是signed, unsigned或std_logic_vector。还定义了unsigned, signed, integer, std_logic_vector几种类型之间的转换函数,std_logic_unsigned 是synopsys的一个扩展,定义了基于st

19、d_logic_vector与std_logic_vector、std_logic_vector与integer之间的算术运算, , =, =, =, /=。返回类型是std_logic_vector或boolean注意这里面的function的运算都是基于unsigned,就是说std_logic_vector和integer都变成unsigned之后再用std_logic_arith库中的function完成。 std_logic_signed跟std_logic_unsigned类似,唯一的差别是,这里面的function都是先把操作数(std_logic_vector或integer类

20、型)都转换成signed之后再用std_logic_arith库中的function完成。 在用这些库的时候,基本原则是要知道你想要EDA软件实现什么样的运算。大部分情况下,std_logic_vector应该作为unsigned参与运算。,VHDL程序填空 1、下面程序是一个16位数控分频器的VHDL描述,试补充完整。 _LIBRARY_ IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE _IEEE.STD_LOGIC_UNSIGNED.ALL _; ENTITY PULSE16 IS PORT ( CLK : IN STD_LOGIC; LOAD : IN ST

21、D_LOGIC; D : IN _STD_LOGIC_VECTOR(15 DOWNTO 0)_; FOUT : OUT STD_LOGIC ); END ENTITY; _ARCHITECTURE _ one OF PULSE16 IS SIGNAL FULL : STD_LOGIC; BEGIN,P_REG: PROCESS(CLK) Variable_ CNT16 : STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF _load=1_ THEN - LOAD高电平置数 CNT16 := D; FULL

22、= 0; ELSE IF CNT16 = “1111111111111111“ THEN CNT16 := D; FULL = 1; ELSE CNT16 := _ cnt16+1_; - 计数加1 FULL = 0; END IF; END IF; _END IF _; END PROCESS P_REG;,P_DIV: PROCESS(_FULL _) - 溢出信号为敏感信号 VARIABLE CNT2 : STD_LOGIC; BEGIN IF _FULLevent and full=1 _ THEN - FULL上升沿判断 CNT2 := NOT CNT2; FOUT = CNT2;

23、END IF; END PROCESS P_DIV; END;,其实所谓“条件信号赋值语句”,不过是if语句与信号赋值语句的结合而已。一个并行的条件信号赋值语句是可以用一个进程来代替的:这个进程体是由if语句和信号赋值语句构成的。 而所谓“选择信号赋值语句”,则是case语句与信号赋值语句的结合。一个并行的选择信号赋值语句也可以用一个进程来代替:这个进程体是由case语句和信号赋值语句构成的。 看一下下面的例子: 4选1多路选择器,4选1多路选择器,4选1多路选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT(i

24、n0,in1,in2,in3:IN STD_LOGIC; sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0); q:OUT STD_LOGIC ); END mux4;,ARCHITECTURE behav1 OF mux4 IS BEGIN mux4_p1:PROCESS(in0,in1,in2,in3,sel) BEGIN IF sel = 00 THEN q = in0; ELSIF sel = 01 THEN q = in1; ELSIF sel = 10 THEN q = in2; ELSE q = in3; END IF; END PROCESS mux4_p1

25、; END behav1;,ARCHITECTURE behav2 OF mux4 IS BEGIN q = in0 WHEN sel = 00 ELSE in1 WHEN sel = 01 ELSE in2 WHEN sel = 10 ELSE in3; - 这个条件信号赋值语句与进程mux4_p1等价 END behav2;,ARCHITECTURE behav3 OF mux4 IS BEGIN mux4_p2:PROCESS(in0,in1,in2,in3,sel) BEGIN CASE sel IS WHEN 00 = q q q q = in3; END CASE; END PRO

26、CESS mux4_p2; END behav3;,ARCHITECTURE behav4 OF mux4 IS BEGIN WITH sel SELECT q = in0 WHEN 00, in1 WHEN 01, in2 WHEN 10, in3 WHEN OTHERS; - 这个选择信号赋值语句与进程mux4_p2等价 END behav4;,STD_LOGIC_1164程序包 :它是IEEE中最常用的程序包,是IEEE的标准程序包。其中包含了一些数据类型、子类型和函数的定义,这些定义将VHDL扩展为一个能描述多值逻辑的硬件描述语言,很好地满足了实际数字系统的设计需求。其中应用最多最广的是满足工业标准的数据类型STD_LOGIC和 STD_LOGIC_VECTOR。 STD_LOGIC_ARITH程序包:在STD_LOGIC_1164程序包的基础上扩展了三个数据类型UNSIGNED、SIGNED和SMALL_INT,并为其定义了相关的算术运算和转移运算。 STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包:这两个程序包是Synopsys公司的程序包,预先编译在IEEE库中。STANDARD和TEXTIO程序包:STANDARD中定义了许多基本的数据类型、子程序和函数。TEXTIO程序包中定义了支持文件输入输出操作的许多类型和子程序。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1