EDA程序改错题_第1页
EDA程序改错题_第2页
EDA程序改错题_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序改错题1. 已知 sei 为 STD_L0GIC_VECT0R(1 DOWNTO 0)类型的信号,而 a b、c、d、 q 均为 STD_LOGIC 类型的信号,请判断下面给出的 CASE 语句程序片段:CASE sei ISWHE“N 00” =>q<=a;WHE“N 01 ” =>q<=b;WHE“N 10” =>q<=c;WHE“N 11 ” =>q<=d;END CASE;答案:CASE语句缺“ WHEN OTHERS语句。2. 已知 datan1, datan2为 STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输

2、入 端口,data_out为 STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口, add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:LIBRARY IEEE ;USE ;ENTITY add ISPORT(data_in1 , data_in2: IN INTEGER ;data_out: OUT INTEGER);END add;ARCHTECTURE add_arch OF add ISCONSTANT a:INTEGER<=2 ;BEGINdata_out<=( data_in1+ data_in2) * a;END adds

3、ub_arch;答案:常量声明时赋初值的“ <=”符号应改用“ := ”符号。3已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:ARCHITECTURE test_arch OF test ISBEGINSIGNAL B : STD_LOGIC ;Q<= B ;END test_arch答案:信号 SIGNAL 的声明语句应该放在 BEGIN 语句之前。4.已知 A 和 Q 均为 BIT 类型的信号,请判断下面的程序片段:ARCHITECTURE archtest OF test ISBEGINCASE A ISWHEN0'=>Q<=;1'

4、;WHEN1'=>Q<=;0'END CASE;END archtest;答案:CASE语句应该存在于进程 PROCESS内。三.判断改错题(3分X 6题)(评分标准:给出正确答案1分/题;答案基本正确分/题。)1 已知 A 和 Q 均为 BIT 类型的信号,请判断下面的程序片断: ARCHITECTURE test OF test ISBEGINCASE A ISWHEN '0' => Q <= '1' ;WHEN '1' => Q <= '0' ;END CASE ;END

5、test ;【参考答案】: CASE 语句应该存在于进程 PROCESS 内。2 已知 start 为 STD_LOGIC 类型的信号, sum 是 INTEGER 类型的信号,请判断下面 的程序片断:PROCESS (start)BEGINFOR i IN 1 TO 9 LOOPsum := sum + i ;END LOOP ;END PROCES;S【参考答案】:sum是信号,其赋值符号应该由“:=”改为“ <=”。3 已知 Q 为 STD_LOGIC 类型的输出端口,请判断下面的程序片断: ARCHITECTURE test OF test ISBEGINSIGNAL B : S

6、TD_LOGIC ;Q <= B ;END test ;【参考答案】: 信号 SIGNAL 的申明语句应该放在 BEGIN 语句之前。4 已知 A 和 B 均为 STD_LOGIC 类型的信号,请判断下面的语句:A <= '0' ;【参考答案】:不定态符号应该由小写的 x'改为大写的 X '。5 已知 A 为 INTEGER 类型的信号, B 为 STD_LOGIC 类型的信号,请判断下面的程 序片断:ARCHITECTURE test OF test ISBEGINB <= A ;END test ;【参考答案】:A和B的数据类型不一致,不能

7、相互赋值。6.已知sei 是STD_L0GIC_VECT0R(1 DOWN类型信言号,而 a、b、c、d、q均为STD_LOGI类型信号,请判断下面给出的CAS语句:?CASE sei ISWHEN“00”=> q <= aWHEN“01”=> q <= b?WHE N“ 1 0”=> q <= c?WHEN“11”=> q <= d?END CASE;参考答案】:CASE语句缺“ WHEN OTHER语句。四、判断下面程序中是否有错误,若有错误请改正;1、SIGNAL A,EN:STD_L0GIC;PR0CESS(A,EN)VARIABLE B

8、:STD_L0GIC;BEGINIF EN=1' THENB<=A;END ;END PR0CESS;2、RCHITECTURE 0NE 0F SAMPLE IS VARIABLE A, B, C: INTEGER; BEGINC<=A+B;END ;五、判断下列程序是否有错误,如有则指出错误所在(10 分)程序:LIBRARY IEEE;USEzyt12 ISPORT(R,EN,CP: IN bit;Q: BUFFER STD_LOGIC_VECTOR(0 DOWNTO 3); CO: OUT STD_LOGIC); END zyt;ARCHITECTURE c10 OF

9、 zyt12 BEGINCO<='1' WHEN(EN='1' AND Q="1011") ELSE ; '0'PROCESS(R,CP)BEGINIF R='1' THENQ<="0000"ELSIF (CP'EVENT AND CP<='1') THENIF EN='0' THENQ<=Q;ELSIF Q="1011" THEN Q<= 0000' ;ELSE Q:=Q+1; END IF;

10、 END PROCESS; END one; 仔细阅读下列程序,回答问题LIBRARY IEEE;- 1USE - 2ENTITY LED7SEG IS- 3PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);- 4CLK : IN STD_LOGIC;- 5LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);- 6END LED7SEG;- 7ARCHITECTURE one OF LED7SEG IS- 8SIGNAL TMP : STD_LOGIC;- 9BEGIN- 10SYNC : PROCESS(CLK, A)- 11

11、BEGIN- 12IF CLK'EVENT AND CLK = '1' THEN- 13TMP <= A;- 14END IF;- 15END PROCESS;- 16OUTLED : PROCESS(TMP)- 17BEGIN- 18CASE TMP IS- 19WHEN "0000" => LED7S <= "0111111"- 20WHEN "0001" => LED7S <= "0000110"- 21WHEN "0010" =>

12、; LED7S <= "1011011"- 22WHEN "0011" => LED7S <= "1001111"- 23WHEN "0100" => LED7S <= "1100110"- 24WHEN "0101" => LED7S <= "1101101"- 25WHEN "0110" => LED7S <= "1111101"- 26WHEN "

13、0111" => LED7S <= "0000111"- 27WHEN "1000" => LED7S <= "1111111"- 28WHEN "1001" => LED7S <= "1101111"- 29END CASE;- 30END PROCESS;- 31END one;- 321. 在程序中存在两处错误,试指出,并说明理由:第 14 行 TMP 附值错误第 29 与 30 行之间,缺少 WHEN OTHERS 语句2. 修改相应行的程序

14、:错误 1 行号: 9 程序改为:TMP : STD_LOGIC_VECTOR(3 DOWNTO 0);错误 2 行号: 29 程序改为: 该语句后添加 WHEN OTHERS => LED7S <= "00000001、LIBRARY IEEE;USEUSEENTITY CNT4B ISPORT (CLK,RST,ENA: IN STD_LOGIC;OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT4B;ARCHITECTURE behav OF CNT4B ISSIGNAL CQ

15、I : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK, RST, ENA)IF RST = '1' THEN CQI <= '0000'ELSIF CLK'EVENT AND CLK = '1' THENIF ENA = "1" THEN CQI <= CQI + 1;ELSE CQI <= "0000"END IF;OUTY <= CQI ;END PROCESS;COUTV=CQI(0) AND CQI(1) AND CQI

16、(2) AND CQI (3);END behav;2、LIBRARY IEEE;USEUSEUSE CLK_6D ISPORT (CLK,RST: IN STD_LOGIC;CLK_OUT: OUT STD_LOGIC);END CLK_6D;ARCHITECTURE ONE OF CLK_6D IS"0000"'1'END IF;VARIABLE TEMP:STD_LOGI(SIGNALPROCESS(CLK)VARIABLE CNT6D: INTEGER RANGE 0 TO 3;CONSTANT SIGN: INTEGER:=2;BEGINIF (R

17、ST =“ 1” ) THEN TEMP <= “0” ;'1' , 'O'ELSIF CLK'EVENT AND CLK='1' THEN(CLK'EVENT AND CLK='1')IF (CNT6D = SIGN) THENCNT6D := 0;TEMP <= NOT TEMP;ELSE CNT6D := CNT6D+1;END IF;END IF;END PROCESS;CLK_OUT <= TEMP;END ONE;3、library ieee;use en coder isy:out

18、std_logic_vector(2 dow nto 0)port(b;_ in std_logic(7 downto 0); b:in stdogic_vector(7downto 0)y_out stdo gic(2 dow nto 0);end en coder;architecture one of encoder is beginprocess (b)when others => null;end case;end process;end one;4、LIBRARY IEEE;USE ENTITY counter IS PORT ( reset: IN STD_LOGIC; c

19、lock: IN STD_LOGIC;num: buffer integer range 0 to 3; 多一个“; ”);END;ARCHITECTURE behav OF jishu IS jishu 改为 counterBeginProcess(reset,clock)BeginIf reset= '1' thennum<=0;Elsif rising_edge(clock) thenIf num=3 the nnum<=0;else少 end if;num<二nu m+1;end if;end process;end;5、LIBRARY IEEE;US

20、EUSE ;ENTITY LX3_2 ISPORT(CLK,CLR,OE:IN BIT;D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END LX3_2;ARCHITECTURE struc OF LX3_2 ISVARIABLE Q_TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNALBEGINPROCESS(CLR)PROCESS(CLK)BEGINIF CLR='0' THEN Q_TEMP<='00000000'"00000000"ELSIF CLK='1' THENQ_TEMP<=D;ELSE Q_TEMP<=Q_TEMP;END IF;END PROCE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论