Vous êtes sur la page 1sur 3

Práctica 1: Circuito sumador/restador con FPGA .

Juan Sebastian Gil, Juan Esteban Rodriguez

Abstract— The adder / subtractor circuit we saw in the


experiment uses the basic principles of Boolean algebra that
we have seen in the class, also uses logic gates or, in our case,
we use the FPGA tool, which is a programmable card and in
which you can design the circuit that will run inside it.

I. INTRODUCCIÓN
La lógica combinacional está basada en el uso de com-
puertas lógicas, las cuales trabajan dando un valor de salida
a partir de un valor de entrada y de operaciones matemáticas
tales como la suma y la multiplicación, existen diferentes
tipos y las podemos nombrar como AND, OR, NOT, NAND,
NOR, XOR, XNOR. Cada una realiza operaciones diferentes
basadas en el Algebra Booleana, termino que se da en honor
a George Bool, quien fue el primero en definirla como
parte de un sistema lógico. En la práctica, se requería el
uso de compuertas lógicas para lograr diseñar un circuito
sumador/restador que hiciera uso de 7 bits, 3 bits para cada
número a sumar y restar, teniendo como máximo número el
7 y 1 bit que designara si la operación que iban a realizar el
par de números era suma o resta, en nuestro diseño usamos
la herramienta FPGA, una tarjeta de silicio semiconductor
con la capacidad de podérsele programar y reprogramar una
operación deseable, en las siguientes partes de este informe
se describirá con más detalle este procedimiento
II. MARCO TEÓRICO
A. Compuertas lógicas
Son dispositivos electrónicos con funciones booleanas u
otras funciones como sumar y restar, según su lógica, los
podemos dividir en dos grandes grupos, lógica directa y
lógica negada. En la lógica directa encontramos las com-
puertas AND, OR, OR exclusiva o XOR; mientras que, en su
contraparte la lógica negada, tenemos las compuertas NOT,
NAND, NOR, XNOR. En la imagen a la derecha podemos
encontrar su forma de representación y su respectiva tabla
de verdad. Fig. 1.

B. Álgebra de Bool
Es una estructura algebraica que esquematiza operaciones
lógicas, fue implementada por primera vez por George Bool, como una evolución de los PLD(Programmable Logic De-
en honor del cual lleva su nombre, en un pequeño folleto vice), la idea era tener un dispositivo con mayores ca-
en el año de 1947. En la actualidad el Álgebra de Bool o pacidades: reducir tiempos de respuesta, bajar su consumo
Álgebra Booleana se utiliza con frecuencia en las áreas de la energético y poder visualizar soluciones a problemas con un
electrónica, sobretodo para el análisis y diseño de circuitos alto nivel de complejidad.
Los dispositivos FPGA utilizan la interfaz JTAG para la
C. FPGA prueba y descargar de datos, interfaz qué, además, es de
Es un dispositivo programable, fabricado en silicio semi- las más utilizadas en compañías electrónicas. Desde 1990 es
conductor y cuya estructura depende del fabricante pero que un estándar IEEE. El lenguaje utilizado en la programación
en términos generales siguen una misma lógica. Surgieron es el HDL(Hardware Description Lenguaje) siendo VHDL
el más utilizado, aunque existe el lenguaje verilog para B. Declaración de la arquitectura
programadores que estén más familiarizados con el lenguaje En esta parte del código se declara la arquitectura, espacio
C. ambos son estandares IEEE. donde se verán reflejadas las conexiones internas de la FPGA
D. Lenguaje VHDL entre los puertos de entrada y salida. En primer lugar, se
hace la llamada a un bloque F ullAdder el cual cumple con
El Lenguaje VHDL es un estándar IEEE que se usa la base del funcionamiento del circuito completo ya que es
frecuentemente para la especificación en diseños de circuitos el que permite realizar la suma bit a bit, teniendo en cuenta
digitales y para la automatización de diseños electrónicos. tanto el acarreo de entrada como el de salida.
Aunque este lenguaje se usa de forma general para describir
circuitos digitales se usa frecuentemente para programar
tarjetas FPGA como ya se mencionó anteriormente.
Su estructura se compone así:
• División del diseño principal en modulos separados.
• Entrada de diseños.
• Simulación funcional.
• Síntesis.
• Simulación post síntesis.
• Ubicación y enrutamiento.
• Anotación final.
• Simulación temporal.
• Programación en el dispositivo.

Se suelen usar estructuras en forma de bloques y con una


jerarquización bien detallada.

III. P RÁCTICA Y C ÓDIGO


A. Declaración del entity
Elegimos usar la FPGA en esta práctica debido a que
simplifica muchos pasos y nos reduce gastos en la realización
de la misma. En la primera parte del código VHDL se crea
la entidad; en dicho espacio se declara y se asigna cada una
de las variables de entrada y salida que servirán para la cor-
recta implementación del circuito. Se manejan dos tipos de
Fig. 3. Código de la arquitectura para un Sumador de 3 Bits
variables para esta implementación: STD_LOGIC_VECTOR
y STD_LOGIC, además, se optó por utilizar la instrucción
generic en la cual se fijó el número de bits del sumador (3
C. Código de Control
bits) y el valor del carry de entrada del sumador a un valor
de 0. La variable de control fue declarada como Sub y es En esta última parte del código se realiza toda la lógica
la que permite estando en un estado bajo efectuar la suma necesaria para asignar cada una de las variables del programa
dentro del sumador, o por el contrario, efectuar la resta al con cada uno de los bloques del sumador de 3 Bits para
estar en estado alto. finalmente poder realizar la parte de control en la que
se efectuará la suma o resta dependiendo como se dese.
Es importante aclarar que la resta se implementó con el
complemento A 1 al momento de escribirlo en el código.

IV. S IMULACIONES
Finalmente, se realizaron las respectivas simulaciones uti-
lizando el test Bench de Xilinx, donde se muestra el debido
funcionamiento del sumador de 3 Bits. Se efectuaron algunos
ejemplos para la suma y la resta en donde en las figuras 5
y 6 se pueden observar los diagramas de tiempos para cada
una de las salidas dependiendo de las entradas actuales.
Gracias al simulador, es posible forzar las variables de
entrada para poder cambiarlas sin necesidad de volver a
correr el programa, con lo cual, se facilita poder visualizar la
Fig. 2. Código de la entidad para un Sumador de 3 Bits suma y el último acarreo que están declarados como s[0 : 3]
y Cout respectivamente.
Fig. 5. Test Bench de la Suma

Fig. 6. Test Bench de la resta

Fig. 4. Código de control para la suma y resta lógico (2005 edición)


• Gonzáles Maxinez, David Jaime (2014). Grupo Edito-
rial Patria, ed. Programación de Sistemas Digitales con
V. B IBLIOGRÁFIA VHDL. p. 330.

• Tabla 1 tomada de cursos.clavijero.edu.mx


• eciencia.urjc.es/handle/10115/4045 "Diseño de circuitos
digitales con VHDL"
• García Zubia, Javier; Sanz Martínez, Jesús; Sotomayor
Basilio, Borja. Universidad de Deusto. Departamento de
Publicaciones, ed. Boole-Deusto v2.1 entorno de diseño

Vous aimerez peut-être aussi