EDA程序改错题

程序改错题

1.已知sel为STD_LOGIC_VECTOR(1 DOWNTO 0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的信号,请判断下面给出的CASE语句程序片段: ? CASE sel IS

? WHEN“00”=>q<=a; ? WHEN“01”=>q<=b; ? WHEN“10”=>q<=c; ? WHEN“11”=>q<=d; ? END CASE;

? 答案:CASE语句缺“WHEN OTHERS”语句。

2.已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输入端口,data_out为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段: ? LIBRARY IEEE; ? USE ;

? ENTITY add IS

? PORT(data_in1, data_in2:IN INTEGER; ? data_out:OUT INTEGER); ? END add;

? ARCHTECTURE add_arch OF add IS ? CONSTANT a:INTEGER<=2; ? BEGIN

? data_out<=( data_in1+ data_in2) * a; ? END addsub_arch;

答案:常量声明时赋初值的“<=”符号应改用“:=”符号。

3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段: ? ARCHITECTURE test_arch OF test IS ? BEGIN

? SIGNAL B:STD_LOGIC; ? Q<= B; END test_arch

答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。 4.已知A和Q均为BIT类型的信号,请判断下面的程序片段: ? ARCHITECTURE archtest OF test IS ? BEGIN ? CASE A IS

? WHEN ‘0’=>Q<=‘1’; ? WHEN ‘1’=>Q<=‘0’; ? END CASE; ? END archtest;

答案:CASE语句应该存在于进程PROCESS内。

三. 判断改错题(3分×6题)(评分标准:给出正确答案1分/题;答案基本正确分/题。)

1. 已知A和Q均为BIT类型的信号,请判断下面的程序片断: ARCHITECTURE test OF test IS BEGIN CASE A IS

WHEN '0' => Q <= '1' ; WHEN '1' => Q <= '0' ;

END CASE ; END test ;

【参考答案】: CASE语句应该存在于进程PROCESS内。

2. 已知start为STD_LOGIC类型的信号,sum是INTEGER类型的信号,请判断下面

的程序片断: PROCESS (start) BEGIN

FOR i IN 1 TO 9 LOOP sum := sum + i ;

END LOOP ;

END PROCESS ;

【参考答案】: sum是信号,其赋值符号应该由“:=”改为“<=”。 3. 已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片断:

ARCHITECTURE test OF test IS BEGIN

SIGNAL B :STD_LOGIC ; Q <= B ; END test ;

【参考答案】: 信号SIGNAL的申明语句应该放在BEGIN语句之前。 4. 已知A和B均为STD_LOGIC类型的信号,请判断下面的语句:

A <= '0' ;

B <= 'x' ;

【参考答案】: 不定态符号应该由小写的‘x’改为大写的‘X’。

5. 已知A为INTEGER类型的信号,B为STD_LOGIC类型的信号,请判断下面的程

序片断:

ARCHITECTURE test OF test IS BEGIN B <= A ; END test ;

【参考答案】: A和B的数据类型不一致,不能相互赋值。

6. 已知sel是STD_LOGIC_VECTOR(1 DOWNTO 0)类型信号,而a、b、c、d、q均为STD_LOGIC类型信号,请判断下面给出的CASE语句: CASE sel IS

WHEN “00” => q <= a ; WHEN “01” => q <= b ; WHEN “10” => q <= c ; WHEN “11” => q <= d ; END CASE ;

【参考答案】: CASE语句缺“WHEN OTHERS”语句。 四、判断下面程序中是否有错误,若有错误请改正;

1、SIGNAL A,EN:STD_LOGIC; PROCESS(A,EN)

VARIABLE B:STD_LOGIC; BEGIN

IF EN=‘1’ THEN B<=A; END ;

END PROCESS;

2、RCHITECTURE ONE OF SAMPLE IS VARIABLE A,B,C:INTEGER; BEGIN

C<=A+B; END ;

五、判断下列程序是否有错误,如有则指出错误所在(10分) 程序:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4