VHDL试卷(3)

2019-02-26 09:49

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: out std_logic_vector(2 downto 0) (4) ); end eight_tri;

architecture a of eight_tri is (6) signal sel: std_logic_vector(8 downto 0); begin sel<=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分)

11

library IEEE;

use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all;

entity full_add is port ( a,b: in std_logic_vector (3 downto 0); carr: inout std_logic_vector (4 downto 0); sum: out std_logic_vector (3 downto 0) ); end full_add;

architecture full_add_arch of full_add is component adder port ( a,b,c: in std_logic; carr: inout std_logic; sum: out std_logic );

end component;

begin carr(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)); u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2)); u3:adder port map(a(3),b(3),carr(3),carr(4),sum(3)); end full_add_arch;

12

2) 4) 6) 8)(10)12) 14)(16) ( ( ( ( ( (

2008/2009 学年第 一 学期末考试试题(B卷)

得分

一、 填空题(30分,每空格1分) 1、同A

2、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 clk’event and clk = ‘1’ then . 13、 IF 语句各条件间具有不同的优先级。

14、任何时序电路都以 时钟 为驱动信号,时序电路只是在 时钟信号的边沿 到来时,

其状态才发生改变。

15、 Moore 状态机输出只依赖于器件的当前状态,与 输入信号 无关。 得分 13

二、 判断对错并改正(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、简述如何利用计数器精确控制时序。

? 只要知道晶振频率f,即可知道周期T=1/f;

? 使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间t=nT; ? 上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生

精确时序;

例如:

? PROCESS (clr,clk) ? BEGIN

? IF(clr=1) THEN

? Count_B<=“00000000”; ? q <= ‘0’;

? ELSIF (clk'EVENT AND clk = ‘1’ ) THEN ? Count_B<=count_B + 1;

? IF (Count_B = “00000000”) THEN ? q <= ‘1’;

? ELSIF (Count_B = “00000001”) THEN ? q <= ‘0’;

? ELSIF (Count_B = “00000011”) THEN ? q <= ‘1’;

? ELSIF (Count_B = “00000100”) THEN ? q <= ‘0’;

14

? END IF; ? END IF; ? END PROCESS;

2、简述moore状态机和mealy状态机的区别。 从输出的时序上看,Mealy机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。Moore机的输出则仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。 Moore型状态机:次态=f(现状,输入),输出=f(现状); Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入); 得分 现态输入次态逻辑次态状态寄存器现态输出逻辑输出输入次态逻辑次态状态寄存器现态输出逻辑输出现态Moore型Mealy型四、 编程(共50分)

1、完成下图所示的触发器。(本题10分)

CLR CLK D library IEEE;

use IEEE.std_logic_1164.all;

entity VposDff is

15

Q QN


VHDL试卷(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:帮你除去车内异味

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: