LAB_1.


LAB_1. Diseño de un decodificador BCD para display de 7 segmentos de una FPGA "BASYS 2"





Para el primer laboratorio de la materia de Sistemas Digitales I se propuso realizar el proceso de diseño de un decodificador hexadecimal codificado en binario para se implementado en la FPGA "BASYS 2" para lo cual,después de haber planteado la tabla de verdad de los 7 segmentos del display y para la simplificación de la etapa de diseño, recurrimos al programa "Boole-Deusto" el cual es capaz de realizar la simplificación de términos en las ecuaciones resultantes de la solución de los distintos mapas de karnaugh, además de la facilidad de visualizar el equivalente de las funciones resultantes en compuertas Nand o Nor según las necesidades del usuario y finalmente, también puede generar el código del circuito combinacional en varios idiomas de descripción de hardware entre los que se encuentra el código en VHDL y del cual hicimos uso.

En la página "Anexos LAB 1." del blog se encuentran el archivo "DECO.sco" y el programa "Boole-deusto" para descargar en el cual pueden evidenciarse:

1) La tabla de verdad del display de 7 segmentos

2) Los mapas de Karnaugh de cada segmento (con simplificación con "ceros" o con "unos")

3) Las ecuaciones correspondientes a cada segmento resultantes de los mapas de Karnaugh

4) El circuito combinacional implementado en compuertas lógicas Nand o Nor


------------------------------------------------------------------------------------------------------------


For our first "DIGITALES I" laboratory assignment, we were asked to do the design of a hexadecimal decodificator to be implemented      on the "Basys 2" FPGA, and for that task, after we obtain the true table, we appealed to use the "boolle-deusto" program wich is capable of the ecuation simplification after resolving the karnaugh maps, besides of the facility of visualize the combinational circuit equivalent to the obtained  functions not only on NAND  but also on NOR gates.

the program also is able of generate the VHDL code correspondent to any kind of combinational circuit, state machines, and even  if the user needs it, it can generates another kind of hardware description as orCAD-PLD code, JEDEC PLCC code and JEDEC DIP code.

in the " anexos" page of the blog, there are the document where was developed this specific implementation and also the "Boole-Deusto" program for those who want to get closer to this helpfull and easy use software.





LAB_1. Circuitos Combinacionales Obtenidos del "BOOLE-DUSTO" 


A continuación  se presentan los circuitos combinacionales obtenidos por el software de diseño digital "Boole-Deusto"

------------------------------------------------------------------------------------------------------------

Below are combinational circuits obtained by digital design software "Boole-Deusto"



Circuito combinacional del segmento "a" (F1)
-----------------------------------------------------------------------------
Combinational circuit of segment "a" (F1)




Mapa de karnaugh del segmento "a" (F1)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "a" (F1)



Circuito combinacional del segmento "b" (F2)
-----------------------------------------------------------------------------
Combinational circuit of segment "b" (F2)



Mapa de karnaugh del segmento "b" (F2)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "b" (F2)



Circuito combinacional del segmento "c" (F3)
-----------------------------------------------------------------------------
Combinational circuit of segment "c" (F3)



Mapa de karnaugh del segmento "c" (F3)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "c" (F3)



Circuito combinacional del segmento "d" (F4)
-----------------------------------------------------------------------------
Combinational circuit of segment "d" (F4)



Mapa de karnaugh del segmento "d" (F4)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "d" (F4)



Circuito combinacional del segmento "e" (F5)
-----------------------------------------------------------------------------
Combinational circuit of segment "e" (F5)



Mapa de karnaugh del segmento "e" (F5)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "e" (F5)



Circuito combinacional del segmento "f" (F6)
-----------------------------------------------------------------------------
Combinational circuit of segment "f" (F6)



Mapa de karnaugh del segmento "f" (F6)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "f" (F6)



Circuito combinacional del segmento "g" (F7)
-----------------------------------------------------------------------------
Combinational circuit of segment "g" (F7)



Mapa de karnaugh del segmento "g" (F7)
-----------------------------------------------------------------------------
Karnaugh´s map  of segment "g" (F7)





LAB_1. Código en xilinx 


El siguiente es el código generado por el "Boole-Deusto":

------------------------------------------------------------------------------------------------------------

The following is the code generated by the "Boole-Deusto":




library IEEE;
entity deco is

use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

Port (
A: in std_logic;
B: in std_logic;
C: in std_logic;
D: in std_logic;
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
);
end deco;
architecture behavioral of deco is
begin
S0<=((A and not(D)) or (not(B) and not(D)) or (A and not(B) and not(C)) or (not(A) and B and D) or (not(A) and not(B) and C) or (A and B and C));
S1<=((A and not(C) and D) or (not(B) and not(D)) or (not(A) and not(C) and not(D)) or (not(A) and C and D) or (not(A) and not(B)));
S2<=((not(C) and D) or (not(A) and B) or (A and not(B)) or (not(A) and not(C)) or (not(A) and D));
S3<=((B and not(C) and D) or (not(B) and C and D) or (B and C and not(D)) or (A and not(C) and not(D)) or (not(A) and not(B) and not(D)));
S4<=((not(B) and not(D)) or (C and not(D)) or (A and C) or (A and B));
S5<=((not(C) and not(D)) or (B and not(D)) or (not(A) and B and not(C)) or (A and not(B)) or (A and C));
S6<=((not(B) and C) or (A and not(B)) or (A and D) or (C and not(D)) or (not(A) and B and not(C)));
end behavioral;


LAB_1. Entorno de xilinx


Una vez obtenido el código del generador boole, procedimos a trabajar en el entorno de desarrollo de xilinx para realizar así posteriormente la implementación del programa en la FPGA, las capturas de pantalla que se muestran a continuación describen el proceso que seguimos:


1) Trasladamos el código generado a Xilinx directamente


2) Realizamos la descripción de hardware por  el método esquemático para redundar en el proceso de diseño y abordar así el problema de diseño de dos maneras distintas.


3) Una vez realizada la descripción de hardware con cada segmento , empaquetamos las 7 funciones en una sola quedando







LAB1. Imagenes de la implementación





No hay comentarios:

Publicar un comentario