EDA与VHDL复习参考题(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA与VHDL复习参考题(1)
选择题
1. 综合是EDA设计流程的关键步骤,在下⾯对综合的描述中,()是错误的。
A. 综合就是把抽象设计层次中的⼀种表⽰转化成另⼀种表⽰的过程;
B. 综合就是将电路的⾼级语⾔转化成低级的,可与FPGA / CPLD的基本结构相映射的
⽹表⽂件;
C. 为实现系统的速度、⾯积、性能的要求,需要对综合加以约束,称为综合约束;
D. 综合可理解为,将软件描述与给定的硬件结构⽤电路⽹表⽂件表⽰的映射过程,并且
这种映射关系是唯⼀的(即综合结果是唯⼀的)。
2. IP核在EDA技术和开发中具有⼗分重要的地位,IP分软IP、固IP、硬IP,下列所描述的
IP核中,对于硬IP的正确描述为__________。
A.提供⽤VHDL等硬件描述语⾔描述的功能块,但不涉及实现该功能块的具体电路;
B.提供设计的最总产品----掩膜;
C.以⽹表⽂件的形式提交⽤户,完成了综合的功能块;
D.都不是。
3提供⽤VHDL等硬件描述语⾔描述的功能块,但不涉及实现该功能块的具体电路的IP核
为__________。
A .软IP B.固IP C.硬IP D.都不是
4 在VHDL程序存盘过程当中,⽂件名应该是()
A. 结构体名
B. 程序包名
C. 任意
D. 实体名
5. ⼤规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与⼯作原理的描述中,
正确的是____。
A.FPGA是基于乘积项结构的可编程逻辑器件;
B. FPGA是全称为复杂可编程逻辑器件;
C.基于SRAM的FPGA器件,在每次上电后必须进⾏⼀次配置;
D.在Altera公司⽣产的器件中,MAX7000系列属FPGA结构。
6. 规模可编程器件主要有FPGA、CPLD两类,其中CPLD通过_______实现其逻辑功能。
A. 可编程乘积项逻辑
B. 查找表(LUT)
C. 输⼊缓冲
D. 输出缓冲
7.⼤规模可编程器件主要有CPLD和FPGA两类,下⾯对FPGA结构与⼯作原理描述中,正确的是()
A FPGA全称为复杂可编程逻辑器件
B FPGA是基于乘积项结构的可编程逻辑器件。
C 基于SRAM的FPGA器件,每次上电后必须进⾏⼀次配置。
D 在Altera公司⽣产的器件中,MAX7000系列属于FPGA结构
8.下列那个流程是正确的基于EDA软件的FPGA / CPLD设计流程______。
A.原理图/HDL⽂本输⼊→功能仿真→综合→适配→编程下载→硬件测试
B.原理图/HDL⽂本输⼊→适配→综合→功能仿真→编程下载→硬件测试;
C.原理图/HDL⽂本输⼊→功能仿真→综合→编程下载→→适配硬件测试;
D.原理图/HDL⽂本输⼊→功能仿真→适配→编程下载→综合→硬件测试
9.FPGA的可编程是主要基于什么结构:()
A. 查找表(LUT)
B. ROM可编程
C. PAL可编程
D. 与或阵列可编程
10.已知signal a:bit; signal b:bit_vector(1 downto 0);下⾯正确的表达式是:( )
(A)b<=a (B)a<=b (C)a<=b(0) (D)a:=b(0)
11. signal a:bit; signal b:bit_vector(1 downto 0);下⾯正确的表达式是:( )
(A)b<=a (B)a<=b (C)a<=b(0) (D)a:=b(0)
12. 执⾏下列语句后S的值等于。
SIGNAL A: STD_LOGIC_VECTOR (2 TO 5);
SIGNAL S: STD_LOGIC_VECTOR (9 DOWNTO 2);
……
A <=(2=>?1?, 4=>?0?, OTHERS=>?1?);
S<=(2=> A (2), 4=> A (3), 5=>?1?, 7=> A (5), OTHERS=>?0?);
A.“11011011” B. “00101100” C. “11011001” D. “00101101”13能在进程之间传递信息的数据对象是():
(A)常量(B)变量(C)信号(D)⽂件
14TYPE week IS(sun,mon,tue,wed,thr,fri,sat);week的数据类型是()(A)字符(B)BIT (C)STD_LOGIC (D)枚举
15. 执⾏下列程序后,XY的值分别()
PROCESS(A,B,C)
Signal D:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
D<=B;
X<=A+D;
D<=C;
Y<=A+D;
END PROCESS;
(A)A+C,A+C (B)A+B,A+C (C) A+C,A+B (D) A+B,A+C
16. 执⾏下列程序后,XY的值分别()
PROCESS(A,B,C)
V ARIABLE D:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
D:=B;
X<=A+D;
D:=C;
Y<=A+D;
END PROCESS;
(A)A+C,A+C (B)A+B,A+C (C) A+C,A+B (D) A+B,A+C
16.在⼀个VHDL设计中idata是⼀个信号,数据类型为integer,数据范围0 to 127,下⾯哪个赋值语句是正确的()
A.idata :=22;
B.idata <= 16#A1#;
C.idata <= 16#6#E1;
D.idata := B#1110#;
17.a的初值为0;执⾏语句a:=a+1;a:=a+1; a:=a+1;后,a的值为()
(A)0 (B)1 (C)2 (D)3
18. IF语句与并⾏语句()均可以实现优先级
A. WITH-SELECT
B. WHEN-ELSE
C. 元件例化
D. 并⾏赋值语句
19.⼀个电路模块的输⼊输出端⼝是定义在( ) 。
A. 实体中
B. 结构体中
C. 任何位置
D. 进程体
20 关键字ARCHITECTURE定义的是( )
A. 结构体
B. 进程
C. 实体
D. 配置
21. 可以不必声明⽽直接引⽤的数据类型是________
A.STD_LOGIC ;
B. STD_LOGIC_VECTOR;
C. BIT;
D. ARRAY。
22.下⾯数据中属于实数的是()。
A. 4.2
B. 3
C. …1?
D. “11011”
23. 具有并⾏与顺序双重特性的语句的是()
A. CASE-WHEN
B. 循环语句
C. 进程语句
D. WITH-SELECT
24. 转换函数TO_BITVECTOR(A)的功能是。
A. 将STDLOGIC_VECTOR转换为BIT_VECTOR
B. 将REAL转换为BIT_VECTOR
C.将TIME转换为BIT_VECTOR
D. 前⾯的说法都错误
25在VHDL语⾔中,下列对时钟边沿检测描述中,错误的是_____。
A. if clk?event and clk = …1? then
B. if falling_edge(clk) then
C. if clk?event and clk = …0? then
D.if clk?stable and not clk = …1? then
26. ⾼阻态Z是属于()范畴
A. STD_LOGIC
B. BIT
C. BIT_VECTOR
D. 布尔
27.在⼀个VHDL设计中Idata是⼀个信号,数据类型为std_logic_vector,试指出下⾯那个赋值语句是错误的。
()
A.idata <= “00001111”;
B.idata <= b”0000_1111”;
C.idata <= X”AB”
D. idata <= B”21”;
28.下列语句中,不属于并⾏语句的是:()。
C.元件例化语句
D.WHEN…ELSE…语句
29. 不属于顺序语句的是()
A. IF语句
B. LOOP语句
C. PROCESS语句
D. CASE语句
30.在VHDL的CASE语句中,条件句中的“=>”不是操作符号,它只相当与作⽤。
A. IF
B. THEN
C. AND
D. OR
31.VHDL语⾔共⽀持四种常⽤库,其中哪种库是⽤户的VHDL设计现⾏⼯作库()
A. IEEE库
B. VITAL库
C. STD库
D. WORK⼯作库。
32. 下⾯哪⼀条命令是qusrtusII软件中引脚绑定的命令。
A.assignments—>device B.processing—>start compilation C.assignments—>assignment editor D.file—>create/update
33.下列标识符中,_________是不合法的标识符。
A. State0
B. 9moon
C. Not_Ack_0
D. signall
34. 进程中的信号赋值语句,其信号更新是( )
A:按顺序完成;B:⽐变量更快完成;C:在进程的最后完成;D:⽴即更新。
35 下列关于信号的说法不正确的是
A . 信号相当于器件内部的⼀个数据暂存节点。
B. 信号的端⼝模式不必定义,它的数据既可以流进,也可以流出。
C. 在同⼀进程中,对⼀个信号多次赋值,其结果只有第⼀次赋值起作⽤。
D. 信号在整个结构体内的任何地⽅都能适⽤。
36.正确给变量X赋值的语句是()
C. X=A+B;
D. 前⾯的都不正确
37. 在VHDL的FOR_LOOP语句中的循环变量是⼀个临时变量,属于LOOP语句的局部
量,()事先声明。
A. 必须
B. 不必
C. 其类型要
D.其属性要
38. 不完整的IF语句,其综合结果可实现()
A. 时序逻辑电路
B. 组合逻辑电路
C. 双向电路
D. 三态控制电路
39.在VHDL中,PROCESS结构内部是由()语句组成的。
A. 顺序
B. 顺序和并⾏
C. 并⾏
D.任何
40. 在VHDL中,IF语句中⾄少应有1个条件句,条件句必须由表达式构成。
A. BIT
B. STD_LOGIC
C. BOOLEAN
D. INTEGER
41. 在VHDL的IEEE标准库中,预定义的标准逻辑数据STD_LOGIC有()种逻辑值。
A.2 B. 3 C. 9 D. 8
42. 下列关于CASE语句的说法不正确的是()。
A. 条件句中的选择值或标识符所代表的值必须在表达式的取值范围内。
B. CASE语句中必须要有WHEN OTHERS=>NULL;语句。
C. CASE语句中的选择值只能出现⼀次,且不允许有相同的选择值的条件语句出现。
D. CASE语句执⾏必须选中,且只能选中所列条件语句中的⼀条。
43.对于信号和变量的说法,哪⼀个是不正确的()
A.信号⽤于作为进程中局部数据存储单元
B.变量的赋值是⽴即完成的
C.信号在整个结构体内的任何地⽅都能适⽤
D.变量和信号的赋值符号不⼀样
44..在VHDL语⾔中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是()
A. PROCESS为⼀⽆限循环语句;
B. 敏感信号发⽣更新时启动进程,执⾏完成后,等待下⼀次进程启动;
C. 进程由说明语句部分、并⾏语句部分和敏感信号参数表三部分组成;
D. 当前进程中声明的变量不可⽤于其他进程。
45. 下⾯哪⼀个是VHDL中的波形编辑⽂件的后缀名()。
A. bsf
B. vwf
C. vhd
D. bdf
46.执⾏quartusII的()命令,可以对设计的电路进⾏仿真。
A.Creat Default Symbol
B.start Compilation
C.start Simulation
D.Programmer
47.quartusII中编译VHDL源程序时要求。
A.⽂件名和实体可不同名
B.⽂件名和实体名⽆关
C. ⽂件名和实体名要相同
D. 不确定
48.VHDL运算符优先级的说法正确的是()。
A. NOT的优先级最⾼
B. AND和NOT属于同⼀个优先级
C. NOT的优先级最低
D. 前⾯的说法都是错误的
49.如果a=1,b=0,则逻辑表达式(a AND b) OR( NOT b AND a)的值是()。
A. 0
B. 1
C. 2
D. 不确定
50.执⾏qusrtusII的()命令,可以为设计电路建⽴⼀个元件符号。
A. create symbol files B. simulator C. compiler D. timing analyzer
51.VHDL⽂本编辑中编译时出现如下的报错信息
Error: Top-level design entity "mux21" is undefined ,其错误原因是。
A. 错将设计⽂件的后缀写成.tdf ⽽⾮.vhd 。
B. 错将设计⽂件存⼊了根⽬录,并将其设定成⼯程。
C. 设计⽂件的⽂件名与实体名不⼀致。
D. 程序中缺少关键词。
52.在VHDL中,含WAIT语句的进程PROCESS的括弧中 _____ 再加敏感信号,否则是⾮法的。
A. 可以
B.不能
C. 必须
D. 有时可以
53.VHDL⽂本编辑中编译时出现如下的报错信息
Error (10500): VHDL syntax error at test.vhd(21) near text "end"; expecting ";"
其错误原因是()。
A. 信号声明缺少分号。
B. 错将设计⽂件存⼊了根⽬录,并将其设定成⼯程。
C. 设计⽂件的⽂件名与实体名不⼀致。
D. 程序中缺少关键词。
54. 在元件例化语句中,⽤()符号实现名称映射,将例化元件端⼝声明语句中的信
号与PORT MAP()中的信号名关联起来。
A. =
B. :=
C. <=
D.=>
55. 在quartusII环境下为图形⽂件产⽣⼀个元件符号的主要作⽤是()。
A. 综合
B. 编译
C. 仿真
D.被⾼层次电路设计调⽤
56. 在VHDL中,⽤语句(D )表⽰clock的下降沿。
A. clock?EVENT
B. clock?EVENT AND clock=?1?
C. clock=?0?
D. clock?EVENT AND clock=?0?
57.在⼀个VHDL设计中Idata是⼀个信号,数据类型为std_logic_vector,试指出下⾯那个赋值语句是错误的。
A. idata <= “00001111”;
B. idata <= b”0000_1111”;
C. idata <= X”AB”;
D. idata <= B”21”;
58. 请指出Altera Cyclone系列中的EP1C6Q240C8这个器件是属于_ ___
A. ROM
B. CPLD
C. FPGA
D.GAL
59.嵌套的IF语句,其综合结果可实现_____。
A. 条件相与的逻辑
B. 条件相或的逻辑
C. 条件相异或的逻辑
D. 三态控制电路
60. 执⾏Quartus II的( B )命令,可以检查设计电路错误。
A Create Default Symbol
B start Compilication----编译
C .start Simulation ----时序仿真
D Timing Analyzer ---时序分析
61.关于VHDL中的数字,请找出以下数字中最⼤的⼀个:__________。
A.2#1111_1110#
B.8#276#
C.10#170#
D.16#E#E1
62. 关于VHDL中的数字,请找出以下数字中数值最⼩的⼀个:__________
A. 2#1111_1110#
B. 8#276#
C. 10#170#
D. 16#E#E1
63. 在VHDL中,语句”FOR I IN 0 TO 7 LOOP ”定义循环次数为_____次。
A. 8
B. 7
C. 0
D.1
64.已知signal a:std_logic_vector(0 to 6);则语句For i in a?range loop定义的循环次数为_____次.
A. 0
B. 7
C.6
D.1
65. 既是并⾏语句⼜是串⾏语句的是( C )
A.变量赋值
B.信号赋值
C.PROCESS语句
D.WHEN…ELSE语句
66. 以下对于进程PROCESS的说法,正确的是:()
A. 进程之间可以通过变量进⾏通信
B. 进程内部由⼀组并⾏语句来描述进程功能
C. 进程语句本⾝是并⾏语句
D.⼀个进程可以同时描述多个时钟信号的同步时序逻辑
67. VHDL语⾔是⼀种结构化设计语⾔;⼀个设计实体(电路模块)包括实体与结构体两部分,结构体描述()
A. 器件外部特性
B. 器件的综合约束;
C. 器件外部特性与内部功能;
D.器件的内部功能。
名词解释,写出下列缩写的中⽂(或者英⽂)含义:
1.VHDL,HDL
2.LUT
3.ASIC
4.SOC
5.VHDL
6.FPGA ,CPLD
7.RTL
8.SOPC
9.JTAG
10.IP
11.LPM
12.UART
13.ISP
14.IEEE
/doc/14bc9dea51e2524de518964bcf84b9d528ea2c83.html B
16.EDA
17.Synthesis
填空题
1.EDA设计输⼊形式包括、和。
2. VHDL程序的波形仿真⽂件后缀为,原理图输⼊⽂件的⽂件后缀名为,VHDL⽂本程序的后缀名为。
2.在VHDL语法中,⼀般均⽤语句在VHDL程序开头部分指明库中的程序包。
3.VHDL的数据对象包括、和,它们是⽤来存放各种类型数据的容器。
4.错误等级类型⽤来表⽰系统的状态,共有四种错误等级:_____、_____、_____、_____。
5.图形⽂件设计结束后⼀定要通过,检查设计⽂件是否正确。
6.若⼀个实体中有多个结构体,在综合时可通过_______语句,为实体指定结构体。
7.VHDL实体中端⼝模式有_____、_____、_____、_____。
8. VHDL设计实体的基本结构由、、、和组成,其中语句不是必需的。
9. 为信号赋初值的符号是;程序中,为变量赋值的符号是,为信号赋值的符号是。
10. 算术运算符“/”、“MOD”、“REM”可综合的分母/底必须是_____的乘⽅。
11. 元件例化语句中,关联信号表有____关联和____关联以及____关联3种⽅式。
12. 关键字ARCHITECTURE定义的是____,ENTITY定义的是____
13.在VHDL中,条件信号赋值语句WHEN_ELSE属于____语句,它可等效于顺序语句中的____语句;
14. 在VHDL中,条件信号赋值语句WITH_SELECT_WHEN属于_______语句,它可等效于顺序语句中的_______语句
15. 进程中的变量赋值语句,其信号更新是_________
16. 在VHDL的IEEE标准库中,预定义的数据类型--标准逻辑数据STD_LOGIC有
_________种逻辑值。
17. 在VHDL中的数据类型中,布尔型只有、两种取值。
18.要使⽤重载运算符“+”,必须加载程序包。
VHDL程序填空
1. 下⾯程序是1位⼗进制计数器的VHDL描述,试补充完整。
LIBRARY IEEE;
USE IEEE. ________________ ALL;
USE IEEE. ________________.ALL;
ENTITY CNT10 IS
PORT ( CLK : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;
END CNT10;
ARCHITECTURE bhv OF________________ IS
SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS (CLK)
________________
IF ________________ THEN -- 边沿检测
IF Q1 < 9 THEN
Q1 <= Q1 + 1 ; -- 加1
ELSE _______________________________; -- 置零
END IF;
END IF;
END PROCESS ;
________________
END bhv;
2.下⾯是带异步复位、同步置数和移位使能的16位左移移位寄存器的VHDL描述,试补充完整。
LIBRARY IEEE;
USE ________________ ALL;
ENTITY SREG16B IS
PORT (CLK, RST : IN STD_LOGIC;
LOAD,EN : IN STD_LOGIC;
DIN : IN __________________________(15 DOWNTO 0);
QB : OUT STD_LOGIC);
END SREG16B;
ARCHITECTURE BEHAV OF SREG16B IS
SIGNAL REG16 : STD_LOGIC_VECTOR( 15 DOWNTO 0);
BEGIN
PROCESS (CLK,LOAD,EN)
BEGIN
IF RST='1' THEN REG16<=_______ ;-------异步复位
ELSIF ______________________ THEN --------下降沿检测
IF LOAD = '1' THEN REG16 <=_______ ; -------同步置数
IF EN='1' ___――移位使能
______________ <= REG16(14 DOWNTO 0) ; -------左移
END IF;
______;
END PROCESS;
QB <= _______; ――输出最⾼位
END BEHAV;
3.下⾯程序是参数可定制带计数使能异步复位计数器的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 if;
end process;
________________
end behave;
4. 下⾯程序是⼀个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;
5. 在下⾯横线上填上合适的语句,完成8位奇偶校验电路的设计。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY PC IS
PORT ( A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Y : OUT STD_LOGIC );
END PC;
ARCHITECTURE A OF PC IS
BEGIN
PROCESS(A).
V ARIABLE TMP: STD_LOGIC;
BEGIN
TMP'0';
FOR I IN 0 TO 7 LOOP
TMP:=;
END LOOP;
Y<=; END PROCESS; END
VHDL程序改错
1.仔细阅读下列程序,回答问题
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 ⾏号:,错误原因程序改为:
2.仔细阅读下列程序,回答问题
1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3
4 ENTITY CNT10 IS
5 PORT ( CLK : IN STD_LOGIC ;
6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;
7 END CNT10;
8 ARCHITECTURE bhv OF CNT10 IS
9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
10 BEGIN
11 PROCESS (CLK) BEGIN
12 IF RISING_EDGE(CLK) begin
13 IF Q1 < 9 THEN
14 Q1 <= Q1 + 1 ;
15 ELSE
16 Q1 <= (OTHERS => '0');
17 END IF;
18 END IF;
19 END PROCESS ;
20 Q <= Q1;
21 END bhv;
1.在编译时,提⽰的第⼀条错误为:
Error: Line 12: File e:\mywork\test\cnt10.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead,该如何改正错误?
2.除了上⾯这⼀错误,本程序还有⼀处明显错误,请指出错误的位置⾏号,并指出如何修改。
3. 本题程序为EDA实验中的⽰例程序cnt10.vhd,仔细阅读程序,回答问题。
对该程序进⾏编译时出现错误提⽰:“Error: Top-level design entity "jsq" is undefined”这是什么原因?如何修改?
3.仔细阅读下列程序,回答问题
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 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
elsif clk'event and clk = '1' then --16
case q is --17
when 0 => if din = d(7) then q <= 1; else q <= 0; end if; --18
when 1 => if din = d(6) then q <= 2; else q <= 0; end if; --19
when 2 => if din = d(5) then q <= 3; else q <= 0; end if; --20
when 3 => if din = d(4) then q <= 4; else q <= 0; end if; --21
when 4 => if din = d(3) then q <= 5; else q <= 0; end if; --22
when 5 => if din = d(2) then q <= 6; else q <= 0; end if; --23
when 6 => if din = d(1) then q <= 7; else q <= 0; end if; --24
when 7 => if din = d(0) then q <= 8; else q <= 0; end if; --25
when others => q <= 0; --26
end case; --27 end process; --28 process (q) --29
begin --30 if q = 8 then ab <= "1010"; --31
else ab <= "1011"; --32
end if; --33 end process; ---34
end bhv; ---35
在上述程序代码中存在两处错误,编译时出现如下提⽰,试修改错误:
Error: Line 12: Error (10500): VHDL syntax error at schk.vhd(12) near text "="; expecting "(", or "'", or "."
Error: Line 29: Error (10500): VHDL syntax error at schk.vhd(28) near text "process"; expecting "if"
错误1 ⾏号:,错误原因:程序改为:
错误2 ⾏号:错误原因:程序改为:
4.仔细阅读下列程序,回答问题
LIBRARY IEEE; --1
USE IEEE.STD_LOGIC_1164.ALL; --2 USE IEEE.STD_LOGIC_ARITH.ALL; --3 USE IEEE.STD_LOGIC_UNSIGNED.ALL;--4 ENTITY JSQ IS --5 PORT(R,EN,CP: IN BIT; --6 Q: BUFFER STD_LOGIC_VECTOR(0 DOWNTO 3); --7
CO: OUT STD_LOGIC); --8 END JSQ; --9 ARCHITECTURE C10 OF JSQ --10 BEGIN --11
CO<='1' WHEN(EN='1' AND Q="1011") ELSE --12 '0'; --13 PROCESS(R,CP) --14 BEGIN --15 IF R='1' THEN --16
Q<="0000"; --17 ELSIF (CP'EVENT AND CP<='1') THEN --18 IF EN='0' THEN --19 Q<=Q; --20 ELSIF Q="1011" THEN --21 Q<=?0000?; --22 ELSE --23 Q:=Q+1; --24 END IF; --25 END PROCESS; --26 END ; --27
在上述程序代码中存以下⼏处错误,试修改错误(如果是缺少语句请指出⼤致的⾏数):1. Error (10500): VHDL syntax error at jsq.vhd(22) near text "'"; expecting "(", or an identifier, or unary operator
错误1 ⾏号:错误原因,程序改为:
2. Error (10526): VHDL Signal Assignment Statement error at jsq.vhd(24): Signal Assignment
Statement must use <= to assign value to signal "Q"
错误2 ⾏号:错误原因,程序改为:
3. Error (10500): VHDL syntax error at jsq.vhd(26) near text "PROCESS"; expecting "if"
错误3 ⾏号:错误原因,程序改为:
5.仔细阅读下列程序,回答问题
1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3 USE IEEE.STD_LOGIC_UNSIGNED.ALL;
4 ENTITY gc IS
5 PORT ( CLK : IN STD_LOGIC
6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0))
7 END gc;
8 ARCHITECTURE bhv OF gc IS 9
SIGNAL Q1 : RANGE 0 TO 9; 10 BEGIN
11 PROCESS (clk,Q)
12 BEGIN
13 IF RISING_EDGE(CLK) THEN
14 IF Q1 < "1001" THEN
15 Q1 <= Q1 + 1
16 ELSE
17 Q1 <= (OTHERS => '0');
18 END IF;
19 END IF;
20 END PROCESS
21 Q <= Q1;
22 END bhv;
程序编译时,提⽰的错误为:
Error: Line 9: File e:\mywork\test\gc.vhd: VHDL syntax error: subtype indication must have resolution function or type mark,but found RANGE instead
Error: Line 11: File e:\mywork\test\gc.vhd: interface Declaration error:can't read port "Q" of mode OUT
请回答问题:在程序中存在两处错误,试指出并修改正确(如果是缺少语句请指出应该插⼊的⾏号)
错误1 ⾏号:,错误原因
程序改为:
错误1 ⾏号:,错误原因
程序改为:
6.仔细阅读下列程序,回答问题
library ieee; --1
use ieee.std_logic_arith.all; --2
use ieee.std_logic_unsigned.all; --3
entity rom is port( addr: in std_logic_vector(0 to 3); --4
ce: in std_logic; data:out std_logic_vector(7 downto 0) ; ) --5
end rom; --6
architecture behave of rom is --7
begin --8
process(ce,addr) --9
begin --10
if ce='0' then --11
case addr is --12
when "0000"=> data<="10001001"; --13
when "0001"=> data<="10001010"; --14
when "0010"=> data<="10001011"; --15
when "0011"=> data<="10001100"; --16
when "0100"=> data<="10001101"; --17
when "0101"=> data<="10001110"; --18
when "0110"=> data<="10001111"; --19
when "0111"=> data<="10010000"; --20
when "1000"=> data<="10010001"; --21
when "1001"=> data<="10010010"; --22
when "1010"=> data<="10010011"; --23
when "1011"=> data<="10010100"; --24
when "1100"=> data<="10010101"; --25
when "1101"=> data<="10010110"; --26
when "1110"=> data<="10010111"; --27
when others=> data<="10011000"; --28
else data:="00000000"; --29
end if; --30
end process; --31
end behave; --32
在程序中存在4处错误,试指出并修改正确(如果是缺少语句请指出应该插⼊的⾏号)错误1 ⾏号:,错误原因
程序改为:
错误2 ⾏号:,错误原因
程序改为:
错误3 ⾏号:,错误原因
程序改为:
错误4 ⾏号:,错误原因
程序改为:
VHDL程序设计:
1.异步清零、同步置1的D触发器,实体名为Dchu;
2.7⼈表决器的设计;
3.⽤⼀位D触发器,利⽤元件⽣成语句或者元件例化实现4位串⼊串出移位寄存器。
(1)设计⼀位D触发器shift_reg1.vhd。
(2)⽤⽣成语句或者例化语句实现4位移位寄存器shift_reg
4.vhd。
4.⽤WHEN_ELSE、IF_THEN、CASE、with-select-when语句描绘4选1多路选择器,其系统模块图和功能表如下。
Library ieee;
Use ieee.std_logic_1164.all;
Entity mux41 is
Port ( A : in std_logic_vector(1 downto 0); -- 选择信号输⼊
D: in std_logic_vector(3 downto 0); -- 数据输⼊
Y : out std_logic_vector(1 downto 0) );
End mux41;
5.设计并实现1位计数显⽰系统。