EDA与VHDL断改错题集Word文档下载推荐.docx

上传人:b****7 文档编号:22198872 上传时间:2023-02-03 格式:DOCX 页数:10 大小:19.39KB
下载 相关 举报
EDA与VHDL断改错题集Word文档下载推荐.docx_第1页
第1页 / 共10页
EDA与VHDL断改错题集Word文档下载推荐.docx_第2页
第2页 / 共10页
EDA与VHDL断改错题集Word文档下载推荐.docx_第3页
第3页 / 共10页
EDA与VHDL断改错题集Word文档下载推荐.docx_第4页
第4页 / 共10页
EDA与VHDL断改错题集Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

EDA与VHDL断改错题集Word文档下载推荐.docx

《EDA与VHDL断改错题集Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA与VHDL断改错题集Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

EDA与VHDL断改错题集Word文档下载推荐.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1