long /= ‘1’long = ‘1’start_timer <= ‘0’;S0H路通行h_light <= “00”;v_light <= “11”;start_timer <= ‘1’;short = ‘1’start_timer <= ‘0’;S1H路黄灯short /= ‘1’h_light <= “01”;v_light <= “11”;start_timer <= ‘1’;h_light <= “11”;v_light <= “01”;start_timer <= ‘1’;S3V路黄灯short /= ‘1’h_light <= “11”;v_light <= “00”;start_timer <= ‘1’;short = ‘1’start_timer <= ‘0’;S2V路通行long = ‘1’start_timer <= ‘0’;long /= ‘1’
图d Controller模块状态迁移图
问题3:根据图b的系统模块结构,完成整个交通灯电路顶层模块VHDL设计。
library ieee;
use ieee.std_logic_1164.all;
entity jtd is port ( clk, reset : in std_logic; h_light, v_light : out std_logic_vector(1 downto 0) ); end jtd;
问题4:在图e所示的交通灯顶层模块仿真波形图中完成输出信号h_light、v_light和controller中状态机当前状态信号c_s的仿真波形。
图e 交通灯仿真波形图
2、根据如下所示状态图及其状态机结构图,回答问题
ina=\ ina=\ ina=\ ina /= \S0 S1 ina=\ ina=\ ina=\ outa=\ outa=\ ina=\ ina=\ S2 ina /= “011” S3 (a) CLK RESET CLK RESET ina FSM outa ina REG SIGNAL1 SIGNAL2 COM outa (b) (c)
(1)试判断该状态机类型,并说明理由。
(2)请问如何消除状态机输出信号毛刺?试列出至少两种方法,并说明理由。 (3)试由b、c两图中任选一图写出其完整的VHDL程序。
(4)已知一个简单的波形发生器的数字部分系统框图如下图所示:
图中DOWNCNT、MYROM都是在MAX+PlusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下: ENTITY DOWNCNT IS PORT ( clock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) ); END DOWNCNT; ENTITY myrom IS PORT ( address q ); : IN STD_LOGIC_VECTOR (5 DOWNTO 0); : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) END myrom; 试用VHDL描述该系统的顶层设计(使用例化语句)。 3、已知状态机状态图如图(a)所示;完成下列各题:
(1)试判断该状态机类型,并说明理由。
(2)根据状态图,写出对应于结构图(b),分别由主控组合进程和主控时序进程组成的VHDL有限状态机描述
(3) 若已知输入信号如下图所示,分析状态机的工作时序,画出该状态机的状态转换值
(current_state)和输出控制信号(outa);
(4) 若状态机仿真过程中出现毛刺现象,应如何消除;试指出两种方法,并简单说明其
原理。
4、用VHDL设计两层升降平台控制器
图a是一个两层的升降平台示意图,一层和二层各有一个按钮用来呼叫升降机。
图a 两层升降平台示意图
对应图a的升降平台控制器,拟用VHDL语言设计一个电路模拟其控制逻辑,图b为该VHDL电路的设计模块图。
doorupdownencnt100coutelev222clkrstcallarr
图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; -- 时钟、使能信号 COUT : OUT STD_LOGIC ); -- 溢出信号
END CNT100;
问题1,请完成cnt100模块的VHDL设计(实体部分已给出,不用写),参考的仿真波形如图c所示。
图c cnt100仿真波形图
问题2,以下是elev2模块的VHDL描述:请根据elev2的VHDL描述画出其状态迁移图。
library ieee;
use ieee.std_logic_1164.all; entity elev2 is port ( clk, rst : in std_logic; -- 时钟、复位信号 cout : in std_logic; -- 定时溢出信号 call : in std_logic_vector(2 downto 1); -- 呼叫信号 arr : in std_logic_vector(2 downto 1); -- 到达信号 door : out std_logic; -- 门控信号,低电平开门 up : out std_logic; -- 上升信号 down : out std_logic; -- 下降信号 en : out std_logic); -- 延时计数清零、使能信号 end elev2;
architecture behav of elev2 is constant CL1 : std_logic_vector(2 downto 0) := \一楼关门 constant OP1 : std_logic_vector(2 downto 0) := \一楼开门 constant UP1 : std_logic_vector(2 downto 0) := \一楼上升 constant DN2 : std_logic_vector(2 downto 0) := \二楼下降 constant CL2 : std_logic_vector(2 downto 0) := \二楼关门 constant OP2 : std_logic_vector(2 downto 0) := \二楼开门 signal control : std_logic_vector(2 downto 0); -- 状态控制信号 begin door <= not control(2); up <= control(1); down <= control(0); process (clk, rst, arr, call) variable ven : std_logic; begin if rst = '1' then control <= CL1; elsif clk'event and clk = '1' then case control is when CL1 => if cout = '1' then -- 关门已完毕 if call(1) = '1' then control <= OP1; en <= '0'; elsif call(2) = '1' then control <= UP1; en <= '1'; else control <= CL1; en <= '1'; end if; else control <= CL1; en <= '1'; end if; when OP1 => if cout = '1' then -- 开门已完毕 if call(1) = '1' then control <= OP1; en <= '1'; else control <= CL1; en <= '0'; end if; else control <= OP1; en <= '1'; end if; when UP1 => if arr(2) = '1' then control <= CL2; else control <= UP1; end if; when DN2 => if arr(1) = '1' then control <= CL1; else control <= DN2; end if; when CL2 => if cout = '1' then -- 关门已完毕 if call(2) = '1' then control <= OP2; en <= '0';
elsif call(1) = '1' then control <= DN2; en <= '1'; else control <= CL2; en <= '1'; end if; else control <= CL2; en <= '1'; end if; when OP2 => if cout = '1' then -- 开门已完毕 if call(2) = '1' then control <= OP2; en <= '1'; else control <= CL2; en <= '0'; end if; else control <= OP2; en <= '1'; end if; when others => control <= CL1; end case; end if; end process; end behav;
问题3,根据图b所示升降平台模块图,写出升降平台控制器ELEV_TOP的VHDL顶层描述:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EDA复习题练习(2)在线全文阅读。
相关推荐: