介绍

触发器是一种逻辑电路,它能够独立于输入值的变化而维持其输出的值,即包含“记忆”状态。这是允许从组合逻辑转换到顺序逻辑的元素。 触发器有几种类型:非稳态、双稳态和单稳态。 非稳态:它是一个由 2 个不稳定状态组成的触发器,可以周期性地(周期 T)从一个状态自发切换 到另一个。 双稳态:具有两个稳定状态。从逻辑上讲,这可以理解为逻辑状态“1”或“0”。 单稳态:只有一个稳定状态,另一个状态是暂时的。 触发器有两种类型:异步和同步。同步触发器具有时钟输入,而异步触发器则没有。 异步触发器 – RS摇杆 – D 型闩锁 同步触发器 – 摇杆 D – JK 开关

触发器和逻辑门有什么区别?

触发器是一种逻辑电路,它能够独立于输入值的变化而维持其输出的值,即包含“记忆”状态。这是允许从组合逻辑转换到顺序逻辑的元素。
触发器通常由几个逻辑门组成。 以下是 D 触发器的一个例子:

肘节锁和闩锁之间有什么区别?

触发器和锁存器之间的主要区别在于,触发器检查输入,但仅在时钟信号或任何其他控制信号定义的时间改变输出,而锁存器连续检查输入并立即响应输入变化。

摇杆D

我们现在来看看具有异步复位的 D 触发器。为此,我们将使用数据输入来存储您希望传达的数据。 我们需要一个时钟(clk),因为它是一个同步触发器。最后,重置函数将数据从 d 传递到 q 或重置触发器。

D 触发器如何工作?

  • 如果重置为 1,则输出 q 取值为 0。 如果重置为 0,那么我们在每个时钟周期通过 q 传输来自 d 的值。
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY bascule_D IS
PORT (d, clk, rst: IN STD_LOGIC;
q: OUT STD_LOGIC);
END bascule_D;

ARCHITECTURE comportement OF bascule_D IS
BEGIN
PROCESS (clk, rst)
BEGIN
IF (rst='1') THEN
q <= '0';
ELSIF (clk'EVENT AND clk='1') THEN
q <= d;
END IF;
END PROCESS;
END comportement;
模拟结果如下:
第一个时钟周期:时钟为高,复位也为高,因此输入信号 d 无法传递到输出信号 q。

JK摇杆

JK触发器是一种双稳态触发器,这意味着它具有两个不同的稳定状态。它的名字“JK”取自与其主要入境口岸相关的字母:J 和 K。 当 J 和 K 具有不同的值时,JK 触发器会根据明确定义的序列改变状态。如果 J 为高 (1) 且 K 为低 (0),则触发器将采取“SET”(1) 状态。如果 J 为低(0)且 K 为高(1),则触发器将采取“RESET”(0)状态。如果 J 和 K 都为高电平 (1),则触发器将会切换,并随着每个时钟脉冲在各个状态之间交替。
library ieee;
use ieee.std_logic_1164.all;

entity Bascule is
	port(J,K,Clk,Set, Reset : in std_logic;
	Q, Q_bar : out std_logic);
end Bascule;

architecture bascule_JK of Bascule is 
	signal SIG : std_logic;
	signal JK : std_logic_vector (1 downto 0);
begin
	JK(1) <= J;
	JK(0) <= K;
	process(Clk, Set, Reset)
	begin
	if (Reset = '0'and Set = '0') then
	   SIG <= '0';
	elsif (Reset = '0' and Set = '1') then
	   Sig <= '0';
   elsif (Reset ='1' and Set ='0') then
	Sig <='1'; 
	elsif (Reset = '1' and Set ='1') then
	if (Clk'event and Clk ='0') then 
		case JK is 
			when "00" => SIG <= SIG;
			when "01" => SIG <= '0';
			when "10" => SIG <= '1';
			when "11" => SIG <= not SIG; 
			when others => SIG <= '-';
		end case; 
		else 
			SIG <= SIG;
		end if; 
	end if; 
	end process; 
	Q <= SIG; 
	Q_bar <= not SIG; 
end bascule_JK; 
	
模拟结果如下: