Indledning

En flip-flop er et logisk kredsløb, der er i stand til at opretholde værdierne af dets udgange uafhængigt af ændringer i inputværdier, dvs. omfattende en “hukommelses”-tilstand. Dette er det element, der tillader overgangen fra kombinationslogik til sekventiel logik.

Der er flere typer flip-flops: Astabile, Bistable og Monostable.

Astabil: Det er en flip-flop, der består af 2 ustabile tilstande, og som skifter periodisk (periode T) og spontant fra én tilstand
til den anden.

Bistabil: Har to stabile tilstande. I logik oversættes dette til de logiske tilstande “1” eller “0”.

Monostabil: Med kun én stabil tilstand, er den anden tilstand midlertidig.

Der er to typer flip-flops: asynkrone og synkrone. Synkrone flip-flops har en Clock-indgang, hvilket ikke er tilfældet for asynkrone flip-flops.

Asynkrone flip-flops
– RS rockeren
– D-låsen
Synkrone flip-flops
– Rockeren D
– JK-kontakten

Hvad er forskellen mellem en flip-flop og en logisk gate?

En flip-flop er et logisk kredsløb, der er i stand til at opretholde værdierne af dets udgange uafhængigt af ændringer i inputværdier, dvs. omfattende en “hukommelses”-tilstand. Dette er det element, der tillader overgangen fra kombinationslogik til sekventiel logik.
En flip-flop er ofte sammensat af flere logiske porte. Her er et eksempel med D-flip-flop:

Hvad er forskellen mellem en vippe og en lås?

Den største forskel mellem en flip-flop og en latch er, at flip-flop’en kontrollerer inputs, men kun ændrer output på tidspunkter, der er defineret af clock-signalet eller et hvilket som helst andet styresignal, hvorimod låsen kontrollerer inputs kontinuerligt og reagerer øjeblikkeligt på input-ændringer.

Flip-flop D

Vi vil nu se på en D-flip-flop med asynkron nulstilling. Til dette vil vi bruge et datainput for de data, du ønsker at kommunikere. Vi har brug for et ur (clk), fordi det er en synkron flip-flop. Til sidst reset-funktionen til at sende data fra d til q eller for at nulstille flip-floppen.

Hvordan fungerer D flip-flop?

  • Hvis nulstillingen er 1, tager udgangen q værdien af ​​0.
  • Hvis nulstillingen er 0, transmitterer vi værdien, der kommer fra d med q ved hvert klokkestik.
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;
Her er resultatet i simulering:
1. urtrik: Uret er højt, nulstillingen også, så indgangssignalet d kan ikke passere ind i udgangssignalet q.

Flip-flop JK

JK flip-flop er en type bistabil flip-flop, hvilket betyder, at den har to distinkte stabile tilstande. Dens navn, “JK,” kommer fra bogstaverne forbundet med dets vigtigste indgangshavne: J og K. Når J og K har forskellige værdier, skifter JK flip-flop tilstand i henhold til en veldefineret sekvens. Hvis J er høj (1) og K er lav (0), vil flip-flop’en tage tilstanden “SET” (1). Hvis J er lav (0) og K er høj (1), vil flip-floppen tage tilstanden “RESET” (0). Hvis J og K begge er høje (1), vil flip-floppen skifte, skiftende mellem tilstande med hver clock-impuls.
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; 
	
Her er resultatet i simulering: