You are on page 1of 7

FORMATO DE INFORME DE PRÁCTICA DE

LABORATORIO / TALLERES / CENTROS DE


SIMULACIÓN – PARA ESTUDIANTES

CARRERA: Ing. Electrónica ASIGNATURA: Circuitos Digitales


Avanzados
ESTUDIANTES: Francisco Brito
NRO. PRÁCTICA: 2 TÍTULO PRÁCTICA: Lógica combinatoria y secuencial
OBJETIVO ALCANZADO:

- Diseñar un programa en base al diagrama lógico planteado


- Avanzar en la programación dentro de VIVADO
- Implementar una programación Lógica combinatoria y secuencial en el Artix-7
ACTIVIDADES DESARROLLADAS
1. Crear un nuevo proyecto de VIVADO
2. Interpretar las entradas y salidas finales totales de nuestro circuito para la declaración de
variables en VIVADO
3. Crear un proceso dentro de VIVADO para la lógica combinatoria y secuencial
4. Correr la síntesis del programa
5. Correr la Implementación del programa
6. Crear un Bitstream del programa
7. Proceder a cargar el programa en el FPGA
8. Verificar que el FPGA funcione correctamente

RESULTADO(S) OBTENIDO(S):

Primeramente abrimos el software de VIVADO. En este caso nuestro proyecto se llamara


“practica2”.
El esquema planteado para esta práctica es el siguiente:

Identificamos rápidamente que tenemos 4 entradas (a,b,clk y reset) y dos salidas finales
totales (reg_comp, reg_sum). Es importante realizar este paso ya que posteriormente con esta
información podremos declarar nuestras variables en VIVADO.

Nota: Cuando se crea el proyecto de vivado se abre al final de la creación del proyecto una
interfaz que nos permite declarar variables en las cuales colocaremos las anteriormente
mencionadas.

Dentro de VIVADO abrimos el “practica2.vhd” para proceder con la programación


Si realizamos correctamente la declaración de las variables, dentro de la interfaz de
programación nos aparecerá por defecto esta programación:

En esta programación podemos observar que VIVADO de por sí ya nos incluye una librería y
si nos fijamos también nos incluye las variables que declaramos en la anterior interfaz. Si se
quiere se puede declarar también después en esta sección, no habría ningún problema.

A continuación vamos a explicar un poco de la programación realizada en VIVADO.

a: in STD_LOGIC_VECTOR (3 downto 0);


Significa que a es una entrada variable de 0 a 3 bits, por ende se lo considera como un vector

b: in STD_LOGIC_VECTOR (3 downto 0);


Significa que b es una entrada variable de 0 a 3 bits, por ende se lo considera como un vector

clk: in STD_LOGIC;
A diferencia de los anteriores esta variable solo podrá tener dos estados “1” o “0”, es un
simple bit, por ende solo se lo considera como un estado lógico simple, mas no como un
vector. Cabe recalcar que es una entrada

reset: in STD_LOGIC;
Este es el mismo caso de la variable clk, la diferencia es que el anterior es la señal de reloj y
este es un reset general.

reg_comp: out std_logic;


Esta variable representa el resultado de la comparación entre el valor de la variable a y b, asi
mismo solo podrá tener dos valore lógicos y se representara en un solo bit. Esta es nuestra
primera salida del sistema.

reg_sum: out STD_LOGIC_VECTOR (3 downto 0);


Esta es una variable que podra variar entre 0 a 3 bits. Es el resultado de la suma entre a y b.
Es una salida del sistema.
En la siguiente parte de la programación podemos observar la programación de nuestros
procesos de suma y comparación
Realizada la programación corremos la síntesis e implementación del programa.

Es necesario configurar cuales van hacer los pines de entrada y de salida en el FPGA.
Para esto se usó la siguiente configuración de entradas y salidas.

Si no se presentó ningún inconveniente procedemos a generar el bitstream y posteriormente


vamos a cargarlo al Artix-7.

CONCLUSIONES:

Se realizó la implementación de la suma y comparación de dos variables de 3 bits y se pudo


observar que dentro de VIVADO, además de usar la librería que generalmente nos carga por
defecto, fue necesario cargar una adicional que nos permitía integrar funciones para poder
realizar la correcta programación de esta práctica.

VIVADO nos permite crear procesos para poder llevar a cabo una acción. Este puede tener
programado en su estructura varios procesos siempre y cuando no tengan errores.

RECOMENDACIONES:

Es necesario configurar las salidas y entrada de los pines para un I/O sd de tipo LVCMOS33
ya que el nivel de voltaje que se maneja en el fpga es de 3.3V.

ANEXO1

CODIGO DEL PROGRAMA

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity practica2 is
Port ( a : in STD_LOGIC_VECTOR (3 downto 0);
b : in STD_LOGIC_VECTOR (3 downto 0);
clk : in STD_LOGIC;
reset: in STD_LOGIC;
reg_comp : out std_logic;
reg_sum : out STD_LOGIC_VECTOR (3 downto 0));
end practica2;

architecture Behavioral of practica2 is

signal comp: std_logic;


signal sum: STD_LOGIC_VECTOR (3 downto 0);

begin

comp<= '1' when a>b else '0';


sum<=a+b;

PROCESS (clk,reset)
BEGIN
IF (reset='1')THEN
IF (clk'EVENT AND clk='1')THEN
reg_comp<=comp;
reg_sum<=sum;
END IF;
END IF;
END PROCESS;

end Behavioral;

FOTOS DE LA PRACTICA
ESQUEMA ELÉCTRICO