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.
Synchronní čítač - 2.implementace ve VHDL
ENTITY counter IS PORT(
clk: IN std_logic;
Q : OUT std_logic_vector(2 DOWNTO 0)
);
END counter;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL; -- pro konverzi na std_logic_vector
ARCHITECTURE Behavioral OF counter IS SIGNAL q_int : unsigned(Q'range);
-- vnitřní signál pro buzení sekvenční části
BEGIN -- není oddělena kombinační a paměťová část, raději 2 i více procesů
PROCESS (clk)
BEGIN IF(rising_edge(clk)) THEN q_int <= q_int + 1; -- inkrementace signálu+odlož. přiřaz.
END IF;
END PROCESS;
Q <= std_logic_vector(q_int); -- unsigned na std_logic_vector
END Behavioral;
Synchronní čítač - 3.implementace ve VHDL
ENTITY counter IS PORT(
clk: IN std_logic;
Q : OUT std_logic_vector(2 DOWNTO 0)
);
END counter;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL; -- pro konverzi na std_logic_vector
Synchronní čítač - 3.implementace ve VHDL
ENTITY counter IS PORT(
clk: IN std_logic;
Q : OUT std_logic_vector(2 DOWNTO 0)
);
END counter;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL; -- pro konverzi na std_logic_vector
ARCHITECTURE Behavioral OF counter IS SIGNAL d_int, q_reg : unsigned(Q'range);
BEGIN PROCESS (clk) -- oddělená paměťová část
BEGIN IF(rising_edge(clk)) THEN q_reg <= d_int; -- aktualizace paměti signálu q_req
END IF;
END PROCESS;
PROCESS (q_reg) -- oddělená kombinační část
BEGIN d_int <= q_reg + 1; -- inkrementace signálu d_int
END PROCESS;
Q <= std_logic_vector(q_reg); -- unsigned na std_logic_vector
END Behavioral;
Zkrácení cyklu synchronního
čítače
Modulo 10 čítač - 1.implementace ve VHDL
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;
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;