VHDL5套试卷标准答案

上传人:丁** 文档编号:6498735 上传时间:2020-02-27 格式:DOC 页数:34 大小:425.50KB
返回 下载 相关 举报
VHDL5套试卷标准答案_第1页
第1页 / 共34页
VHDL5套试卷标准答案_第2页
第2页 / 共34页
VHDL5套试卷标准答案_第3页
第3页 / 共34页
点击查看更多>>
资源描述
2009/2010 学年第 一 学期末考试试题答案及评分标准(A卷)得分一、 填空题(20分,每空格1分)1、一个完整的VHDL语言程序通常包含 实体(entity) , 构造体(architecture), 配置(configuration), 包集合(package)和 库(library) 5各部分。2、在一个实体的端口方向说明时,输入使用in表示,那么构造体内部不能再使用的输出是用 out 表示;双向端口是用 inout 表示;构造体内部可再次使用的输出是用 buffer 表示;3、一个构造体可以使用几个子结构,即相对比较独立的几个模块来构成。VHDL语言可以有以下3种形式的子结构描述语句: BLOCK 语句结构; PROCESS 语句结构和SUBPROGRAMS结构。4、VHDL的客体,或称数据对象包括了常数、 变量variable 和 信号signal 。5、请列出三个VHDL语言的数据类型,如实数、位等。 位矢量 , 字符 , 布尔量 。6、设D0为0, D1为0, D2为1, D3为0, D0 & D1 & D2 & D3的运算结果是“0010”, D3 & D2 & D1 & D0的运算结果是“0100”。7、构造体的描述方式包括三种,分别是 寄存器传输(RTL)描述方法或称数据流 ; 构造体的结构描述方式 和 构造体的行为描述方式 。得分二、 判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确答案3分)1、传统的系统硬件设计方法是采用自上而下(top down)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottom up)的设计方法。 ( )传统的系统硬件设计方法是采用自下而上(bottom up)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(top down)的设计方法2、VHDL可以采用层次化的设计,一个高层的结构体中可以调用低层的实体 ( )3、一个VHAL程序中仅能使用一个进程(process)语句。 ( ) 可以使用多个进程语句。4、VHDL语言的预算操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。 ( ) 逻辑运算符关系运算符datadatadatadatadatadatadatadatadatadatadatadatadatadatadata|data=10011000;|end case; (8)elsedata=00000000; end if;end process; (10)end behave; 以上architecture中有哪些错误?请在原程序相应位置改正。得分四、 编程题(共50分)1、请补全以下二选一VHDL程序(本题10分)Entity mux isport(d0,d1,sel:in bit;q:out BIT ); (2)end mux;architecture connect of MUX is (4) signal tmp1, TMP2 ,tmp3:bit; (6)begin cale:block begin tmp1=d0 and sel; tmp2=d1 and (not sel) tmp3= tmp1 and tmp2;q = tmp3; (8) end block cale; end CONNECT ; (10)2、编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分)&abyLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; (2) ENTITY nand2 IS PORT (a,b:IN STD_LOGIC; (4) y:OUT STD_LOGIC); (6) END nand2; ARCHITECTURE nand2_1 OF nand2 IS (8) BEGIN y = a NAND b; -与y =NOT( a AND b);等价 (10) END nand2_1;3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 IS PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); (2)END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);(4)BEGIN indata y y y y y y y y y = XXXXXXXX; END CASE; ELSE y = 11111111;(14) END IF; END PROCESS;(16)END rtl; 4、三态门电原理图如右图所示,真值表如左图所示,请完成其VHDL程序构造体部分。(本题14分)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_gate ISPORT(din,en:IN STD_LOGIC; dout : OUT STD_LOGIC);END tri_gate ;ARCHITECTURE zas OF tri_gate ISBEGIN PROCESS (din,en) BEGINIF (en=1) THEN dout = din;ELSE dout = Z; END IF; END PROCESS ;END zas ;2008/2009 学年第 一 学期末考试试题答案及评分标准(A卷)得分一、 填空题(20分,每空格1分)1、试举出两种可编程逻辑器件 CPLD 、 FPGA 。2、VHDL程序的基本结构包括 库 、 程序包 、 实体 和 结构体 。3、more_ _11标识符合法吗? 不合法 。8bit标识符合法吗? 不合法 。variable标识符合法吗? 不合法 。4、信号的代入通常用 = ,变量用 := 。5、表示01;两值逻辑的数据类型是 bit(位) ,表示01Z等九值逻辑的数据类型是 std_logic(标准逻辑),表示空操作的数据类型是 NULL 。6、定义一个信号a,数据类型为4位标准逻辑向量 signal a : std_logic_vector(3 downto 0) 定义一个变量b,数据类型为2位位向量 variable b : bit_vector(1 downto 0) 。7、datadatadatadatadatadatadatadatadatadatadatadatadatadatadatadata=10011000;end case; elsedata:=00000000; -data = “00000000”;(8)end if;(10)end process;end behave;以上architecture中有哪些错误?请在原程序相应位置改正。得分四、 编程题(共50分)1、根据一下四选一程序的结构体部分,完成实体程序部分(本题8分)entity MUX4 is port( (2)s:in std_logic_vector(1 downto 0); (4)d:in std_logic_vector(3 downto 0); (6)y:out std_logic (8); end MUX4; architecture behave of MUX4 isbeginprocess(s)beginif (s=00) theny=d(0); elsif (s=01) theny=d(1); elsif (s=10) theny=d(2); elsif (s=11) theny=d(3); elsenull; end if;end process;end behave; 2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为0,否则为1。(本题10分)process(p,q)(2)beginif g=0 then(4)if p = q thenequ = 0; (6)else equ = 1; (8)end if;else equ = 1; (10)end if;end process;3、填写完成一个8-3线编码器的VHDL程序(16分)。Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity eight_tri is port(b:in std_logic_vector(7 downto 0); (2)en:in std_logic;y:outstd_logic_vector(2 downto 0) (4));end eight_tri;architecture a of eight_tri is (6)signal sel: std_logic_vector(8 downto 0);beginsel=en & b; (8)y= “000” when (sel=”100000001”)else“001” when (sel=”100000010”)else (10)“010” when (sel=”100000100”)else“011” when (sel=”100001000”)else“100” when (sel=”100010000”)else (12) “101” when (sel=”100100000”)else“110” when (sel=”101000000”)else (14)“111” when (sel=”110000000”)else (16)“zzz”;end a;4、图中给出了4位逐位进位全加器,请完成其VHDL程序。(本题16分)library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity full_add isport (a,b: instd_logic_vector (3 downto 0); (2)carr: inout std_logic_vector (4 downto 0);sum: outstd_logic_vector (3 downto 0);end full_add;architecture full_add_arch of full_add iscomponent adder (4)port (a,b,c:instd_logic;carr: inoutstd_logic;sum: out std_logic (6));end component;begincarr(0)=0;u0:adder port map(a(0),b(0),carr(0),carr(1),sum(0);u1:adder port map(a(1),b(1),carr(1),carr(2),sum(1); (8)(10)u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2); (12)u3:adder port map(a(3),b(3),carr(3),carr(4),sum(3); (14)(16)end full_add_arch;2008/2009 学年第 一 学期末考试试题(B卷)得分一、 填空题(30分,每空格1分)1、同A2、VHDL程序的基本结构至少应包括 实体 、 结构体 两部分和对 库 的引用声明。3、1_Digital标识符合法吗? 否 , 12 + 呢? 合法 。4、在VHDL的常用对象中, 信号 、 变量 可以被多次赋予不同的值, 常量 只能在定义时赋值。5、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有 in 、 Out 、 inout 、 buffer 。6、VHDL语言中std_logic类型取值 Z 表示高阻,取值 X 表示不确定。7、整型对象的范围约束通常用 range 关键词,位矢量用 downto/to 关键词。8、位类型的初始化采用(字符/字符串) 字符 、位矢量用 字符串 。9、进程必须位于 结构体 内部,变量必须定义于 进程/包/子程序 内部。10、并置运算符 & 的功能是 把多个位或位向量合并为一个位向量 。11、进程执行的机制是敏感信号 发生跳变 。12、判断CLK信号上升沿到达的语句是 if clkevent and clk = 1 then .13、 IF 语句各条件间具有不同的优先级。14、任何时序电路都以 时钟 为驱动信号,时序电路只是在 时钟信号的边沿 到来时,其状态才发生改变。15、 Moore 状态机输出只依赖于器件的当前状态,与 输入信号 无关。得分二、 判断对错并改正(12分,每小题3分)1、CONSTANT T2:std_logic = 0; ( 错 ) 改正:把= 换为 := 。2、若某变量被定义为数值型变量,未赋初始值时默认值为0。( 错 ) 改正:把0的单引号去掉。3、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。( 错 ) 改正:“变量(VARIABLES)”改为“信号”。4、语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机变量wr,可以直接对wr赋值。 ( 错 ) 改正:语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机类型wr,需要定义一个该类型的对象,才可以对该对象赋值。得分三、 简答(8分,每小题4分)1、简述如何利用计数器精确控制时序。n 只要知道晶振频率f,即可知道周期T1/f;n 使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间tnT;n 上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生精确时序; 例如:n PROCESS (clr,clk)n BEGINn IF(clr=1) THEN n Count_B=“00000000”;n q = 0;n ELSIF (clkEVENT AND clk= 1 ) THENn Count_B=count_B + 1;n IF (Count_B = “00000000”) THEN n q = 1;n ELSIF (Count_B = “00000001”) THEN n q = 0;n ELSIF (Count_B = “00000011”) THEN n q = 1;n ELSIF (Count_B = “00000100”) THEN n q = 0;n END IF;n END IF;n END PROCESS;2、简述moore状态机和mealy状态机的区别。从输出的时序上看,Mealy机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。Moore机的输出则仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。 Moore型状态机:次态=f(现状,输入),输出=f(现状); Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);得分四、 编程(共50分)1、完成下图所示的触发器。(本题10分)CLRCLKDQQNlibrary IEEE;use IEEE.std_logic_1164.all;entity VposDff is port (CLK, CLR, D: in STD_LOGIC; -2分 Q, QN: out STD_LOGIC ); -4分end VposDff;architecture VposDff_arch of VposDff isbegin process ( CLK, CLR ) -6分 begin if CLR=1 then Q = 0; QN =1; elsif CLKevent and CLK=1 then Q = D; QN = not D; -8分 end if; end process; -10分end VposDff_arch; 2、完成以下4位全加器代码(本题10分)library IEEE;use IEEE.std_logic_1164.all;entity full_add isport (a,b: instd_logic_vector (3 downto 0);cin: instd_logic;cout: out std_logic;sum: outstd_logic_vector (3 downto 0);end full_add;architecture full_add_arch of full_add iscomponent adderport (a,b,c:instd_logic;carr: outstd_logic;sum: out std_logic);end component;signal c1,c2,c3: std_logic; 2分beginu0:adder port map(a(0),b(0),cin,c1,sum(0); 4分u1:adder port map(a(1),b(1),c1,c2,sum(1); 5分u2:adder port map(a(2),b(2),c2,c3,sum(2); 6分u3:adder port map(a(3),b(3),c3,cout,sum(3); 10分end full_add_arch;3、补充完整如下代码,使之完成4状态不断循环。(本题10分)ARCHITECTURE arc OF ss IStype states is ( st0,st1,st2,st3 ); 2分signal outc: states; 4分BEGINPROCESS(clk) BEGIN IF reset=1 then outc outc outc outc outc outc =st0; END CASE; end if;END PROCESS;END arc; 4、设计异或门逻辑:(本题20分)如下异或门,填写右边的真值表。(此项5分)ABY000011101110其表达式可以表示为:(此项5分) 这一关系图示如下:试编写完整的VHDL代码实现以上逻辑。可以采用任何描述法。(此项10分)library ieee;use ieee.std_logic_1164.all; 1分entity yihuo1 isport(a,b:in std_logic;y:out std_logic);end yihuo1; 4分architecture yihuo1_behavior of yihuo1 isbegin 7分process(a,b) y=a xor b;begin (第2种写法)if a=b theny=0;elsey=1;end if;end process; end yihuo1_behavior; 10分2007/2008 学年第 一 学期末考试试题答案及评分标准(A卷)得分一、 填空题(20分,每空格1分)1、VHDL是否区分大小写? 不区分 。2、digital_ _8标识符合法吗? 不合法 。12_bit标识符合法吗? 不合法 。signal标识符合法吗? 不合法 。 3、结构体有三种描述方式,分别是 数据流 、 行为 、和 结构化 。4、请分别列举一个常用的库和程序包 library ieee 、 use ieee.std_logic_1164.all 。5、一个信号处于高阻(三态)时的值在VHDL中描述为 Z 。6、将一个信号width定义为一个4位标准逻辑向量为 signal width : std_logic_vector(3 downto 0) 。7、/=是 不相等 操作符,功能是 在条件判断是判断操作符两端不相等 。8、设D0为0, D1为1, D2为1, D3为0, D3 & D2 & D1 & D0的运算结果是 “0110” ,(D3 or D2)and(D1 and not D0)的运算结果是: 1 。9、赋值语句是(并行/串行) 并行 执行的,if语句是(并行/串行) 串行 执行的。10、请列举三种可编程逻辑器件: EEPROM 、 GAL 、 FPGA 。得分二、 简答(20分,每小题5分)1、简述VHDL程序的基本结构。库(1)程序包(2)实体(3)结构体(5) 若答出配置也可加1分2、简述信号与变量的区别。信号延时赋值,变量立即赋值(2)信号的代入使用datadatadatadatadatadatadatadatadatadatadatadatadatadatadatadata=10011000;end case; elsedata:=00000000; -data = “00000000”;(8)end if;(10)end process;end behave;以上architecture中有哪些错误?请在原程序相应位置改正。得分四、 编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)1、用IF语句编写一个二选一电路,要求输入a、b, sel为选择端,输出q。(本题10分)Entity sel2 isPort (a,b : in std_logic;sel : in std_logic;q : out std_logic);End sel2;(3)Architecture a of sel2 isbeginif sel = 0 thenq = a;(6)elseq = b;(9)end if;end a;(10)2、编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。(本题10分)Process(reset,clk)(2)beginif reset = 0 thenq = “0000”;(4)elsif clkevent and clk = 1 then(6)q = q + 1;(9)end if;end process;(10)3、填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。8 -3线编码器真值表enby0y1y21000000000001000000100011000001000101000010000111000100001001001000001011010000001101100000001110xxxxxxxx高阻态entity eight_tri is port(b:in std_logic_vector(7 downto 0);en:in std_logic;y:outstd_logic_vector(2 downto 0);end eight_tri;(3)architecture a of eight_tri is signal sel: std_logic_vector(8 downto 0);(4)beginsel=en & b;y= “000” when (sel=”100000001”)else“001” when (sel=”100000010”)else“010” when (sel=”100000100”)else“011” when (sel=”100001000”)else“100” when (sel=”100010000”)else“101” when (sel=”100100000”)else“110” when (sel=”101000000”)else“111” when (sel=”110000000”)else(9)“zzz”;(10)end a;4、根据已给出的全加器的VHDL程序,试写出一个4位逐位进位全加器的VHDL程序。(本题15分)library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity adder isport (a,b,c:in std_logic;carr: inout std_logic;sum: out std_logic);end adder;architecture adder_arch of adder isbeginsum = a xor b xor c;carr = (a and b) or (b and c) or (a and c);end adder_arch;entity full_add isport (a,b: instd_logic_vector (3
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!