Contador VHDL Gray

En clase me piden la implementación de un contador en VHDL, el problema es que el profesor no ha explicado como programar en tal lenguaje, en ejercicios anteriores programé algún elemento tipo multiplexor, sumador.

Lo que pasa es que el contador se me está haciendo casi imposible de programar.

De momento tengo hecho creo que bastante pero me falta algunas cosas.
Me preguntaba si me podríais echar un cable.

El contador a implementar es el siguiente:
Contador Gray de 3 bits, con Up/!Down, anclado, con reset síncrono por lógica positiva y enable por lógica negativa. El enable es prioritario respecto al reset.


De momento tengo hecho lo siguiente:
PHP:
library ieee;
use ieee.std_logic_1164.all;

entity count912 is

    port
    (
        clk       : in  std_logic;
        datain   : in  std_logic_vector(2 downto 0);
        dataout  : out std_logic_vector(2 downto 0);
        en       : in  std_logic;
        rs       : in  std_logic;
    );
end count912;

architecture basic of count912 is
begin
    process (clk) is
    
    begin
        if (clk\'event and clk = \'1\' and en = \'0\' and rs = \'0\')then
            dataout <= datain ;
        end if;
        
        if (clk\'event and clk = \'1\' and en = \'0\' and rs = \'1\')then
            dataout <= \'000\';
        end if;
        
        if (clk\'event and clk = \'1\' and en = \'1\')then
            dataout <= dataout;
        end if;
        
    end process;
    
end basic;

entity counter is
    port
        (
            sc_input  : std_logic_vector (2 downto 0);
            sc_output : std_logic_vector (2 downto 0);
        );

end counter;

architecture complex of counter is

signal datain : std_logic_vector (2 downto 0);
signal dataout : std_logic_vector (2 downto 0);

begin


end complex;

sc_input <= dataout;
datain <= sc_output;
Q <= dataout;
Gracias.
 
Última edición por un moderador:
Diseño digital (Principio y prácticas) John F. Wakerly
8.4.6 Contadores en VHDL (página 708)
:)(y)
 
Atrás
Arriba