VHDL练习题 下载本文

内容发布更新时间 : 2024/10/1 23:31:56星期一 下面是文章的全部内容请认真阅读。

12. VHDL语言中变量定义的位置是 D 。

A. 实体中中任何位置 B. 实体中特定位置 C. 结构体中任何位置 D. 结构体中特定位置 13. VHDL语言中信号定义的位置是 D 。

A. 实体中任何位置 B. 实体中特定位置 C. 结构体中任何位置D. 结构体中特定位置 14. 变量是局部量可以写在 B 。

A. 实体中 B. 进程中 C. 线粒体 D. 种子体中 15. 变量和信号的描述正确的是 A 。

A. 变量赋值号是:= B. 信号赋值号是:= C. 变量赋值号是<= D. 二者没有区别 16. 变量和信号的描述正确的是 B 。

A. 变量可以带出进程 B. 信号可以带出进程 C. 信号不能带出进程 D. 二者没有区别 17. 关于VHDL数据类型,正确的是 D 。

A. 数据类型不同不能进行运算 B. 数据类型相同才能进行运算 C. 数据类型相同或相符就可以运算 D. 运算与数据类型无关 18. 下面数据中属于实数的是 A 。

A. 4.2 B. 3 C. ‘1’ D. “11011” 19. 下面数据中属于位矢量的是 D 。

A. 4.2 B. 3 C. ‘1’ D. “11011” 20. 关于VHDL数据类型,正确的是 。

A. 用户不能定义子类型 B. 用户可以定义子类型 C. 用户可以定义任何类型的数据 D. 前面三个答案都是错误的 21. 可以不必声明而直接引用的数据类型是 C 。

A. STD_LOGIC B. STD_LOGIC_VECTOR C. BIT D. 前面三个答案都是错误的 22. STD_LOGIG_1164中定义的高阻是字符 D 。

A. X B. x C. z D. Z 23. STD_LOGIG_1164中字符H定义的是 A 。

A. 弱信号1 B. 弱信号0 C. 没有这个定义 D. 初始值 24. 使用STD_LOGIG_1164使用的数据类型时 B 。

A.可以直接调用 B.必须在库和包集合中声明 C.必须在实体中声明 D. 必须在结构体中声明 25. 关于转化函数正确的说法是 。

A. 任何数据类型都可以通过转化函数相互转化 B. 只有特定类型的数据类型可以转化 C. 任何数据类型都不能转化 D. 前面说法都是错误的 26. VHDL运算符优先级的说法正确的是 C 。

A. 逻辑运算的优先级最高 B. 关系运算的优先级最高 C. 逻辑运算的优先级最低 D. 关系运算的优先级最低 27. VHDL运算符优先级的说法正确的是 A 。

A. NOT的优先级最高 B. AND和NOT属于同一个优先级 C. NOT的优先级最低 D. 前面的说法都是错误的 28. VHDL运算符优先级的说法正确的是 D 。

A. 括号不能改变优先级 B. 不能使用括号 C. 括号的优先级最低 D. 括号可以改变优先级 29. 如果a=1,b=0,则逻辑表达式(a AND b) OR( NOT b AND a)的值是 B 。 A. 0 B. 1 C. 2 D. 不确定 30. 关于关系运算符的说法正确的是 。

A. 不能进行关系运算 B. 关系运算和数据类型无关 C. 关系运算数据类型要相同 D. 前面的说法都错误

43. 如果a=1,b=1,则逻辑表达式(a XOR b) OR( NOT b AND a)的值是 A 。 A. 0 B. 1 C. 2 D. 不确定

51. 在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错误的。 D 。

A.idata <= “00001111”; B.idata <= b”0000_1111”; C.idata <= X”AB” D. idata <= B”21”;

54. 在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127下面哪个赋值语句是正确的。 C。

A.idata := 32; B.idata <= 16#A0#; C.idata <= 16#7#E1; D.idata := B#1010#; 57. 对于信号和变量的说法,哪一个是不正确的: A 。 A.信号用于作为进程中局部数据存储单元 B.变量的赋值是立即完成的 C.信号在整个结构体内的任何地方都能适用 D.变量和信号的赋值符号不一样

58. VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库: 。 A.IEEE库 B.VITAL库 C.STD库 D.WORK工作库

73. 在VHDL中,语句”FOR I IN 0 TO 7 LOOP ”定义循环次数为 A 次。

A. 8 B. 7 C. 0 D.1 74. 在VHDL中,PROCESS结构内部是由 B 语句组成的。

A. 顺序 B. 顺序和并行 C. 并行 D.任何 83. 执行下列语句后Q的值等于 D 。

??

SIGNAL E: STD_LOGIC_VECTOR (2 TO 5);

SIGNAL Q: STD_LOGIC_VECTOR (9 DOWNTO 2); ??

E<=(2=>’0’, 4=>’0’, OTHERS=>’1’);

Q<=(2=>E (2), 4=>E (3), 5=>’1’, 7=>E (5), OTHERS=>E (4)); ??

A. “11011011” B. “00110100” C. “11011001” D. “00101100” 95. 执行下列语句后Q的值等于 A 。

??

SIGNAL E: STD_LOGIC_VECTOR (2 TO 5);

SIGNAL Q: STD_LOGIC_VECTOR (9 DOWNTO 2); E<=(2=>’1’, 4=>’1’, OTHERS=>’0’);

Q<=(2=>E (2), 4=>E (3), 5=>’1’, 7=>E (5), OTHERS=>E (4)); ??

A. “11011011” B. “00110100” C. “11011001” D. “00101100”

96. 在VHDL的IEEE标准库中,预定义的标准逻辑位STD_LOGIC的数据类型中是用 表示的。 A. 小写字母和数字 B. 大写字母数字 C.大或小写字母和数字 D. 全部是数字

99. 在VHDL的IEEE标准库中,预定义的标准逻辑数据STD_LOGIC有 C 种逻辑值。 A. 2 B. 3 C. 9 D. 8 14.下面既是并行语句又是串行语句的是( C )

A.变量赋值 B.信号赋值 C.PROCESS语句 D.WHEN?ELSE语句 3. VHDL语言中变量定义的位置是( D )

A. 实体中中任何位置;B. 实体中特定位置;C. 结构体中任何位置;D. 结构体中特定位置。 4.可以不必声明而直接引用的数据类型是( C )

A. STD_LOGIC ;B. STD_LOGIC_VECTOR;C. BIT;D. ARRAY。

1. 在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错误的。D

A. idata <= “00001111” B. idata <= b”0000_1111”; C. idata <= X”AB”; D. idata <= B”21”; 18、FPGA过程中的仿真有三种:行为仿真、逻辑仿真、时序仿真。 3. 在设计输入完成后,应立即对设计文件进行( C )。 A编辑 B 编译 C 功能仿真 D时序仿真

4. 在VHDL中用( C )来把特定的结构体关联一个确定的实体,为一个大型系统的设计提供管理和进行工程组织。

A输入 B 输出 C综合 D配置

13 进程中的信号赋值语句,其信号更新是(C) A 按顺序完成 B比变量更快完成 C 在进程最后完成 D 都不对 二、VHDL程序填空

1. 下面程序是1位十进制计数器的VHDL描述,试补充完整。 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS

PORT ( CLK : IN STD_LOGIC ;

Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; END CNT10;

ARCHITECTURE bhv OF CNT10 IS

SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS (CLK) BEGIN

IF CLK'EVENT AND CLK = '1' THEN -- 边沿检测 IF Q1 > 10 THEN

Q1 <= (OTHERS => '0'); -- 置零 ELSE

Q1 <= Q1 + 1 ; -- 加1 END IF; END IF; END PROCESS ; Q <= Q1; END bhv;

五、请按题中要求写出相应VHDL程序 1. 带计数使能的异步复位计数器

输入端口: clk 时钟信号

rst 异步复位信号 en 计数使能 load 同步装载

data (装载)数据输入,位宽为10

输出端口: q 计数输出,位宽为10 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT1024 IS

PORT ( CLK, RST, EN, LOAD : IN STD_LOGIC;

DATA : IN STD_LOGIC_VECTOR (9 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) ); END CNT1024;

ARCHITECTURE ONE OF CNT1024 IS BEGIN

PROCESS (CLK, RST, EN, LOAD, DATA)

VARIABLE Q1 : STD_LOGIC_VECTOR (9 DOWNTO 0); BEGIN

IF RST = '1' THEN

Q1 := (OTHERS => '0');

ELSIF CLK = '1' AND CLK'EVENT THEN IF LOAD = '1' THEN Q1 := DATA; ELSE

IF EN = '1' THEN Q1 := Q1 + 1; END IF; END IF; END IF; Q <= Q1;