Código de sincronização através de componentes
Tese: Código de sincronização através de componentes. Pesquise 861.000+ trabalhos acadêmicosPor: joelzeni • 10/11/2014 • Tese • 2.519 Palavras (11 Páginas) • 235 Visualizações
Contadores 0 (zero) a 60 e 0 (zero) a 24 respectivamente
Código Relógio através de componentes
Depois de diversas tentativas para adaptar esses códigos a linguagem do software e sucesso quase algum para sua finalização foi desenvolvido outro modelo de contador, um contador que conta unidades e dezenas separadamente para só então criar o código com o relógio todo montado e já decodificado para display de 7 segmentos. Segue a baixo o código de cada um dos componentes utilizados e em seguida uma pequena descrição do mesmo.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
use IEEE.NUMERIC_STD.ALL;
entity unidade_seg is
Port ( clk_in_uni_seg: in std_logic;
clk_out_uni_seg: out std_logic;
bcd_uni_seg : out STD_LOGIC_vector (3 downto 0));
end unidade_seg;
architecture Behavioral of unidade_seg is
signal uni_seg: std_logic_vector (3 downto 0):= "0000";
signal clk_out_tmp_seg : std_logic := '0';
begin
process (clk_in_uni_seg)
begin
IF (clk_in_uni_seg = '1' and clk_in_uni_seg'event) then
uni_seg <= uni_seg + "1";
IF (uni_seg = 9) then
uni_seg <= "0000";
clk_out_tmp_seg <= '1';
end if;
IF (uni_seg = 5) then
clk_out_tmp_seg <= '0';
end if;
end if; end process;
bcd_uni_seg <= uni_seg;
clk_out_uni_seg <= clk_out_tmp_seg;
end Behavioral;
Contador 0 a 9 – unidade segundo
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
use IEEE.NUMERIC_STD.ALL;
entity dezena_seg is
Port ( clk_in_dez_seg: in std_logic;
clk_out_dez_seg : out std_logic;
bcd_dez_seg : out STD_LOGIC_vector (2 downto 0));
end dezena_seg;
architecture Behavioral of dezena_seg is
signal dez: std_logic_vector (2 downto 0):= "000";
signal clk_out_tmp_seg : std_logic := '0';
begin
process (clk_in_dez_seg)
begin
IF (clk_in_dez_seg = '1' and clk_in_dez_seg'event) then
dez <= dez + "1";
IF (dez = 5) then
dez <= "000";
clk_out_tmp_seg <= '1';
end if;
if (dez = 2) then
clk_out_tmp_seg <= '0';
end if;
end if; end process;
bcd_dez_seg <= dez;
clk_out_dez_seg <= clk_out_tmp_seg;
end Behavioral;
Contador 0 a 6 – dezena Segundo
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
use IEEE.NUMERIC_STD.ALL;
entity unidade_min is
Port ( clk_in_uni_min: in std_logic;
clk_out_uni_min : out std_logic;
bcd_uni_min : out STD_LOGIC_vector (3 downto 0));
end unidade_min;
architecture Behavioral of unidade_min is
signal uni_min: std_logic_vector (3 downto 0):= "0000";
signal clk_out_tmp_min : std_logic := '0';
begin
process (clk_in_uni_min)
begin
IF (clk_in_uni_min = '1' and clk_in_uni_min'event) then
uni_min <= uni_min + "1";
IF (uni_min = 9) then
uni_min <= "0000";
clk_out_tmp_min <= '1';
end if;
if (uni_min = 5) then
clk_out_tmp_min <= '0';
end if;
end if;
end process;
bcd_uni_min <= uni_min;
clk_out_uni_min <= clk_out_tmp_min;
end Behavioral;
Contador 0 a 9 unidade minute
...