---------------------------------------------------------------------------------- -- Creado para: www.domandoingenieria.com -- -- Fecha de creación: 01/01/2022 -- Nombre de diseño: Concatenador -- Descripción: Archivo VHDL para concatenar datos. -- ---------------------------------------------------------------------------------------- --Definimos las librerías. library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all;--Algunos simuladores o circuitos de lógica programable lo piden. --Declaramos las terminales (entradas y salidas del circuito). entity contador_ascendiente_nbits is generic(n:integer :=4);--definimos el número de bits del contador (está en 4 bits). port( Clk, Rst: in std_logic;--Señal de reloj y el reset. D: in std_logic_vector(n-1 downto 0);--Entrada del número al que quieres contar (n bits). cuenta: out std_logic_vector(n-1 downto 0)--Salida binaria de la cuenta que lleva (n bits). ); end contador_ascendiente_nbits; --Describimos nuestro circuito. architecture contador_ascendiente_nbits of contador_ascendiente_nbits is signal Qp, Qn: std_logic_vector(n-1 downto 0); begin process(D,Qp) begin if D=Qp then--cuando llegue al número máximo --Qn <= (others => '0');--usa este si quieres que se reinicie al terminar de contar. Qn <= Qp;--usa este si quieres que se detenga al terminar de contar. else--mientras no llegue al número máximo Qn <= std_logic_vector(unsigned(Qp)+1);--el siguiente número será el actual mas 1. end if; end process; Qp<=(others => '0') when Rst = '1' else Qn when rising_edge(clk);--Asignamos 0 a la cuenta actual si presionamos reset, si no, que cuente al siguiente número con el próximo disparo del reloj. cuenta<=Qp;--muestra en tiempo real la cuenta actual en la salida llamada "cuenta" end contador_ascendiente_nbits;