Top Banner
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
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

Feb 05, 2018

Download

Documents

tranmien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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

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

¿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

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

¿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

¿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

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

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

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

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

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

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

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

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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¿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

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

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

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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¿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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¿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

¿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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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