第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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EDA与VHDL断改错题集(3)在线全文阅读。
相关推荐: