Johdanto

Flip-flop on logiikkapiiri, joka pystyy ylläpitämään lähtönsä arvot tuloarvojen muutoksista riippumatta, eli joka käsittää “muistitilan”. Tämä on elementti, joka mahdollistaa siirtymisen yhdistelmälogiikasta peräkkäiseen logiikkaan.

Varvastossuja on useita tyyppejä: Astable, Bstabiili ja Monostable.

Vakaa: Se on flip-flop, jossa on 2 epävakaata tilaa ja joka vaihtaa ajoittain (jakso T) ja spontaanisti yhdestä tilasta
toiselle.

Bstabiili: Kaksi vakaata tilaa. Logiikassa tämä tarkoittaa loogisia tiloja “1” tai “0”.

Monostabiili: Kun on vain yksi vakaa tila, toinen tila on väliaikainen.

Flip-flopseja on kahta tyyppiä: asynkroniset ja synkroniset. Synkronisissa kiikkuissa on kellotulo, mikä ei päde asynkronisiin kiikkuihin.

Asynkroniset varvastossut
– RS-rokkari
– D-salpa
Synkroniset varvastossut
– rokkari D
– JK-kytkin

Mitä eroa on flip-flopilla ja logiikkaportilla?

Flip-flop on logiikkapiiri, joka pystyy ylläpitämään lähtönsä arvot tuloarvojen muutoksista riippumatta, eli joka käsittää “muistitilan”. Tämä on elementti, joka mahdollistaa siirtymisen yhdistelmälogiikasta peräkkäiseen logiikkaan.
Flip-flop koostuu usein useista logiikkaporteista. Tässä on esimerkki D-flip-flopista:

Mitä eroa on kytkimellä ja salvalla?

Suurin ero flip-flopin ja salvan välillä on, että kiikku tarkistaa tulot, mutta muuttaa lähtöä vain kellosignaalin tai muun ohjaussignaalin määritteleminä aikoina, kun taas salpa tarkistaa tulot jatkuvasti ja reagoi välittömästi tulon muutoksiin.

Flip-flop D

Tarkastelemme nyt D-kiikkua asynkronisella nollauksella. Tätä varten käytämme tietosyöttöä tiedoille, jotka haluat viestiä. Tarvitsemme kellon (clk), koska se on synkroninen flip-flop. Lopuksi reset-toiminto siirtää tiedot d:stä q:hen tai nollata flip-flop.

Miten D-flip-flop toimii?

  • Jos nollaus on 1, lähtö q saa arvon 0.
  • Jos nollaus on 0, lähetämme d:stä tulevan arvon q:lla jokaisen kellon tikityksen yhteydessä.
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;
Tässä on simulaation tulos:
1. kellon tikitys: Kello on korkea, nollaus myös, joten tulosignaali d ei pääse kulkemaan lähtösignaaliin q.

Flip-flop JK

JK-flip-flop on eräänlainen bistabiili flip-flop, mikä tarkoittaa, että sillä on kaksi erillistä vakaata tilaa. Sen nimi “JK” tulee kirjaimista, jotka liittyvät sen tärkeimpiin tuloportteihin: J ja K.

Kun J:llä ja K:llä on eri arvot, JK-kiikku muuttaa tilaa tarkasti määritellyn sekvenssin mukaisesti. Jos J on korkea (1) ja K on alhainen (0), flip-flop siirtyy “SET” (1) -tilaan. Jos J on alhainen (0) ja K on korkea (1), flip-flop siirtyy “RESET” (0) -tilaan. Jos J ja K ovat molemmat korkeita (1), flip-flop vaihtuu vuorotellen tilojen välillä jokaisen kellopulssin kanssa.

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; 
	
Tässä on simulaation tulos: