Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Dispositivos Lógicos programables practicas, Ejercicios de Programación Funcional

En una Nexys 3 con lenguaje VHDL se presenta: -el diseño de un generador de bit de paridad par, de esta forma el transmisor ahora enviara 9 datos. - el diseño de un comprobador de error de paridad, el cual tiene 9 entradas y una salida. -Decodificador de dieciséis números con un display de 7 segmentos - Diseño de un circuito integrado 74151 en VHDL que hace referencia a un multiplexor 8x1.

Tipo: Ejercicios

2019/2020

Subido el 07/12/2020

YOF
YOF 🇲🇽

1 documento

1 / 15

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
= PRÁCTICA 2=
DISPOSITIVOS LÓGICOS PROGRAMABLES
I OBJETIVO:
Conocer la herramienta de desarrollo ISE Design 10.1 o superior para proyectos en VHDL, así como
gravarlos en un dispositivo PLD.
II INTRODUCCIÓN:
2.1 Lenguaje VHDL
El lenguaje de descripción hardware VHDL (Very high speed Hardware Description Logic) es un
lenguaje orientado a la descripción de hardware pero con muchos elementos heredados de otros
lenguajes como C o Pascal. Una vez realizado un programa en VHDL (con extensión VHD) y haberlo
compilado con éxito, tendremos un fichero con el mismo nombre y extensión JED, con el cual
podremos grabar una PLD (Dispositivo Lógico Programable) con la misma operatividad que el fichero
VHD. Al describir cualquier dispositivo en VHDL (desde una simple puerta and hasta un sistema
completo) se deben definir dos elementos principales:
Entidad o entity que es la interfaz del dispositivo con el exterior. Tiene por objeto decir que señales
son visibles o accesibles desde el exterior, es decir los puertos o ports del dispositivo.
entity prog01 is
port( a,b,c: in std_logic;
x: out std_logic;
end prog01;
Arquitectura o arquitecture que es la funcionalidad que realiza el dispositivo, es decir, qué
transformaciones se realizarán sobre los datos que entren por los puertos de entrada para
producir la salida. Dentro de este apartado es donde se dota de operatividad al circuito. Su
estructura general es la siguiente, y debe estar incluida en el mismo fichero de la entidad a la que
hace referencia:
arquitecture nombre of nombre_entidad is
begin
sentencias
end nombre;
Además se debe tener en cuenta una serie de detalles más de éste lenguaje:
VHDL no distingue las mayúsculas de las minúsculas, por lo que deberemos tener cuidado
al asignar nombres a las variables, especialmente si estamos acostumbrados a trabajar con
C.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡Descarga Dispositivos Lógicos programables practicas y más Ejercicios en PDF de Programación Funcional solo en Docsity!

= PRÁCTICA 2=

DISPOSITIVOS LÓGICOS PROGRAMABLES

I OBJETIVO:

Conocer la herramienta de desarrollo ISE Design 10.1 o superior para proyectos en VHDL, así como gravarlos en un dispositivo PLD. II INTRODUCCIÓN: 2.1 Lenguaje VHDL El lenguaje de descripción hardware VHDL ( V ery high speed H ardware D escription L ogic) es un lenguaje orientado a la descripción de hardware pero con muchos elementos heredados de otros lenguajes como C o Pascal. Una vez realizado un programa en VHDL (con extensión VHD) y haberlo compilado con éxito, tendremos un fichero con el mismo nombre y extensión JED, con el cual podremos grabar una PLD (Dispositivo Lógico Programable) con la misma operatividad que el fichero VHD. Al describir cualquier dispositivo en VHDL (desde una simple puerta and hasta un sistema completo) se deben definir dos elementos principales: Entidad o entity que es la interfaz del dispositivo con el exterior. Tiene por objeto decir que señales son visibles o accesibles desde el exterior, es decir los puertos o ports del dispositivo. entity prog01 is port ( a,b,c: in std_logic; x: out std_logic; end prog01; Arquitectura o arquitecture que es la funcionalidad que realiza el dispositivo, es decir, qué transformaciones se realizarán sobre los datos que entren por los puertos de entrada para producir la salida. Dentro de este apartado es donde se dota de operatividad al circuito. Su estructura general es la siguiente, y debe estar incluida en el mismo fichero de la entidad a la que hace referencia: arquitecture nombre of nombre_entidad is begin sentencias end nombre; Además se debe tener en cuenta una serie de detalles más de éste lenguaje:

  • VHDL no distingue las mayúsculas de las minúsculas, por lo que deberemos tener cuidado al asignar nombres a las variables, especialmente si estamos acostumbrados a trabajar con C.
  • Las variables deben empezar por una letra, no deben contener ni espacios ni símbolos como &, %, $, #, !, etc. Su longitud no está limitada, no pueden acabar con un carácter de subrayado o tener dos subraryados seguidos.
  • Para representar un número de una sola cifra, deberemos situarlo entre apóstrofes; así: '1'
  • Para representar un número de mas de una cifra, lo representaremos así: "10011"
  • Es muy probable que en cada práctica encuentres varias entidades y varias arquitecturas. Tomando como ejemplo al multiplexor, sabemos que no todos tienen el mismo número de bits o de canales, por eso cada uno tiene una entidad distinta. 2.2 Generador de paridad En los generadores de paridad la paridad puede ser par o impar. El bit de paridad se utiliza para detectar posibles errores en la transmisión del dato transmitido, mediante un comprobador de paridad que recepciona la información con el fin de validarla.
  • Paridad par: El bit de paridad será un 0 si el número total de 1 a transmitir es par.La suma de los bits que son unos, contando datos y bit de paridad dará siempre como resultado un número par de unos. Figura 1. Generador de paridad con puertas lógicas or-exclusiva (OR-X).
  • Paridad impar: El bit de paridad será un 1 si el número total de 1 es impar, el número de unos (datos + paridad) siempre debe ser impar. 2.3 Decodificador 7 segmentos

Figura 3. Multiplexor (conmutador) III DESARROLLO: 3 .1 Ambiente de desarrollo Para el desarrollo de esta práctica utilizamos el ambiente de desarrollo básico de Xilinx ISE Desing Suite versión 14.7, a través de sus herramientas para síntesis lógica y física de sistemas digitales sobre FPGAs se realizó, para cada problema presentado en la práctica, la configuración y programación de una Nexys 3 con una tarjeta xc6slx16-2csg324 y Spartan 6. 3 .2 Problemas y solución. Problema 1.- Para aumentar la confiabilidad de un transmisor que envía un dato de 8 bits. Diseñe un generador de bit de paridad par, de esta forma el transmisor ahora enviara 9 datos. Figura 4. Generador de paridad Solución: Para el diseño del generador de paridad se diseñó un circuito con 7 entradas y 8 salidas, debido a que la Nexys 3 solo cuenta con 8 Led’s, sin embargo, fue el mismo principio, las entradas se compararon entre sí una a una con una compuerta xor y el último Led encendía cuando se tenían activado un número impar de entradas y se apagaba cuando el número de entradas era par. Posteriormente se procedió a simular el programa y una vez que se comprobó el funcionamiento,

se sintetizó e implementó para poder generar el circuito y grabarlo en la Nexys 3. El código VHDL puede verse en las figuras 2 y 3. Figura 5. Descripción del circuito generador de paridad. Figura 6. Especificación de las terminales de los switch y LEDs de la tarjeta de desarrollo para el generador de paridad.

Figura 9. Especificación de las terminales de los switch y LEDs de la tarjeta de desarrollo para mostrar el error del generador de paridad. Problema 3.- Diseñar un decodificador de dieciséis números con un display de 7 segmentos como lo indica la figura siguiente. Figura 10. Patrones del decodificador. Solución: Para poder hacer el decodificador lo primero que hicimos fue declarar un total de 4 entradas para elegir el número y 7 salidas para poder mostrarlo en los displays de 7 segmentos, además se declaró otro vector de longitud 4 para poder activar los 4 displays de la Nexys 3 que utilizamos como se muestra en la figura 8.

Figura 11. Entidad del decodificar de para un display de 7 segmentos. Posteriormente se realizó el código del decodificar, el cual consiste en asignar a cada bit del display un ‘0’ o un ‘1’ dependiendo de si queremos que encienda o se apagué dicho segmento respectivamente en base al número en binario que indiquemos con los bits de entrada. Figura 12. Descripción del circuito de un decodificar de dieciséis números.

Solución: Para el realizar el circuito integrado 74151 se diseñó teniendo como base un multiplexor 8x1, lo que significa que tenemos: ▪ 8 entradas de datos ▪ 3 entradas de selección obtenidas de: 2 n^ entradas = n selectores 8=2^3 - > 3 Selectores También, como se muestra en la fig. 14. en la tabla de verdad, el circuito integrado 74151 además de la salida Z, tiene una salida negada 𝑍̅. Una vez declaradas las entradas y salidas se realizó la implementación lógica binaria de las entradas de selección con sus correspondientes entradas de datos, de acuerdo a la tabla de verdad anteriormente mencionada. Asimismo se colocó el “enable” que no es mas que una instrucción con la que se deshabilitará el multiplexor cuando ésta sea activada (en este caso se le asigno un botón de la Nexys 3) como se muestra en la siguiente imagen. Figura 15. Descripción del circuito integrado 74151 en VHDL.

Como se muestra en la fig. 15 para la asignación de botones se colocaron las entradas de datos en los Switch, las entradas de selección al igual que el “enable” en los botones, las salidas se representaron mediante Led’s que encienden o apagan de acuerdo a las instrucciones que reciben. Figura 16. Generador de paridad visto en la tarjeta de desarrollo. 3 .4 Comprobación física. A continuación, se muestran los resultados obtenidos de acuerdo con la solución dada para cada uno de los problemas propuestos en la práctica. 1.- Generador de paridad:

3.- Decodificador de dieciséis números para displays de 7 segmentos: Figura 19. Decodificador de dieciséis números visto en la Nexys 3. 4 .- Circuito integrado 74151 (Multiplexor 8x1) Figura 20. Última instrucción (según tabla de Fig. 14) a) Led de salida Z encendido (sin activar “enable”), b) led de salida negada 𝒁̅ encendido (“enable” activado) a) b)

Figura 21. Tercer instrucción (según tabla de Fig. 14) a) Led de salida Z encendido (sin activar “enable”), b) led de salida negada 𝒁̅ encendido (“enable” activado) IV OBSERVACIONES Y CONCLUSIONES: El desarrollo de la práctica se me facilitó debido a que los problemas o ejercicios propuestos no eran de mucha dificultad, sin embargo, tuvimos algunos problemas con el último ejercicio debido a que no podíamos declarar la variable del enable, pero después de intentar con distintas formas o métodos pudimos hacer que el programa funcionara correctamente con un simple if. Este tipo de prácticas me ayudan mucho para reforzar algunos conceptos que por falta de práctica había olvidado, y me hacen familiarizar cada vez mejor con el programa y el lenguaje de programación VHDL y la Nexys 3. Hicimos una entidad y una arquitectura para cada problema y en diferentes proyectos del ISE Design Suite 14.7 debido a que no supimos implementar varias entidades en un solo programa. Al final, logramos cumplir con todos los objetivos y aprendimos nuevas cosas que nos ayudarán en futuras prácticas. Durante la resolución de cada problema me pude percatar de las facilidades que brinda la plataforma ISE Design Suite 14.7, se pueden desarrollar una variedad de programas para implementarlos en la Nexys 3 u otra tarjeta. Se puede realizar desde la programación de compuertas lógicas hasta el uso de código binario para programar tablas de verdad. Aunque el lenguaje VHDL es sencillo, tuvimos algunos problemas de Syntaxis pues debíamos recordar cómo programar las compuertas lógicas correctamente en los primeros problemas, se presentaron errores a la hora de colocar corchetes o paréntesis, además en el último problema se presentó la dificultad de cómo usar adecuadamente “elsif” y “else” para que “enable” realizara correctamente su función de activar o desactivar el multiplexor. a) b)