Další příklad kódu ve VHDL pro FGPA. Tentokrát 8bitový klopný obvod typu D. Vše je popsáno v samotném kódu.
D_sim.vhd
library ieee; –deklarace knihovny
use ieee.std_logic_1164.all; –pouziti casti knihovny
entity registr is –zacatek entity, definice vstupu a vystupu (8mi bitovy vstup/vystup)
port
(
vstup : in std_logic_vector (7 downto 0); –8mi bitovy vstup
vstup_clk : in std_logic; –clock/hodiny jako vstup
vstup_rst_n : in std_logic; –nastaveni resetu jako vstup
vystup : out std_logic_vector (7 downto 0) –8mi bitovy vystup
);
end entity registr; –konec entity „registr“
architecture rtl of registr is –zacatek archiektury
begin
process(vstup_clk, vstup_rst_n) –reset aktivni v nule – konstrukce pro asynchronni reset
–sensitiv map – tento proces se provede vzdy se zmenou vstupu clk a rst_n
begin
if(vstup_rst_n = ‚0‘) then –pokud rst_n je roven nule, pak proved
vystup <= „00000000“; –zapis 0 na vystup q
elsif(vstup_clk = ‚1‘ and vstup_clk’event) then –jinak – test nabezne hrany (clk’event event=atribut)
–nebo elsif(rising_edge(clk)) then – zmena na nabezna
–nebo elsif(falling_edge(clk)) then – zmena na dobezna
vystup <= vstup; –zapsani hodnoty pri splneni podminky
end if; –konec podminky
end process; –konec procesu
end; –konec architektury
tb_D_sim.vhd
library ieee; –deklarace knihovny
use ieee.std_logic_1164.all; –pouziti casti knihovny
entity tb_D is –zacatek entity, definice vstupu a vystupu (8mi bitovy vstup/vystup)
end; –konec entity „D_reg“
architecture sim of tb_D is –architektura se musi jmenovat stejne jako entita
component registr is –stejny nazev jako entita v D_sim.vhd
port
(
vstup : in std_logic_vector (7 downto 0); — 8mi bitovy vstup
vstup_clk : in std_logic; –clock/hodiny jako vstup
vstup_rst_n : in std_logic; –nastaveni resetu jako vstup
vystup : out std_logic_vector (7 downto 0) — 8mi bitovy vystup
);
end component;
signal tb_vstup : std_logic_vector (7 downto 0);
signal tb_vstup_clk : std_logic:=’0′;
signal tb_vstup_rst_n : std_logic:=’0′;
signal tb_vystup : std_logic_vector (7 downto 0);
begin
–registr D
dut : registr port map –prirazeni portu registru a signalu v testbenchy
(
vstup => tb_vstup,
vstup_rst_n => tb_vstup_rst_n,
vstup_clk => tb_vstup_clk,
vystup => tb_vystup
);
process
begin
wait for 10ns;
tb_vstup_rst_n <=’0′;
wait for 10ns;
tb_vstup_rst_n <= ‚1‘;
wait for 20ns;
tb_vstup <= „00001111“;
wait for 10ns;
tb_vstup_clk <=’1′;
wait for 10ns;
tb_vstup_clk <=’0′;
wait for 10ns;
tb_vstup <=“00000000″;
wait for 10ns;
tb_vstup_clk <=’1′;
wait for 10ns;
wait;
end process;
end;