Está en la página 1de 50

Introduccin a VHDL y la

FPGA
Laboratorio de Arquitectura de Computadores y Ensambladores 1
Qu es una FPGA?

F ield

P rogrammable

G ate
A rray
Qu contiene una FPGA?

Memoria
Control de relojes
Bloques DSP
Procesadores Embebidos
Controladores de memoria
Hasta 1200 I/O
Etc.
Ejemplo de Ruteo
FPGA Vs / P

Ventajas
Paralelismo
Organizacin Modular
Reconfiguracin de Pines
Desventajas
Costo
Consumo Energtico
Complejidad
VHDL

No es un lenguaje de programacin, es un lenguaje de descripcin de hardware.

V ery high-speed Ics

H ardware

D escription

L anguage
Lenguaje de Descripcin de Hardware

Utiliza instrucciones de alto nivel para implementar hardware.


Iimplementacin por mdulos.
No tienen un nivel de abstraccin tan alto como los lenguajes de
programacin.
Cambio de Mentalidad

No existe un procesador mgico que ejecute las instrucciones dentro de una


FPGA.
El cdigo es ejecutado de forma concurrente, a pesar de que se escribe lnea
por lnea.
El cdigo corresponde a la descripcin del funcionamiento de un hardware, y
no son una serie de instrucciones a ejecutar.
Estructura de un modulo VHDL
Estructura de un modulo VHDL
Cmo se evala si funciona?

Test Bench
Se incrusta el modulo a probar dentro de un modulo VHDL de simulacin.
El modulo de simulacin actuara sobre nuestro modulo como si este fuese una
caja negra.
Se insertan estmulos, y se verifica la respuesta a estos.
Similar a una funcin de transferencia.
Test Bench
Test Bench
Elementos Bsicos del Lenguaje
Identificadores

Se utilizan las mismas reglas que en la mayora de los lenguajes de


programacin.
Solo pueden contener caracteres alfanumricos (A-Z,a-z,0-9) y el smbolo de
guion bajo (_)
Deben iniciar con una letra
No deben finalizar con guion bajo
No deben existir dos guiones bajos consecutivas
No se permiten espacios en blanco
No es case-sensitive.
Objetos de Datos

Variables
Constantes
Seales
Declaraciones implcitas de objetos de
datos
Existen algunas construcciones que tienen un tipo de objeto de dato ya
establecido.
Puerto de una entidad: Debe ser una seal
Genricos de una entidad: Debe ser una constante
Parmetros de funciones o procedimientos: Constantes o Seales.
Seales

Contiene informacin sobre el valor/dato almacenado, pero tambin


almacena el tiempo en el cual se obtiene un nuevo valor.
Almacena el estado actual y posibles estados futuros.
Los valores en una seal pueden ser modificados y ledos.
Usadas para comunicar elementos concurrentes (justo como si fuesen cables).
Nunca hay que asignarles un valor inicial al momento de declararlas.
En un proceso no obtendrn el valor asignado inmediatamente, sino hasta
salir de este.
I/Os y Seales

Las seales transportan informacin entre las arquitecturas y mdulos.


Los puertos I/Os Tambien son seales.
Declaracin de una seal

Si la seal se utiliza dentro de una arquitectura.


Declaracin de una seal

Si la seal se utiliza para declarar un puerto I/O.


Tipos de Datos Paquete Estndar
Tipos de Datos Paquete Estndar
Tipos de Datos STD_LOGIC
Tipos de Datos STD_LOGIC_VECTOR

No es mas que un arreglo de valores STD_LOGIC, al momento de declararlos


se debe especificar el rango de ndices que se utilizaran (el tamao va
implcito).
Modos de un Puerto

IN: No pueden modificarse/escribirse un valor en l. Solamente puede ser


ledo.
OUT: Solamente pueden modificarse/escribirse un valor en l. No puede ser
ledo.
INOUT: Puede ser tanto modificado como leido. Diseado para ser utilizado
en puertos bidireccionales (I2C, One-Wire, etc).
Asignacin Simple de seales
Ejemplo de seales usadas para
interconectar
Seales Valor inicial

No hay interpretacin de hardware sintetizable que represente un valor


inicial para una seal.
Los valores iniciales al momento de la simulacin si son validos.
El diseador es el responsable de colocar los valores iniciales a las seales
(normalmente a travs de un RESET).
Mas sobre seales

No se actualizan inmediatamente.
No pueden ser declaradas en funciones o procedimientos.
Son visibles desde todos los procesos de la arquitectura.
Cmo asignar valores a seales?
Ejemplo de Asignacin
Ejemplo de Asignacin
Ejemplo Asignacin
Variables

Almacena nicamente el dato asignado.


Puede ser modificada/leda.
Toma el valor asignado inmediatamente.
Solamente son permitidas dentro de procesos o funciones.
Pueden ser inicializadas.
No tienen nocin temporal.
No pueden ser utilizadas en bloques concurrentes.
Declaracin y Asignacin de Variables

La declaracin puede o no tener un valor inicial.

Para la asignacin en variables se utiliza := en vez de <=.


Seal vs Variable
Constantes

Almacena un valor nico de un tipo de dato especifico.


Obtienen su valor al momento de ser declaradas, y este no puede ser
modificado.
Se declaran de la siguiente forma:
Mdulos VHDL
Entidad

Describe los puertos de un modulo VHDL.


Debe asociarse a una arquitectura para obtener funcionalidad.
Se declara de la siguiente forma:
Arquitectura

Debe estar asociada a una entidad.


Una entidad puede tener mas de una arquitectura asociada.
Las sentencias de una arquitectura se ejecutan de forma concurrente.
Ejemplo de Arquitectura
Entidad + Arquitectura
Arreglos

Crea un tipo de dato multidimensional con un tipo de dato existente.


Debe asignarse a un objeto luego de ser creado.
Normalmente usados para crear memorias.
Ejemplo de Arreglos
Asignacin Concurrente

Asignacin de valores a seales, utilizando distintas expresiones.


Representa un conjunto de procesos que se ejecutan en paralelo.
Tres tipos de asignacin concurrente:
Asignacin Simple
Asignacin Condicional
Asignacin Selectiva
Asignacin Simple
Asignacin Condicional
Asignacin Selectiva
Asignacin Selectiva

Deben tomarse en cuenta todas las posibilidades.


La expresin WHEN OTHERS evala todas las posibilidades que no hayan
sido tomadas en cuenta.

También podría gustarte