班级 学号 姓名 END IF; END PROCESS ; GE <= GE1; SHI <=SHI1; 密 封 线 内 不 得 答 题
END bhv; 四、程序改错题(仔细阅读下列程序后回答问题,12分)
1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_1164.ALL; 3 USE IEEE.STD_LOGIC_UNSIGNED.ALL; 4 ENTITY gc IS 5 PORT ( CLK : IN STD_LOGIC ; 6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; 7 END gc; 8 ARCHITECTURE bhv OF gc IS 9 SIGNAL Q1 : RANGE 0 TO 9; 10 BEGIN 11 PROCESS (clk,Q) 12 BEGIN 13 IF RISING_EDGE(CLK) THEN 14 IF Q1 < \15 Q1 <= Q1 + 1 ; 16 ELSE 17 Q1 <= (OTHERS => '0'); 18 END IF; 19 END IF; 20 END PROCESS ; 21 Q <= Q1; 22 END bhv; 程序编译时,提示的错误为: Error: Line 9: File e:\\mywork\\test\\gc.vhd: VHDL syntax error: subtype indication must have resolution function or type mark,but found RANGE instead 第6页(共11页)
Error: Line 11: File e:\\mywork\\test\\gc.vhd: interface Declaration error:can't read port \班级 学号 姓名
请回答问题:在程序中存在两处错误,试指出并修改正确(如果是缺少语句请指出应该插入的行号)
9行有误,SIGNAL Q1 : RANGE 0 TO 9数据类型有误,应该改成SIGNAL Q1 :
答: (1)第
密 封 线 内 不 得 答 题
STD_LOGIC_VECTOR(3 DOWNTO 0)
(2)第11行有误,敏感信号列表中不能出现输出端口,应该改成
第7页(共11页)PROCESS (clk)
五、(28分)
参考程序如下:
LIBRARY IEEE;
班级 学号 1 姓名
.试用VHDL描述一个外部特性如图所示的D触发器。(10分)
密 封 线 内
不 得 答 题 USE IEEE.STD_LOGIC_1164.ALL; ENTITY mydff IS
PORT(CLK:IN STD_LOGIC; D:IN STD_LOGIC; Q:OUT STD_LOGIC); END;
ARCHITECTURE bhv OF mydff IS BEGIN
PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK='1' THEN Q<=D; END IF; END PROCESS; END;
第8页(共11页)
2.下图为某一状态机对应的状态图,试用VHDL语言描述这一状态机。(18分)
班级
学号 其它/0000姓名
其它/10011/1001S0S1
密 封 线 内 不 得 答 题
0/00000/1100其它/1111其它/11001/1111S3S2
参考程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY FSM2 IS
PORT ( clk,reset,in1 : IN STD_LOGIC;
out1 : OUT STD_LOGIC_VECTOR(3 downto 0)); END;
ARCHITECTURE bhv OF FSM2 IS TYPE state_type IS (s0, s1, s2, s3); SIGNALcurrent_ state,next_state: state_type;
第9页(共11页)
BEGIN
班级
学号 P1:PROCESS(clk,reset) 姓名
IF reset = ‘1’ THEN current_state <= s0;
BEGIN
密 封 线 内 不 得 答 题
ELSIF clk='1' AND clk'EVENT THEN
current_state <=next_state; END IF;
END PROCESS; P2:PROCESS(current_state) BEGIN
case current_state is
WHEN s0 => IF in1=‘1’THEN next_state<=s1; ELSE next_state<=s0; END IF;
WHEN s1 => IF in1='0'THEN next_state<=S2; ELSE next_state<=s1; END IF;
WHEN s2 => IF in1='1'THEN next_state<=S3; ELSE next_state<=s2; END IF;
第10页(共11页)
WHEN s3 => IF in1='0'THEN next_state<=S0;
班级 学号 姓名
ELSE next_state<=s3; END IF;
END PROCESS;
end case;
密 封 线 内 不 得 答 题
p3:PROCESS(current_state) BEGIN
case current_state is
WHEN s0 => IF in1=‘1’THEN out1<=“1001”; ELSE out1<=\ END IF; WHEN s1 => IF in1='0'THEN out1<=\ ELSE out1<=\ END IF; WHEN s2 => IF in1='1'THEN out1<=\ ELSE out1<=\ END IF; WHEN s3 => IF in1='1'THEN out1<=\ ELSE out1<=\ END IF; end case; END PROCESS; end bhv;
第11页(共11页)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EDA技术—VHDL版期末试卷(含答案)(2)在线全文阅读。
相关推荐: