EDA程序改错题.docx
- 文档编号:10043117
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:13
- 大小:18.08KB
EDA程序改错题.docx
《EDA程序改错题.docx》由会员分享,可在线阅读,更多相关《EDA程序改错题.docx(13页珍藏版)》请在冰豆网上搜索。
EDA程序改错题
程序改错题
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;
仔细阅读下列程序,回答问题
LIBRARYIEEE;--1
USEIEEE.STD_LOGIC_1164.ALL;--2
ENTITYLED7SEGIS--3
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);--4
CLK:
INSTD_LOGIC;--5
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));--6
ENDLED7SEG;--7
ARCHITECTUREoneOFLED7SEGIS--8
SIGNALTMP:
STD_LOGIC;--9
BEGIN--10
SYNC:
PROCESS(CLK,A)--11
BEGIN--12
IFCLK'EVENTANDCLK='1'THEN--13
TMP<=A;--14
ENDIF;--15
ENDPROCESS;--16
OUTLED:
PROCESS(TMP)--17
BEGIN--18
CASETMPIS--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
ENDCASE;--30
ENDPROCESS;--31
ENDone;--32
1.在程序中存在两处错误,试指出,并说明理由:
第14行TMP附值错误
第29与30行之间,缺少WHENOTHERS语句
2.修改相应行的程序:
错误1行号:
9程序改为:
TMP:
STD_LOGIC_VECTOR(3DOWNTO0);
错误2行号:
29程序改为:
该语句后添加WHENOTHERS=>LED7S<="0000000
1、LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4BIS
PORT(CLK,RST,ENA:
INSTD_LOGIC;
OUTY:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT4B;
ARCHITECTUREbehavOFCNT4BIS
SIGNALCQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK,RST,ENA)
BEGIN
IFRST='1'THENCQI<='0000'; "0000"
ELSIFCLK'EVENTANDCLK='1'THEN
IFENA="1"THENCQI<=CQI+1; '1'
ELSECQI<="0000";
ENDIF; ENDIF;
OUTY<=CQI;
ENDPROCESS;
COUT<=CQI(0)ANDCQI
(1)ANDCQI
(2)ANDCQI(3);
ENDbehav;
2、LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLK_6DIS
PORT(CLK,RST:
INSTD_LOGIC;
CLK_OUT:
OUTSTD_LOGIC);
ENDCLK_6D;
ARCHITECTUREONEOFCLK_6DIS
VARIABLETEMP:
STD_LOGIC;SIGNAL
BEGIN
PROCESS(CLK)
VARIABLECNT6D:
INTEGERRANGE0TO3;
CONSTANTSIGN:
INTEGER:
=2;
BEGIN
IF(RST=“1”)THENTEMP<=“0”; '1','0'
ELSIFCLK'EVENTANDCLK='1'THEN (CLK'EVENTANDCLK='1')
IF(CNT6D=SIGN)THEN
CNT6D:
=0;
TEMP<=NOTTEMP;
ELSECNT6D:
=CNT6D+1;
ENDIF;
ENDIF;
ENDPROCESS;
CLK_OUT<=TEMP;
ENDONE;
3、libraryieee;
useieee.std_logic_1164.all;
entityencoderis
port(b:
instd_logic(7downto0);b:
instd_logic_vector(7downto0)
y:
outstd_logic(2downto0));y:
outstd_logic_vector(2downto0)
endencoder;
architectureoneofencoderis
begin
process(b)
begin
casebis
when"01111111"=>y<="111";
when"10111111"=>y<="110";
when"11011111"=>y<="101";
when"11101111"=>y<="100";
when"11110111"=>y<="011";
when"11111011"=>y<="010";
when"11111101"=>y<="001";
when"11111110"=>y<="000";
whenothers=>null;
endcase;
endprocess;
endone;
4、LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYcounterIS
PORT(reset:
INSTD_LOGIC;
clock:
INSTD_LOGIC;
num:
bufferintegerrange0to3;多一个“;”
);
END;
ARCHITECTUREbehavOFjishuISjishu改为counter
Begin
Process(reset,clock)
Begin
Ifreset=’1’then
num<=0;
Elsifrising_edge(clock)then
Ifnum=3then
num<=0;
else
num<=num+1;
少endif;
endif;
endprocess;
end;
5、LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED; STD_LOGIC_UNSIGNED.ALL
ENTITYLX3_2IS
PORT(CLK,CLR,OE:
INBIT;
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDLX3_2;
ARCHITECTUREstrucOFLX3_2IS
VARIABLEQ_TEMP:
STD_LOGIC_VECTOR(7DOWNTO0); SIGNAL
BEGIN
PROCESS(CLR) PROCESS(CLK)
BEGIN
IFCLR='0'THENQ_TEMP<='00000000'; "00000000"
ELSIFCLK='1'THEN
Q_TEMP<=D;
ELSEQ_TEMP<=Q_TEMP;
ENDIF;
ENDPROCESS;
Q<=Q_TEMPWHENOE='1'ELSE
"ZZZZZZZZ";
ENDstruc;
6、LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED; USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYLX3_2IS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
B:
INSTD_LOGIC(3DOWNTO0); STD_LOGIC_VECTOR
GT,LT,EQ:
OUTSTD_LOGIC);
ENDLX3_2;
ARCHITECTUREoneOFLX8_2IS LX3_2
BEGIN
PROCESS(A,B)
BEGIN
GT<='0';
LT<='0';
EQ<='0';
IFA>BTHENGT<=”0”; '0'
ELSIFA ELSEEQ<=”0”; '0' ENDIF; ENDPROCESS; ENDone; 1、在程序中存在两处错误,试指出,并说明理由: 错误1原因: case顺序语句必须放在进程语句Process内。 程序改为: process(A) begin caseAis 错误2原因: 还有存在其他组合的可能。 程序改为: whenothers=>null; 附: 自动化123江西理工大学王显聪
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 程序 改错