VHDL-kieli FPGA-suunnittelussa/D-kiikku
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).