资源描述
承诺:我将严格遵守考场纪律,知道考试违纪、作弊的严重性,还知道请他人代考或代他人考者将被开除学籍和因作弊受到记过及以上处分将不授予学士学位,愿承担由此引起的一切后果。
专业 班级 学号 学生签名:
华东交通大学2011—2012学年第一学期考试卷
试卷编号: (A)卷
EDA技术与VHDL课程 课程类别:必
开卷(范围)(教材): 考试日期: 2011.12.13
题号
一
二
三
四
五
六
七
八
九
十
总分
累分人签名
题分
10
20
20
10
20
20
100
得分
考生注意事项: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. 都不对。
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# B. 8#366#
C. 10#169# 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. 状态位直接输出型编码 B. 顺序编码
C. 一位热码编码 D. 以上都不是
得分
评阅人
三、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;
得分
评阅人
四、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 "0000" => LED7S <= "0111111"; -- 20
WHEN "0001" => LED7S <= "0000110"; -- 21
WHEN "0010" => LED7S <= "1011011"; -- 22
WHEN "0011" => LED7S <= "1001111"; -- 23
WHEN "0100" => LED7S <= "1100110"; -- 24
WHEN "0101" => LED7S <= "1101101"; -- 25
WHEN "0110" => LED7S <= "1111101"; -- 26
WHEN "0111" => LED7S <= "0000111"; -- 27
WHEN "1000" => LED7S <= "1111111"; -- 28
WHEN "1001" => LED7S <= "1101111"; -- 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 行号: 9 程序改为:SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0);
错误2 行号: 29 程序改为:这行后添加 when others => null;
得分
评阅人
五、写VHDL程序:(20分)
1.设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用CASE语句来描述该数据选择器MUX的结构体。
library 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;
2. 看下面原理图,写出相应VHDL描述(10分)
LIBARRY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MYCIR IS
PORT ( XIN, CLK : IN STD_LOGIC;
YOUT : OUT STD_LOGIC);
END MYCIR;
ARCHITECTURE ONE OF MYCIR IS
SIGNAL A, B, C;
BEGIN
B <= XIN OR A;
PROCESS (CLK)
BEGIN
IF CLK’EVENT AND CLK = ‘1’ THEN
A <= C;
C <= B;
END IF;
END PROCESS;
YOUT <= C;
END ONE;六、综合题:(20分)
得分
评阅人
(一) 已知状态机状态图如图(a)所示;完成下列各题:
1. 试判断该状态机类型,并说明理由。(2分)
该状态机为moore型状态机,输出数据outa和输入ina没有直接逻辑关系
2. 根据状态图,写出对应于结构图(b),分别由主控组合进程和主控时序进程组成的VHDL有限状态机描述。(10分)
Library ieee;
Use ieee.std_logic_1164.all;
Entity mooreb is
Port (clk, reset : in std_logic;
Ina : in std_logic_vector (1 downto 0);
Outa : out std_logic_vector (3 downto 0) );
End mooreb;
Architecture one of mooreb is
Type ms_state is (st0, st1, st2, st3);
Signal c_st, n_st : ms_state;
Begin
Process (clk, reset)
Begin
If reset = ‘1’ then c_st <= st0;
Elsif clk’event and clk = ‘1’ then c_st <= n_st;
End if;
End process;
Process (c_st)
Begin
Case c_st is
When st0 => if ina = “00” then n_st <= st0;
Else n_st <= st1;
End if;
Outa <= “0101”;
When st1 => if ina = “00” then n_st <= st1;
Else n_st <= st2;
End if;
Outa <= “1000”;
When st2 => if ina = “11” then n_st <= st0;
Else n_st <= st3;
End if;
Outa <= “1100”;
When st3 => if ina = “11” then n_st <= st3;
Else n_st <= st0;
End if;
Outa <= “1101”;
When others => n_st <= st0;
End case;
End process;
End one;
(二)已知一个简单的波形发生器的数字部分系统框图如下图所示
图中lcnt、lrom都是在QuartusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:
ENTITY lcnt IS
PORT
( clock : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END lcnt;
ENTITY lrom IS
PORT
( address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END lrom;
试用VHDL描述该系统的顶层设计(使用例化语句)。(8分)
Library ieee;
Use ieee.std_logic_1164.all;
Entity mysg is
Port (clk : in std_logic;
To_da : out std_logic_vector (9 downto 0) );
End mysq;
Architecture one of mysq is
Signal addr : std_logic_vector (9 downto 0);
Component lcnt
Port (clock : in std_logic;
Q : out std_logic_vector (9 downto 0) );
End component;
Component lrom
Port (address : in std_logic_vector (9 downto 0);
Q : out std_logic_vector (9 downto 0) );
End component;
Begin
U1 : lcnt port map (clock => clk, q => addr);
U2 : lrom port map (address => addr, q => to_da);
End one;
第 9 页 共 8 页
展开阅读全文