Introducción al diseño de hardware con FPGA utilizando...
Transcript of Introducción al diseño de hardware con FPGA utilizando...
![Page 1: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/1.jpg)
Introducción al diseño de hardware con FPGA utilizando VHDL
Iván René Morales
Lab. Electrónica / Colaboración LAGO
Universidad de San Carlos de Guatemala
![Page 2: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/2.jpg)
¿Qué es un FPGA?
Field
Programmable
Gate
Array Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 2
![Page 3: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/3.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 3
![Page 4: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/4.jpg)
¿Qué contiene un FPGA? Lógica, interconexiones y ruteo programables
Bloques dedicados
Memoria
Control de relojes
Bloques DSP
Procesadores embebidos
Controladores de memoria
Controladores Ethernet
Controladores PCI-Express
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 4
![Page 5: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/5.jpg)
¿Qué contiene un FPGA? Hasta 1200 I/O
Más de 40 estándares I/O. Diferenciales y «single-ended»
Más de 40,000 FFs y Tablas de Búsqueda (LUTs)
Soft core microprocessors
PLLs y DLLs
Impedancia y «output strenght» controlables
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 5
![Page 6: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/6.jpg)
Arquitectura de un FPGA
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 6
![Page 7: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/7.jpg)
Arquitectura de FPGA Spartan-6
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 7
![Page 8: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/8.jpg)
Evolución de FPGAs Xilinx
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 8
![Page 9: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/9.jpg)
Distribución de la lógica de un FPGA
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 9
![Page 10: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/10.jpg)
Configuraciones de enrutamiento
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 10
![Page 11: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/11.jpg)
Configuración de Ruteo + Lógica
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 11
![Page 12: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/12.jpg)
Celdas configurables Tipos de celdas
SRAM
Flash
Flash + SRAM
Anti-Fuse
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 12
![Page 13: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/13.jpg)
Comparación – Tipos de celdas SRAM Anti-Fuse Flash
Tecnología Última Antigua Antigua
Velocidad Lenta Rápida Lenta
Volatilidad Sí No No
Consumo de potencia Grande Bajo Medio
Densidad Buena La mejor Media
Tolerancia a radiación Pobre La mejor Media
Tamaño de celda 1 1/10 1/7
Reprogramable Sí No Sí
Encendido instantáneo No Sí Sí
Seguridad Pobre Muy Buena Muy Buena
Transistores de config. 6 Transistores Ninguno 2 Transistores
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 13
![Page 14: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/14.jpg)
¿Cuál es el mejor FPGA? Todos los vendedores dicen que sus FPGA son los
mejores.
Pero al final, el usuario tiene la última palabra
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 14
![Page 15: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/15.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 15
![Page 16: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/16.jpg)
Configurable Logic Blocks (CLB)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 16
![Page 17: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/17.jpg)
CLB de un Spartan-3
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 17
![Page 18: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/18.jpg)
Slices de un S6 SLICEM: Slice completo
LUT pueden ser usadas para memoria y SRL
Tiene muxes y cadenas de acarreo
SLICEL: Lógica y aritmética únicamente
LUT pueden ser usadas solo para lógica (no memoria)
Tiene muxes y cadenas de acarreo
SLICEX: Solamente lógica
LUT pueden ser usadas solo para lógica (no memoria)
Sin muxes ni cadenas de acarreo.
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 18
![Page 19: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/19.jpg)
Slices de un S6
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 19
![Page 20: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/20.jpg)
Slice de un S6 Cuatro LUT Ocho elementos de memoria
Cuatro FF/Latches Cuatro FF
MULTIPLEXORES Interconectan salidas de
LUTs para crear funciones complejas
Sus salidas pueden manejar FF/Latches
Cadena de acarreo Conectada a las LUTs y a los
cuatro FF/Latches
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 20
![Page 21: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/21.jpg)
LUT6 con salida doble de un S6 LUT de 6 entradas puede
convertirse en dos LUT de 5 entradas con entradas comunes. Puede implementarse
cualquier función con 6 entradas
También es posible implementar dos funciones independientes de 5 entradas
Opción de salida simple o doble
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 21
![Page 22: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/22.jpg)
Look-Up Table (LUT)
La configuración de las LUT no es responsabilidad del diseñador
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 22
![Page 23: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/23.jpg)
I/Os
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 23
![Page 24: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/24.jpg)
S6 I/Os
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 24
![Page 25: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/25.jpg)
Características especiales de I/O en S6 Digital Controlled Impedance (DCI)
Drive Strenght
Slew Rate
Bus Hold (Bus keeper)
Pull-Up/Down
Differential Termination
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 25
![Page 26: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/26.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 26
![Page 27: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/27.jpg)
Block RAM 18kb
Múltiples tamaños disponibles
Múltiples configuraciones
Dual-port, single-port
Byte-write enable
Modos de operación
Write first
Read first, then write
No change
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 27
![Page 28: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/28.jpg)
Distintas configuraciones de tamaños de BRAM
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 28
![Page 29: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/29.jpg)
Controlador de memoria externa en S6 Único FPGA de «bajo costo» con un controlador de
memoria en hardware
Soporta DDR, DDR2, DDR3 y LP DDR
Ancho de banda de hasta 12.8Mbps en cada controlador
Calibración automática
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 29
![Page 30: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/30.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 30
![Page 31: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/31.jpg)
Rutas
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 31
![Page 32: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/32.jpg)
Rutas: Un vistazo más de cerca
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 32
![Page 33: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/33.jpg)
Un ejemplo de rutas LAGO Guatemala
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 33
![Page 34: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/34.jpg)
En un Spartan-6
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 34
![Page 35: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/35.jpg)
CMT (Clock Management Tile) Contiene 2 DCM y 1 PLL
Conectados directamente a las rutas dedicadas para relojes (clock distribution routes)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 35
![Page 36: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/36.jpg)
DCM (Digital Clock Manager) Control digital
Elimina skew (desfase)
Cambio de fase de reloj Fijo
Variable
Multiplica y divide un reloj para síntesis de frecuencia
Reacondicionamiento del ciclo de trabajo a 50%
Síntesis de relojes diferenciales (espejo)
Síntesis de reloj para Spread Spectrum
Buffer de reloj Capaz de acoplarse a líneas con alto fan-out
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 36
![Page 37: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/37.jpg)
Digital Clock Manager (DCM)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 37
![Page 38: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/38.jpg)
Phase-Locked Loop (PLL) Síntesis de frecuencia de amplio rango
Filtro de jitter
Contraparte analógica del DCM
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 38
![Page 39: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/39.jpg)
Phase-Locked Loop (PLL)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 39
![Page 40: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/40.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 40
![Page 41: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/41.jpg)
Ventajas de un FPGA Paralelismo
Organización modular
Reconfiguración de pines
Soft-Cores
SoC (Fábrica + µP)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 41
![Page 42: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/42.jpg)
Desventajas de un FPGA Costo
Consumo energético
Complejidad
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 42
![Page 43: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/43.jpg)
Nexys 3
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 43
![Page 44: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/44.jpg)
Nexys 3 Spartan-6 XC6LX16-CS324 16Mbytes Cellular RAM 16MBytes SPI PCM non-volatile memory 16MBytes parallel PCM non-volatile memory 10/100 Ethernet PHY USB-UART USB-HOST Puerto VGA de 8 bits Oscilador CMOS de 100 MHz 72 I/Os en conectores PMOD y VHDC LEDs, Push-buttons, DIP-switches, 4x 7-segment displays
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 44
![Page 45: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/45.jpg)
Nexys 3
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 45
![Page 46: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/46.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 46
![Page 47: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/47.jpg)
Lenguaje de ¿programación?
V ery high-speed ICs
H ardware
D escription
L anguage 47
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC
![Page 48: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/48.jpg)
Lenguaje de Descripción de Hardware Utiliza instrucciones de alto nivel para implementar
hardware
Implementación por módulos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 48
![Page 49: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/49.jpg)
VHDL no es un lenguaje de programación Es un lenguaje de descripción de hardware
Aún no tiene un nivel de abstracción tan alto como los lenguajes de programación. e.g. Python:
Existen plug-ins para Simulink y LabView que generan VHDL a partir de diagramas de bloques
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 49
![Page 50: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/50.jpg)
¿Cómo inició VHDL? Documentar ASICs
Modelación y simulación de ASICs
Herramientas de síntesis iniciaron en los años ‘90
No todas las sentencias de VHDL son «sintetizables»
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 50
![Page 51: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/51.jpg)
Cambio de mentalidad Para los que estamos acostumbrados a programar
microcontroladores y computadoras:
No existe un microprocesador mágico que ejecute las instrucciones dentro de un FPGA
El código ensambla hardware al momento de encender el FPGA.
El código es ejecutado de forma concurrente, a pesar de que se escriba de línea en línea
El código corresponde a la descripción de hardware, y no son una serie de instrucciones a ejecutar
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 51
![Page 52: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/52.jpg)
Estructura de módulo VHDL
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 52
![Page 53: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/53.jpg)
Estructura de módulo VHDL
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 53
![Page 54: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/54.jpg)
¿Cómo sabemos si funciona? Test Bench
Incrustar el módulo a verificar (Unit Under Test) dentro de un módulo VHDL de simulación
Este módulo de simulación actuará sobre el UUT como si éste fuese una caja negra
Se insertan estímulos, y se verifica la respuesta a éstos
Similar a una «función de transferencia»
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 54
![Page 55: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/55.jpg)
Test Bench
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 55
![Page 56: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/56.jpg)
Test Bench
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 56
![Page 57: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/57.jpg)
Elementos básicos del lenguaje
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 57
![Page 58: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/58.jpg)
Antes de iniciar… Referencia de VHDL por parte de Xilinx (XAPP105):
http://www.xilinx.com/support/documentation/application_notes/xapp105.pdf
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 58
![Page 59: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/59.jpg)
Identificadores Se utilizan las mismas reglas que en la mayoría de
lenguajes de programación
Solo pueden contener caracteres alfanuméricos (A-Z, a-z, 0-9) y el símbolo de guión bajo (_)
Deben iniciar con una letra
No deben finalizar con guión bajo
No deben existir dos guiones bajos consecutivos
VHDL NO ES CASE-SENSITIVE
No se permiten espacios en blanco
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 59
![Page 60: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/60.jpg)
Objetos de datos Variables
Constantes
Señales
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 60
![Page 61: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/61.jpg)
Declaraciones implícitas de objetos de datos Existen algunas construcciones en VHDL que
establecen por defecto el tipo de objeto de dato
Puertos de una entidad: Señal
Genéricos de una entidad: Constante
Parámetros de funciones y procedimientos: Constantes o señales
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 61
![Page 62: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/62.jpg)
Señales Contiene información sobre el valor/dato almacenado,
pero también almacena el tiempo en el cuál se obtiene un nuevo valor
Almacena el estado actual y posibles estados futuros Los valores almacenados en una señal pueden ser
modificados y leídos Utilizadas para interconectar elementos concurrentes (tal y
como si fuesen «cables») Muy importante: En un proceso no obtendrán el valor
asignado inmediatamente, sino hasta salir de éste Nunca hay que asignar valor inicial a las señales al
momento de declararlas
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 62
![Page 63: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/63.jpg)
I/Os y señales Las señales transportan la información entre
arquitecturas/módulos
Los puertos I/O son también señales
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 63
![Page 64: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/64.jpg)
Declaración de una señal Si la señal se utiliza dentro de una arquitectura:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 64
Nombre Tipo: • std_logic • std_logic_vector • unsigned • signed • integer • natural • real (no es sintetizable)
![Page 65: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/65.jpg)
Declaración de una señal Si la señal se utiliza para declarar un puerto I/O:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 65
Nombre Tipo: • std_logic • std_logic_vector
Modo: • in • out • inout
![Page 66: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/66.jpg)
Tipos de datos – Paquete estándar BIT
Valores posibles: ‘0’, ‘1’
BIT_VECTOR
Arreglo de BIT
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 66
![Page 67: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/67.jpg)
Tipos de datos – Paquete estándar INTEGER
Valores posibles: Cualquier entero de 32 bits (con signo) -2,147,483,648 -> +2,147,483,647
NATURAL Valores posibles: Cualquier INTEGER positivo
0 -> +2,147,483,647
CHARACTER Valores posibles: Caracteres ASCII
STRING Arreglo de caracteres
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 67
![Page 68: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/68.jpg)
Tipos de datos STD_LOGIC_1164 STD_LOGIC
9 valores posibles (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’)
‘1’: Lógico alto
‘0’: Lógico bajo
‘X’: Desconocido
‘Z’: Alta impedancia
‘U’: Indefinido
‘W’: Indefinido débil
‘H’: Lógico alto débil
‘L’: Lógico bajo débil
‘-’: No importa
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 68
![Page 69: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/69.jpg)
Tipos de datos STD_LOGIC_1164 STD_LOGIC_VECTOR
Arreglo de STD_LOGIC
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 69
![Page 70: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/70.jpg)
Modos de un puerto IN: No puede modificarse/escribirse un valor en él.
Solamente puede ser leído.
OUT: Solamente puede modificarse/escribirse un valor en él. No puede ser leído.
INOUT: Puede ser tanto modificado, como leído. Diseñado para ser utilizado en puertos I/O bidireccionales e.g. I²C, One-Wire, etc.
BUFFER: Es un OUT que puede ser leído. No utilizar este modo.
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 70
![Page 71: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/71.jpg)
Asignación simple de señales
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 71
Señal que recibirá el dato
Dato a escribir en la señal de destino
SIEMPRE se
utiliza <=
![Page 72: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/72.jpg)
Señales utilizadas para interconectar
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 72
temp
![Page 73: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/73.jpg)
Señales – Valor inicial No hay interpretación de hardware sintetizable que
represente un valor inicial para una señal. El sintetizador los ignora y muestra una advertencia.
Los valores iniciales al momento de la simulación sí son válidos. Hay que tener cuidado con esto.
El diseñador es el responsable de colocar los valores iniciales a las señales (normalmente es a través de un RESET)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 73
![Page 74: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/74.jpg)
Más sobre señales No se actualizan inmediatamente
No pueden ser declaradas en funciones/procedimientos
Alcance: visible desde todos los procesos de la arquitectura
En un proceso combinacional se sintetizan como lógica combinacional
En un proceso secuencial se sintetizan como registros
Se utilizan para intercomunicar procesos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 74
![Page 75: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/75.jpg)
¿Cómo asignar valores a señales? Dependiendo del tipo de dato, así será el formato para
asignar el valor.
Se utiliza comilla simple (‘ ‘) para std_logic
Se utiliza comilla doble (" ") para std_logic_vector
unsigned
signed
No se utiliza ninguna comilla para integer
natural
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 75
![Page 76: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/76.jpg)
Ejemplo – Asignación de valores Para una señal de un solo bit (std_logic):
Asumiendo que la señal fue declarada como:
Para asignarle un valor:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 76
![Page 77: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/77.jpg)
Ejemplo – Asignación de valores Para señales de más de un bit
La señal fue declarada como:
Si se desea escribir en todos los bits de la señal
Si se desea escribir solamente en una porción de los bits
Si se desea modificar solo uno de los bits de la señal
Si se desea llenar con un solo valor todos los bits
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 77
![Page 78: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/78.jpg)
Ejemplo – Asignación de valores Para una señal tipo integer o natural
La señal fue declarada así:
Se asigna un valor sin utilizar comillas:
Para operaciones aritméticas básicas y conversión de tipos es necesario incluir paquete numérico estándar de la librería de IEEE:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 78
![Page 79: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/79.jpg)
Variables Almacena únicamente el dato asignado
Puede ser modificada/leída
Toma el valor asignado inmediatamente
Análogas a las variables en un lenguaje de programación convencional
Solamente son permitidas dentro de procesos, procedimientos y funciones
No necesitan ser inicializadas
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 79
![Page 80: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/80.jpg)
Declaración de variables - Ejemplo Declaración puede tener o no un valor inicial
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 80
![Page 81: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/81.jpg)
Asignación de datos a variables Para la asignación se utiliza ´:=´, en vez de ´<=´
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 81
![Page 82: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/82.jpg)
Más sobre variables No tienen noción temporal
No tienen un análogo directo en hardware
No pueden ser utilizadas en bloques concurrentes
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 82
![Page 83: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/83.jpg)
Señal vs Variable SEÑALES VARIABLES
Asignación <= :=
Alcance Global. Comunicación entre procesos
Local, únicamente
Comportamiento Se actualizan ÚNICAMENTE al salir del proceso que las modificó
Actualización inmediata
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 83
![Page 84: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/84.jpg)
Ejemplo: Señal vs Variable
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 84
![Page 85: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/85.jpg)
Ejemplo: Señal vs Variable
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 85
![Page 86: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/86.jpg)
Constantes Almacenan un valor único de un tipo de dato
específico
Obtienen su valor al momento de ser declaradas, y éste no puede ser modificado
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 86
![Page 87: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/87.jpg)
Declaración de constantes
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 87
![Page 88: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/88.jpg)
Entidad y Arquitectura
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 88
![Page 89: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/89.jpg)
Entidad Descripción de los puertos de un módulo VHDL
Debe asociarse a una arquitectura para obtener funcionalidad
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 89
![Page 90: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/90.jpg)
Declaración de una Entidad
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 90
![Page 91: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/91.jpg)
Entidad - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 91
![Page 92: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/92.jpg)
Arquitectura Debe estar asociada a una entidad
Una entidad puede tener más de una arquitectura asociada
Las sentencias de una arquitectura se ejecutan de forma concurrente
Estilos de arquitectura:
Behavioral: descripción de un diseño/funcionamiento
Structural: Interconexión de componentes/netlist
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 92
![Page 93: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/93.jpg)
Arquitectura - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 93
![Page 94: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/94.jpg)
Módulo VHDL: Entidad + Arquitectura
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 94
![Page 95: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/95.jpg)
Ejemplo – Práctica 2 HELLO_WORLD.vhd
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 95
![Page 96: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/96.jpg)
Tipos definidos por el usuario Permite al usuario crear un tipo de dato personalizado
Se respalda en usar un tipo ya existente
¿Para qué quiero tipos definidos?
Código más legible
Codificación de Máquinas de Estado Finitas (FSM)
Declaración de tipos definidos por el usuario
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 96
![Page 97: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/97.jpg)
Types - Ejemplo Estados de una FSM para un módulo SPI Master
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 97
![Page 98: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/98.jpg)
Arreglos Crea un tipo de dato multidimensional con un tipo de
dato existentes.
Debe asignarse a un objeto luego de haber sido creado
Normalmente utilizados para crear memorias
Sintaxis:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 98
![Page 99: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/99.jpg)
Arreglos - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 99
![Page 100: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/100.jpg)
Conversión de tipos (Casting) Es imperativo realizar conversión si se desea operar
señales/variables de distintos tipos.
Los puertos I/O de una entidad son (en la mayoría de los casos) STD_LOGIC o STD_LOGIC_VECTOR
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 100
![Page 101: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/101.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 101
![Page 102: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/102.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 102
![Page 103: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/103.jpg)
Asignación concurrente Asignación de valores a señales, utilizando distintas
expresiones
Representa un conjunto de procesos que se ejecutan EN PARALELO.
Tres tipos de asignación concurrente
Asignación simple
Asignación condicional
Asignación selectiva
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 103
![Page 104: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/104.jpg)
Asignación simple Sintaxis: <senial> <= <expresion>;
Ejemplo:
Pueden utilizarse paréntesis () para cambiar la jerarquía de las operaciones
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 104
![Page 105: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/105.jpg)
Asignación condicional Sintaxis:
Ejemplo:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 105
![Page 106: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/106.jpg)
Asignación selectiva Sintaxis:
Ejemplo:
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 106
![Page 107: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/107.jpg)
Asignación selectiva Deben tomarse en cuenta todas las posibilidades
La expresión WHEN OTHERS evalúa todas las posibilidades que no hayan sido tomadas en cuenta
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 107
![Page 108: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/108.jpg)
Asignación selectiva
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 108
¿Es necesaria la sentencia WHEN OTHERS?
![Page 109: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/109.jpg)
Asignación selectiva Sí es necesaria
Recordar que la señal «sel» es de tipo STD_LOGIC
STD_LOGIC puede tener valores (‘0’, ‘1’, ‘H’, ‘L’, ‘Z’, etc.)
En la asignación solamente se tomó en cuenta ‘0’ y ‘1’
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 109
![Page 110: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/110.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 110
![Page 111: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/111.jpg)
Asignación secuencial Permite describir el comportamiento de la arquitectura
como una secuencia de eventos relacionados
El orden de los enunciados es muy importante
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 111
![Page 112: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/112.jpg)
Procesos Un procesos es como cualquier otra sentencia
concurrente: se ejecuta instantáneamente
Distintos procesos pueden coexistir en la misma arquitectura ejecutándose en paralelo
Se ejecutan solamente si se cumplen ciertas condiciones
Similar al disparo de una interrupción enmascarable en un microprocesador/microcontrolador
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 112
![Page 113: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/113.jpg)
Comportamiento de un proceso El proceso puede estar en dos estados:
Ejecución
El código dentro de éste es ejecutado
Espera
El proceso se mantiene a la espera de que suceda una condición «de disparo». Pasará al estado de ejecución una vez esta suceda.
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 113
![Page 114: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/114.jpg)
Sintaxis de un proceso
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 114
![Page 115: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/115.jpg)
Elementos de un proceso Lista sensitiva
Lista de señales que disparan el proceso
Cualquier evento (cambio) en cualquiera de las señales de la lista sensitiva causará que el proceso se ejecute
Declaraciones
Declaración de tipos, funciones, procedimientos y variables
Todas las declaraciones son locales
Sentencias secuenciales
El código que será «ejecutado» al activarse el proceso Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 115
![Page 116: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/116.jpg)
Señales y procesos Es MUY importante tener claro
Mientras un proceso se «ejecuta» todas las señales permanecen sin cambio
Durante la ejecución del proceso, las señales no cambiarán su valor, incluso si así lo indica el código
Las señales son actualizadas luego de haber finalizado el proceso
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 116
![Page 117: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/117.jpg)
Señales y procesos Las señales son la interfaz entre la lógica concurrente y
los procesos secuenciales.
Uno puede intercomunicar procesos utilizando señales
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 117
![Page 118: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/118.jpg)
Variables y procesos Mientras se ejecuta un proceso, las variables SÍ son
actualizadas inmediatamente
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 118
![Page 119: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/119.jpg)
Procesos con reloj Son la base de toda lógica secuencial
Infieren todas las señales internas como FFs
Si se utilizan variables, hay que inicializarlas antes de ser leídas por primera vez
Además de inferir FFs, es posible que se sintetice lógica combinacional conectada a las entradas de éstos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 119
![Page 120: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/120.jpg)
Proceso con reloj - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 120
d q
clk
Flip-Flop D
![Page 121: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/121.jpg)
Procesos con reloj - RESET La mayoría de implementaciones requieren iniciar en
un estado conocido
Con RESET se colocan todas las señales al valor predeterminado de inicio
Dos tipos de RESET
Síncrono
Asíncrono
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 121
![Page 122: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/122.jpg)
Tipos de RESET Síncrono Asíncrono
Ventajas • No crea condiciones de metaestabilidad
• No suceden RESETs indeseados.
• Asegura sincronización completa del sistema
• Ruta de RESET reservada para todos los FFs
• Rápido • Liviano (ocupa poco
espacio)
Desventajas • Relativamente lento • Ocupa más espacio
que el asíncrono
• Metaestabilidad durante «deassertion»
• RESETs indeseables causados por glitches
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 122
![Page 123: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/123.jpg)
¿Entonces cuál uso? ¿Síncrono o asíncrono? Depende de varios factores
Frecuencia del sistema
Optimización de espacio
Fiabilidad
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 123
![Page 124: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/124.jpg)
¿No hay otra opción? Sí, y es una combinación asíncrona-síncrona
El mayor problema del RESET asíncrono sucede al momento de «levantar» (deassert) el RESET.
La solución:
RESET asíncrono con desactivación síncrona
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 124
![Page 125: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/125.jpg)
RESET Síncrono - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 125
![Page 126: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/126.jpg)
RESET Asíncrono - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 126
RESET en Lista Sensitiva
![Page 127: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/127.jpg)
Proceso combinacional Un proceso no debe depender necesariamente de un
reloj en su lista sensitiva
Todas las señales de entrada deben estar en la lista sensitiva
Si se olvida colocar alguna señal en la lista sensitiva, el comportamiento será distinto al deseado
Todas las salidas del proceso deben tener un valor asignado en todas las condiciones que éste se ejecute, de lo contrario se generará un latch indeseado.
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 127
![Page 128: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/128.jpg)
Proceso combinacional - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 128
a
b
sel
x
![Page 129: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/129.jpg)
Asignación condicional en procesos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 129
![Page 130: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/130.jpg)
Sentencia IF Pueden utilizarse ÚNICAMENTE dentro de procesos
Estos pueden ser secuenciales o concurrentes
Pueden ser anidados
Es buena práctica anidar la menor cantidad de sentencias IF posibles
Pueden contener más de una condición a evaluar, utilizando conectores lógicos (AND, OR, XOR, etc.)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 130
![Page 131: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/131.jpg)
Sintaxis de IF
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 131
![Page 132: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/132.jpg)
Sentencia IF Puede tener una o más ramas
Puede existir más de una instrucción secuencial en cada rama de IF, pero éstas se ejecutarán concurrentemente
Es buena práctica (y a veces necesario) colocar un «else» para no dejar de verificar ninguna condición
De lo contrario, es posible que se generen latches
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 132
![Page 133: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/133.jpg)
IF - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 133
![Page 134: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/134.jpg)
Ejemplos – Práctica 3 counter.vhd
counter_ud.vhd
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 134
![Page 135: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/135.jpg)
Asignación selectiva en procesos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 135
![Page 136: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/136.jpg)
When-Case Similar a IF, pero depende solamente de una expresión
Es muy importante colocar la última opción «WHEN OTHERS», con el fin de abarcar todas las posibilidades
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 136
![Page 137: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/137.jpg)
Sintaxis When-Case
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 137
![Page 138: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/138.jpg)
When-Case Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 138
![Page 139: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/139.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 139
![Page 140: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/140.jpg)
User Constraints File (UCF) Archivo de restricciones del usuario
Las restricciones se aplican en la fase de implementación del diseño.
Case-sensitive
Tipos de restricciones Temporales
Lógicos (posicionamiento)
Físicas
IOB
Protocol (LV3v3CMOS, LVDS, etc)
Slew rate
Pull (UP/DOWN) Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 140
![Page 141: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/141.jpg)
Test Bench Poderosa herramienta para simulación de hardware
Consiste en instanciar el módulo bajo prueba (UUT) en un módulo de mayor jerarquía
Se estimula al UUT y luego se analizan la respuesta a los estímulos
Basado en VHDL
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 141
![Page 142: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/142.jpg)
ISE Design Suite Crear proyecto
Verificación de sintaxis
Síntesis
UCF
Creación de bitstream
Test bench
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 142
![Page 143: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/143.jpg)
Ejemplos – Práctica 4 Crear un proyecto para el MUX de la práctica #2
Simular el MUX
Cargar el MUX al FPGA
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 143
![Page 144: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/144.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 144
![Page 145: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/145.jpg)
loop Utilizado para repetir secciones de código VHDL
Un loop se repite indefinidamente While-loop se repite una cantidad indefinida de veces hasta
que la condición que lo controla es falsa For-loop se ejecuta un número determinado de veces
El objetivo es replicar varias veces bloques de hardware. No es como un ciclo en un lenguaje de programación
Importante: el único ciclo sintetizable es el FOR-LOOP y
solamente funciona dentro de un proceso. Las demás sentencias sirven únicamente para simulación.
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 145
![Page 146: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/146.jpg)
For-loop - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 146
![Page 147: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/147.jpg)
Declaración e instanciación de componentes
Módulo TOP
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 147
![Page 148: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/148.jpg)
¿Por qué? Divide y vencerás
Cada componente (módulo) puede ser programado y probado (Test Bench) individualmente: ideal para el desarrollo de aplicaciones en grupos de trabajo ¿LAGO? <- Sí, así está trabajando
Es posible crear librerías de componentes
Existen componentes de terceros disponibles
Reutilización de código
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 148
![Page 149: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/149.jpg)
Jerarquía En un diseño modular existen distintos componentes
individuales interconectados
El módulo VHDL donde se colocan e interconectan todos los componentes se llama TOP
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 149
ADC DRIVER
ADC FIFO
THRESHOLD MONITOR
TRIGGER
SERIALIZER
PRESSURE SENSOR DRIVER
TOP
![Page 150: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/150.jpg)
Implementación en VHDL Cargar el componente en el área de declaraciones de la
arquitectura
Instanciar tantos componentes como sean necesarios dentro del área concurrente de la arquitectura
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 150
![Page 151: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/151.jpg)
Módulo TOP Interconecta módulos instanciados a través de señales
Módulo de entrada y salida para las instancias de los componentes de jerarquía inferior
No debe albergar lógica, solamente interconexiones entre módulos y I/Os
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 151
![Page 152: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/152.jpg)
Declaración de componentes El componente a instanciar debe estar en el mismo
proyecto que el módulo TOP
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 152
![Page 153: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/153.jpg)
Módulo a insertar en TOP
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 153
![Page 154: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/154.jpg)
Creación del componente en TOP
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 154
![Page 155: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/155.jpg)
Instanciación de componentes Se instancian tantas réplicas de un componente como
sean necesarias
Es necesario asignar una etiqueta única a cada instancia
Los puertos deben asociarse a señales o puertos válidos
No es posible concatenar señales en la lista de asociación de puertos de los componentes
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 155
![Page 156: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/156.jpg)
Instanciación - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 156
![Page 157: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/157.jpg)
Instanciación En el Port Map, las señales de la izquierda son las
provenientes del componente instanciado
Las señales de la derecha en el Port Map son las de destino (hacia donde se conecta el componente instanciado)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 157
![Page 158: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/158.jpg)
Puertos sin conexión Si hay algún puerto que SALE del componente instanciado,
y por alguna razón no se desea conectar (mala práctica), debe asignarse a open.
…..
Port Map(
port1 => open,
out1 => outputPort1,
in1 => inputPort1
);
….
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 158
![Page 159: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/159.jpg)
Puertos sin conexión En cambio, si el puerto que se desea dejar flotante es
una entrada al componente instanciado, debe conectarse directamente a un valor lógico ‘0’ o ‘1’
…..
Port Map(
in1 => ‘0’,
out1 => outputPort1,
in2 => inputPort1
);
….
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 159
![Page 160: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/160.jpg)
Sentencia generate Diseñado para realizar múltiples instancias de un
componente
Sentencia concurrente
Es equivalente a un macro
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 160
![Page 161: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/161.jpg)
Sintaxis - for-generate <etiqueta> : FOR <identificador> IN <rango> GENERATE
BEGIN
<sentenciasConcurrentes>; --Instanciacion
END GENERATE <etiqueta>;
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 161
![Page 162: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/162.jpg)
for-generate - Ejemplo
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 162
![Page 163: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/163.jpg)
Ejemplos – Práctica 5 PWM.vhd
TOP_PWM.vhd
PWM_TB.vhd
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 163
![Page 164: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/164.jpg)
Máquina de Estados Finitos (Finite State Machine)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 164
![Page 165: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/165.jpg)
¿Qué es una FSM? Un circuito secuencial que está diseñado para realizar
ciertas acciones, dependiendo de el estado en el que se encuentre
Las FSM tienen un número definido de estados y comúnmente se les da un nombre a cada uno de ellos
Ya que VHDL no tiene una construcción formal para implementar FSMs, éstas se construyen con «TYPES»
Existen distintas estrategias para diseñar una FSM, y depende del diseñador cuál elegir para la solución
Hoy en día, las FSM son una gran herramienta para realizar el control y toma de decisiones en sistemas de lógica digital
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 165
![Page 166: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/166.jpg)
¿Cómo crear una FSM? Entender el problema
Diseñar un diagrama de estados con I/Os
Crear un «enumerated type» (tipo definido por el usuario) correspondiente a la FSM con sus estados
Crear las señales de control de la FSM
Seleccionar un estilo de codificación
Programar la FSM
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 166
![Page 167: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/167.jpg)
¿Qué se debe tomar en cuenta para diseñar una FSM? Estilo de codificación de FSM en VHDL
A, B, C, D, E
RESETs y comportamiento a prueba de errores
Codificación de estados Automatic
Binary
Gray
One-hot
Tipo de salidas Moore
Mealy
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 167
![Page 168: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/168.jpg)
Estilos de codificación en VHDL Definen la distribución de la lógica de la máquina de
estados en distintos procesos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 168
Estilo de Codificación
Estado Actual Proceso CLK
Lógica de Estado Siguiente
Lógica de Salida
Estilo A
Estilo B
Estilo C
Estilo D
Estilo E
Procesos separados
Procesos combinados
![Page 169: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/169.jpg)
Estilos de codificación en VHDL Los más utilizados
Estilo A
Recomendado por Xilinx
Es el más eficiente en términos de espacio y velocidad
Estilo B
El más fácil de programar
Xilinx no recomienda su uso: no existe traducción directa a nivel de RTL
Ocupa mucho más espacio que el estilo A
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 169
![Page 170: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/170.jpg)
RESETs y Comportamiento a prueba de errores Debe implementarse un RESET ASÍNCRONO para el
proceso secuencial
La cláusula «when others» debe ser colocada para evitar caer en estados indefinidos
Si se utiliza RESET síncrono (o peor aún, ningún RESET), la FSM puede entrar en un estado sin declarar y quedar en un estado incierto permanentemente
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 170
![Page 171: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/171.jpg)
Establecer codificación de FSMs Design Goals & Strategies @ ISE
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 171
![Page 172: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/172.jpg)
Tipos de salidas de FSM Moore
Depende únicamente del estado actual de la FSM
Ninguna entrada cambia directamente ninguna salida.
Los cambios a la salida suceden en los flancos de reloj
Mealy
Depende de las entradas presentes y el estado actual de la FSM
Algunas entradas pueden cambiar algunas salidas de forma asíncrona
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 172
![Page 173: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/173.jpg)
Creando una FSM
¿Qué valores pueden tomar las señales «currentState» y «nextState»?
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 173
![Page 174: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/174.jpg)
FSM - Ejemplos Semaforo.vhd
SemaforoFSMA.vhd
SPI16bits.vhd
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 174
![Page 175: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/175.jpg)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 175
![Page 176: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/176.jpg)
Atributos Es una forma de extraer información de un tipo, o de
algún valor de un tipo (variable, constante, señal, etc.)
Sintáxis
<objeto>’<atributo>;
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 176
![Page 177: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/177.jpg)
Atributos de arreglos Comúnmente utilizados para extraer información de
tamaño, rango o índice
Útil cuando se codifica VHDL de forma genérica
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 177
![Page 178: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/178.jpg)
Atributos de arreglos Atributos de Arreglos - Índices
A’left(valor) Devuelve el valor del índice correspondiente al límite izquierdo del rango especificado del arreglo.
A’right(valor) Devuelve el valor del índice correspondiente al límite derecho del rango especificado del arreglo.
A’high(value) Devuelve el valor del índice correspondiente al límite superior del rango especificado del arreglo.
A’low(value) Devuelve el valor del índice correspondiente al límite inferior del rango especificado del arreglo.
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 178
![Page 179: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/179.jpg)
Atributos de arreglos Atributos de Arreglos - Valores
A’left Devuelve el límite izquierdo de un tipo o subtipo
A’right Devuelve el límite derecho de un tipo o subtipo
A’high Devuelve el límite superior de un tipo o subtipo
A’low Devuelve el límite inferior de un tipo o subtipo
A’length Devuelve la longitud del arreglo (cantidad de elementos)
A’ascending Devuelve un valor booleano si el objeto fue declarado en orden ascendente (a to b), en vez de (b downto a)
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 179
![Page 180: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/180.jpg)
Atributos de arreglos Atributos de Arreglos - Rangos
A’range Devuelve el rango del arreglo
A’reverse_range Devuelve el rango del arreglo en orden inverso
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 180
![Page 181: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/181.jpg)
Atributos de arreglos - Ejemplos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 181
![Page 182: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/182.jpg)
Atributos de arreglos - Ejemplos
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 182
![Page 183: Introducción al diseño de hardware con FPGA utilizando VHDLlabelectronica.weebly.com/uploads/8/1/9/2/8192835/presentación... · Introducción al diseño de hardware con FPGA utilizando](https://reader034.fdocuments.us/reader034/viewer/2022051720/5a78858a7f8b9a77438e383a/html5/thumbnails/183.jpg)
Gracias a la colaboración de
Especialmente a la gente de MLAB, ICTP
y MSc. Cristian Sisterna
Iván René Morales - Colab. LAGO Guatemala / Laboratorio de Electrónica, USAC 183