当前位置:文档之家› 浙江师范大学EDA试题(11)

浙江师范大学EDA试题(11)

浙江师范大学《EDA技术与VHDL语言》考试卷(A卷)考试类别考试使用学生学院 1专业本科考试时间分钟出卷时间 201年月日说明:考生应将全部答案都写在答题纸上,否则作无效处理。

一、填空题(根据要求在空格处填写合适语句与波形,每格2分,共20分)1. 以下为用状态机方法描述的JK触发器。

并经仿真,得到其波形,请按程序注释要求完成空格中的程序,并绘制按在图1所示输入波形时输出Q的仿真结果波形。

library IEEE;use IEEE.STD_LOGIC_1164.ALL;ENTITY JK_fsm IS --实体描述PORT ( clk, j, k, rest : IN STD_LOGIC;Q, QB : OUT STD_LOGIC );END JK_fsm;ARCHITECTURE JK_ff OF (1)IS --实体描述TYPE FSM_ST IS (s0, s1);SIGNAL states: (2); --状态机信号定义SIGNAL QT : STD_LOGIC;BEGINPROCESS( (3) ) --进程的敏感信号BEGINIF ( rest='1' ) THENstates <= S0;ELSIF( (4) ) THEN --触发器为上升沿有效CASE states ISWHEN S0 => IF ( (5) ) THEN --状态转换条件states <= S1;else states <= S0;END IF;WHEN S1 => IF ( (6) ) THEN --状态转换条件states <= S0;else states <= S1;END IF;(7) ; --状态转换条件END IF;END PROCESS;WITH (8) SELECT --根据状态信号赋值QT <= '0' when S0 ,'1' when others ;Q <= QT ;QB <= (9) ; --给输出信号赋值END JK_ff;restclkjkQ(10)图1 JK触发器的仿真图二、改错题(对操作过程中的错误进行改正,每处4分,共16分)1. 以下VHDL程序为一个具有三态输出的寄存器,存放在E:/EDAT/buffer/, 文件名为tri_register.v, 编译过程中发现几个错误提示(每一提示对应一个错误),请你指出错误原因,并加以改正。

library IEEE; --1use IEEE.STD_LOGIC_1164.ALL; --2ENTITY tri_register IS --3 PORT ( --4 clkr : IN bit; --5CE, OE : IN bit; --6DATA_IN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --7DATA_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --8--DATA_exp : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) --9); --10 END tri_register; --11ARCHITECTURE rtl OF tri_register IS --12 SIGNAL DATA_t : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --13 BEGIN --14P1: process (clkr, CE) --15 Begin --16if (CE = '0') then --17DATA_t <= "ZZZZZZZZ"; --18elsif (clkr'event and clkr='1') then --19if (OE = '0') then --20DATA_t <= "ZZZZZZZZ" ; --21Else --22DATA_t <= DATA_IN; --23end if; --24end if; --25 end if; --26end process; --27DATA_out <= DATA_t; --28 end rtl; --29提示一Error (10170): Verilog HDL syntax error at tri_register.v(1) near text ";"; expecting ".", or an identifier, or "*", or "/"提示二Error (10500): VHDL syntax error at tri_register.vhd(10) near text ")"; expecting an identifier,or "constant", or "file", or "signal", or "variable"Error (10500): VHDL syntax error at tri_register.vhd(14) near text "BEGIN"; expecting an identifier ("begin" is a reserved keyword), or "constant", or "file", or "signal", or "variable"提示三Error (10500): VHDL syntax error at tri_register.vhd(13) near text "out"; expecting an identifier ("out" is a reserved keyword), or a string literal提示四Error (10500): VHDL syntax error at tri_register.vhd(26) near text "if"; expecting "process"三、分析题(阅读所给程序,按要求回答问题,每小题12分,共36分)1. 以下为8*8点阵显示的扫描VHDL程序。

阅读程序后,回答有关问题。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan_8b ISPORT( CLK : IN STD_LOGIC;COM : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END scan_8b;ARCHITECTURE art OF scan_8b ISconstant DATA0 : std_logic_vector(7 downto 0) :=x"00";constant DATA1 : std_logic_vector(7 downto 0) :=x"7E";constant DATA2 : std_logic_vector(7 downto 0) :=x"40";constant DATA3 : std_logic_vector(7 downto 0) :=x"40";constant DATA4 : std_logic_vector(7 downto 0) :=x"7E";constant DATA5 : std_logic_vector(7 downto 0) :=x"40";constant DATA6 : std_logic_vector(7 downto 0) :=x"7E";constant DATA7 : std_logic_vector(7 downto 0) :=x"00";SIGNAL CNT :STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL segt :STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINp1: PROCESS (CLK)BEGINIF CLK'EVENT AND CLK='1' THENCNT<=CNT+'1';END IF;END PROCESS p1;P2: PROCESS(CNT)BEGINCASE CNT ISWHEN "000" => segt <= DATA0; COM<="11111110";WHEN "001" => segt <= DATA1; COM<="11111101";WHEN "010" => segt <= DATA2; COM<="11111011";WHEN "011" => segt <= DATA3; COM<="11110111";WHEN "100" => segt <= DATA4; COM<="11101111"; WHEN "101" => segt <= DATA5; COM<="11011111"; WHEN "110" => segt <= DATA6; COM<="10111111"; WHEN "111" => segt <= DATA7; COM<="01111111";WHEN OTHERS=> segt <="00000000"; COM<="11111111"; END CASE;END PROCESS p2; SEG <= segt ; end art;问1) 为保证显示无明显闪烁,扫描频率应高于25Hz ,则输入时钟频率至少应取多少?问2) 如果显示与CPLD 连接如图2所示,则显示的图形是什么?问3) 进程P2中,完成了什么功能? 问4) 实验时想换一个显示图案,应该修改程序中哪部分?并写出数字6的字型和编码。

相关主题