Giới thiệu

Flip-flop là mạch logic có khả năng duy trì giá trị đầu ra của nó độc lập với sự thay đổi giá trị đầu vào, tức là bao gồm trạng thái “bộ nhớ”. Đây là phần tử cho phép chuyển đổi từ logic tổ hợp sang logic tuần tự. Có một số loại flip-flop: Phi ổn định, lưỡng ổn định và đơn ổn định. Không ổn định: Là một flip-flop bao gồm 2 trạng thái không ổn định và chuyển đổi tuần hoàn (chu kỳ T) và tự phát từ trạng thái này sang trạng thái khác đến cái khác. Bistable: Có hai trạng thái ổn định. Trong logic, điều này tương đương với trạng thái logic “1” hoặc “0”. Đơn ổn định: Chỉ có một trạng thái ổn định, trạng thái còn lại chỉ là tạm thời. Có hai loại flip-flop: không đồng bộ và đồng bộ. Flip-flop đồng bộ có đầu vào Clock, trong khi flip-flop không đồng bộ thì không. Flip-flop không đồng bộ – Cần gạt RS – Chốt D Flip-flop đồng bộ – Người chơi nhạc rock D – Công tắc JK

Sự khác biệt giữa flip-flop và cổng logic là gì?

Flip-flop là mạch logic có khả năng duy trì giá trị đầu ra của nó độc lập với sự thay đổi giá trị đầu vào, tức là bao gồm trạng thái “bộ nhớ”. Đây là yếu tố cho phép chuyển đổi từ logic tổ hợp sang logic tuần tự.
Một flip-flop thường được cấu thành từ một số cổng logic. Sau đây là một ví dụ với flip-flop D:

Sự khác biệt giữa chốt và khóa là gì?

Sự khác biệt chính giữa flip-flop và latch là flip-flop kiểm tra đầu vào nhưng chỉ thay đổi đầu ra tại những thời điểm được xác định bởi tín hiệu xung nhịp hoặc bất kỳ tín hiệu điều khiển nào khác trong khi latch kiểm tra đầu vào liên tục và phản hồi ngay lập tức với những thay đổi đầu vào.

Flip-flop D

Bây giờ chúng ta sẽ xem xét một flip-flop D với thiết lập lại không đồng bộ. Để thực hiện việc này, chúng tôi sẽ sử dụng dữ liệu đầu vào cho dữ liệu bạn muốn truyền đạt.

Chúng ta cần một đồng hồ (clk) vì nó là một flip-flop đồng bộ. Cuối cùng là hàm reset để truyền dữ liệu từ d đến q hoặc reset flip-flop.

Flip-flop D hoạt động như thế nào?

  • Nếu thiết lập lại là 1 thì đầu ra q sẽ có giá trị là 0.
  • Nếu thiết lập lại là 0, thì chúng ta truyền giá trị đến từ d với q tại mỗi nhịp xung nhịp.
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;
Sau đây là kết quả mô phỏng:
Tích tắc đồng hồ đầu tiên: Đồng hồ ở mức cao, thiết lập lại cũng vậy, do đó tín hiệu đầu vào d không thể truyền vào tín hiệu đầu ra q.

Flip-flop JK

Flip-flop JK là một loại flip-flop hai trạng thái ổn định, nghĩa là nó có hai trạng thái ổn định riêng biệt. Tên “JK” xuất phát từ các chữ cái liên quan đến các cảng nhập cảnh chính của đảo: J và K. Khi J và K có giá trị khác nhau, flip-flop JK sẽ thay đổi trạng thái theo một trình tự được xác định rõ ràng. Nếu J cao (1) và K thấp (0), flip-flop sẽ chuyển sang trạng thái “SET” (1). Nếu J thấp (0) và K cao (1), flip-flop sẽ chuyển sang trạng thái “RESET” (0). Nếu J và K đều cao (1), flip-flop sẽ chuyển đổi, xen kẽ giữa các trạng thái với mỗi xung nhịp.
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; 
	
Sau đây là kết quả mô phỏng: