Oscar Ignacio Botero Henao. Contadores. CONTADORES CON XILINX ----------------------------------------------------------------------------------------------- CONTADOR ASCEDENTE DE 4 BIT´S CON SALIDAS BINARIAS ---------------------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; CLK SALIDA 0 ? SALIDA 2 SALIDA 3 COUNT_INT entity Contador_bin is Port ( CLK : in STD_LOGIC; SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); end Contador_bin; architecture Comportamiento of Contador_bin is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; begin SEQ: process (CLK) Begin if CLK ='1' and CLK'event then COUNT_INT <= COUNT_INT + 1; else COUNT_INT <= COUNT_INT; end if; end process SEQ; SALIDAS <= COUNT_INT; end Comportamiento; SALIDA 1 -- Reloj manual -- Vector de 4 salidas Binarias -- Señal COUNT_INT e inicializado en 0 -- Comienza -- Proceso de la Secuencia SEQ -- Comienza -- Si hay evento y flanco positivo -- Incremente COUNT_INT -- Si no -- Quédese ahí -- Fin si -- Fin del proceso SEQ -- Lleve COUNT_INT a las SALIDAS -- Fin de la arquitectura Oscar Ignacio Botero Henao. 2 Contadores. ------------------------------------------------------------------------------------------------------------ CONTADOR ASCEDENTE DE 4 BIT´S CON SALIDAS BINARIAS Y RESET ----------------------------------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; CLK SALIDA 0 ? SALIDA 1 SALIDA 2 SALIDA 3 entity Contador_bin1 is Port ( CLK : in STD_LOGIC; RESET : in STD_LOGIC; SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); end Contador_bin1; COUNT_INT -- Reloj manual -- Reset del sistema -- Vector de 4 salidas Binarias architecture Comportamiento of Contador_bin1 is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; begin SEQ: process (CLK, RESET) Begin if RESET='0' then COUNT_INT <= "0000"; else if CLK ='1' and CLK'event then COUNT_INT <= COUNT_INT + 1; else COUNT_INT <= COUNT_INT; end if; end if; end process SEQ; SALIDAS <= COUNT_INT; end Comportamiento; RESET -- Señal COUNT_INT e inicializado en 0 -- Comienza -- Proceso de la Secuencia SEQ -- Comienza -- Si RESET=0, entonces -- Lleve 0 al COUNT_INT -- Si no -- Si hay evento y flanco positivo -- Incremente COUNT_INT -- Si no -- Quédese ahí -- Fin si -- Fin si -- Fin del proceso SEQ -- Lleve COUNT_INT a las SALIDAS -- Fin de la arquitectura Oscar Ignacio Botero Henao. 3 Contadores. ----------------------------------------------------------------------- CONTADOR DE DECADA CON SALIDAS BCD ---------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; CLK SALIDA 0 ? SALIDA 2 U_D entity Contador_BCD is Port ( CLK : in STD_LOGIC; SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); end Contador_BCD; architecture Comportamiento of Contador_BCD is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; begin SEQ: process (CLK) Begin If CLK ='1' and CLK'event then COUNT_INT <= COUNT_INT + 1; If COUNT_INT = "1001" then COUNT_INT <= "0000"; Else End if; Else COUNT_INT <= COUNT_INT; End if; End process SEQ; SALIDAS <= COUNT_INT; End Comportamiento; SALIDA 1 COUNT_INT -- Reloj manual -- Vector de 4 salidas BCD RESET -- Contador interno, inicializado -- Comienza -- Proceso de la SECUENCIA -- Comienza -- Si hay evento del CLK y flanco positivo, entonces -- Incremente COUNT_INT y llévelo a COUNT_INT -- Si COUNT_INT es =10, entonces -- Lleve "0000" a COUNT_INT -- Si no -- Fin si -- Si no -- Lleve COUNT_INT a COUNT_INT, quédese ahí -- Fin si -- Fin del proceso SECUENCIAL -- Lleve COUNT_INT a las SALIDAS -- Fin de la arquitectura SALIDA 3 Oscar Ignacio Botero Henao. 4 Contadores. ----------------------------------------------------------------------------------- CONTADOR DE DECADA CON SALIDAS BCD Y RESET ---------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; CLK SALIDA 0 ? SALIDA 2 U_D entity Contador_BCD1 is Port ( CLK : in STD_LOGIC; RESET : in STD_LOGIC; SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); end Contador_BCD1; SALIDA 1 COUNT_INT -- Reloj manual -- Reset del sistema -- Vector de 4 salidas BCD SALIDA 3 RESET architecture Comportamiento of Contador_BCD1 is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; -- Contador interno, inicializado begin -- Comienza SEQ: process (CLK, RESET) -- Proceso de la SECUENCIA Begin -- Comienza If RESET='0' then -- Si RESET=0, entonces COUNT_INT <= "0000"; -- Lleve 0 al COUNT_INT Else -- Si no If CLK ='1' and CLK'event then -- Si hay evento del CLK y flanco positivo, entonces COUNT_INT <= COUNT_INT + 1; -- Incremente COUNT_INT y llévelo a COUNT_INT If COUNT_INT = "1001" then -- Si COUNT_INT es =10, entonces COUNT_INT <= "0000"; -- Lleve "0000" a COUNT_INT Else -- Si no End if; -- Fin si Else -- Si no COUNT_INT <= COUNT_INT; -- Lleve COUNT_INT a COUNT_INT End if; -- Fin si End if; -- Fin si End process SEQ; -- Fin del proceso SECUENCIAL SALIDAS <= COUNT_INT; -- Lleve COUNT_INT a las SALIDAS end Comportamiento; -- Fin de la arquitectura Oscar Ignacio Botero Henao. 5 Contadores. ----------------------------------------------------------------------------------------------- CONTADOR UP/DOWN CON SALIDA BINARIA DE 4 BIT´S (0-15) ----------------------------------------------------------------------------------------------- Entrada U_D: con '1' UP y con '0' DOWN library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Contador_ud is Port ( CLK : in STD_LOGIC; U_D : in STD_LOGIC; SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); end Contador_ud; CLK SALIDA 0 ? SALIDA 1 SALIDA 2 U_D COUNT_INT SALIDA 3 -- Reloj manual -- Selector Up/Down -- Vector 4 salidas architecture Comportamiento of Contador_ud is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; -- Vector Contador Interno con inicialización en 0000 Begin -- Comienza SEQ: process (CLK) -- Lista de sensibilidad, Proceso SEQ Begin -- Comienza If CLK ='1' and CLK'event then -- Si hay Evento y CLK está en 1, entonces If U_D ='1' then -- Si el selector U/D es = 1, entonces COUNT_INT <= COUNT_INT + 1; -- Incremente el COUNT_INT y llévelo a COUNT_INT else -- Si no COUNT_INT <= COUNT_INT - 1; -- Decremente el COUNT_INT y llévelo a COUNT_INT end if; -- Fin si end if; -- Fin si end process SEQ; -- Fin del proceso SEQ SALIDAS <= COUNT_INT; -- Lleve los datos de COUNT_INT a las SALIDAS end Comportamiento; -- Fin de la arquitectura Oscar Ignacio Botero Henao. 6 Contadores. ----------------------------------------------------------------------------------------------------------------- CONTADOR UP/DOWN CON SALIDA BINARIA DE 4 BIT´S (0-15) CON RESET ----------------------------------------------------------------------------------------------------------------- Entrada U_D: con '1' UP y con '0' DOWN library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; CLK SALIDA 0 ? SALIDA 1 SALIDA 2 U_D COUNT_INT SALIDA 3 entity Contador_ud1 is RESET Port ( CLK : in STD_LOGIC; -- Reloj manual U_D : in STD_LOGIC; -- Selector Up/Down RESET : in STD_LOGIC; -- Reset del sistema SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); -- Vector 4 salidas end Contador_ud1; architecture Comportamiento of Contador_ud1 is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; -- Vector Contador Interno con inicialización en 0000 begin -- Comienza SEQ: process (CLK, RESET) -- Lista de sensibilidad, Proceso SEQ Begin -- Comienza If RESET='0' then -- Si RESET=0, entonces COUNT_INT <= "0000"; -- Lleve 0 al COUNT_INT Else -- Si no if CLK ='1' and CLK'event then -- Si hay Evento y CLK está en 1, entonces if U_D ='1' then -- Si el selector U/D es = 1, entonces COUNT_INT <= COUNT_INT + 1; -- Incremente el COUNT_INT y llévelo a COUNT_INT else -- Si no COUNT_INT <= COUNT_INT - 1; -- Decremente el COUNT_INT y llévelo a COUNT_INT end if; -- Fin si end if; -- Fin si end if; -- Fin si end process SEQ; -- Fin del proceso SEQ SALIDAS <= COUNT_INT; -- Lleve los datos de COUNT_INT a las SALIDAS end Comportamiento; -- Fin de la arquitectura Oscar Ignacio Botero Henao. 7 Contadores. --------------------------------------------------------------------------------------------------------------------------- CONTADOR UP/DOWN CON SALIDA BINARIA DE 4 BIT´S (0-15) CON SET Y RESET --------------------------------------------------------------------------------------------------------------------------- Entrada U_D: con '1' UP y con '0' DOWN -- Con RESET=1 las salidas se ponen todas en 0 (0 decimal) CLK -- Con SET=1 las salidas se ponen todas en 1 (15 decimal) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; SET SALIDA 0 ? SALIDA 2 U_D COUNT_INT entity Contador_ud2 is Port ( CLK : in STD_LOGIC; RESET : in STD_LOGIC; SET : in STD_LOGIC; U_D : in STD_LOGIC; SALIDAS : out STD_LOGIC_VECTOR (3 downto 0)); end Contador_ud2; SALIDA 1 -- Reloj manual -- Reset del sistema -- Set -- Selector Up/Down -- Vector 4 salidas SALIDA 3 RESET architecture Comportamiento of Contador_ud2 is signal COUNT_INT : STD_LOGIC_VECTOR(3 downto 0) := "0000"; -- Vector Contador Interno con inicialización en 0000 Begin -- Comienza SEQ: process (CLK, SET, RESET) -- Lista de sensibilidad, Proceso SEQ Begin -- Comienza if CLK ='1' and CLK'event then -- Si hay Evento y CLK está en 1, entonces if U_D ='1' then -- Si el selector U/D es = 1, entonces COUNT_INT <= COUNT_INT + 1; -- Incremente el COUNT_INT y llévelo a COUNT_INT if SET='1' then -- Si SET=1, entonces COUNT_INT <= "1111"; -- Lleve el 15 decimal al COUNT_INT else -- Si no end if; -- Fin si else -- Si no COUNT_INT <= COUNT_INT - 1; -- Decremente el COUNT_INT y llévelo a COUNT_INT Oscar Ignacio Botero Henao. 8 Contadores. if RESET='1' then COUNT_INT <="0000"; else end if; end if; end if; end process SEQ; SALIDAS <= COUNT_INT; end Comportamiento; -- Si RESET=1, entonces -- Lleve el 15 decimal al COUNT_INT -- Si no -- Fin si -- Fin si -- Fin si -- Fin del proceso SEQ -- Lleve los datos de COUNT_INT a las SALIDAS -- Fin de la arquitectura