Sunteți pe pagina 1din 52

Diseño de Hardware con VHDL

Facultad de Ingenierı́a

Laboratorio Electrónica

Segundo Semestre, 2015


Field Programmable Gate Array (FPGA)
• De una manera superficial podemos decir que las FPGA son chips
de silicio reprogramables. Utilizando bloques de lógica
pre-construidos y recursos para ruteo programables, podemos
configurar estos chips para implementar funcionalidades
personalizadas en hardware.
• El uso de FPGA en la industria ha sido impulsada por el hecho de
que estos combinan lo mejor de los ASICs y de los sistemas
basados en procesadores. Ofrecen velocidades temporizadas por
hardware y fiabilidad, pero sin requerir altos volúmenes de recursos
para compensar el gran gasto que genera un diseño personalizado
de ASIC.
• La lógica programable puede reproducir desde funciones tan
sencillas como las llevadas a cabo por una puerta lógica o un
sistema combinacional hasta complejos sistemas en un chip.
2 de 52
Ventajas y Desventajas

Ventajas
• Rendimiento (Paralelismo y
Desventajas
Algoritmos)
• Precio
• Tiempo en llegar al mercado
• Entornos de desarrollo de
• Precio
propietarios
• Fiabilidad
• Lenguaje Complejo
• Mantenimiento a largo plazo
• Hardware a la medida

3 de 52
FPGA vs Micro

¿Por qué utilizar una FPGA y no un Microcontrolador?

4 de 52
Aplicaciones

5 de 52
FPGA

6 de 52
Elbert V2 - Spartan 3A
• FPGA: Spartan XC3S50A
• 16 Mb SPI flash memory.
• USB 2.0 interface for On-board
flash programming.
• ELBERT V2 es una FPGA
• FPGA configuration via JTAG
simple pero versátil para el
and USB
aprendizaje y desarrollo.
• 8 LEDs ,6 Push Buttons, 3
• Una excelente opción para
Seven Segment Displays, DIP
aprender y experimentar en el
switch.
diseño de sistemas con FPGA.
• VGA output, Stereo audio out,
Micro SD card adapter.
• 39 IOs for user defined purposes
• On-board voltage regulators.
7 de 52
Very high-speed ICs Hardware Description Language
(VHDL)

VHDL es un lenguaje definido por el IEEE usado por ingenieros para


describir circuitos digitales. VHDL es el acrónimo que representa la
combinación de VHSIC y HDL, donde VHSIC es el acrónimo de Very
High Speed Integrated Circuit y HDL es a su vez el acrónimo de
Hardware Description Language.

8 de 52
Origen VHDL

VHDL surge a principios de los ’80 de un proyecto DARPA (Agencia


de investigación del Departamento de Defensa de los EE.UU.) llamado
VHSIC. Aparece como una manera de describir circuitos integrados
debido a la crisis del ciclo de vida del Hardware; ya que cada dı́a los
circuitos integrados eran más complicados, y el coste de reponerlos
cada vez era mayor, porque no estaban correctamente documentados.
VHDL nació como una manera estándar de documentar los circuitos y
al mismo tiempo, se vio que la expresividad de VHDL permitirı́a
reducir el tiempo de diseño de los circuitos, porque se podrı́an crear
directamente de su descripción: utilidad de la sı́ntesis
En 1987 el trabajo fue cedido al IEEE, y a partir de ese momento es
un estándar abierto.

9 de 52
¿Para qué sirve VHDL?

VHDL nos permite modelar sistemas digitales los cuales nos permiten:

• Simular: Verificar que tiene la funcionalidad deseada.


• Sintetizar: Crear un circuito que funciona como el modelo.

10 de 52
Sistemas Digitales

11 de 52
Estructura de un modulo VHDL

Prueba.vhdl
Prueba.vhdl

12 de 52
Estructura de un modulo VHDL

13 de 52
IEEE 1164

El estándar IEEE 1164 define


un paquete de diseño de unidad
que contiene las declaraciones
que soportan la representacion
uniforme de un valor lógico en
la descripción de hardware
brindada por VHDL.

14 de 52
Entidad
Se inicia la declaracion de puertos con el comando:
• Port(
Se termina la declaracion de puertos con:
• );
La sintaxis es la siguiente:
• Nombre: modo TIPO;
Modo:
• in: Una señal que entra en la entidad y no sale. La señal puede ser
leı́da pero no escrita.
• out: Una señal que entra en la entidad y no sale. La señal puede
ser leı́da pero no escrita.
• inout: Una señal que es bidireccional, entrada/salida de la entidad.
15 de 52
Flip Flop.vhdl

16 de 52
Identificadores

• Se utilizan las mismas reglas que en la


mayorı́a de lenguajes de programación
• Solo pueden contener caracteres
alfanuméricos (AZ, az, 09) y el sı́mbolo de Objetos de datos:
guión bajo ( )
• Variables
• Deben iniciar con una letra
• Constantes
• No deben finalizar con guión bajo
• Señales
• No deben existir dos guiones bajos
consecutivos
• VHDL NO ES CASE-SENSITIVE
• No se permiten espacios en blanco

17 de 52
Señales

• Contiene información sobre el valor/dato almacenado.


• Los valores almacenados en una señal pueden ser modificados y
leı́dos
• Utilizadas para interconectar elementos concurrentes (tal y como si
fuesen ((cables)))
• 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
declararla
• Las señales transportan la información entre arquitecturas/módulos
• Los puertos I/O son también señales

18 de 52
Si la señal se utiliza dentro de una arquitectura:

Tipo:
• std logic
• std logic vector
• unsigned
• signed
• integer

19 de 52
Asignación de señales

flag <= bandera;


tiempo <= 0;
RST <= ‘1’;

20 de 52
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

21 de 52
Ruteo

22 de 52
Crear Nuevo Proyecto

23 de 52
Configuración del Dispositivo

24 de 52
Agregar un Módulo

25 de 52
Seleccion Módulo VHDL

26 de 52
Modulo para Sintetización

27 de 52
Ejemplo 1

28 de 52
User Constraints File

UCF
Este archivo contiene las señales/pines que deben ser mapeadas a una
localidad especifica debido a la forma en que la tarjeta esta
posicionada.

29 de 52
Agregando el UCF

30 de 52
Agregando el UCF

31 de 52
Configuración del UCF

Los pasos para la configuración son los siguientes:


• Dejar comentado todos los pines que NO vamos a usar.
• Des-comentar el pin a utilizar.
• Agregar al pin el nombre de las entradas/salidas que declaramos en
la entidad.

32 de 52
UCF Configurado

33 de 52
Sintetización
Procesos
• A: View RTL Schematic: Una vez ya se ha
Sintetizado (Corriendo Synthesize - XST)
se prosigue a generar el esquemático
usando esta opción.
• B: Check Syntax: Verificar que no hayan
errores de sintaxis
• C: Implement Design: Una vez
configurado el UCF se prosigue a
implementar el diseño para el dispositivo
• D: Generate Programming File: Genera el
bitstream que se programara en la tarjeta
de desarrollo.
34 de 52
Clase 2

35 de 52
Type Casting

36 de 52
Importante

Para realizar el type casting es necesario usar la libreria:


• Use IEEE.numeric std.all;

37 de 52
Procesos

Un proceso describe el comportamiento de un circuito.


• Su estado puede variar cuando cambian ciertas señales
• Puede utilizar construcciones muy expresivas: if, else, case, for,
while, etc.

38 de 52
Elementos de un proceso

1. 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.
2. Declaraciones
◦ Declaración de tipos, funciones, procedimientos y variables.
◦ Todas las declaraciones son locales
3. Sentencias Secuenciales
◦ El código que será ejecutado al activarse el proceso.

39 de 52
Ejemplo Procesos

40 de 52
Condicional IF

1. Pueden utilizarse ÚNICAMENTE dentro de procesos


◦ Estos pueden ser secuenciales o concurrentes
2. Pueden ser anidados
◦ Es buena práctica anidar la menor cantidad de sentencias IF posibles.
3. Pueden contener más de una condición a evaluar, utilizando
conectores lógicos (AND, OR, XOR, etc.)

41 de 52
Sintaxis Condicional IF

42 de 52
Clase 3

43 de 52
Procesos para contar tiempo

Podemos fácilmente utilizar un proceso para llevar el calculo del


tiempo haciendo un contador de flancos de subida; para esto
usaremos la siguiente formula

x = T (s) ∗ fosc (1)

Tomar en cuenta:
• El numero 0 es tomado en cuenta en el contador, por tanto el valor
a ingresar sera x-1;

44 de 52
Ejemplo

Blinking Led

45 de 52
Multiplexores

Los multiplexores son circuitos combinacionales con varias entradas y


una única salida de datos, están dotados de entradas de control
capaces de seleccionar una, y sólo una, de las entradas de datos para
permitir su transmisión desde la entrada seleccionada hacia dicha
salida.

46 de 52
Diagrama

47 de 52
Condicional When

• Similar a la condicional 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, si lo obviamos tendremos
un error en la sintetizacion.

48 de 52
Sintaxis

49 de 52
Ejemplo

Multiplexor

50 de 52
Banderas (Flags)

En programación, la bandera o flag se refiere a uno o más bits que se


utilizan para almacenar un valor binario o código que tiene asignado
un significado.
Las banderas se utilizan mayoritariamente para controlar o indicar el
estado intermedio o final o el resultado de diferentes operaciones

51 de 52
Ejemplo

Multiplexar Displays

52 de 52

S-ar putea să vă placă și