bpc-los_09 - Posuv. registry, VHDL-implementace 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.
• Pokud v daném běhu procesu nezměníme hodnotu signálu,
hodnota zůstává zachována (tzv.
implicitní paměť), což
budeme využívat.
• Neplatí, že sekvenční příkazy se používají pouze pro
modelování sekvenčních obvodů. Lze s nimi realizovat i
obvody kombinační!
• Příkazy uváděné uvnitř procesu:
• příkazy s klíčovými slovy: (IF-THEN-ELSIF-ELSE),
• příkazy s klíčovými slovy: (CASE-WHEN),
• příkazy cyklů a příkazy pro jejich řízení: (LOOP, NEXT, EXIT),
příkaz NULL.
Opakování předchozích znalostí 3/3
• Podpora jazyka VHDL pro modelování sekvenčních obvodů:
• Sekvenční charakter příkazů (sequential statements).
• Pokud v daném běhu procesu nezměníme hodnotu signálu,
hodnota zůstává zachována (tzv.
implicitní paměť), což
budeme využívat.
• Neplatí, že sekvenční příkazy se používají pouze pro
modelování sekvenčních obvodů. Lze s nimi realizovat i
obvody kombinační!
• Příkazy uváděné uvnitř procesu:
• příkazy s klíčovými slovy: (IF-THEN-ELSIF-ELSE),
• příkazy s klíčovými slovy: (CASE-WHEN),
• příkazy cyklů a příkazy pro jejich řízení: (LOOP, NEXT, EXIT),
příkaz NULL.
• Definice funkce jako dalšího možného bloku se sekvenčním
vykonáváním příkazů, definice pomocí klíčových slov:
(FUNCTION, RETURN, END FUNCTION).
Opakování předchozích znalostí 3/3
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
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
ARCHITECTURE Behavioral OF register_d_arst IS
BEGIN PROCESS (clk, arst) -- Signál clk nebo arst spouští proces
BEGIN
IF (arst = '1') THEN q <= '0'; nq <= '1'; -- resetujeme
ELSIF rising_edge(clk) THEN -- funkce ze std_logic_1164
q <= d;
nq <= NOT d;
END IF;-- Neuvedením větve else generujeme impl. paměť
END PROCESS;
END Behavioral;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
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říklad, vložení komponenty
D
Q
Q
C
AR
D
Q
Q
C
AR
D
Q
Q
C
AR
shiftClk
shiftARst
shiftD
shiftQ
Shift_register
Příklad, vložení komponenty