厦门市建设局官方网站,做网站需不需要服务器,深圳企业信息查询网,网址你懂我意思正能量晚上免费软件下载目录 触发器#xff1a;
D触发器#xff1a;
触发器的VHDL描述#xff1a;
触发器的仿真波形如下#xff1a;编辑
时钟边沿检测的三种方法#xff1a;
方法一:
方法二#xff1a;
方法三#xff1a;
带有Q非的D触发器#xff1a;
带有Q非的D触发器的描述
D触发器
触发器的VHDL描述
触发器的仿真波形如下编辑
时钟边沿检测的三种方法
方法一:
方法二
方法三
带有Q非的D触发器
带有Q非的D触发器的描述
JK触发器
JK触发器
JK触发器的VHDL描述
T触发器
真值表:
T触发器
T触发器的VHDL描述: 触发器
触发器是指边沿触发的寄存器常见的有D型JK型T型。在描述触发器前要注意时钟上升沿的描述 D触发器
D触发器是最常用的触发器几乎所有的逻辑电路都可以描述成D触发器与组合逻辑电路 触发器的VHDL描述 Library ieee; Use ieee.std_logic_1164.all; Entity D_FF1 is port ( D, clk: in std_logic; Q: out std_logic); End D_FF1; Architecture behav of D_FF1 is Begin --方法一 process(clk) begin if ( clk’s event and clk‘1’) then QD; end if; end process; End behav; --方法二 process begin wait until (clk‘1’) ; --等同于 wait until clk’event and clk‘1’ QD; end process; End behav; 方法三 process(clk) begin if (clk‘1’) then QD; --利用进程启动特性产生对clk的边沿检测 end if ; end process; end behav; 触发器的仿真波形如下
当时钟上升沿到来时把D的值赋给Q之后保持不变。到下一个时钟上升沿到来时再次把D的值赋给Q。 时钟边沿检测的三种方法
方法一: 上升沿clock’ event and clock‘1’ 下降沿clock’ event and clock‘0’;
注意if clock’ event and clock‘1’语句后面不存在else分支。当clock为std_logic类型时也可以利用 if rising_edge(clk)或If falling_edge(clk)进行时钟边沿检测。
方法二 利用WAIT语句启动进程检测colck的上升沿 方法三
使用PROCESS语句和IF语句相结合实现。当colck发生跳变的时候启动PROCESS进程而在执行IF语句时满足clock‘1’时才对Q进行赋值更新所以相当于clock发生跳变且跳变为‘1’时将D赋给Q实际上就是D出发器的描述。 带有Q非的D触发器
由下图可知与D触发器相比该触发器多了Qbar与低电平有效的异步复位信号 带有Q非的D触发器的描述 Architecture sig of D_FF is signal state: std_logic ; Begin process( clock, reset) begin if (reset‘0’) then state‘0’; else if rising_edge(clock) then stateD; end if; end process; Qstate; Qbarnot state ; End sig; Architecture var of D_FF is Begin process(clock, reset) variable state: std_logic ; begin if (reset‘0’) then state:‘0’; elsif rising_edge(clock) then state:D; end if; Qstate; Qbarnot state; end process; End var; 当state定义为变量时其有效范围在process内。因此Q和Q非的赋值语句只能放在process里面。 JK触发器
真值表: JK触发器 JK触发器的VHDL描述 Entity JK_FF is port ( J, K: in std_logic; clock,reset:in std_logic; Q, Qbar : out std_logic ); End JK_FF; Architecture behav of JK_FF is signal state : std_logic ; Begin process( clock, reset) is variable jk: std_logic_vector(1 downto 0); begin jk:JK; if (reset‘0’) then state‘0’; elsif rising_edge(clock) then case jk is when “11” statenot state; when “10” state‘1’; when “01” state‘0’; when others null; end case; end if; end process; Qstate; Qbarnot state ; end behav; CASE语句要完整,所以在CASE JK的时候要加when others null; T触发器
真值表: T触发器 T触发器的VHDL描述: Entity T_FF is port ( T, clock, reset : in std_logic ; Q, Qbar : out std_logic ); End T_FF; Architecture behav of T_FF is Begin process(clock, reset) variable state: std_logic ; begin if (reset ‘0’) then state:‘0’; elsif rising_edge(clock) then if T‘1’then state : not state; end if; end if ; Qstate; Qbar not state; end process; End behav ;