承诺:我将严格遵守考场纪律,知道考试违纪、作弊的严重性,还知道请他人代考或代他人考者将被开除学籍和因作弊受到记过及以上处分将不授予学士学位,愿承担由此引起的一切后果。 华东交通大学2011—2012学年第一学期考试卷 专业 班级 学号 学生签名: 试卷编号: (A)卷 EDA技术与VHDL课程 课程类别:必 开卷(范围)(教材): 考试日期: 2011.12.13 题号 一 二 三 四 五 六 七 八 九 十 总分 累分人 100 签名 题分 10 20 20 10 20 20 得分 考生注意事项:1、本试卷共8页,总分100分,考试时间120分钟。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。 一、名词解释,写出下列缩写的中文含义:(每题2分,共10分) 1. VHDL 超高速集成电路硬件描述语言 2. RTL 寄存器传输级逻辑 3. IP 知识产权模块 4. SOC 片上系统 5. LUT 查找表 得分 评阅人 二、单项选择题(每题2分,共20分) 1. IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为: A 。 A. 软IP; B. 固IP; C. 硬IP; D. 都不是; 得分 评阅人 2. 请指出Altera公司Cyclone系列中的EP1C6Q240C8这个器件是属于 D A. ROM B. GAL C. CPLD D. FPGA 3. 进程中的信号赋值语句,其信号更新是 C 。 A. 按顺序完成; B. 比变量更快完成; C. 在进程的最后完成; D. 都不对。 第 1 页 共 8 页 4. 大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,
正确的是 C 。
A. FPGA是基于乘积项结构的可编程逻辑器件; B. FPGA是全称为复杂可编程逻辑器件;
C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D. 在Altera公司生产的器件中,MAX3000系列属FPGA结构。 5. 以下对于进程PROCESS的说法,正确的是: A
A. 进程语句本身是并行语句
B. 进程内部由一组并行语句来描述进程功能 C. 进程之间可以通过变量进行通信
D. 一个进程可以同时描述多个时钟信号的同步时序逻辑
6. 在VHDL语言中,下列对时钟上升沿检测描述中,错误的是 C 。
A. if clk?event and clk = ?1? then B. if rising_edge(clk) then C. if clk?event and clk = ?0? then D. if not clk?stable and clk = ?1? then
7. 关于VHDL中的数字,请找出以下数字中数值最大的一个: B A. 2#1111_1110# C. 10#169#
B. 8#366# D. 16#F#E1
8. 下列标识符中, B 是不合法的标识符。
A. State0
B. 9moon
C. Not_Ack_0
D. signall
9. 下列语句中,不属于并行语句的是: D
A.进程语句 B.条件信号赋值语句 C.元件例化语句 D.IF语句
10. 状态机编码方式中,其中 C 占用触发器较多,但其实现比较适合FPGA的应用
A. 状态位直接输出型编码 C. 一位热码编码
B. 顺序编码 D. 以上都不是
第 2 页 共 8 页 三、VHDL程序填空:(每空2分,共20分) 下面程序是参数可定制带计数使能异步复位计数器的VHDL描述,试补充完整。 library ieee; use IEEE.std_logic_1164.all; use IEEE. std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity counter_n is generic(width : integer := 8); port(data : in std_logic_vector (width-1 downto 0); load, en, clk, rst : in std_logic; q : out std_logic_vector ( width-1 downto 0)); 得分 评阅人 end counter_n; architecture behave of counter_n is signal count : std_logic_vector (width-1 downto 0); begin process(clk, rst) begin if rst = '1' then count <= others(?0?) ; ―― 清零 elsif clk?event and clk=?1? then ―― 上升沿检测 if load = '1' then count <= data; elsif en = '1' then count <= count + 1; end if; end if; end process; q<=count; end behave; 第 3 页 共 8 页 四、VHDL程序改错:(10分) 仔细阅读下列程序,回答问题 得分 评阅人 LIBRARY IEEE; -- 1 USE IEEE.STD_LOGIC_1164.ALL; -- 2 ENTITY LED7SEG IS -- 3 PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- 4 CLK : IN STD_LOGIC; -- 5 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); -- 6 END LED7SEG; -- 7 ARCHITECTURE one OF LED7SEG IS -- 8 SIGNAL TMP : STD_LOGIC; -- 9 BEGIN -- 10 SYNC : PROCESS(CLK, A) -- 11 BEGIN -- 12 IF CLK'EVENT AND CLK = '1' THEN -- 13 TMP <= A; -- 14 END IF; -- 15 END PROCESS; -- 16 OUTLED : PROCESS(TMP) -- 17 BEGIN -- 18 CASE TMP IS -- 19 WHEN \ -- 20 WHEN \ -- 21 WHEN \ -- 22 WHEN \ -- 23 WHEN \ -- 24 WHEN \ -- 25 WHEN \ -- 26 WHEN \ -- 27 WHEN \ -- 28 WHEN \ -- 29 END CASE; -- 30 END PROCESS; -- 31 END one; 1.在程序中存在两处错误,试指出,并说明理由:
在QuartusII中编译时,提示的错误为: Error (10476):VHDL error at LED7SEG.vhd(14):type of identifier “A” does not agree with its usage at “std_logic” type Error(10313):VHDL Case Statement error at LED7SEG.vhd(19): Case Statement choices must cover all possible values of expression 14行,TMP和A矢量位宽不一致
19行,CASE语句缺少WHEN OTHERS语句处理剩余条件 2.修改相应行的程序(如果是缺少语句请指出大致的行数): 错误1 错误2
行号: 9 程序改为:SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0); 行号: 29 程序改为:这行后添加 when others => null;
第 4 页 共 8 页 五、写VHDL程序:(20分) 1.设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用CASE语句来描述该数据选择器MUX的结构体。 得分 评阅人 SEL(1:0)SEL00COUTA or BA xor BA and BA nor B“XX”
AIN(1:0)BIN(1:0)MUXCOUT(1:0)011011OTHERSlibrary ieee; use ieee.std_logic_1164.all; entity mymux is port(sel : in std_logic_vector(1 downto 0); -- 选择信号输入 ain, bin : in std_logic_vector(1 downto 0); -- 数据输入 cout : out std_logic_vector(1 downto 0)); end mymux; Architecture rtl of mymux is Begin Process (sel, ain, bin) Begin Case sel is when “00” => cout <= ain or bin; when “01” => cout <= ain xor bin; when “10” => cout <= ain and bin; when others => cout <= ain nor bin; End case; End process;
End rtl;
第 5 页 共 8 页