bpc-los_08 - Metastabilita, VHDL-popis sekv. obvodů
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.
ENTITY register_d_arst IS PORT(
d, clk, arst: IN std_logic;
q, nq: OUT std_logic;
);
END register_d_arst;
Obvod D (register) včetně
asynchronního resetu
Qt = Dt−1
AR D Qt Qt
1
X
0
1
0
0
0
1
0
1
1
0
D
Q
Q
C
AR
C
Příkazy jazyka VHDL mající
souběžný i sekvenční charakter
• Souběžný i sekvenční charakter mohou mít příkazy, které
se mohou vyskytovat jak uvnitř procesů, funkcí a procedur,
tak i mimo ně. Jsou to:
• prosté přiřazovací příkazy,
• volání funkcí a procedur,
• příkazy s klíčovými slovy: ASSERT, REPORT,
Příkazy jazyka VHDL mající
souběžný i sekvenční charakter
• Souběžný i sekvenční charakter mohou mít příkazy, které
se mohou vyskytovat jak uvnitř procesů, funkcí a procedur,
tak i mimo ně. Jsou to:
• prosté přiřazovací příkazy,
• volání funkcí a procedur,
• příkazy s klíčovými slovy: ASSERT, REPORT,
Definice funkce v jazyce
VHDL
Definice funkce v jazyce VHDL
• Funkce představuje, podobně jako proces, blok příkazů
vykonávaných sekvenčně.
• Funkce lze volat z procesů, procedur a jiných funkcí.
FUNCTION jméno_funkce(
[SIGNAL|VARIABLE|CONSTANT] jméno_argumentu_1: [IN] typ;
[SIGNAL|VARIABLE|CONSTANT] jméno_argumentu_2: [IN] typ;
...
)
RETURN typ_návratové hodnoty IS
Definice vnitřních signálů a proměnných;
...
BEGIN Skupina_příkazů_vykonávaných_sekvenčně;
...
RETURN návratová_hodnota;
END FUNCTION jméno_funkce;
Definice funkce v jazyce VHDL
• Funkce představuje, podobně jako proces, blok příkazů
vykonávaných sekvenčně.
• Funkce lze volat z procesů, procedur a jiných funkcí.
FUNCTION jméno_funkce(
[SIGNAL|VARIABLE|CONSTANT] jméno_argumentu_1: [IN] typ;
[SIGNAL|VARIABLE|CONSTANT] jméno_argumentu_2: [IN] typ;
...
)
RETURN typ_návratové hodnoty IS
Definice vnitřních signálů a proměnných;
...
BEGIN Skupina_příkazů_vykonávaných_sekvenčně;
...
RETURN návratová_hodnota;
END FUNCTION jméno_funkce;
Příklad definice funkce v jazyce VHDL
FUNCTION hex_to_7seg(SIGNAL hex: IN std_logic_vector(3 DOWNTO 0))
RETURN std_logic_vector IS
VARIABLE symbol: std_logic_vector(7 DOWNTO 0);
BEGIN
CASE hex IS WHEN X"0" => symbol := "00000000";
WHEN X"1" => symbol := "00000010";
-- Doplnit ostatní řádky
WHEN OTHERS => symbol := "10000110";
END CASE;
RETURN symbol;