《2022年vhdl参考答案上机练习三:时序逻辑电路设计 .pdf》由会员分享,可在线阅读,更多相关《2022年vhdl参考答案上机练习三:时序逻辑电路设计 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VHDL 与复杂数字系统设计上机实验 3:时序逻辑电路的VHDL 程序设计一、实验目的:1.掌握在 Maxplus II 开发平台上,使用硬件描述语言设计电路的基本操作步骤;2.运用所学 VHDL 的描述语句完成一种时序逻辑电路的设计。二、要点:时序逻辑电路在电路结构上有两个显著特点: 第一,时序电路通常包含组合电路和存储电路 两个组成部分, 而且存储电路是必不可少的。 第二,存储电路的输出状态必须反馈到组合电路的输入端,与输入信号一起,共同决定组合逻辑电路的输出。时序电路的信号变化特点:时序电路以时钟信号为驱动; 电路内部信号的变化 (或输出信号的变化) 只发生在特定的时钟边沿;其他时刻输入
2、信号的变化对电路不产生影响;要点:执行条件的控制;时钟边沿的检测;1、执行条件的控制采用进程描述可以有效控制执行条件,若进程以时钟信号(clk)为唯一敏感信号,则只有当时钟信号变化时,进程才执行;在其他时刻,任何输入信号的变化对电路(进程)不起作用;模版 1:process (clock) -敏感信号表中只有时钟begin if rising_edge(clock) then-监测时钟上升沿,若用falling_edge(clock) -则监测时钟下升沿。end if; end process ; 例:时钟上升沿动作的D 触发器library ieee; use ieee.std_logic_
3、1164.all; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - entity dff1 is port(clk, d: in std_logic; q: out std_logic); end dff1; architecture rtl of dff1 is begin process(clk) begin if (clkevent and clk=1) then q=d; end if; end process; end
4、 rtl; 时序逻辑电路的初始状态应由复位(或清零) 信号来设置, 根据复位信号对时序逻辑电路复位操作的不同,可分为同步复位和异步复位。同步复位:复位信号有效, 并且在给定的时钟边沿到来时, 触发器才被复位。同步复位在以时钟为敏感信号的进程中定义,且用if 语句来描述复位条件。模版 2:process (clock) -敏感信号表中只有时钟信号begin if rising_edge(clock) then-监测时钟边沿if (reset_condition) then -监测同步复位信号的电平值signal_out=reset_value; else signal_out= signal_i
5、n; end if; end if; end process ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 异步复位: 复位信号一旦有效,时序逻辑电路立即回到初始状态。为实现异步复位,进程敏感信号表中时钟信号clk、复位信号 reset同时存在;用 if 语句描述复位条件;在 elsif 段描述时钟边沿的条件。模版 3:process (clock, reset) -敏感信号表中只有时钟和复位信号begin if(rese
6、t_condition) then -监测异步复位信号的电平值elsif rising_edge(clock) then-监测时钟上升沿,若用falling_edge(clock)-则监测时钟下升沿。end if; end process ; 例:异步清零 D 触发器process( clk, clr ) begin if (clr = 0 ) thenq=0; elsif (clkevent and clk=1) then q=d; end if; end process; 注:进程的敏感信号有时也可以采用wait 语句替代。2、时钟边沿的检测为了确保电路状态只在时钟的特定边沿(上升 /下降
7、)发生变化, 需要对时钟边沿进行检测;VHDL 通常采用属性语句检测时钟边沿;与时钟有关的属性语句:clkevent boolean clk 有变化时为 true;clklast_value clk 在变化之前的值;例:上升沿的检测:clkevent and clk=1 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - clkevent and clklast_value=0 ; 在由上升沿导致的进程执行时,上述两个表达式的值
8、都为true;利用这种表达式构成条件语句中的关系判断,就可以保障电路状态在特定边沿变化;三、实验任务:从下列各题中任选一题完成。要求给出完整的VHDL 语言程序,程序应包括:库和包集合说明(必要时) 、实体和结构体;若使用了元件,要给出底层元件的 VHDL 语言描述;对程序进行 编译、调试;对所设计电路进行功能仿真,给出仿真波形文件;进行适当分析。1. 设计一个 D 锁存器,说明它与 D 触发器的区别, 它们的区别具体是怎样在程序中体现的。按照如下引脚框图进行端口说明。1) 程序2) 仿真波形3) 时序分析2. 设计一个16 位的寄存器,带有异步清零、时钟使能控制和输出三态控制功能。各引脚功能
9、如下:CLK: 寄存器的时钟信号;D1.16:输入需寄存的数据;CLKEN: 时钟信号使能,在时钟条件满足的情况下,CLKEN 为高电平时,存储数据 D1.16;CLR :异步清零,高电平有效;OE:输出使能,为高电平时,寄存数据从端口Q1.16输出,否则,端口Q1.16呈高阻态。Q1.16:寄存器数据输出;1) 程序2) 仿真波形(需反映出CLKEN 、OE 信号、 CLR 信号对于电路状态的影响)3) 时序分析(电路工作频率、建立保持时间、延迟时间分析)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
10、 - - - - 第 4 页,共 7 页 - - - - - - - - - 3. 设计一个 4 位二进制计数器74163,它具有同步清零、同步置数、计数控制和进位输出控制功能。各端口功能如下:CLK :时钟信号,上升沿计数;CLRL :同步清零端,低电平有效;LDL :同步置位控制端,低电平有效;ENP:与 ENT 同时为 1时,计数使能;ENT :为 1时,可进行进位;D3.0:计数器置数输入;Q3.0:计数器状态输出;RCO:计数器进位输出。1) 程序2) 仿真波形(需反映出LDL 、ENT 、ENP 、CLRL 对电路状态的影响)3) 时序分析(电路工作频率、建立保持时间、延迟时间分析
11、)四、参考答案:1. D 锁存器library ieee; use ieee.std_logic_1164.all; entity kdlatch is port ( d,clk: in std_logic; q: out std_logic); end kdlatch; architecture beh of kdlatch is begin process(clk,d) begin if clk=1 then q=d; end if; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
12、第 5 页,共 7 页 - - - - - - - - - end process; end beh; 2. 16位寄存器library ieee; use ieee.std_logic_1164.all; entity kreg16 is port ( clk,clken,oe,clr: in std_logic; d:in std_logic_vector(1 to 16); q: out std_logic_vector(1 to 16); end kreg16; architecture beh of kreg16 is signal iq: std_logic_vector(1 to
13、 16); begin process ( clk,clr,oe,iq) begin if clr=1 then iq0); elsif clkevent and clk=1 then if clken = 1 then iq=d; end if; end if ; if oe=1 then q = iq; else qZ); end if; end process ; end beh; 3. 4 位二进制计数器 74163 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity k7
14、4163 is port ( clk, clrl, ldl, enp, ent: in std_logic; d: in std_logic_vector(3 downto 0); q: out std_logic_vector(3 downto 0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - rco: out std_logic ); end k74163; architecture beh of k74163 is
15、signal iq: std_logic_vector(3 downto 0); begin process (clk, ent) begin if clkevent and clk=1 then if clrl=0 then iq0); elsif ldl=0 then iq=d; elsif (ent and enp)=1 then iq=iq+1; end if; end if; if (iq=15) and (ent=1) then rco=1; else rco=0; end if; q=iq; end process; end beh; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -