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. 以上都不是
1.在程序中存在两处错误,试指出,并说明理由:
14行,TMP和A矢量位宽不一致
19行,CASE语句缺少WHEN OTHERS语句处理剩余条件
2.修改相应行的程序(如果是缺少语句请指出大致的行数):
错误1 行号:9程序改为:SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0);错误2 行号:29 程序改为:这行后添加when others => null;
SEL COUT 00
011011OTHERS
A or
B A xor B A nor B A and B “XX ”
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分)
D
Q
DFF
D
Q DFF
OR
yout
OUTPUT
xin
INPUT
clk
INPUT
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;
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;。