EDA与VHDL断改错题集.docx

上传人:b****8 文档编号:30446075 上传时间:2023-08-15 格式:DOCX 页数:31 大小:39.44KB
下载 相关 举报
EDA与VHDL断改错题集.docx_第1页
第1页 / 共31页
EDA与VHDL断改错题集.docx_第2页
第2页 / 共31页
EDA与VHDL断改错题集.docx_第3页
第3页 / 共31页
EDA与VHDL断改错题集.docx_第4页
第4页 / 共31页
EDA与VHDL断改错题集.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

EDA与VHDL断改错题集.docx

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

EDA与VHDL断改错题集.docx

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;

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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