miércoles, 1 de septiembre de 2010

Como hacer un decodificador en la spartan 3

Antes de empezar a programar tienes que entender como funciona un decodificador, en este caso  analizaremos el deco de 3 a 8.
Para los que no saben mucho acerca de sistemas digitales un decodificador es un dispositivo que acepta una entrada digital codificada en binario y solo activa una de sus salidas, es decir, si yo ingreso el numero 000 en binario en un decodificador de 3 a 8 podras encontrar activa la primer salida, si el caso fuera 001 encontrarias activa la segunda salida y asi sucesivamente. Un deco de 3 a 8 significa que tiene tres entradas donde puedes ingresar un numero binario de 3 bits (desde 0 hasta 7 en decimal ) y de acuerdo a la combinacion que ingrese encontraras la salida activa correspondiente.

Un decodificador por dentro esta compuesto de compuertas AND y NOT con lo cual te das cuenta que a la salida de cada uno de los pines encontraras una funcion booleana correspondiente, con este principio ahora puedes empezar a programar tu FPGA.

Tras hacer los pasos mencionados en otras ocasiones de como empezar a programar pasaremos a la parte de codigo. Cuando encuentras la deduccion de las variables te das cuenta que a la salida numero 1 de las 8 posibles tienes (NOT A0) AND (NOT A1) AND (NOT A2) donde A0, A1 y A2 son tus entradas binarias.
a la segunda salida te queda NOT A0) AND (NOT A1) AND (A2), dando como resultado un codigo como el siguiente:


entity DECO is
    Port ( S0 : out  STD_LOGIC;
           S1 : out  STD_LOGIC;
           S2 : out  STD_LOGIC;
           S3 : out  STD_LOGIC;
           S4 : out  STD_LOGIC;
           S5 : out  STD_LOGIC;
           S6 : out  STD_LOGIC;
           S7 : out  STD_LOGIC;
           A0 : in  STD_LOGIC;
           A1 : in  STD_LOGIC;
           A2 : in  STD_LOGIC);
end DECO;

architecture Behavioral of DECO is

begin
S0<= (NOT A0) AND (NOT A1) AND (NOT A2);
S1<= (NOT A0) AND (NOT A1) AND (A2);
S2<= (NOT A0) AND (A1) AND (NOT A2);
S3<= (NOT A0) AND (A1) AND (A2);
S4<= (A0) AND (NOT A1) AND (NOT A2);
S5<= (A0) AND (NOT A1) AND (A2);
S6<= (A0) AND (A1) AND (NOT A2);
S7<= (A0) AND (A1) AND (A2);

end Behavioral;

Con este código programado en tu tarjeta tendras un decodificador de 3 a 8 listo para ser usado en tu tarjeta.

No hay comentarios:

Publicar un comentario