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.
?
Modulo 10 čítač - 1.implementace ve VHDL
ARCHITECTURE Behavioral OF mod10_counter IS SIGNAL d_int, q_reg : unsigned(3 DOWNTO 0); -- 4 bity pro 0-9
BEGIN PROCESS (clk) -- oddělená paměťová část
BEGIN IF(rising_edge(clk)) THEN q_reg <= d_int; -- aktualizace signálu q_req
END IF;
END PROCESS;
PROCESS (q_reg) -- oddělená kombinační část
BEGIN
END PROCESS;
Q <= std_logic_vector(q_reg); -- unsigned na std_logic_vector
END Behavioral;
IF(q_reg = 9) THEN -- zkrácení cyklu, co nepracovní stavy??
d_int <= (OTHERS => '0');
ELSE d_int <= q_reg + 1; -- inkrementace signálu d_int
END IF;
ARCHITECTURE Behavioral OF mod10_counter IS SIGNAL d_int, q_reg : unsigned(3 DOWNTO 0); -- 4 bity pro 0-9
BEGIN PROCESS (clk) -- oddělená paměťová část
BEGIN IF(rising_edge(clk)) THEN q_reg <= d_int; -- aktualizace signálu q_req
END IF;
END PROCESS;
PROCESS (q_reg) -- oddělená kombinační část
BEGIN
END PROCESS;
Q <= std_logic_vector(q_reg); -- unsigned na std_logic_vector
END Behavioral;
Modulo 10 čítač - 2.implementace ve VHDL
ARCHITECTURE Behavioral OF mod10_counter IS SIGNAL d_int, q_reg : unsigned(3 DOWNTO 0); -- 4 bity pro 0-9
BEGIN PROCESS (clk) -- oddělená paměťová část
BEGIN IF(rising_edge(clk)) THEN q_reg <= d_int; -- aktualizace signálu q_req
END IF;
END PROCESS;
PROCESS (q_reg) -- oddělená kombinační část
BEGIN
END PROCESS;
Q <= std_logic_vector(q_reg); -- unsigned na std_logic_vector
END Behavioral;
Modulo 10 čítač - 2.implementace ve VHDL
IF(q_reg < 9) THEN -- zkrácení cyklu i pro nepracovní stavy
d_int <= q_reg + 1; -- inkrementace signálu d_int
ELSE d_int <= (OTHERS => '0'); -- zkrácení cyklu
END IF;
Synchronního čítače v kaskádě
Synchronní čítače v kaskádě
• Jelikož je hodinový shodný signál (CLK) přiveden na všechny čítače v
kaskádě, je třeba využít vstup (CE) (clock enable) k povolení okamžiku čítání.
• Celá kaskáda potom obsahuje vstupní signál (CE) a výstupní signál (CEO) pro
povolení čítání další kaskády.
• Dále zde bývá navíc ještě výstupní signál (PULSE), případně (TC) (terminal
count), podávající informaci, že čítač již dosáhl své maximální hodnoty (MAX)
a při příští změně stavu začne znovu od začátku.
CLK
CEO
PULSE
CE
ENTITY counter IS GENERIC (MAX : positive);
PORT (
CLK, CE : IN std_logic;
PULSE, CEO : OUT std_logic;
);
END counter;