EDA与VHDL断改错题集.docx
- 文档编号:30446075
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:31
- 大小:39.44KB
EDA与VHDL断改错题集.docx
《EDA与VHDL断改错题集.docx》由会员分享,可在线阅读,更多相关《EDA与VHDL断改错题集.docx(31页珍藏版)》请在冰豆网上搜索。
EDA与VHDL断改错题集
一、判断对错(并改正)
1、CONSTANTT2:
std_logic<=’0’;(错)改正:
把<=换为:
=。
2、若某变量被定义为数值型变量,未赋初始值时默认值为‘0’。
(错)改正:
把‘0’的单引号去掉。
3、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。
(错)改正:
“变量(VARIABLES)”改为“信号”。
4、语句typewris(wr0,wr1,wr2,wr3,wr4,wr5);定义了一个状态机变量wr,
可以直接对wr赋值。
(错)改正:
语句typewris(wr0,wr1,wr2,wr3,wr4,wr5);定义了一个状态机类型wr,需要定义一个该类型的对象,才可以对该对象赋值。
5、进程语句中,不管在何时,process语句后面必须列出敏感信号(×)
包含wait语句的进程语句可不列出敏感信号。
6、VHDL语言与计算机C语言的没有差别。
(×)
●运行的基础
–计算机语言是在CPU+RAM构建的平台上运行
–VHDL设计的结果是由具体的逻辑、触发器组成的数字电路
●执行方式
–计算机语言基本上以串行的方式执行
–VHDL在总体上是以并行方式工作
●验证方式
–计算机语言主要关注于变量值的变化
–VHDL要实现严格的时序逻辑关系
7、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。
(×)
“变量(VARIABLES)”改为“信号”。
8、Moore状态机输出只是状态机当前状态的函数,Mealy状态机输出为有限状态机当前值和输入值的函数(√)
9、传统的系统硬件设计方法是采用自上而下(topdown)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottomup)的设计方法。
(×)
传统的系统硬件设计方法是采用自下而上(bottomup)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(topdown)的设计方法
10、VHDL可以采用层次化的设计,一个高层的结构体中可以调用低层的实体(√)
11、一个VHAL程序中仅能使用一个进程(process)语句。
(×)
可以使用多个进程语句。
12、VHDL语言的预算操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。
(×)
逻辑运算符<关系运算符<乘法运算
二.改错题
1.已知sel为STD_LOGIC_VECTOR(1DOWNTO0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的信号,请判断下面给出的CASE语句程序片段:
●CASEselIS
●WHEN“00”=>q<=a;
●WHEN“01”=>q<=b;
●WHEN“10”=>q<=c;
●WHEN“11”=>q<=d;
●ENDCASE;
●答案:
CASE语句缺“WHENOTHERS”语句。
2.已知data_in1,data_in2为STD_LOGIC_VECTOR(15DOWNTO0)类型的输入端口,data_out为STD_LOGIC_VECTOR(15DOWNTO0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:
●LIBRARYIEEE;
●USEIEEE.STD_LOGIC_1164.ALL;
●ENTITYaddIS
●PORT(data_in1,data_in2:
ININTEGER;
●data_out:
OUTINTEGER);
●ENDadd;
●ARCHTECTUREadd_archOFaddIS
●CONSTANTa:
INTEGER<=2;
●BEGIN
●data_out<=(data_in1+data_in2)*a;
●ENDaddsub_arch;
答案:
常量声明时赋初值的“<=”符号应改用“:
=”符号。
3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:
●ARCHITECTUREtest_archOFtestIS
●BEGIN
●SIGNALB:
STD_LOGIC;
●Q<=B;
ENDtest_arch
答案:
信号SIGNAL的声明语句应该放在BEGIN语句之前。
4.已知A和Q均为BIT类型的信号,请判断下面的程序片段:
●ARCHITECTUREarchtestOFtestIS
●BEGIN
●CASEAIS
●WHEN‘0’=>Q<=‘1’;
●WHEN‘1’=>Q<=‘0’;
●ENDCASE;
●ENDarchtest;
答案:
CASE语句应该存在于进程PROCESS内。
三.判断改错题(3分×6题)(评分标准:
给出正确答案1分/题;答案基本正确0.5分/题。
)
1.已知A和Q均为BIT类型的信号,请判断下面的程序片断:
ARCHITECTUREtestOFtestIS
BEGIN
CASEAIS
WHEN'0'=>Q<='1';
WHEN'1'=>Q<='0';
ENDCASE;
ENDtest;
【参考答案】:
CASE语句应该存在于进程PROCESS内。
2.已知start为STD_LOGIC类型的信号,sum是INTEGER类型的信号,请判断下面的程序片断:
PROCESS(start)
BEGIN
FORiIN1TO9LOOP
sum:
=sum+i;
ENDLOOP;
ENDPROCESS;
【参考答案】:
sum是信号,其赋值符号应该由“:
=”改为“<=”。
3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片断:
ARCHITECTUREtestOFtestIS
BEGIN
SIGNALB:
STD_LOGIC;
Q<=B;
ENDtest;
【参考答案】:
信号SIGNAL的申明语句应该放在BEGIN语句之前。
4.已知A和B均为STD_LOGIC类型的信号,请判断下面的语句:
A<='0';
B<='x';
【参考答案】:
不定态符号应该由小写的‘x’改为大写的‘X’。
5.已知A为INTEGER类型的信号,B为STD_LOGIC类型的信号,请判断下面的程序片断:
ARCHITECTUREtestOFtestIS
BEGIN
B<=A;
ENDtest;
【参考答案】:
A和B的数据类型不一致,不能相互赋值。
6.已知sel是STD_LOGIC_VECTOR(1DOWNTO0)类型信号,而a、b、c、d、q均为STD_LOGIC类型信号,请判断下面给出的CASE语句:
CASEselIS
WHEN“00”=>q<=a;
WHEN“01”=>q<=b;
WHEN“10”=>q<=c;
WHEN“11”=>q<=d;
ENDCASE;
【参考答案】:
CASE语句缺“WHENOTHERS”语句。
四、判断下面程序中是否有错误,若有错误请改正;
1、SIGNALA,EN:
STD_LOGIC;
PROCESS(A,EN)
VARIABLEB:
STD_LOGIC;
BEGIN
IFEN=‘1’THEN
B<=A;
END;
ENDPROCESS;
2、RCHITECTUREONEOFSAMPLEIS
VARIABLEA,B,C:
INTEGER;
BEGIN
C<=A+B;
END;
五、判断下列程序是否有错误,如有则指出错误所在(10分)
程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYzyt12IS
PORT(R,EN,CP:
INbit;
Q:
BUFFERSTD_LOGIC_VECTOR(0DOWNTO3);
CO:
OUTSTD_LOGIC);
ENDzyt;
ARCHITECTUREc10OFzyt12
BEGIN
CO<='1'WHEN(EN='1'ANDQ="1011")ELSE;
'0';
PROCESS(R,CP)
BEGIN
IFR='1'THEN
Q<="0000";
ELSIF(CP'EVENTANDCP<='1')THEN
IFEN='0'THEN
Q<=Q;
ELSIFQ="1011"THEN
Q<=‘0000’;
ELSE
Q:
=Q+1;
ENDIF;
ENDPROCESS;
ENDone;
六、VHDL程序改错:
(10分)
01 LIBRARYIEEE;
02 USEIEEE.STD_LOGIC_1164.ALL;
03 USEIEEE.STD_LOGIC_UNSIGNED.ALL;
04 ENTITYLED7CNTIS
05 PORT(CLR :
IN STD_LOGIC;
06 CLK:
INSTD_LOGIC;
07 LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0) );
08 ENDLED7CNT;
09 ARCHITECTUREoneOFLED7CNTIS
10 SIGNALTMP:
STD_LOGIC_VECTOR(3DOWNTO0);
11 BEGIN
12 CNT
ROCESS(CLR,CLK)
13 BEGIN
14 IFCLR='1'THEN
15 TMP<=0;
16 ELSEIFCLK'EVENTANDCLK='1'THEN
17 TMP<=TMP+1;
18 ENDIF;
19 ENDPROCESS;
20 OUTLED
ROCESS(TMP)
21 BEGIN
22 CASE TMP IS
23 WHEN"0000"=> LED7S<="0111111";
24 WHEN"0001"=> LED7S<="0000110";
25 WHEN"0010"=> LED7S<="1011011";
26 WHEN"0011"=> LED7S<="1001111";
27 WHEN"0100"=> LED7S<="1100110";
28 WHEN"0101"=> LED7S<="1101101";
29 WHEN"0110"=> LED7S<="1111101";
30 WHEN"0111"=> LED7S<="0000111";
31 WHEN"1000"=> LED7S<="1111111";
32 WHEN"1001"=> LED7S<="1101111";
33 WHENOTHERS=> LED7S<=(OTHERS=>'0');
34 ENDCASE;
35 ENDPROCESS;
36 ENDone;
在程序中存在两处错误,试指出,并说明理由:
提示:
在MAX+PlusII10.2上编译时报出的第一条错误为:
Error
ine15:
File***/led7cnt.vhd:
Typeerror:
typeinwaveformelementmustbe“std_logic_vector”
第 行,错误:
改正:
第 行,错误:
改正:
七、判断下列程序是否有错误,如有则指出错误所在,并为以下两个程序配上相应的实体和结构体。
(10分)
(10分)
程序1:
ARCHITECTUREoneOFsampleIS
VARIABLEa,b,c:
INTEGER;
BEGIN
C<=a+b
END;
程序2:
signalA,EN:
std_logic;
process(A,EN)
variableB:
std_logic;
begin
ifEN=1thenB<=A;
endif;
endprocess;
八、判断下列程序是否有错误,如有则指出错误所在,并为以下两个程序配上相应的实体和结构体。
程序1:
libraryieee;
useieee.std_logic_1164.all;
ENTITYsampleis
port(a,b:
ininteger;
c:
outinteger);
endsample;
architectureoneofsampleis
begin
c<=a+b;
endone;
程序2:
ENTITYsample1is
port(a,en:
instd_logic;
b:
outstd_logic);
endsample1;
architectureoneofsample1is
begin
process(A,EN)
begin
ifEN='1'thenB<=A;
endif;
endprocess;
endone;
九、程序改错题(仔细阅读下列程序后回答问题,12分)
1LIBRARYIEEE;
2USEIEEE.STD_LOGIC_1164.ALL;
3USEIEEE.STD_LOGIC_UNSIGNED.ALL;
4ENTITYgcIS
5PORT(CLK:
INSTD_LOGIC;
6Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
7ENDgc;
8ARCHITECTUREbhvOFgcIS
9SIGNALQ1:
RANGE0TO9;
10BEGIN
11PROCESS(clk,Q)
12BEGIN
13IFRISING_EDGE(CLK)THEN
14IFQ1<"1001"THEN
15Q1<=Q1+1;
16ELSE
17Q1<=(OTHERS=>'0');
18ENDIF;
19ENDIF;
20ENDPROCESS;
21Q<=Q1;
22ENDbhv;
程序编译时,提示的错误为:
Error:
Line9:
Filee:
\mywork\test\gc.vhd:
VHDLsyntaxerror:
subtypeindicationmusthaveresolutionfunctionortypemark,butfoundRANGEinstead
Error:
Line11:
Filee:
\mywork\test\gc.vhd:
interfaceDeclarationerror:
can'treadport"Q"ofmodeOUT
请回答问题:
在程序中存在两处错误,试指出并修改正确(如果是缺少语句请指出应该插入的行号)
答:
(1)第9行有误,SIGNALQ1:
RANGE0TO9数据类型有误,应该改成SIGNALQ1:
STD_LOGIC_VECTOR(3DOWNTO0)
(2)第11行有误,敏感信号列表中不能出现输出端口,应该改成PROCESS(clk)
十、程序判断
第1题:
分析下列程序段是否有错,如果有请说明错误原因。
程序段1:
SIGNALvalue:
INTEGERRANGE0TO15;
SIGNALout1:
STD_LOGIC;
CASEvalueIS
WHEN0TO10=>out1<='1';
WHEN10TO15=>out1<='0';当value取十时
ENDCASE;
程序段2:
ARCHITECTUREbadOFexIS
SIGNALa_vect:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALb_vect:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
‘0’&a<=b;
END;
程序段3:
IFsel=’1’THEN
C<=“01”;
ELSIFJohn=”100”THEN
C<=”10”;
ELSEc<=”00”;
ELSEC<=”11”;
ENDIF;
第2题:
判断下列VHDL标识符是否合法,如果有误则指出原因。
(1)_Decoder_1;
(2)2FFT;(3)Sig_#N;(4)RyY_RsT_;(5)data__BUS;
第3题:
下面的赋值语句执行之后矢量a,b将分别得到什么值?
ARCHITECTURErtlOFexIS
SIGNALa,b:
STD_LOGIC_VECTOR(4downto0);
SIGNALc:
STD)LOGIC_VECTOR(0to2);
BEGIN
a<=(1=>'0',2=>'1',4=>'1',others=>b(4));a的第一赋值为’0’,二四位赋值为’1’,其他位(0,3位)赋值为b的第四位0,其结果为10100
b<=(0=>'1',2=>'0',3=>'1',others=>c
(1));b的第0三位赋值为’1’,第二位赋值为‘0’,其他位(1,4位)赋值为c的第一位0,结果为01001
c<="001";
end;
十一、程序改错题(下列“程序段”是否有错,如果有请说明错误原因)。
第1题:
SIGNALvalue:
INTEGERRANGE0TO15;
SIGNALout1:
STD_LOGIC;
CASEvalueIS
WHEN0=>out1<='1';
WHEN1to5=>out1<='0';
WHEN7to15=>NULL;
ENDCASE;
第2题:
ENTITYcase_exIS
PORT(a:
INSTD_LOGIC_VECTOR(4DOWNTO0);
q:
outSTD_LOGIC_VECTOR(2DOWNTO0));
END;
ARCHITECTURErtlOFcase_exIS
BEGIN
P1:
PROCESS(a)
BEGIN
CASEaIS
WHEN“00000”=>q<=”011”;
WHEN”00001”TO“11110”=>q<=”010”;
WHENOTHERS=>q<=”000”;
ENDCASE;
ENDPROCESS;
END;
第3题:
IFsel=”11”THEN
IFtd=’1’THEN
C<=“01”;
ELSIFtd=’0’THEN
C<=”10”;
ELSEc<=”00”;
ENDIF;
ENDIF;
ENDIF;
十二、程序改错题(下列“程序段”是否有错,如果有请说明错误原因)。
第1题:
SIGNALtd:
INTEGERRANGE0TO15;
SIGNALdd:
STD_LOGIC;
CASEtdIS
WHEN0TO9=>dd<='1';
WHEN9TO15=>dd<='0';
ENDCASE;
第2题:
IFsel=”01”THEN
C<=“01”;
IFsel=”10”THEN
C<=”10”;
ELSEc<=”00”;
ENDIF;
第3题:
ARCHITECTUREbadOFexIS
SIGNALa:
BIT_VECTOR(2DOWNTO0);
SIGNALb:
BIT_LOGIC_VECTOR(2DOWNTO1);
BEGIN
a<=b;
END;
十三、程序改错题(下列“程序段”是否有错,如果有请说明错误原因)。
第1题:
SIGNALSIN:
INTEGERRANGE0TO15;
SIGNALS_out:
STD_LOGIC;
CASESINIS
WHEN0TO2=>S_out<='0';
WHEN4TO15=>S_out<='1';
ENDCASE;
第2题:
ARCHITECTUREbhvOFexIS
SIGNALa:
STD_LOGIC_VECTOR(4DOWNTO0);
SIGNALb:
STD_LOGIC_VECTOR(0TO4);
SIGNALc:
STD_LOGIC;
BEGIN
a<=”1101”;
b(4)<=c;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA VHDL 改错