Práctica No.1 Tercer Parcial

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

Departamento de Eléctrica y Electrónica

Carrera de Ingeniería en Electrónica e Instrumentación

DISEÑO VLSI

Práctica 3.1

PROGRAMACIÓN EN VHDL POR FLUJO DE DATOS RTL


Autor:
ALEX RODRIGO CHANATAXI OÑA

Docente:
Ing. Amparo Meythaler

NRC: 2034
1) OBJETIVOS

• Identificar la forma de trabajo de los paquetes que trabajan con el lenguaje VHDL.
• Implementar Circuitos Combinacionales utilizando VHDL en estilo Flujo de Datos
(RTL).

2) MARCO TEORICO

VHDL

Es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles


de abstracción. El significado de las siglas VHDL es VHSIC (Very High Speed Integrated
Circuits) Hardware Description Language. Esto significa que VHDL permite acelerar el
proceso de diseño. VHDL no es un lenguaje de programación, por ello conocer su sintaxis
no implica necesariamente saber diseñar con él. VHDL es un lenguaje de descripción de
hardware, que permite describir circuitos síncronos y asíncronos. Para realizar esto
debemos: - Pensar en puertas y biestables, no en variables ni funciones. - Evitar bucles
combinacionales y relojes condicionados. - Saber qué parte del circuito es combinacional
y cuál secuencial. ¿Por qué usar un lenguaje de descripción hardware? - Poder descubrir
problemas en el diseño antes de su implementación física. - La complejidad de los sistemas
electrónicos crece exponencialmente, es necesaria una herramienta que trabaje con el
ordenador. - Permite que más de una persona trabaje en el mismo proyecto.

Entity

Una entidad es la abstracción de un circuito, ya sea desde un complejo sistema electrónico


o una simple puerta lógica. La entidad únicamente describe la forma externa del circuito,
en ella se enumeran las entradas y las salidas del diseño. Una entidad es análoga a un
símbolo esquemático en los diagramas electrónicos, el cual describe las conexiones del
dispositivo hacia el resto del diseño.

- Define externamente al circuito o subcircuito.

- Nombre y número de puertos, tipos de datos de entrada y salida.

- Tienes toda la información necesaria para conectar tu circuito a otros circuitos.

Architecture

Los pares de entidades y arquitecturas se utilizan para representar la descripción completa


de un diseño. Una arquitectura describe el funcionamiento de la entidad a la que hace
referencia, es decir, dentro de architecture tendremos que describir el funcionamiento de la
entidad a la que está asociada utilizando las sentencias y expresiones propias de VHDL.

- Define internamente el circuito.

- Señales internas, funciones, procedimientos, constantes.


- La descripción de la arquitectura puede ser estructural o por comportamiento. (Sánchez,
2014)

Paquete GHDL

Es un compilador de código abierto para el lenguaje VHDL. GHDL permite la compilación


y ejecución de código VHDL directamente en la PC. Combinado con un analizador de
ondas gráfico (GTKWave) y un editor de texto (VIM), GHDL es una herramienta poderosa
para la escritura, prueba y simulación de circuitos descritos con VHDL.

GHDL está basado en el compilador GCC de GNU y puede ejecutarse en Linux, winbugs
y Apple OS X. Se pueden obtener los binarios para un sistema operativo en específico o se
puede compilar a partir del código fuente para una arquitectura en específico. (Simbaña,
2016)

Notepad ++

Existen numerosos editores específicos para programas en C++. Uno que a mí me gusta
bastante es Notepad++, que no sólo se adapta a la sintaxis de C++, sino que contempla
otros muchos lenguajes de programación. Es de código abierto y gratuito (freeware).

3) EQUIPOS Y MATERIALES

• PC con el paquete GHDL para el trabajo con VHDL.

4) ACTIVIDADES DESARROLLADAS

1) Trabajo Preparatorio:

a) Elabore el archivo en VHDL para un restador de 2 números de 2 bits cada uno.

2
A
2 Restador 3 S
B

A

B
00 01 10 11
− − − −
00 00 00 00
000 001 010 011

00 01 10 11
− − − −
01 01 01 01
111 000 001 010

00 01 10 11
− − − −
10 10 10 10
110 111 000 001

00 01 10 11
− − − −
11 11 11 11
101 110 111 000

A B S

A0 A1 B0 B1 S0 = P S1 S2
0 0 0 0 0 0 0
0 0 0 1 1 1 1
0 0 1 0 1 1 0
0 0 1 1 1 0 1
0 1 0 0 0 0 1
0 1 0 1 0 0 0
0 1 1 0 1 1 1
0 1 1 1 1 1 0
1 0 0 0 0 1 0
1 0 0 1 0 0 1
1 0 1 0 0 0 0
1 0 1 1 1 1 1
1 1 0 0 0 1 1
1 1 0 1 0 1 0
1 1 1 0 0 0 1
1 1 1 1 0 0 0
2) Verifique el funcionamiento del paquete seleccionado.

a) Edición.

• Ingrese al paquete GHDL.

Figura 1: Ingresar al paquete GHDL.

• Digite el ejercicio del trabajo preparatorio y cree el archivo fuente (PONGALO


CON SU NOMBRE). Presente una captura del ejercicio completo.

Figura 2: Creación del archivo fuente.


b) Compilación (Síntesis).

• Compile el archivo según las directivas del paquete utilizado. Presente una
captura del resultado final (que indique cero errores o finalizado).

Figura 3: Compilación del programa en CMD.

c) Simulación.

• Realice el archivo (fuente) con los vectores de prueba (test bench). Presente una
captura de este paso.

Figura 4: Creación del archivo fuente con los vectores de prueba (test bench).
• Corra el ejercicio y revise el funcionamiento. Presente una captura del resultado.

Figura 5: Simulador (GTKWave), para verificar el funcionamiento.

Nota: Si no funciona el programa, debe corregirlo desde el literal a.

5) PROGRAMA

• Archivo fuente del restador de 2 números de 2 bits cada uno.

library ieee;
use ieee.std_logic_1164.all;

entity alex is
port
(
A,B : in std_logic_vector(0 to 1);
S : out std_logic_vector(0 to 2)
);
end alex;

architecture chanataxi of alex is


begin

S <= "000" when (A="00" and B="00")else


"111" when (A="00" and B="01")else
"110" when (A="00" and B="10")else
"101" when (A="00" and B="11")else
"001" when (A="01" and B="00")else
"000" when (A="01" and B="01")else
"111" when (A="01" and B="10")else
"110" when (A="01" and B="11")else
"010" when (A="10" and B="00")else
"001" when (A="10" and B="01")else
"000" when (A="10" and B="10")else
"111" when (A="10" and B="11")else
"011" when (A="11" and B="00")else
"010" when (A="11" and B="01")else
"001" when (A="11" and B="10")else
"000";
end chanataxi;

• Archivo fuente, vector de pruebas (test bench) del restador de 2 números de 2 bits
cada uno.

library ieee;
use ieee.std_logic_1164.all;

entity alex_tb is
end alex_tb;

architecture test of alex_tb is


component alex
port
(
A,B : in std_logic_vector(0 to 1);
S : out std_logic_vector(0 to 2)
);
end component;

signal A,B : std_logic_vector(0 to 1);


signal S : std_logic_vector(0 to 2);

begin
VHDL: alex port map (A => A, B => B, S => S);

process begin

A <= "00";
B <= "00";
wait for 1 ns;

A <= "00";
B <= "01";
wait for 1 ns;

A <= "00";
B <= "10";
wait for 1 ns;

A <= "00";
B <= "11";
wait for 1 ns;

A <= "01";
B <= "00";
wait for 1 ns;

A <= "01";
B <= "01";
wait for 1 ns;

A <= "01";
B <= "10";
wait for 1 ns;

A <= "01";
B <= "11";
wait for 1 ns;

A <= "10";
B <= "00";
wait for 1 ns;

A <= "10";
B <= "01";
wait for 1 ns;

A <= "10";
B <= "10";
wait for 1 ns;

A <= "10";
B <= "11";
wait for 1 ns;

A <= "11";
B <= "00";
wait for 1 ns;

A <= "11";
B <= "01";
wait for 1 ns;

A <= "11";
B <= "10";
wait for 1 ns;

A <= "11";
B <= "11";
wait for 1 ns;

assert false report "Programa finalizado";


wait;

end process;

end test;

6) DISEÑO

Figura 6: Diseño.
7) ANÁLISIS DE RESULTADOS

• Anote los errores cometidos en el desarrollo de la práctica (si los tuvo) y la


forma en que los corrigió.

Uno de los errores que cometí, fue al guardar el archivo, lo guardé como alex.vhd y al
ingresar en el CMD, y poner los siguientes comandos para la compilación no
encontraba el archivo. Se corrigió volviendo a guardar el archivo como alex.vhdl.

• Explique el proceso para simular un ejercicio en VHDL en GHDL.

El proceso en el siguiente:

1. Realizar la programación en el Programa Notepad++.


2. Se crean dos archivos fuentes que son; el ejercicio del trabajo preparatorio
y el otro es los vectores de prueba (test bench). Estos archivos se graban con
la extensión vhdl.
3. Ingresar al CMD de la PC e ingresar la dirección de la carpeta en donde
están grabados los archivos fuente y poner los siguientes comandos como
se muestra en la figura.

4. Si existe un error se podrá visualizar (CMD). Y se tiene que ingresar al


archivo fuente y corregir.
5. Visualizar la simulación se abrirá la ventana de GTKWave. Una vez
ingresado al simulador en el archivo fuente creado presionar en la pestaña
de (+), para verificar las variables de entradas y salidas.
6. Elegir las variables y presionar Find Next Edge varias veces.

7. Y para mostrar todo el proceso del programa implementado presionar Zoom


Fit.
8) CONCLUSIONES

• Se logro identificar los paquetes que trabajan con el lenguaje VHDL, en el cual se
pudo verificar que son de mucha utilidad y facilidad al momento de implementar el
ejercicio del trabajo preparatorio.
• Se implemento el circuito combinacional mediante el estilo Flujo de Datos (RTL),
ya que permite en la arquitectura describir como fluyen las señales de entrada por
el circuito hacia los terminales de salida.
• El programa Notepad ++ a diferencia del programa Xlinx requiere de una
compilación más compleja, pero su instalación es más sencilla.

9) RECOMENDACIONES

• Se recomienda la revisión detallada del programa, para evitar demoras y volver a


estar ingresando los comandos de compilación en el CMD.
• Se debe tener los paquetes necesarios para implementar el programa.

10) BIBLIOGRAFIA/LINKOGRAFÍA

Bibliografía
Sánchez, M. (2014). Introducción a la programación en VHDL. Obtenido de
https://eprints.ucm.es/id/eprint/26200/1/intro_VHDL.pdf

Simbaña, J. (2016). GHDK y GTKWave en Debian. Obtenido de


http://academicos.azc.uam.mx/oan/linux/ghdlDebian.html

También podría gustarte