EDA与VHDL断改错题集Word文档下载推荐.docx
- 文档编号:22198872
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:10
- 大小:19.39KB
EDA与VHDL断改错题集Word文档下载推荐.docx
《EDA与VHDL断改错题集Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA与VHDL断改错题集Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
lLIBRARYIEEE;
lUSEIEEE、STD_LOGIC_11
64、ALL;
lENTITYaddISlPORT(data_in1,data_in2:
ININTEGER;
ldata_out:
OUTINTEGER);
lENDadd;
lARCHTECTUREadd_archOFaddISlCONSTANTa:
INTEGER<
=2;
lBEGINldata_out<
=(data_in1+data_in2)
*a;
lENDaddsub_arch;
答案:
常量声明时赋初值的“<
=”符号应改用“:
=”符号。
3、已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:
lARCHITECTUREtest_archOFtestISlBEGINlSIGNALB:
STD_LOGIC;
lQ<
=B;
ENDtest_arch答案:
信号SIGNAL的声明语句应该放在BEGIN语句之前。
4、已知A和Q均为BIT类型的信号,请判断下面的程序片段:
lARCHITECTUREarchtestOFtestISlBEGINlCASEAISlWHEN‘0’=>
Q<
=‘1’;
lWHEN‘1’=>
=‘0’;
lENDarchtest;
CASE语句应该存在于进程PROCESS内。
三、判断改错题(3分6题)(评分标准:
给出正确答案1分/题;
答案基本正确0、5分/题。
)
1、已知A和Q均为BIT类型的信号,请判断下面的程序片断:
ARCHITECTUREtestOFtestISBEGINCASEAISWHEN0=>
Q<
=1;
WHEN1=>
=0;
ENDCASE;
ENDtest;
【参考答案】
XXXXX:
2、已知start为STD_LOGIC类型的信号,sum是INTEGER类型的信号,请判断下面的程序片断:
PROCESS(start)
BEGINFORiIN1TO9LOOPsum:
=sum+i;
ENDLOOP;
ENDPROCESS;
sum是信号,其赋值符号应该由“:
=”改为“<
=”。
3、已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片断:
ARCHITECTUREtestOFtestISBEGINSIGNALB:
STD_LOGIC;
=B;
信号SIGNAL的申明语句应该放在BEGIN语句之前。
4、已知A和B均为STD_LOGIC类型的信号,请判断下面的语句:
A<
B<
=x;
不定态符号应该由小写的‘x’改为大写的‘X’。
5、已知A为INTEGER类型的信号,B为STD_LOGIC类型的信号,请判断下面的程序片断:
ARCHITECTUREtestOFtestISBEGINB<
=A;
A和B的数据类型不一致,不能相互赋值。
6、已知sel是STD_LOGIC_VECTOR(1DOWNTO0)类型信号,而a、b、c、d、q均为STD_LOGIC类型信号,请判断下面给出的CASE语句:
CASEselISWHEN“00”=>
q<
=a;
WHEN“01”=>
=b;
WHEN“10”=>
=c;
WHEN“11”=>
=d;
四、判断下面程序中是否有错误,若有错误请改正;
1、SIGNALA,EN:
STD_LOGIC;
PROCESS(A,EN)VARIABLEB:
BEGINIFEN=‘1’THENB<
=A;
END;
ENDPROCESS;
2、RCHITECTUREONEOFSLEISVARIABLEA,B,C:
INTEGER;
BEGINC<
=A+B;
五、判断下列程序是否有错误,如有则指出错误所在(10分)程序:
LIBRARYIEEE;
USEIEEE、STD_LOGIC_11
64、ALL;
USEIEEE、STD_LOGIC_ARITH、ALL;
USEIEEE、STD_LOGIC_UNSIGNE
D、ALL;
ENTITYzyt12ISPORT(R,EN,CP:
INbit;
Q:
BUFFERSTD_LOGIC_VECTOR(0DOWNTO3);
CO:
OUTSTD_LOGIC);
ENDzyt;
ARCHITECTUREc10OFzyt12BEGINCO<
=1WHEN(EN=1ANDQ="
1"
ELSE;
0;
PROCESS(R,CP)
BEGINIFR=1THENQ<
="
0000"
;
ELSIF(CPEVENTANDCP<
=1)
THENIFEN=0THENQ<
=Q;
ELSIFQ="
THENQ<
=‘0000’;
ELSEQ:
=Q+1;
ENDIF;
ENDPROCESS;
ENDone;
六、VHDL程序改错:
(10分)01LIBRARYIEEE;
02USEIEEE、STD_LOGIC_11
64、ALL;
03USEIEEE、STD_LOGIC_UNSIGNE
04ENTITYLED7CNTIS05PORT(CLR:
INSTD_LOGIC;
06CLK:
INSTD_LOGIC;
07LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0))
08ENDLED7CNT;
09ARCHITECTUREoneOFLED7CNTIS10SIGNALTMP:
STD_LOGIC_VECTOR(3DOWNTO0);
11BEGIN12CNTROCESS(CLR,CLK)13BEGIN14IFCLR=1THEN15TMP<
=0;
16ELSEIFCLKEVENTANDCLK=1THEN17TMP<
=TMP+1;
18ENDIF;
19ENDPROCESS;
20OUTLEDROCESS(TMP)21BEGIN22CASETMPIS23WHEN"
=>
LED7S<
="
"
;
24WHEN"
0001"
25WHEN"
0010"
26WHEN"
0011"
27WHEN"
0100"
28WHEN"
0"
29WHEN"
0110"
30WHEN"
0111"
31WHEN"
1000"
32WHEN"
1001"
33WHENOTHERS=>
=(OTHERS=>
0);
34ENDCASE;
35ENDPROCESS;
36ENDone;
在程序中存在两处错误,试指出,并说明理由:
提示:
在MAX+PlusII
10、2上编译时报出的第一条错误为:
Errorine15:
File***/led7cnt、vhd:
Typeerror:
typeinwaveformelementmustbe“std_logic_vector”第行,错误:
改正:
第行,错误:
七、判断下列程序是否有错误,如有则指出错误所在,并为以下两个程序配上相应的实体和结构体。
(10分)(10分)程序1:
ARCHITECTUREoneOFsleISVARIABLEa,b,c:
INTEGER;
BEGINC<
=a+bEND;
程序2:
signalA,EN:
std_logic;
process(A,EN)
variableB:
beginifEN=1thenB<
endif;
endprocess;
八、判断下列程序是否有错误,如有则指出错误所在,并为以下两个程序配上相应的实体和结构体。
程序1:
libraryieee;
useieee、std_logic_11
64、all;
ENTITYsleisport(a,b:
ininteger;
c:
outinteger);
endsle;
architectureoneofsleisbeginc<
=a+b;
endone;
ENTITYsle1isport(a,en:
instd_logic;
b:
outstd_logic);
endsle1;
architectureoneofsle1isbeginprocess(A,EN)beginifEN=1thenB<
endone;
九、程序改错题(仔细阅读下列程序后回答问题,12分)1LIBRARYIEEE;
2USEIEEE、STD_LOGIC_11
3USEIEEE、STD_LOGIC_UNSIGNE
4ENTITYgcIS5PORT(CLK:
INSTD_LOGIC;
6Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0))
7ENDgc;
8ARCHITECTUREbhvOFgcIS9SIGNALQ1:
RANGE0TO9;
10BEGIN11PROCESS(clk,Q)
12BEGIN13IFRISING_EDGE(CLK)
THEN14IFQ1<
"
THEN15Q1<
=Q1+1;
16ELSE17Q1<
19ENDIF;
20ENDPROCESS;
21Q<
=Q1;
22ENDbhv;
程序编译时,提示的错误为:
Error:
Line9:
Filee:
\mywork\test\gc、vhd:
VHDLsyntaxerror:
subtypeindicationmusthaveresolutionfunctionortypemark,butfoundRANGEinsteadError:
Line11:
interfaceDeclarationerror:
cantreadport"
Q"
ofmodeOUT请回答问题:
在程序中存在两处错误,试指出并修改正确(如果是缺少语句请指出应该插入的行号)答:
(1)第9行有误,SIGNALQ1:
RANGE0TO9数据类型有误,应该改成SIGNALQ1:
STD_LOGIC_VECTOR(3DOWNTO0)
(2)第11行有误,敏感信号列表中不能出现输出端口,应该改成PROCESS(clk)
、程序判断第1题:
分析下列程序段是否有错,如果有请说明错误原因。
程序段1:
SIGNALvalue:
INTEGERRANGE0TO15;
SIGNALout1:
STD_LOGIC;
CASEvalueISWHEN0TO10=>
out1<
=1;
WHEN10TO15=>
当value取时ENDCASE;
程序段2:
ARCHITECTUREbadOFexISSIGNALa_vect:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALb_vect:
BEGIN‘0’&
a<
=b;
END;
程序段3:
IFsel=’1’THENC<
=“01”;
ELSIFJohn=”100”THENC<
=”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将分别得到什么值?
ARCHITECTURErtlOFexISSIGNALa,b:
STD_LOGIC_VECTOR(4downto0);
SIGNALc:
STD)LOGIC_VECTOR(0to2);
BEGINa<
=(1=>
0,2=>
1,4=>
1,others=>
b(4));
a的第一赋值为’0’,二四位赋值为’1’,其他位(0,3位)赋值为b的第四位0,其结果为00b<
=(0=>
1,2=>
0,3=>
1,others=>
c
(1));
b的第0三位赋值为’1’,第二位赋值为‘0’,其他位(1,4位)赋值为c的第一位0,结果为01001c<
001"
end;
一、程序改错题(下列“程序段”是否有错,如果有请说明错误原因)。
第1题:
CASEvalueISWHEN0=>
=1;
WHEN1to5=>
=0;
WHEN7to15=>
NULL;
ENDCASE;
ENTITYcase_exISPORT(a:
INSTD_LOGIC_VECTOR(4DOWNTO0);
q:
outSTD_LOGIC_VECTOR(2DOWNTO0));
ARCHITECTURErtlOFcase_exISBEGINP1:
PROCESS(a)BEGINCASEaISWHEN“00000”=>
=”011”;
WHEN”00001”TO“11110”=>
q<
=”010”;
WHENOTHERS=>
=”000”;
ENDCASE;
IFsel=”11”THENIFtd=’1’THENC<
=“01”;
ELSIFtd=’0’THENC<
二、程序改错题(下列“程序段”是否有错,如果有请说明错误原因)。
SIGNALtd:
SIGNALdd:
CASEtdISWHEN0TO9=>
dd<
WHEN9TO15=>
IFsel=”01”THENC<
IFsel=”10”THENC<
ARCHITECTUREbadOFexISSIGNALa:
BIT_VECTOR(2DOWNTO0);
SIGNALb:
BIT_LOGIC_VECTOR(2DOWNTO1);
BEGINa<
三、程序改错题(下列“程序段”是否有错,如果有请说明错误原因)。
SIGNALSIN:
SIGNALS_out:
CASESINISWHEN0TO2=>
S_out<
WHEN4TO15=>
ARCHITECTUREbhvOFexISSIGNALa:
STD_LOGIC_VECTOR(4DOWNTO0);
STD_LOGIC_VECTOR(0TO4);
STD_LOGIC;
BEGINa<
=”1”;
b(4)
<
=c;
b(0TO3)<
=a(3DOWNTO0);
IFa=’1’THENC<
=“111”;
ELSIFb=”100”THENC<
=”110”;
=”010”;
四、VHDL程序改错:
仔细阅读下列程序,回答问题1LIBRARYIEEE;
2USEIEEE、STD_LOGIC_11
34ENTITYCNT10IS5PORT(CLK:
7ENDCNT10;
8ARCHITECTUREbhvOFCNT10IS9SIGNALQ1:
10BEGIN11PROCESS(CLK)
BEGIN12IFRISING_EDGE(CLK)
begin13IFQ1<
9THEN14Q1<
15ELSE16Q1<
17ENDIF;
19ENDPROCESS;
20Q<
21ENDbhv;
1、在MAX+PlusII中编译时,提示的第一条错误为:
Line12:
\mywork\test\cnt
10、vhd:
IfstatementmusthaveTHEN,butfoundBEGINinstead指出并修改相应行的程序(如果是缺少语句请指出大致的行数):
错误1行号:
程序改为:
错误2行号:
2、若编译时出现如下错误,请分析原因。
五、VHDL程序改错:
本题程序为EDA实验中的示例程序sch、vhd,仔细阅读程序,回答问题。
1、对该程序进行编译时出现错误提示:
“VHDLDesignFile“sch”mustcontainanentityofthesamename、”这是什么原因?
如何修改?
2、修改问题1的错误后,如果编译时出现“Can’topenVHDL“WORK””这样的错误提示。
这又是什么原因,如何修改?
--1useieee、std_logic_11
--2entityschkis--3port(din,clk,clr:
instd_logic;
--串行输入数据位/工作时钟/复位信号--4ab:
outstd_logic_vector(3downto0)--检测结果输出--5);
--6endschk;
--7architecturebhvofschkis--8signalq:
integerrange0to8;
--9signald:
std_logic_vector(7downto0);
--8位待检测预置数--10begin--11d="
--8位待检测预置数--12process(clk,clr)--13begin--14ifclr=1thenq<
--15elseifclkeventandclk=1then--16caseqis--17when0=>
ifdin=d(7)
thenq<
elseq<
--18when1=>
ifdin=d(6)
=2;
--19when2=>
ifdin=d(5)
=3;
--20when3=>
ifdin=d(4)
=4;
--21whe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA VHDL 改错