VHDL-kieli FPGA-suunnittelussa/D-kiikku

Wikikirjastosta

D-kiikku[muokkaa | muokkaa wikitekstiä]

D-kiikun nimi on johdettu sanasta delay eli viive. D-kiikulla on datatulo D ja kellotulo CLK. D-tulon arvo kopioituu kiikun tilaksi kellon aktiivisella reunalla. Q on kiikun tila- eli lähtösignaali. D-kiikun tila voi olla aktiivinen nousevalla tai laskevalla reunalla. Ylempi piirrosmerkki kuvaa D-kiikkua, joka on aktiivinen nousureunalla. Alemmassa piirrosmerkissä kellotulo on komplementoitu, eli sen aktiivinen arvo on laskureuna. Tällöin kellotulon eteen piirretään negaatioympyrä, kuten alemmassa piirrosmerkissä.

D-kiikku VHDL-kielellä toteutettuna[muokkaa | muokkaa wikitekstiä]

Seuraavassa on esitettynä kellopulssin nousevalla reunalla aktiivisen D-kiikun kuvaus VHDL-kielellä.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity D_FF_VHDL is
   Port(D: in std_logic; -- datatulo
 	Reset: in std_logic; -- nollaustulo
 	Clock_enable: in std_logic; -- kellon sallintatulo
        Clock: in std_logic; -- kellotulo
        Output: out std_logic); -- lähtö
end D_FF_VHDL;
 
architecture Behavioral of D_FF_VHDL is
begin
   process (Clock) -- Prosessi suoritetaan kun Clock muuttuu
   begin
      if Clock'event and Clock='1' then -- Kellopulssin nousureuna. 
                                        -- Clock`event tarkoittaa sitä, että kellosignaali on muuttunut.   
         if Reset='1' then -- Nollaus kun Reset on 1   
            Output <= '0'; -- Output:in arvo on 0 kun reset on 1.
         elsif Clock_enable ='1' then -- Kellon sallintatulon on oltava 1, jotta Output saa arvon.
            Output <= D; -- Output saa arvoksi D:n arvon.
         end if;
      end if;
   end process;
end Behavioral;

D-kiikun aikakaavio[muokkaa | muokkaa wikitekstiä]

Kuvassa on yllä olevan VHDL-kielen mukaisen D-kiikun aikakaavio. Aikakaaviosta voi nähdä piirin toiminnan kannalta merkittävät tulosignaalien (D, Reset, Clock_enable ja Clock) aikariippuvuudet sekä piirin lähtösignaalin (Output). Aikakaaviosta huomaa myös hyvin, kuinka D-kiikku tarvitsee clock_enable (kellon sallintatulon) toimiakseen(Clock_enble =`1´ then Output <= D).