bpc-los_10 - Greyův_C, tristate IO, simulace, ošetření metastability
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
begin
B_CNT_UUT : b_cnt
port map (
RST => rst,
CLK => clk,
EN => en,
CNT_OUT => cnt_out);
Programovatelná hradlová pole typu FPGA a jazyk VHDL
CLK_GEN_PROC : process
begin
wait for 10 ns;
clk <= not clk;
end process;
Alternativně clk <= not clk after 10 ns;
RST_GEN_PROC : process
begin
en <= '1';
wait for 60 ns;
rst <= '0';
wait;
end process;
end Behavioral;
Programovatelná hradlová pole typu FPGA a jazyk VHDL
• wait; -- čeká do nekonečna• wait for time s;
-- čeká specifickou dobu v sekundách
• wait on list; -- čeká na událost v seznamu proměnných -
ekvivalent senzitivity listu
• wait until condition; -- čeká dokud nebude podmínka
splněna (true)
• wait until A = ‘1’; Ekvivalent:
l1_loop : loop
wait on A;
exit when A = ‘1’;
end loop;
wait on A, B until CLK = ‘1’;
-- Hodí se
A <= ‘1’ after 10 ns,
‘0’ after 20 ns,
‘Z’ after 20 ns;
Programovatelná hradlová pole typu FPGA a jazyk VHDL
Detekce změn na zájmových signálech přicházejících z různých časových domén:
1) Vše pracuje na jedněch hodinách a je splněn setup a hold time
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity clk_sync is
port (
CLK : in
std_logic;
D_IN : in
std_logic;
D_IN_FE : out
std_logic;
D_IN_RE : out
std_logic;
D_IN_BE : out
std_logic
);
end clk_sync;
architecture Behavioral of clk_sync is
signal d_in_d : std_logic := '0';
begin
DELAY_PROC : process(clk)
begin
if rising_edge(CLK) then
d_in_d <= D_IN;
end if;
end process;
D_IN_FE <= '1' when D_IN = '0' and d_in_d = '1' else '0';
D_IN_RE <= '1' when D_IN = '1' and d_in_d = '0' else '0';
D_IN_BE <= D_IN xor d_in_d;
end Behavioral;
Programovatelná hradlová pole typu FPGA a jazyk VHDL