VHDL

Buenassss el siguiente VHDL es un modelado de un prescaler, este código está formado por dos procesos: un contador módulo N y un comprador de igualdad, el dato se introduce con un microswitch de 4 bits.
El prescaleer va a permitir dividir la frecuencia de la señal de reloj CLK para obtener una señal EN_1s que se activará a nivel alto,
El valor N es el número de periodos de CLK que suceden desde que se activa a nivel alto la señal EN_1s hasta que se vuelve a activar.
L salida EN_1s permanece a nivel alto sólo durante un periodo de la señal CLK. De esta forma esta señal se puede utilizar para habilitar el counter, consiguiendo que este incremente una vez por segundo.

En conclusión necesito saber por favor si mis datos marcados en rojo estarían bien con lo descrito anteriormente.


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity prescaler is

port(
RESET : in std_logic;
N : in std_logic_vector( 23 downto 0);
CLK : in std_logic;
EN_1s : out std_logic);

end entity;

architecture RTL of prescaler is

signal count : std_logic_vector( 3 downto 0);

begin
process(CLK, RESET)

begin
if (RESET = '1' ) then
count <= (others => '0');
elsif (CLK'event and CLK = '1') then
if count = N-1 then
count <= (others => '0');
else
count <= count + 1;
end if;
end if;
end process;


process (count)
begin
if count = N-1 then
EN_1s <='1';
else
EN_1s <='0';
end if;
end process;
end RTL;
 
Atrás
Arriba