You are on page 1of 35

Facultad de Estudios Superiores Cuautitlán UNAM

UNAM
Facultad de Estudios Superiores Cuautitlan

Departamento: Asignatura:
Ingeniería Diseño de Sistemas Digitales

Sección: Clave de carrera: 130


Electrónica Clave de asignatura: 1838

Manual del Laboratorio de Diseño de


Sistemas Digitales
Autor: Profesor José Luis Barbosa
Pacheco

Fecha de elaboración: Agosto de 2016


Fecha de revisión: Enero de 2020

Índice
Facultad de Estudios Superiores Cuautitlán UNAM

Índice

Objetivo general de la asignatura............................................................ ii


Objetivos del curso experimental............................................................ ii
Introducción ............................................................................................ ii
Reglamento interno de los laboratorios de electrónica ......................... iii
Instrucciones para la elaboración del reporte ......................................... v
Criterios de evaluación del curso ............................................................ v
Práctica 1: Prueba del ambiente para el diseño de sistemas digitales . 1
Práctica 2: Modelado con lógica programable..................................... 9
Práctica 3: Descripción por flujo de datos ......................................... 12
Práctica 4: Descripción funcional ....................................................... 15
Práctica 5: Diseño de máquinas de estados ....................................... 18
Práctica 6: Diseño de un reloj digital ................................................. 22
Práctica 7: Diseño de un procesador de imágenes ............................ 25
Bibliografía ............................................................................................ 29

Índice i
Facultad de Estudios Superiores Cuautitlán UNAM

Objetivo general de la asignatura

➢ Al finalizar el curso el alumno comprenderá y aplicará las herramientas y técnicas que le


permitan modelar, diseñar, integrar, programar y construir sistemas digitales con diferentes
tecnologías. Los conceptos de diseño arriba-abajo, flujo de datos, jerarquía de módulos y
algoritmos; mediante el diseño con lógica programable.

Objetivos del curso experimental

➢ Aplicar diferentes técnicas de diseño de sistemas digitales.


➢ Aplicar el lenguaje de descripción para el diseño de sistemas digitales.
➢ Fomentar las prácticas de diseño con un ambiente de desarrollo integrado.
➢ Experimentar con una tarjeta de desarrollo de última generación.

Introducción

En la actualidad el nivel de integración alcanzado con el desarrollo de la microelectrónica ha hecho


posible desarrollar sistemas completos dentro de un solo circuito integrado SOC (System On Chip),
con lo cual se han mejorado de manera notoria características como velocidad, confiabilidad,
consumo de potencia y sobre todo el área de diseño. Esta última característica nos ha permitido
observar día a día cómo los sistemas de uso industrial, militar y de consumo han minimizado el
tamaño de sus desarrollos. La integración de sistemas se ha ido superando a medida que surgen
nuevas tecnologías de fabricación. Esto ha permitido obtener componentes de mayor complejidad y
que brindan mayores beneficios. Sin embargo, el desarrollo de nuevos productos requiere bastante
tiempo, por lo cual sólo se emplea cuando se necesita un alto volumen de producción.

Una forma más rápida y directa de integrar aplicaciones es mediante la lógica programable, la cual
permite independizar el proceso de fabricación del proceso de diseño fuera de la fábrica de
semiconductores. Esta idea fue desarrollada por Hon y Sequin y Conway y Mead a finales de los años
sesenta.

Los dispositivos lógicos programables (PLD, por sus siglas en inglés) favorecen la integración de
aplicaciones y desarrollos lógicos mediante el empaquetamiento de soluciones en un circuito
integrado. El resultado es la reducción de espacio físico dentro de la aplicación; es decir, se trata de
dispositivos fabricados y revisados que se pueden personalizar desde el exterior mediante diversas
técnicas de programación. El diseño se basa en bibliotecas y mecanismos específicos de mapeado de
funciones, mientras que su implementación tan sólo requiere una fase de programación del
dispositivo que el diseñador suele realizar en unos segundos.

Prólogo ii
Facultad de Estudios Superiores Cuautitlán UNAM

En la actualidad, el diseño de ASIC (circuitos integrados desarrollados para aplicaciones específicas)


domina las tendencias en el desarrollo de aplicaciones a nivel de microelectrónica. Ofrecen grandes
ventajas en sistemas que emplean circuitos diseñados para una aplicación en particular. Sin embargo,
su diseño sólo es adecuado en aplicaciones que requieren un alto volumen de producción. Por lo tanto,
los FPGA (arreglos de compuertas programables en campo) y CPLD (dispositivos lógicos
programables complejos) ofrecen las mismas ventajas de un ASIC, sólo que a un menor costo y con la
ventaja de que ambos son circuitos reprogramables, en los cuales es posible modificar o borrar una
función programada sin alterar el funcionamiento del circuito[7].

Con los dispositivos lógicos programables, podemos usar herramientas de software baratas para
llegar rápidamente al desarrollo, simulación y prueba de nuestros diseños. Por lo tanto, un diseño
puede ser programado rápidamente en el dispositivo, e inmediatamente probados en vivo en el
circuito.

El lenguaje de descripción está orientado a la descripción y modelado de un sistema digital en varios


niveles de abstracción. El planteamiento de las actividades de laboratorio están orientadas a
familiarizar primeramente al alumno con el ambiente de desarrollo tanto hardware como software,
posteriormente, las prácticas van requiriendo de la aplicación de las diferentes técnicas para el
modelado y diseño de sistemas. Sistemas que van desde estructuras individuales hasta diseños
conceptuales modelados de arriba-abajo. Por otro lado, se hace una vinculación entre la teoría y la
práctica mediante la implementación de diseños usando tarjetas de desarrollo que van de acuerdo al
estado del arte en dispositivos programables y ambientes de desarrollo que ofrecen grandes ventajas,
así como herramientas de programación, simulación y análisis de última generación.

Reglamento interno de los laboratorios de Electrónica

El presente reglamento de la sección electrónica, tiene por objeto establecer los lineamientos,
requisitos y condiciones que deberán de conocer y aplica, alumnos y profesores en los laboratorios
dentro de sus cuatro áreas: comunicaciones, control, sistemas analógicos y sistemas digitales.

1. Dentro del laboratorio queda estrictamente prohibido.

a. Correr, jugar, gritar o hacer cualquier otra clase de desorden.


b. Dejar basura en las mesas de trabajo y/o pisos.
c. Sentarse sobre las mesas
d. Fumar, consumir alimentos y/o bebidas.
e. Realizar o responder llamadas telefónicas y/o el envío de cualquier tipo de mensajería.
f. La presencia de personas ajenas en los horarios de laboratorio.
g. Dejar los bancos en desorden.
h. Mover equipos o quitar accesorios de una mesa de trabajo a otra sin el consentimiento previo del
profesor de laboratorio en turno.
i. Usar o manipular el equipo sin el conocimiento previo del profesor.
j. Rayar las mesas del laboratorio.
k. Energizar algún circuito sin antes verificar que las conexiones sean las correctas (polaridad de
las fuentes de voltaje, multímetros, etc.).
l. Hacer cambios en las conexiones o desconectar equipo estando éste energizado.
m. Hacer trabajos pesados (taladrar, martillar, etc.) en las mesas de las prácticas.
n. Instalar software y/o guardar información en los equipos de cómputo de los laboratorios.

Prólogo iii
Facultad de Estudios Superiores Cuautitlán UNAM

2. Se permite el uso de medios electrónicos y equipo de sonido (celulares, tabletas, computadoras, etc.)
únicamente para la realización de las prácticas.

3. Es responsabilidad del profesor y de los alumnos revisar las condiciones del equipo del laboratorio al
inicio de cada práctica. (encendido, dañado, sin funcionar, maltratado, etc.) El profesor reportará
cualquier anomalía al encargado de área correspondiente o al jefe de sección.

4. Los profesores deberán de cumplir con las actividades y tiempos indicados en el “cronograma de
actividades de laboratorio”.

5. Los alumnos deberán realizar las prácticas de laboratorio. No son demostrativas.

6. Es requisito indispensable para la realización de las prácticas, que el alumno cuente con su manual
completo y actualizado al semestre en curso, en formato digital o impreso, el cual podrá obtener en:
http://olimpia.cuautitlan2.unam.mx/pagina_ingenieria.

7. Es requisito indispensable para la realización de las prácticas de laboratorio que el alumno cuente con
las hojas de datos técnicos de los dispositivos a utilizar.

8. El alumno deberá traer su circuito armado en la tableta de conexiones para poder realizar la práctica,
de no ser así, tendrá una evaluación de cero en la sesión correspondiente.

9. En caso de que el alumno no asista a una sesión, tendrá falta, (evaluándose con cero) y será indicada
en el registro de seguimiento y control por medio de guiones.

10. La evaluación de cada sesión debe realizarse en base a los criterios de evaluación incluidos en los
manuales de prácticas de laboratorio y no podrán ser modificados. En caso contrario, reportarlo al
jefe de sección.

11. La evaluación final del laboratorio, será en base a lo siguiente:

A - (Aprobado); Cuando el promedio total de todas las prácticas de laboratorio sea mayor o
igual a 6 siempre y cuando tengan el 90% de asistencia y el 80% de prácticas acreditadas
en base a los criterios de evaluación.
NA - (No Aprobado); No se cumplió con los requisitos mínimos establecidos en el punto anterior.
NP - (No Presentó); No se entregó reporte alguno.

12. Profesores que requieran hacer uso de las instalaciones de laboratorio para realizar trabajos o
proyectos, es requisito indispensable que notifiquen por escrito al jefe de sección. Siempre y cuando
no interfiera con los horarios de los laboratorios.

13. Alumnos que requieran realizar trabajos o proyectos en las instalaciones de los laboratorios, es
requisito indispensable que esté presente el profesor responsable del trabajo o proyecto. En caso
contrario no podrán hacer uso de las instalaciones.

14. Correo electrónico del buzón para quejas y sugerencias para cualquier asunto relacionado con los
laboratorios (electronica@fesc.cuautitlan2.unam.mx).

15. Los casos no previstos en el presente reglamento serán resueltos por el Jefe de Sección.

NOTA: En caso de incurrir en faltas a las disposiciones anteriores, el alumno o profesor será acreedor a las
sanciones correspondientes.

Prólogo iv
Facultad de Estudios Superiores Cuautitlán UNAM

Instrucciones para la elaboración del reporte

Será necesario incluir en cada actividad previa y reporte de la práctica una portada obligatoria que
contenga la información mostrada a continuación:

Para la presentación del reporte se deberá cumplir con los requisitos indicados en cada una de las
prácticas, incluyendo:
• Introducción.
o Para la cual deberá realizar una investigar acerca del tema de la práctica y escribir
su propia introducción.
• Procedimiento experimental:
o Con todos sus resultados y elementos que considere importantes para enriquecer su
reporte como tablas de datos, mediciones, gráficas, comentarios, observaciones,
esquemas y diagramas.
• Cuestionario.
• Conclusiones.
o Representan una parte medular del reporte, es en dónde el alumno presenta la
síntesis del trabajo, es decir, se pone a prueba la teoría contra la práctica.
• Bibliografía:
o Elaborar una lista de las referencias bibliográficas realmente consultadas,
presentadas en un estilo de citación como APA o IEEE.

Así como todos los puntos solicitados dentro del desarrollo de la práctica.

Criterios de evaluación del curso


C1 (Criterio de evaluación 1): Actividades previas de la práctica (40%)
C2 (Criterio de evaluación 2): Habilidad en el armado y funcionalidad de los sistemas (10%)
C3 (Criterio de evaluación 3): Habilidad para manejo de equipo e interpretación de lecturas (10%)
C4 (Criterio de evaluación 4): Reporte entregado con todos los puntos indicados (40%)

Prólogo v
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 1: Prueba del ambiente para el diseño de sistemas digitales

Tema

1. Introducción.

Objetivos

Al término de esta práctica el alumno conocerá:

➢ Los recursos hardware con que cuenta la tarjeta de desarrollo.

➢ El conjunto de herramientas software para sintetizar sistemas en la tarjeta de desarrollo.

Introducción

Los dispositivos lógicos programables (PLD por sus siglas en inglés) y su más reciente evolución
como un arreglo de compuertas lógicas programable en campo (FPGA) ofrecen una versatilidad en
cuanto a las características de capacidad lógica, velocidad y voltaje; además de que estos dispositivos
pueden volver a ser configurados para cambiar cualquier característica de su función. Para ir más allá
de la teoría, usaremos una plataforma para el desarrollo de circuitos digitales, que está lista para
usarse; además, está diseñada para implementar aplicaciones de la industria en el ambiente del salón
clase.
La Nexys4 DDR (figura 1.1) es una tarjeta de desarrollo basada en la última FPGA Artix-7TM de
Xilinx®. Podemos desarrollar proyectos que van desde circuitos digitales básicos hasta poderosos
procesadores embebidos. En la misma tarjeta se encuentran varios periféricos, entre los cuáles se
incluyen: acelerómetro, sensor de temperatura, micrófono digital, amplificador de sonido, así como
otros dispositivos de entrada y salida, que permiten llevar a cabo diseños sin necesidad de
componentes adicionales.
Como herramienta software de desarrollo, la Nexys4 DDR es compatible con el suite de diseño
Vivado®, así como el conjunto de herramientas software ISE®. Para obtener estas herramientas,
Xilinx ofrece una versión WebPACKTM que nos permite implementar nuestros diseños sin costo
adicional.
Por supuesto, existen otros fabricantes de FPGA como Altera, Lattice Semiconductor, Actel y otros.
Cada uno ofrece dispositivos con sus características y ambientes de desarrollo particulares.
El ambiente de desarrollo contiene varias herramientas software que nos permiten realizar nuestro
diseño de manera esquemática o textual, realizar la verificación mediante herramientas de
simulación, especificar restricciones sobre el dispositivo específico para una óptima implementación
y herramientas de programación para descargar el diseño sobre el dispositivo físico.
Existen numerosos lenguajes de descripción de hardware (HDL), sin embargo los más usados y
soportados en la industria son Verilog y VHDL.

Práctica 1 1
Facultad de Estudios Superiores Cuautitlán UNAM

Para el desarrollo de las prácticas correspondientes a la asignatura, utilizaremos la tarjeta Nexys4


DDR fabricada por Digilent®, el suite de diseño Vivado® en su versión WebPACKTM y VHDL como
lenguaje para la descripción del hardware.

Figura 1.1. Características de


la tarjeta Nexys4 DDR.

Actividades previas
a la práctica

1) El alumno realizará la lectura de la práctica.

2) Descargar, leer y analizar el documento “Nexys 4 DDR


Reference Manual”.

3) Descargar e instalar Vivado HL WebPACK.

4) Usando los métodos tradicionales (tabla de verdad, mapas de


Karnaugh y funciones lógicas), escriba (con el editor de texto
de su preferencia) las funciones lógicas en VHDL que
describa el comportamiento de un comparador de magnitud
de 2 bits, que indique con una señal de salida de nivel alto,
cuando el número sea menor, mayor o igual. Impleméntelo en una GAL y simule su
comportamiento, verificando su correcto funcionamiento.
5) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Práctica 1 2
Facultad de Estudios Superiores Cuautitlán UNAM

Material
No aplica.

Procedimiento experimental

1. Crea un nuevo proyecto en Vivado, para ello ejecuta el programa y en la barra superior elije
la opción “File”→ ”New Project”, y oprimimos “Next”.

2. Aparece una nueva ventana en la que debemos escribir el nombre de nuestro proyecto,
seleccionamos la ruta (Project location) para depositar nuestra carpeta, seleccionamos
“Create project subdirectory” y oprimimos “Next” (figura 1.3).

Figura 1.3. Crear un nuevo proyecto.

3. Aparece una nueva ventana, verificamos que esté seleccionado RTL (Register Transfer Level)
y oprimimos “Next”.

4. Aparece otra ventana para especificar el tipo de lenguaje que usaremos para escribir el código,
seleccionamos VHDL en las opciones “Target” y “Simulator”, oprimimos el botón “+” para
continuar y seleccionamos “Create File”. Aparece una pequeña ventana, escribimos el nombre
del archivo y luego damos “OK” (figura 1.4). Nuevamente aparece una ventana, esta vez para
indicar si añadimos un IP (Intellectual Property), damos “Next” (por ahora no lo usaremos).

Práctica 1 3
Facultad de Estudios Superiores Cuautitlán UNAM

Figura 1.4. Crear un archivo VHDL.

5. Aparece otra ventana (figura 1.5) para crear o añadir el archivo de restricciones. Oprimimos
el botón “+”, seleccionamos añadir, buscamos el archivo, lo seleccionamos y damos “OK”.
Regresa a la ventana, seleccionamos el cuadro “Copy constraints files into project” y
oprimimos “OK”.

Figura 1.5. Añadir el archivo de restricciones.

6. En la siguiente ventana, seleccionamos “Boards”, Vendor: “Digilent” y “Nexys4DDR”.

Figura 1.6. Seleccionar el tipo de tarjeta.

Práctica 1 4
Facultad de Estudios Superiores Cuautitlán UNAM

7. Finalmente se crea el proyecto y aparece la vista de las opciones del ambiente de desarrollo.
En la ventana “Sources”, podemos identificar los archivos que hemos credo previamente
(figura 1.7).

Figura 1.7. Vista de los archivos, creados dentro del proyecto.

8. Seleccionar el archivo de diseño (Design Sources) y escribir o copiar el código en VHDL,


escrito en las actividades previas.

9. Editar el archivo de restricciones para que asignemos los interruptores (8 para el dato A y 8
para el dato B), así como los LEDs (1 para indicar A>B, otro para A<B y otro para A=B) que
usaremos para indicar el resultado de la comparación.

10. Configurar el archivo que se copiará en el dispositivo, oprimiendo “Implementation Settings”,


luego “Bitstream”, seleccionar “-bit_file*” y damos “OK” (ver figura 1.8).

Figura 1.8. Definir el tipo de archivo que se copiará en el dispositivo.

11. Ejecutar “Synthesis” →”Run Synthesis”, como se observa en la figura 1.9.

Práctica 1 5
Facultad de Estudios Superiores Cuautitlán UNAM

Figura 1.9. Síntesis del proyecto.

12. Ejecutar “Implementation” →”Run Implementation” (ver la figura 1.10).

Figura 1.10. Implementación del proyecto.

13. Ejecutar “Program and Debug” →“Generate Bitstream”, seleccionando las opciones que
muestra la figura 1.11.

Figura 1.11. Generar el archivo.

Práctica 1 6
Facultad de Estudios Superiores Cuautitlán UNAM

14. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, abrir
la ventana con la opción “Open Target” → “Next” →”Next”, para establecer la conexión con la
tarjeta. Como se muestra en la figura 1.12.

Figura 1.12. Generar el archivo.

15. Una vez establecida la conexión, aparece otra ventana para seleccionar el tipo de la tarjeta,
damos “Next” y luego “Finish” (figura 1.13).

Figura 1.13. Selección de la tarjeta.

16. Finalmente, escogemos la opción “Program device” y luego el tipo de dispositivo (ver figura
1.14). A continuación aparece otra ventana para seleccionar el archivo a copiar,
seleccionamos dicho archivo y el programa ha sido cargado en

Figura 1.14. Programación de la tarjeta.

Práctica 1 7
Facultad de Estudios Superiores Cuautitlán UNAM

17. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario.

1) Elabore una tabla comparativa en cuanto a las capacidades de las recientes FPGA (al menos
tres) de los tres fabricantes cuyos dispositivos son los más usados en la industria y el diseño.

2) ¿Además de la FPGA, cuáles son los módulos con que cuenta la tarjeta usada en la práctica y
para qué nos sirve cada uno de ellos?

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 1 8
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 2: Modelado con lógica programable

Tema

2. Técnicas de modelado para el diseño de sistemas digitales.

Objetivos

Al término de esta práctica el alumno aplicará:

➢ Los conceptos de diseño arriba-abajo, flujo de datos, jerarquía de módulos y algoritmos;


mediante el diseño con lógica programable.

Introducción

La técnica de modelado arriba-abajo (top-down) parte de la conceptualización general del sistema


sin especificar detalles. Posteriormente cada parte del sistema es analizada y diseñada en detalle,
hasta realizar la definición completa del sistema. El diseño empleando esta técnica, a menudo
considera cada uno de los bloques como “cajas negras” que hacen más fácil visualizar la idea general;
aunque estas cajas no expliquen a detalle los componentes individuales. La técnica tiene la ventaja de
separar el problema en partes; que nos permiten tener una idea clara de lo que debe hacerse. En cada
paso de división, las nuevas partes resultan menos complicadas y, por lo tanto, fáciles de resolver. Las
partes de la solución se convierten en unidades que se pueden volver a utilizar. Partir el problema,
permite a más de una persona trabajar en la solución.
Por otro lado, los diagramas de flujo de datos son una herramienta que ayuda en el diseño sistemas
utilizando la técnica arriba-abajo. Los subsistemas que se obtuvieron con la
técnica arriba-abajo, puede ser representada por un diagrama de flujo de datos,
convirtiéndose así en un agente o instancia del sistema, la cual identifica el
manejo interno de los datos y el flujo de los mismos entre varias partes del
sistema y dentro de su misma instancia.
El seudocódigo es una técnica de descripción “informal” del principio de
operación de un algoritmo. Su intención es que pueda ser leído por el humano, no
por la máquina. Su propósito es que las personas lo puedan entender
fácilmente sin estar sujeto a la sintaxis del código de un lenguaje de
programación específico.
Es conveniente conocer las diferentes técnicas para el diseño de sistemas
digitales porque nos permite visualizar mejor nuestro diseño mediante el
empleo de alguna o la combinación de todas.
Figura 2.1. Diseño arriba-abajo.

Práctica 2 9
Facultad de Estudios Superiores Cuautitlán UNAM

Actividades previas a la práctica

1) El alumno realizará la lectura de la práctica.

2) Diseñe un circuito comparador de magnitud de 8 bits, modificando el código del comparador


de 2 bits diseñado en la práctica anterior. Cree un nuevo proyecto y escriba su código en
Vivado HL WebPACK. Realice un análisis RTL para verificar que su diseño cumple con lo
solicitado.

3) Haciendo uso de las técnicas de modelado del diseño arriba-abajo, flujo de datos, jerarquía de
módulos y algoritmos; diseñe un circuito comparador de magnitud de 8 bits, tomando como
instancia el comparador de 2 bits diseñado en la práctica anterior. Cree un nuevo proyecto y
escriba su código en Vivado HL WebPACK. Realice un análisis RTL para verificar que su diseño
cumple con lo solicitado.

4) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Material

No aplica.

Procedimiento experimental

1. Crear un nuevo proyecto en VivadoTM HL WebPACK® y copie, escriba o añada el código escrito
en las actividades previas.

2. Editar el archivo de restricciones para que asignemos los interruptores (8 para el dato A y 8
para el dato B), así como los LEDs (1 para indicar A>B, otro para A<B y otro para A=B) que
usaremos para indicar el resultado de la comparación.

3. Configurar el archivo “Bitstream”, como lo realizó en la práctica número 1.

4. Sintetizar (“Synthesis” →”Run Synthesis”) el proyecto y verificar que no haya errores.

5. Realizar la implementación (Implementation” →”Run Implementation), verificar que no haya


errores y analice el resumen del proyecto (Project Summary).

Práctica 2 10
Facultad de Estudios Superiores Cuautitlán UNAM

6. Ejecutar la opción para generar el (“Program and Debug” →“Generate Bitstream).

7. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, copiar


el archivo “.bit” y verificar que no haya errores.

8. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario

1) ¿Existen algunas ventajas de usar las técnicas de diseño?, mencione algunas.

2) Mencione las características que considere importantes y que obtuvo en el resumen del
proyecto “Project Summary”, para cada diseño de las actividades previas mencionadas en los
puntos 2) y 3).

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 2 11
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 3: Descripción por flujo de datos

Tema

2. Técnicas de modelado para el diseño de sistemas digitales

Objetivos

Al término de esta práctica el alumno aplicará:

➢ El diseño de sistemas digitales con lógica programable, empleando la descripción por flujo de
datos.
➢ Diferenciar y entender el uso de las sentencias concurrentes, condicional y por selección.

Introducción

La arquitectura de un sistema digital puede ser modelada de diferentes maneras. Entendiendo las
diferentes técnicas de modelado y cómo usarlas, representa el paso más importante para aprender
VHDL. Una arquitectura puede ser descrita mediante tres técnicas básicas de modelado, más, la
combinación de cualquiera de las tres; dichas técnicas pueden ser por flujo de datos, funcional,
estructural e híbrido.
El modelo de la descripción en VHDL se fundamenta en el paralelismo y la concurrencia con la
descripción textual de los circuitos. El corazón de la descripción en VHDL es la sentencia concurrente,
de la cual existen cuatro tipos: asignación concurrente de una señal, asignación condicional,
asignación selectiva y la sentencia proceso (process en inglés).
En las arquitecturas de flujo de datos se encuentran las sentencias concurrentes descritas
anteriormente (asignación concurrente, condicional y selectiva). A continuación se presenta la
sintaxis de cada una de ellas con fines ilustrativos y para diferenciar una de otras:
• Asignación concurrente
<destino> <= <expresión>;

• Asignación condicional
<destino> <expresión> when <condición> else
<expresión> when <condición> else
<expresión>;

• Asignación selectiva
With <opción> select
<destino> <= <expresión> when <opciones>,
<expresión> when <opciones>,
<expresión> when others;

Práctica 3 12
Facultad de Estudios Superiores Cuautitlán UNAM

En estos ejemplos, podemos prácticamente “observar” el flujo de los datos por el circuito. Este tipo
de modelado funciona bien para circuitos pequeños y relativamente simples. Pero, para circuitos más
complejos, es mejor cambiar a los modelos funcionales.

Actividades previas a la práctica

1) El alumno realizará la lectura de la práctica.

2) Diseñe un circuito multiplexor de 4 entradas a una salida. Cree un nuevo proyecto y


escriba su código en Vivado HL WebPACK. Escriba el código usando la asignación
concurrente, luego un código usando la asignación condicional y, finalmente, un
código con la asignación selectiva. Realice un análisis RTL para verificar que su diseño
cumple con lo solicitado, así como comparar los resultados obtenidos al usar los
diferentes tipos de asignación.

3) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Material

No aplica.

Procedimiento experimental

1. Crear un nuevo proyecto en VivadoTM HL WebPACK® y copie, escriba o añada el código escrito
en las actividades previas.

2. Editar el archivo de restricciones para que asignemos los interruptores (4 para las entradas
de datos y 2 para las señales de selección), así como el LED que usaremos para indicar el
estado de la salida de datos.

3. Configurar el archivo “Bitstream”, como lo realizó en la práctica número 1.

4. Sintetizar (“Synthesis” →”Run Synthesis”) el proyecto y verificar que no haya errores.

5. Realizar la implementación (Implementation” →”Run Implementation), verificar que no haya


errores y analice el resumen del proyecto (Project Summary).

Práctica 3 13
Facultad de Estudios Superiores Cuautitlán UNAM

6. Ejecutar la opción para generar el (“Program and Debug” →“Generate Bitstream).

7. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, copiar


el archivo “.bit” y verificar que no haya errores.

8. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario

1) De acuerdo a sus resultados, recomiende en qué tipos de diseño usar uno u otro tipo de
asignación.

2) ¿Existen diferencias en el hardware generado para cada diseño?, mencione algunas.

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 3 14
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 4: Descripción funcional

Tema

2. Técnicas de modelado para el diseño de sistemas digitales

Objetivos

Al término de esta práctica el alumno aplicará:

➢ El diseño de sistemas digitales con lógica programable, empleando la descripción funcional.


➢ Diferenciar y entender el uso del modelado por flujo de datos y funcional.

Introducción

Como hemos abordado en las prácticas anteriores, existen diferentes maneras de diseñar un sistema
digital y sólo queda al diseñador escribir su diseño de la manera más clara y dejar a la herramienta
de síntesis ordenar los detalles.
La sentencia de proceso (process) es una herramienta que nos permite ejecutar un cierto número
de instrucciones de manera secuencial, sin embargo, no debemos olvidar que la sentencia “process”,
en sí misma, es concurrente.
A continuación, mostramos la estructura de la sentencia de proceso:

mi_etiqueta: process(señales_a_sensar) is
<declaración_señales,variables, etc.>
Begin
<sentencias_secuenciales>
End process mi_etiqueta;

El corazón de la programación funcional es la sentencia process. El principal punto a recordar es


que el cuerpo del proceso se compone de sentencias secuenciales. Es importante resaltar que la
ejecución de una sentencia en el estilo funcional es controlada por las señales que aparecen en las
señales a sensar (“sensivity_List”). Por el contrario, las sentencias que aparecen en el modelo de flujo
de datos, son re-evaluadas cada vez que las señales de entrada cambian. Esto es una diferencia
funcional, no sólo una diferencia de apariencia.
La sentencia process debería ser considerada como una manera que el diseñador tiene a su
disposición para ejecutar una serie de sentencias secuenciales, sin olvidar que la sentencia process
es en sí una sentencia concurrente.
La sentencia “case” es el equivalente secuencial de la sentencia de with. Sin embargo, la sentencia
case es una sentencia secuencial que se encuentra en el cuerpo de process mientras que with es una
forma de asignación de una señal concurrente.
A continuación introducimos el uso de la sentencia case dentro de un proceso:

Práctica 4 15
Facultad de Estudios Superiores Cuautitlán UNAM

mi_etiqueta: process(señales_a_sensar) is
<declaración_señales,variables, etc.>
Begin
case (expresión) is
when opciones =>
<sentencias_secuenciales>
when opciones =>
<sentencias_secuenciales>
when others =>
<sentencias_secuenciales>
end case;
End process mi_etiqueta;

En la sentencia case sólo se ejecuta un conjunto de sentencias secuenciales, por cada ejecución de la
sentencia case.

Actividades previas a la práctica

1) El alumno realizará la lectura de la práctica.

2) Diseñe un circuito multiplexor de 4 entradas a una salida. Cree un nuevo proyecto y


escriba su código en Vivado HL Web PACK. Escriba el código usando la sentencia para
describir un proceso. Realice un análisis RTL para verificar que su diseño cumple con
lo solicitado, así como comparar los resultados obtenidos al usar los diferentes tipos
de asignación.

3) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Material

No aplica.

Procedimiento experimental

1. Crear un nuevo proyecto en VivadoTM HL WebPACK® y copie, escriba o añada el código escrito
en las actividades previas.

Práctica 4 16
Facultad de Estudios Superiores Cuautitlán UNAM

2. Editar el archivo de restricciones para que asignemos los interruptores (4 para las entradas
de datos y 2 para las señales de selección), así como el LED que usaremos para indicar el
estado de la salida de datos.

3. Configurar el archivo “Bitstream”, como lo realizó en la práctica número 1.

4. Sintetizar (“Synthesis” →”Run Synthesis”) el proyecto y verificar que no haya errores.

5. Realizar la implementación (Implementation” →”Run Implementation), verificar que no haya


errores y analice el resumen del proyecto (Project Summary).

6. Ejecutar la opción para generar el (“Program and Debug” →“Generate Bitstream).

7. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, copiar


el archivo “.bit” y verificar que no haya errores.

8. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario

1) De acuerdo a sus resultados, recomiende en qué tipos de diseño usar el modelo por flujo de
datos.

2) ¿Existen diferencias en el hardware generado, respecto al diseño de la práctica anterior?,


mencione algunas.

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 4 17
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 5: Diseño de máquinas de estados

Tema

2. Técnicas de modelado para el diseño de sistemas digitales

Objetivos

Al término de esta práctica el alumno aplicará:

➢ El diseño de sistemas digitales con lógica programable, empleando los modelos de descripción
por flujo de datos y funcional.
➢ Modelado de máquinas de estados con lógica programable.

Introducción

Las Máquinas de Estados Finitos (FSM) son abstracciones matemáticas utilizadas para resolver
problemas de automatización electrónica, diseñar protocolos de comunicación, análisis y otras
aplicaciones de ingeniería.
Una red secuencial canónica puede ser descrita por el diagrama de la figura 5.1:

Figura 5.1. Representación canónica de una FSM.

Con frecuencia es conveniente separar la red combinacional en dos partes, C1 y C2, como muestra la
figura 5.2:

Práctica 5 18
Facultad de Estudios Superiores Cuautitlán UNAM

Figura 5.2. Máquina de Mealy.

Esta máquina de estados en la cual la salida presente z(t) depende del estado presente s(t) y de la
entrada presente x(t), se llama máquina de Mealy.
Si la salida presente z(t) depende sólo del estado presente, la máquina de estados es conocida como
máquina de Moore (figura 5.3).

Figura 5.3. Máquina de Moore.

Esta representación mediante diagrama de bloques funcional, nos facilita su descripción en VHDL.
Por ejemplo, para la máquina de moore:
• Entidad
o Descripción de las entradas y salidas a la FSM (x(t), z(t) y clk).
• Señales intermedias:
o Declaración de estado presente y estado siguiente (s(t) y s(t+1)).
• Bloque de registro de estados:
o Descripción de un proceso secuencial.
• Bloque del proceso combinacional de entrada C1:
o Descripción mediante un proceso para probar las condiciones de los estados y
transiciones (prácticamente es traducir el diagrama de estados a código de VHDL).
• Proceso combinacional de salida C2:
o Descripción mediante un proceso para probar el último estado y asignar la salida
final z(t).
La versatilidad del comportamiento en VHDL evita la necesidad de hacer largos diseños en papel.

Práctica 5 19
Facultad de Estudios Superiores Cuautitlán UNAM

Actividades previas a la práctica

1) El alumno realizará la lectura de la práctica.

2) Diseñar un circuito secuencial que simule la apertura de una puerta mediante un


código secreto. Se deberán presionar 3 botones para proporcionar la clave de 4 dígitos
(Por ejemplo definir la clave: 2-0-1-2). El código es programable de acuerdo al
siguiente esquema:
a. El primer dígito estará definido por los switches (7:6), de acuerdo a la
combinación “00”,”01” y “10” de los botones definidos para el número “0”, “1”
y “2” respectivamente.
b. El segundo dígito estará definido por los switches (5:4).
c. El tercer dígito estará definido por los switches (3:2).
d. Finalmente el cuarto dígito estará definido por los switches (1:0).
e. Debemos presionar los cuatro dígitos antes de saber si el código fue correcto.
f. Si el código fue correcto, se encenderá un LED(1), de lo contrario se encenderá
otro LED(0).
Cree un nuevo proyecto y escriba su código en Vivado HL WebPACK. Realice un análisis RTL
para verificar que su diseño cumple con lo solicitado.

3) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Material

No aplica.

Procedimiento experimental

1. Crear un nuevo proyecto en VivadoTM HL WebPACK® y copie, escriba o añada el código escrito
en las actividades previas.

2. Editar el archivo de restricciones para que asignemos los interruptores (8 para definir el
código), así como los LEDs que usaremos para indicar el estado de la salida de datos(1 para
indicar código erróneo y otro para código correcto).

3. Configurar el archivo “Bitstream”, como lo realizó en la práctica número 1.

Práctica 5 20
Facultad de Estudios Superiores Cuautitlán UNAM

4. Sintetizar (“Synthesis” →”Run Synthesis”) el proyecto y verificar que no haya errores.

5. Realizar la implementación (Implementation” →”Run Implementation), verificar que no haya


errores y analice el resumen del proyecto (Project Summary).

6. Ejecutar la opción para generar el (“Program and Debug” →“Generate Bitstream).

7. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, copiar


el archivo “.bit” y verificar que no haya errores.

8. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario

1) Muestre el diagrama de bloques de la solución al problema planteado en las actividades


previas.

2) Mencione las características que considere importantes y que obtuvo en el resumen del
proyecto “Project Summary”.

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 5 21
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 6: Diseño de un reloj digital

Tema

3. Diseño utilizando componentes MSI y LSI.

Objetivos

Al término de esta práctica el alumno aplicará:

➢ El diseño de sistemas digitales con lógica programable, empleando los modelos de descripción
por flujo de datos, funcional y estructural.
➢ Diseño de un sistema digital integral.

Introducción

Las técnicas modernas y las herramientas de síntesis de sistemas digitales raramente emplean
circuitos integrados de mediana escala de integración (MSI) y de gran escala de integración (LSI); sin
embargo, las propiedades generales de las funciones contenidas en estos circuitos, siguen siendo de
gran utilidad. Por esta razón, las técnicas modernas hacen uso de las funciones de los decodificadores,
circuitos aritméticos, multiplexores, contadores, memorias, arreglos lógicos programables, etcétera.
Frecuentemente un sistema se compone de una variedad de pequeños sistemas. Esto nos permite
construir grandes sistemas a partir de pequeños componentes o de componentes que fueron
previamente diseñados. VHDL proporciona un mecanismo conocido como instanciación, para llevar
a cabo estas tareas. Este tipo de código se llama descripción estructural.
Por ejemplo, para diseñar un sumador de 2 bits, podemos diseñar un sumador de 1 bit y utilizarlo
como bloque de construcción (estructura) para sumadores de mayor tamaño. A este tipo de
estructuras también se le conoce como “bit-slice”.

Figura 6.1. Diseño estructural.

Práctica 6 22
Facultad de Estudios Superiores Cuautitlán UNAM

Como ya hemos observado, aún los circuitos digitales más complejos están compuestos de un
conjunto de circuitos estándar más algunas señales de control asociadas. El arte de diseñar usando
VHDL se centra alrededor de la adecuada selección e interfaz de estos circuitos.
La mayor ventaja de utilizar circuitos digitales estándar con VHDL consiste en usar el código
existente para estos circuitos y modificarlo de acuerdo a las necesidades de nuestro diseño particular.

Actividades previas a la práctica

1) El alumno realizará la lectura de la práctica.

2) Diseñar un sistema digital que realice la función de reloj digital de acuerdo con los
siguientes requerimientos:

a. El reloj debe desplegar el tiempo en los formatos mostrados en la figura 6.2. El


tiempo debe estar en el formato de 12 horas y deberá haber una indicación
para mostrar am o pm.
b. En el momento de encender el sistema, se deberá desplegar: 12:00:01am.
c. Las horas y minutos deberán poder ser modificados por el usuario, para
permitir la puesta de la hora correcta.
d. Usar el modelo de descripción funcional en la escritura del código.

Cree un nuevo proyecto y escriba su código en Vivado HL WebPACK. Realice un análisis RTL
para verificar que su diseño cumple con lo solicitado.

Figura 6.2. Formato de salida del reloj.

3) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Material

No aplica.

Práctica 6 23
Facultad de Estudios Superiores Cuautitlán UNAM

Procedimiento experimental

1. Crear un nuevo proyecto en VivadoTM HL WebPACK® y copie, escriba o añada el código escrito
en las actividades previas.

2. Edite el archivo de restricciones para asignar las entradas y salidas de su reloj.

3. Configurar el archivo “Bitstream”, como lo realizó en la práctica número 1.

4. Sintetizar (“Synthesis” →”Run Synthesis”) el proyecto y verificar que no haya errores.

5. Realizar la implementación (Implementation” →”Run Implementation), verificar que no haya


errores y analice el resumen del proyecto (Project Summary).

6. Ejecutar la opción para generar el (“Program and Debug” →“Generate Bitstream).

7. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, copiar


el archivo “.bit” y verificar que no haya errores.

8. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario

1) Muestre el diagrama de bloques de la solución al problema planteado en las actividades


previas.

2) Mencione las características que considere importantes y que obtuvo en el resumen del
proyecto “Project Summary”.

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 6 24
Facultad de Estudios Superiores Cuautitlán UNAM

Laboratorio de Diseño de Sistemas Digitales


Práctica 7: Diseño de un procesador de imágenes

Tema

4. Diseño de sistemas digitales con memorias.

Objetivos

Al término de esta práctica el alumno aplicará:

➢ El diseño de sistemas digitales con lógica programable, empleando los modelos de descripción
por flujo de datos, funcional y estructural.
➢ Diseño de un sistema digital integral utilizando elementos de memoria.

Introducción

Con frecuencia un sistema digital requiere de memoria para el almacenamiento de información. Para
satisfacer esta necesidad, la mayoría de los dispositivos FPGA contienen módulos de memoria
embebidos. Sin embargo, estos dispositivos no pueden reemplazar el almacenamiento masivo de los
dispositivos externos de memoria, los contenidos internamente, son usados para aplicaciones que
requieren pequeñas o medianas cantidades de memoria.
Un bloque de RAM es un módulo especial embebido en el dispositivo FPGA y está separado de las
celdas lógicas regulares. Puede pensarse como una SRAM rápida conectada por una interfaz síncrona
configurable. Dependiendo de la FPGA, cada bloque de RAM puede consistir de 16Kbits de datos más,
opcionalmente, 2Kbits de paridad. Cada bloque de RAM se puede organizar de diferentes anchos,
desde 16K x 1 hasta 512 x 32.
Aunque la estructura interna de los módulos de memoria es similar, existen diferencias sustanciales
en sus interfaces, como el número de puertos de lectura y escritura, el esquema de temporización,
etcétera. Es posible describir el comportamiento del módulo deseado con código en VHDL; sin
embargo, el software de síntesis puede, o no, reconocer la intención del diseñador. Por lo tanto, el
código VHDL no siempre puede inferir el módulo apropiado de memoria y normalmente no es
portable. En el ambiente de desarrollo de Xilinx, existen tres métodos para incorporar un módulo de
memoria embebido:
• Instanciación.
• Un programa generador de núcleos.
• Un código que se puede importar (template).
En el caso de las memorias ROM, como su nombre lo indica, son memorias de sólo lectura, es un
circuito combinacional y no tiene estados internos. Su salida depende sólo de la entrada. Realmente
no existe un bloque de ROM embebido a la FPGA, pero puede ser emulado por un circuito
combinacional o un bloque de RAM con la operación de escritura deshabilitada. El contenido de la
ROM se puede expresar por medio de constantes en el código HDL y los valores se cargan cuando el

Práctica 7 25
Facultad de Estudios Superiores Cuautitlán UNAM

dispositivo es programado. Debido a que la ROM se basa en la RAM, la operación de lectura puede ser
asíncrona o síncrona.

Figura 7.1. Bloque de RAM en una FGA de Xilinx.

Actividades previas a la práctica

1) El alumno realizará la lectura de la práctica.

2) Descargar, leer y analizar el documento “Nexys 4 DDR Reference Manual”, particularmente la


sección “VGA PORT”.

3) Diseñar un sistema digital que realice el desplegado de una imagen previamente


cargada en una memoria, el diseño debe constar de los bloques principales para el
controlador de VGA y la memoria ROM que contendrá el mapa de bits correspondiente
a la imagen. Como ayuda y muestra del proceso de diseño arriba-abajo, la figura 7.2
ilustra los bloques que constituyen el sistema completo.

Cree un nuevo proyecto y escriba su código en Vivado HL WebPACK. Realice un


análisis RTL para verificar que su diseño cumple con lo solicitado.

4) Entregue el reporte con la discusión de los resultados obtenidos en estas actividades.

Práctica 7 26
Facultad de Estudios Superiores Cuautitlán UNAM

Figura 7.2. Sistema de desplegado de imagen.

Equipo
1 PC con software instalado:
• VivadoTM HL WebPACK®
1 Tarjeta Nexys4 DDR de DIGILENT®

Material

No aplica.

Práctica 7 27
Facultad de Estudios Superiores Cuautitlán UNAM

Procedimiento experimental

1. Crear un nuevo proyecto en VivadoTM HL WebPACK® y copie, escriba o añada el código escrito
en las actividades previas.

2. Edite el archivo de restricciones para asignar las entradas y salidas de su sistema para el
desplegado de la imagen.

3. Configurar el archivo “Bitstream”, como lo realizó en la práctica número 1.

4. Sintetizar (“Synthesis” →”Run Synthesis”) el proyecto y verificar que no haya errores.

5. Realizar la implementación (Implementation” →”Run Implementation), verificar que no haya


errores y analice el resumen del proyecto (Project Summary).

6. Ejecutar la opción para generar el (“Program and Debug” →“Generate Bitstream).

7. Conectar el cable USB de la tarjeta y colocar el interruptor en la posición de encendido, copiar


el archivo “.bit” y verificar que no haya errores.

8. Verificar en el hardware, que el diseño funciona de acuerdo a lo planteado.

Cuestionario

1) Muestre el diagrama de bloques de su solución al problema planteado en las actividades


previas.

2) Mencione las características que considere importantes y que obtuvo en el resumen del
proyecto “Project Summary”.

Conclusiones

Elabore las conclusiones a las que haya llegado después de realizar todas las actividades de esta
práctica.

Bibliografía

Elabore una lista de las referencias bibliográficas consultadas.

Práctica 7 28
Facultad de Estudios Superiores Cuautitlán UNAM

Bibliografía

[1] P. P. Chu, FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version, Edición: 1.
Hoboken, N.J: John Wiley & Sons Inc, 2007.

[2] Bryan Mealy y Fabrizio Tappero, Free Range VHDL. 2013.

[3] Richard E.Haskell y Darrin M. Hanna, Learning By Example Using VHDL - Advanced
Digital Design with a Nexys-2 FPGA Board. Rochester, MI: LBE Books, 2008.

[4] “Nexys 4 DDR Reference Manual [Reference.Digilentinc]”. [En línea]. Disponible en:
https://reference.digilentinc.com/reference/programmable-logic/nexys-4-ddr/reference-manual.
[Consultado: 06-ago-2016].

[5] “VHDL Primer”. [En línea]. Disponible en:


http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html#_Toc526061341. [Consultado: 14-
ago-2016].

[6] “Vivado Design Suite”. [En línea]. Disponible en: http://www.xilinx.com/products/design-


tools/vivado.html. [Consultado: 06-ago-2016].

[7] D. G. Maxinez y J. Alcalá Jara, VHDL: El arte de programar sistemas digitales. México:
COMPAÑÍA EDITORIAL CONTINENTAL, 2007.

Bibliografía 29

You might also like