文档库 最新最全的文档下载
当前位置:文档库 › VHDL复习题

VHDL复习题

一、填空题(根据题意,将下列各题的正确答案填写在对应小题内的“ ”处,每空1.5分,)

1. 基于EDA技术的电子系统设计采用的是 的方法。
2. 时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为 。
3. 图形文件设计结束后一定要通过 ,检查设计文件是否正确。
4. 一个实用的vhdl程序一般由 、 和
组成。
5. 实体的端口定义包括 、 和 。
6. VHDL的操作符包括 、 、 和
四类。
7. 在VHDL中,标准逻辑类型数据有 种逻辑值。
8. 在一个实体的端口方向说明时,输入使用in表示,那么结构体内部不能再使
用的输出是用 表示;双向端口是用 表示;结构体内部可再次使用的输出是用 表示。
9.VHDL的短标识符名必须以 ,后跟若干字母、数字或单个下划线构成,但最后不能为 。
10. vhdl的数据对象包括 、 、 、
和 它们用来存放各种类型数据。
11. 在VHDL的端口声明语句中,端口方向包括 、 、
和 。
12. 进程process在仿真运行中,只能处于 和 两种状态。
13. VHDL的结构体用来描述实体的 和 ,它由VHDL语句构成,是外界看不到的部分。
14.CLK下降沿描述语句为: 。
15. VHDL的实体声明部分指定了设计单元的 或 它是设计实体对外的一个通信界面,是外界可以看到的部分。
16. 在VHDL中最常用的库是 标准库,最常用的数据包是 数据包。
17. 过程调用的两种方法为 和 。
18. 一个完整的VHDL语言程序通常包含 、 、
、 和 。
19. 和 是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。
20. VHDL语言的两大基本语句是 和 。
21. 根据VHDL语法规则,在VHDL程序中使用的文字、数据对象、数据类型都需要 。
22. 逻辑综合中,信号赋值符号是 ,变量的赋值符号 。
23. 在VHDL中, 的数据传输是立即发生的,不存在任何延时的行为。
24. 进程process后面括号里面的称为 。
25. 在std_logic类型中,_ _

___、_ ____和_ ____三种值不能够被综合所支持。
26. MOD和REM运算只能够用于__ ______类型数据的运算。
27. 变量是一种局部量,只能在___ __语句、__ ___语句以及_______语句中的说明部分进行说明。
28. 设D0为'0', D1为'1', D2为'1', D3为'0', D1 & D0 & D3 & D2的运算结果是 。
29. 一个构造体可以使用几个子结构,即相对比较独立的几个模块来构成。VHDL语言可以有以下3种形式的子结构描述语句: 语句结构;
语句结构和 结构。
30. 一般将一个完整的VHDL程序称为 。
32. 函数参数(形参)的数据类型只能是___ ____和____ ____;参数的端口模式只能是_ ____。
33.EDA设计输入主要包括 、 和 。

二、单项选择题(从下列各题四个答案中选出一个正确答案,并将其代号写在相应位置。答案选错或未选,该题不得分。每小题2分)

1.下列那个流程是正确的基于EDA软件的FPGA / CPLD设计流程: 。
A. 原理图/HDL文本输入→功能仿真→综合→适配→编程下载→硬件测试
B. 原理图/HDL文本输入→适配→综合→功能仿真→编程下载→硬件测试
C. 原理图/HDL文本输入→功能仿真→综合→编程下载→→适配硬件测试
D. 原理图/HDL文本输入→功能仿真→适配→编程下载→综合→硬件测试
2. 下面既是并行语句又是串行语句的是 。
A.变量赋值 B.信号赋值
C.PROCESS语句 D.WHEN…ELSE语句

3.对于信号和变量的说法,哪一个是不正确的: 。
A. 信号在整个结构体内的任何地方都能适用
B. 变量的赋值是立即完成的
C. 信号用于作为进程中局部数据存储单元
D. 变量和信号的赋值符号不一样
4.下面不属于顺序语句的是 。
A. IF语句
B. LOOP语句
C. PROCESS语句
D. CASE语句
5. 在EDA工具中,能将硬件描述语言转换为硬件电路的重要工具软件称为 。
A. 仿真器 B. 综合器 C. 适配器 D. 下载器
6. 1987标准的VHDL语言对大小写是 。
A. 敏感的 B. 只能用小写 C. 只能用大写 D. 不敏感
7. 在VHDL的FOR_LOOP语句中的循环变量是一个临时变量,属于LOOP语句的局部量 事先声明。
A. 必须 B. 不必 C. 其类型要 D. 其属性要
8. 不符合1987VHDL标准的标识符是 。
A. a_1_in B. a_in_2 C. 2_a D. asd_1
9. 以下对于进程PROCESS的说法,正确的是: 。
A. 进程之间可以通过变量进行通信
B. 进程内部由一组并行语句来描述进程功能
C. 进程语句本身是并行语句
D. 一个进程可以同时描

述多个时钟信号的同步时序逻辑
10. 关于VHDL数据类型,正确的是 。
A. 数据类型不同不能进行运算 B. 数据类型相同才能进行运算
C. 数据类型相同或相符就可以运算 D. 运算与数据类型无关
11. vhdl语言是一种结构化的设计语言,一个设计实体包括实体和结构体两部分,结构体描述的是 。
A.器件外部特性 B. 器件的内部功能
C. 器件的综合约束 D. 器件的外部特性与内部功能
12. 转换函数TO_BITVECTOR(A)的功能是 。
A. 将STDLOGIC_VECTOR转换为BIT_VECTOR
B. 将REAL转换为BIT_VECTOR
C. 将TIME转换为BIT_VECTOR
D. 前面的说法都错误
13. VHDL的实体声明部分用来指定设计单元的 。
A. 输入端口 B. 输出端口
C. 引脚 D. 以上均可
14. 在EDA中,ISP的中文含义是 。
A. 网络供应商
B. 在系统编程
C. 没有特定意义
D. 使用编程器烧写PLD芯片
15. 执行下列语句后Q的值等于 。
……
SIGNAL E: STD_LOGIC_VECTOR (2 TO 5);
SIGNAL Q: STD_LOGIC_VECTOR (9 DOWNTO 2);
……
E<=(2=>’1’, 4=>’0’, OTHERS=>’1’);
Q<=(2=>E (2), 4=>E (3), 5=>’1’, 7=>E (5), OTHERS=>E (4));
……
A. “11011011”
B. “00101101”
C. “11011001”
D. “00101100”
16. 下面哪一个可以用作VHDL中的合法的实体名 。
A. OR B. VARIABLE C. SIGNAL D. OUT1
17. 在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错误的。 D 。
A.idata <= “00001111”; B.idata <= b”0000_1111”;
C.idata <= X”AB” D. idata <= B”21”;
18. VHDL中,为目标变量赋值符号是 。
A. =: B. = C. <= D. :=
19. 如果a=1,b=1,则逻辑表达式(a XOR b) OR( NOT b AND a)的值是 。
A. 0 B. 1 C. 2 D. 不确定
20. 下面对利用原理图输入设计方法进行数字电路系统设计的描述中,那一种说法是不正确的。 。
A.原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计;
B.原理图输入设计方法一般是一种自底向上的设计方法;
C.原理图输入设计方法无法对电路进行功能描述;
D.原理图输入设计方法也可进行层次化设计。
21. VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库: 。
A.IEEE库 B.VITAL库 C.STD库 D.WORK工作库
22. 综合是EDA设计的重要步骤,在下面对综合的描述中 是错误的。
A. 综合是把抽象设计层次中的一种表示转化成另一种表示的过程
B. 综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果

是唯一的
C. 综合是将电路的高级语言转化成低级的,可与FPGA/CPLD的基本结构相映射的网表文件
D. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束
23. vhdl语言是一种结构化的设计语言,一个设计实体包括实体和结构体两部分,结构体描述 。
A.器件外部特性 B. 器件的内部功能
C. 器件的综合约束 D. 器件的外部特性与内部功能
24.下列标识符中, 是不合法的标识符。
A. State0 B. 9moon C. Not_Ack_0 D. signall
25. 在EDA 工具中,能将硬件描述语言转化为硬件电路的重要工具软件称为 。
A. 仿真器 B. 综合器
C. 适配器 D. 下载器
26. VHDL文本编辑中编译时出现如下的报错信息Error: Can’t open VHDL “WORK” 其错误原因是 。
A. 错将设计文件的后缀写成.tdf,而非.vhd 。
B. 错将设计文件存入了根目录,并将其设定成工程。
C. 设计文件的文件名与实体名不一致。
D. 程序中缺少关键词。

27. 基于硬件描述语言HDL的数字系统设计目前最常用的设计法称为 设计法。
A. 自底向上。
B. 自顶向下。
C. 积木式
D. 顶层
28. 下列关于信号的说法不正确的是 。
A.信号相当于器件内部的一个数据暂存节点。
B. 信号的端口模式不必定义,它的数据既可以流进,也可以流出。
C. 在同一进程中,对一个信号多次赋值,其结果只有第一次赋值起作用。
D. 信号在整个结构体内的任何地方都能适用。
29.进程中的变量赋值语句,其变量更新是 。
A.立即完成;
B. 按顺序完成;
C. 在进程的最后完成;
D. 都不对。
30. 下列关于CASE语句的说法不正确的是 。
A. 条件句中的选择值或标识符所代表的值必须在表达式的取值范围内。
B. CASE语句中必须要有WHEN OTHERS=>NULL;语句。
C. CASE语句中的选择值只能出现一次,且不允许有相同的选择值的条件语句出现 。
D. CASE语句执行必须选中,且只能选中所列条件语句中的一条。
31. 在VHDL中,语句”FOR I IN 0 TO 7 LOOP ”定义循环次数为 次。
A. 8 B. 7 C. 0 D.1
32. 在元件例化语句中,用 符号实现名称映射,将例化元件端口声明语句中的信号与PORT MAP()中的信号名关联起来。
A. = B. := C. <= D.=>

33. VHDL的实体声明部分用来指定设计单元的 。
A. 输入端口 B. 输出端口
C. 引脚 D. 以上均可
34.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__ _。
A. FPGA是基于乘积项结构的可编程逻辑器件;
B. FPGA是全称为复杂可编

程逻辑器件;
C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置;
D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。

35. 一个设计实体可以拥有一个或多个 。
A. 设计实体 B. 结构体
C. 输入 D. 输出
36. 在VHDL中,用语句 表示clock的上升沿。
A. clock’EVENT
B. clock’EVENT AND clock=’1’
C. clock=’0’
D. clock’EVENT AND clock=’0’
37. 在VHDL中用 来把特定的结构体关联一个确定的实体,为一个大型系统的设计提供管理和进行工程组织。
A. 输入; B. 输出; C. 综合; D. 配置
38. 在Quartus集成环境下为图形文件产生一个元件符号的主要作用是 。
A. 综合 B. 编译 C. 仿真 D.被高层次电路设计调用

三、判断题(正确的在题后面括号里打“√”,错的打“×”。 每小题1分)

1. VHDL属于强数据类型语言。 ( )
2. 一个结构体中有且只能有一个进程(process) ( )
3. 在进程中任意交换语句的顺序,对执行结果有影响。 ( )
4. 进程中敏感信号列表可以不用包含进程中用到的所有输入信号( )
5. 数100在VHDL语言中既可以表示整数又可以表示实数。 ( )
6. WAIT FOR 语句后面要求接敏感信号。 ( )
7. 在IF语句的条件表达式中只能使用关系运算操作及逻辑运算操作的组合表达式 ( )
8. 过程中的输入输出参数都应列在紧跟过程名的括号内。 ( )
9. 在进程中,可以允许同一个信号有多个驱动源,但其结果只有最后一个驱动源被启动。 ( )
10. 在端口方向的描述中,BUFFER定义的信号不能供构造体再使用,而OUT定义的信号则可以再供构造体使用 ( )
11. 在vhdl语言中,端口输入信号在程序中不仅能被引用,而且能被赋值。
( )
12. VHDL语言中,逻辑运算左右有优先级别,且是从左至右运算( )
13. 进程(process)本身是并行语句,但进程内部语句是顺序执行语句。
( )
14. 构造体描述电路端口,实体描述具体内部电路。 ( )
15. 并行简单信号赋值语句的书写格式:赋值目标:=表达式。 ( )
16. 在元件例化语句中,用=>符号实现名称映射,将例化元件端口声明语句中的信号与PORT MAP( )中的信号名关联起来

。 ( )
17. 在vhdl语言中的顺序语句只能出现在进程和过程子程序中。 ( )
18. 当一个源程序中具有多个实体时,每个实体前都应加库说明语句
( )
19. s’STABLE属性不可以用来判断信号有没有事件发生。 ( )
20. 变量的使用范围不仅限于定义在的进程和子程序中,还包括在整个结构体中
( )
21. 字符串由单引号括起来的一个字符序列,它也称字符矢量或字符串数组。
( )
22. vhdl 可以采用层次化的设计,一个高层的结构体中可以调用低层的实体
( )
23. 不确定状态“X”在VHDL源程序中只能用大写,而不能用小写。
( )
24. 信号是全局变量,可是使用在定义实体的整个结构体中 ( )
25. SIGNAL t2:std_logic <= '0’; ( )
26. 一条信号代入语句,不能用一个进程来描述。 ( )
27.并行条件信号赋值语句的表达格式:赋值目标<=表达式 when 赋值条件;
Else表达式 赋值条件;

表达式; ( )

四、程序改错题

1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3
4 ENTITY three IS
5 PORT
6 (
7 clk: IN STD_LOGIC;
8 d: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
9 dout : OUT STD_LOGIC ;)
10 END three;
11
12 ARCHITECTURE bhv OF three IS
13 SIGNAL tmp: STD_LOGIC_VECTOR(3 DOWNTO 0);
14 BEGIN
15 P1: PROCESS(clk)
16 BEGIN
17 IF clk’EVENT AND clk=‘1’ THEN
18 Tmp:= d;
19 dout<= tmp;
20 END IF;
21 END PROCESS P1;
22 END bhv;
23
1. 在程序中存在三处错误,试指出,并说明理由:



2. 修改相应行的程序(如果是缺少语句请指出大致的行数):
错误1 行号 修改为:
错误2 行号 修改为:
错误3 行号 修改为:


1. 已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片断:
ARCHITECTURE test OF test IS
BEGIN
SIGNAL B :STD_LOGIC ;
Q <= B ;
END test ;
有无错误 ;
错误原因 ;
修改方法 ;

2.已知start为STD_LOGIC类型的信号,sum是INTEGER类型的信号,请判断下面的程序片断:
PROCESS (start)
BEGIN
FOR i IN 1 TO 9 LOOP
sum := sum + i ;
END LOOP ;
END PROCESS ;
有无错误 ;
错误原因 ;
修改方法



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; -- 32
1. 在程序中存在两处错误,试指出,并说明理由:


2. 修改相应行的程序:
错误1 行号: 程序改为:
错误2 行号: 程序改为:







五、编程题

1. 数据选择器MUX,其系统模块图和功能表如下图所示。设计一数据选择器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









End process;
End one;
Architecture two of mymux is
Begin
Process (sel, ain, bin)
Begin








End process;
End two;
Architecture three of mymux is
Begin








2. 根据右图提示,试写出具有异步复位和进位功能的十进制计数器。
说明:
(1) 复位信号 rst;
(2) 端口名如图所示;
(3) 中间计数信号自己定义。















3. 试用用vhdl语言描述下面的原理图电路(10分)





















4. 试用case语句描述3-8译码器的逻辑功能
说明:
(1)输出低电平有效;
(2)中间信号自己定义;
(3)一个输入使能

端EN,当EN信号低电平时,译码器工作,否则译码器被禁止,所有输出端被封为高电平;

















5.看下面原理图,写出相应VHDL描述。













6.使用IF语句设计一个带有异步复位和置位、同步预置的4位2进制加法计数器。














六、程序填空题

1. 下面程序是参数可定制带计数使能异步复位计数器的VHDL描述,试补充完整。
library ieee;
use IEEE.std_logic_1164.all;
use IEEE all;
use IEEE.std_logic_arith.all;

entity counter_n is
(width : integer := 8);
port(data : in std_logic_vector (width-1 downto 0);
load, en, clk, rst : std_logic;
q : out std_logic_vector ( downto 0));
end counter_n;

architecture behave of is
signal count : std_logic_vector (width-1 downto 0);
begin
process(clk, rst)
begin
if rst = '1' then
count <= ( ); ―― 清零
elsif then ―― 下降沿检测
if load = '1' then
count <= data;
en = '1' then
count <= count + 1;
end ;
end if;
end process;
;
end behave;
2. 下面程序是一个10线-4线优先编码器的VHDL描述,试补充完整。
LIBRARY __________ ;
USE IEEE._____________________.ALL;
ENTITY coder IS
PORT ( din : IN STD_LOGIC_VECTOR(____________________);
output : __________ STD_LOGIC_VECTOR(3 DOWNTO 0) );
END coder;
ARCHITECTURE behav OF _____________ IS
SIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS (___________)
BEGIN
IF (din(9)='0') THEN SIN <= "1001" ;
__________________ 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 _______________ ;
________________
END PROCESS ;
_______________;
END behav;

3.根据下表填写完成一个3-8线译码器的VHDL程序。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY decoder_38 IS
PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;
y:OUT );
END decoder_38;

ARCHITECTURE rtl OF decoder_38 IS
indata:STD_LOGIC_VECTOR (2 DOWNTO 0);
BEGIN
indata <= ;
PROCESS (indata,g1,g2a,g2b)
BEGIN
IF ( ) THEN
CASE indata IS
WHEN "000" => y <= "11111110";
WHEN "001" => y <= "11111101";
WHEN "010" => y <= "

";
WHEN "011" => y <= "11110111";
WHEN "100" => y <= "11101111";
WHEN "101" => y <= "11011111";
WHEN " " => y <= "10111111";
WHEN "111" => y <= "01111111";
WHEN OTHERS=> y <= "XXXXXXXX";
END CASE;
ELSE
y <= ;
END IF;
END ;
END rtl;
4.已知上升沿D触发器,填写下面空白的程序:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
Entity dff1 is
Port(clk,d :in std_logic;
Q:out std_logic);
____________
________________________
Begin
____________
Begin
____________ then
Q <=d;
End if;
End process;
____________
5.已知10分频设计,填写下面的空格处

LIBRARY ieee;
USE ieee.std_logic_1164.all;
Entity cnt10 is
Port(clk:std_logic;
Oclk:std_logic);
____________
________________________
Signal cnt :std_logic_vector(3 downto 0);
begin
____________
Begin
____________ then
If cnt=“1001” then
cnt<=”0000”;
oclk<=’1’;
else
cnt<=cnt+1;
oclk<=’0’;
end if;
end if;
end process;
____________

相关文档