EDA期末考试题06(最新整理)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SEL
00
01
10
11 OTHERS
COUT A or B A xor B A and B A nor B “XX”
五、阅读下列 VHDL 程序,画出相应RTL图:(10 分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY three IS
PORT
(
clk,d : IN STD_LOGIC;
dout : OUT STD_LOGIC );
END;
ARCHITECTURE bhv OF three IS
SIGNAL tmp: STD_LOGIC;
BEGIN
P1: PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
Tmp <= d;
dout <= tmp;
END IF;
END PROCESS P1;
END bhv;
六、写 VHDL 程序:(20 分)
1.数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面四种方式中的两种来描述该数据选择器MUX 的结构体。
SEL(1:0)
(a) 用if 语句。(b) 用case 语句。(c) 用when else 语句。(d) 用with select 语句。
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 one of mymux is
Begin
Process (sel, ain, bin)
Begin
If sel = “00” then cout <= ain or bin;
Elsif sel = “01” then cout <= ain xor bin;
Elsif sel = “10” then cout <= ain and bin;
Else cout <= ain nor bin;
End if;
End process;
End one;
Architecture two 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 two;
2.看下面原理图,写出相应VHDL 描述
AIN(1:0)
BIN(1:0) MUX
COUT(1:0)
Library ieee;
Use ieee.std_logic_1164.all;
Entity mycir is
Port (ain , bin , clk : in std_logic;
Cout : out std_logic);
End mycir;
Architecture one of mycir is
Signal tb, tc;
begin
Process (clk) begin
If clk’event and clk = ‘1’ then
tb <= bin;
end if;
End process;
Process (clk, tc) begin
If clk = ‘1’ then cout <= tc;end if;
End process;
Tc <= ain xor tb;
End one;
elev2
cnt100 七、综合题(20 分)
用 VHDL 设计两层升降平台控制器
图 a 是一个两层的升降平台示意图,一层和二层各有一个按钮用来呼叫升降机。
问题 1,请完成 cnt100 模块的 VHDL 设计(实体部分已给出,不用写),参考的仿真波形如图 c 所示。
Architecture one of cnt100 is Begin
Process (clk, en)
图 c cnt100 仿真波形图
图 a 两层升降平台示意图
对应图 a 的升降平台控制器,拟用 VHDL 语言设计一个电路模拟其控制逻辑,图 b 为该 VHDL 电路的设计模块图。
Variable q : std_logic_vector (7 downto 0); Begin
If en = ‘0’ then q := (others => ‘0’);
Elsif clk’event and clk = ‘1’ then q := q + 1; End if;
If q < “01100100” then cout <= ‘0’; Else cout <= ‘1’; End if; End process; End one;
door up down
en
cout
2
2
clk rst
call arr
图 b 两层升降平台控制器设计模块图
图 b 中的 cnt100 模块用来控制升降台开关门延时,elev2 为升降平台状态控制器。升降台闸门由打开到
关闭或由关闭到打开时,elev2 模块向 cnt100 模块输出一个 en 计数使能信号(高电平有效)。cnt100 模块计数溢出(≥100)时 cnt100 输出 cout 信号为高电平,同时 cnt100 计数停止。
cnt100 模块的实体描述如下所示:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT100 IS
PORT ( CLK, EN : IN STD_LOGIC; -- 时钟、使能信号