EDA与VHDL断改错题集(3)

2019-01-03 17:49

第3题:下面的赋值语句执行之后矢量a ,b将分别得到什么值? ARCHITECTURE rtl OF ex IS

SIGNAL a, b: STD_LOGIC_VECTOR (4 downto 0); SIGNAL c: STD)LOGIC_VECTOR (0 to 2); 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 <= \end;

十一、程序改错题(下列?程序段?是否有错,如果有请说明错误原因)。

第1题:

SIGNAL value : INTEGER RANGE 0 TO 15; SIGNAL out1 : STD_LOGIC ; CASE value IS

WHEN 0 => out1<= '1' ;

WHEN 1 to 5 => out1<= '0' ; WHEN 7 to 15 => NULL ; END CASE;

第2题: ENTITY case_ex IS

PORT(a: IN STD_LOGIC_VECTOR(4 DOWNTO 0);

q:out STD_LOGIC_VECTOR(2 DOWNTO 0));

END;

ARCHITECTURE rtl OF case_ex IS BEGIN P1:PROCESS(a) BEGIN CASE a IS

WHEN ?00000? => q <= ?011?;

WHEN ?00001? TO ?11110?=> q<= ?010?; WHEN OTHERS => q<= ?000?; END CASE; END PROCESS; END;

10

第3题:

IF sel =?11? THEN IF td =’1’ THEN

C<=?01?;

ELSIF td =’0’ THEN C<=?10?; ELSE c<=?00?; END IF; END IF; END IF;

十二、程序改错题(下列?程序段?是否有错,如果有请说明错误原因)。第1题:

SIGNAL td : INTEGER RANGE 0 TO 15; SIGNAL dd : STD_LOGIC ; CASE td IS

WHEN 0 TO 9 => dd<= '1'; WHEN 9 TO 15 => dd<= '0'; END CASE; 第2题:

IF sel =?01? THEN

C <= ?01?; IF sel =?10? THEN

C<=?10?; ELSE c<=?00?; END IF; 第3题:

ARCHITECTURE bad OF ex IS

SIGNAL a:BIT_VECTOR(2 DOWNTO 0); SIGNAL b:BIT_LOGIC_VECTOR(2 DOWNTO 1); BEGIN a<=b; END;

十三、程序改错题(下列?程序段?是否有错,如果有请说明错误原因)。第1题:

SIGNAL SIN : INTEGER RANGE 0 TO 15; SIGNAL S_out : STD_LOGIC ;

11

CASE SIN IS

WHEN 0 TO 2 => S_out <= '0'; WHEN 4 TO 15 => S_out <= '1'; END CASE; 第2题:

ARCHITECTURE bhv OF ex IS

SIGNAL a:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL b:STD_LOGIC_VECTOR(0 TO 4); SIGNAL c: STD_LOGIC; BEGIN

a <=?1101?; b (4) <=c;

b (0 TO 3)<=a (3 DOWNTO 0); END; 第3题: IF a =’1’ THEN

C <= ?111?; ELSIF b =?100? THEN C<=?110?; ELSE c<=?010?; END IF; END IF;

十四、VHDL程序改错:

仔细阅读下列程序,回答问题

1 LIBRARY IEEE;

2 USE IEEE.STD_LOGIC_1164.ALL; 3

4 ENTITY CNT10 IS

5 PORT ( CLK : IN STD_LOGIC ;

6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; 7 END CNT10;

8 ARCHITECTURE bhv OF CNT10 IS

9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); 10 BEGIN

11 PROCESS (CLK) BEGIN

12 IF RISING_EDGE(CLK) begin 13 IF Q1 < 9 THEN

14 Q1 <= Q1 + 1 ; 15 ELSE

16 Q1 <= (OTHERS => '0'); 17 END IF;

12

18 END IF; 19 END PROCESS ; 20 Q <= Q1; 21 END bhv;

1. 在MAX+PlusII中编译时,提示的第一条错误为: Error: Line 12: File e:\\mywork\\test\\cnt10.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead 指出并修改相应行的程序(如果是缺少语句请指出大致的行数): 错误1 行号: 程序改为: 错误2 行号: 程序改为:

2. 若编译时出现如下错误,请分析原因。

十五、VHDL程序改错:

本题程序为EDA实验中的示例程序sch.vhd,仔细阅读程序,回答问题。 1.对该程序进行编译时出现错误提示:?VHDL Design File ?sch? must contain an entity of the same name.?

这是什么原因?如何修改?

2.修改问题1的错误后,如果编译时出现?Can’t open VHDL ?WORK? ?这样的错误提示。 这又是什么原因,如何修改?

library ieee;

use ieee.std_logic_1164.all;

13

--1 --2

entity schk is --3 port (din, clk, clr : in std_logic; -- 串行输入数据位/工作时钟/复位信号 --4

ab : out std_logic_vector(3 downto 0) -- 检测结果输出 --5 ); --6 end schk; --7 architecture bhv of schk is --8 signal q : integer range 0 to 8; --9 signal d : std_logic_vector(7 downto 0); -- 8位待检测预置数 --10begin --11

d = \-- 8位待检测预置数 --12 process (clk, clr) --13 begin --14 if clr = '1' then q<= 0; --15 else if clk'event and clk = '1' then --16 case q is --17

when 0 => if din = d(7) then q <= 1; else q <= 0; end if; - when 1 => if din = d(6) then q <= 2; else q <= 0; end if; - when 2 => if din = d(5) then q <= 3; else q <= 0; end if; - when 3 => if din = d(4) then q <= 4; else q <= 0; end if; - when 4 => if din = d(3) then q <= 5; else q <= 0; end if; - when 5 => if din = d(2) then q <= 6; else q <= 0; end if; - when 6 => if din = d(1) then q <= 7; else q <= 0; end if; - when 7 => if din = d(0) then q <= 8; else q <= 0; end if; - when others => q <= 0; --26 end case; --27 end if; --28 end process; --29 process (q) --30 begin --31 if q = 8 then ab <= \ --32 else ab <= \ --33 end if; --34 end process; --35 end bhv; --36

1. 在上述程序代码中存在两处错误,编译时出现如下提示,试修改错误: Error: Line 12: File f:\\eda\\schk.vhd: VHDL syntax error: unexpected signal ?d? in Concurrent Statement Part Error: Line 29:File f:\\eda\\schk.vhd: VHDL syntax error: if statement must have END IF, but found PROCESS instead

错误1 行号: 程序改为: 错误2 行号: 程序改为:

14


EDA与VHDL断改错题集(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:c语言机试题汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: