Você está na página 1de 122

SISTEMAS EMBEBIDOS

OBJETIVO DEL CURSO:

Disear e implementar sistemas digitales utilizando tcnicas modernas: Un


Lenguaje de Descripcin de Hardware y Dispositivos Programables a si mismo
se comprenda el diseo de sistemas mnimos, y se puedan sintetizar en un
FPGA.

MC. RODRIGO LUCIO MAYA RAMIREZ


RESUMEN:

En este curso-taller se aborda uno de los ms extendidos


lenguajes de descripcin de hardware, el VHDL, sus utilidades y
aplicaciones y las herramientas y metodologas para sintetizar
sistemas digitales en FPGAs, que son los dispositivos programables
ms ampliamente usados para generar tanto prototipos como
sistemas finales de aplicacin. El aprendizaje se refuerza con
simulaciones y prcticas.
Tambin se aborda el diseo de sistemas mnimos basados en
un microprocesador, y la interconexin de stos con otros bloques
digitales diseados en VHDL, y sintetizables en un FPGA. Se usan
microprocesadores definidos en software y ambientes de desarrollo
integrado.

MC. RODRIGO LUCIO MAYA RAMIREZ


PROGRAMA DEL CURSO

UNIDAD 1 Lenguajes de descripcin de hardware

1.1 Qu son los HDLs?


1.2 Diferencias con los Lenguajes de Software
1.3 Ejemplos de HDLs
1.4 VHDL
1.5 Breve Resea Histrica de VHDL
1.6 Diseo Digital con VHDL
1.7 Metodologas de Diseo utilizando VHDL
1.7.1 Funcional
1.7.2 Arquitectural
1.7.3 Fsico

MC. RODRIGO LUCIO MAYA RAMIREZ


PROGRAMA DEL CURSO

UNIDAD 2: Dispositivos Lgicos Programables

2.1 Lgica Programable


2.2 SPLDs
2.2.1 Caractersticas
2.2.2 Arquitectura
2.3 CPLDs
2.3.1 Caractersticas
2.3.2 Arquitectura
2.4 FPGAs
2.4.1 Caractersticas
2.4.2 Aplicaciones y ventajas
2.4.3 Diferentes fabricantes de FPGAs
2.4.4 Arquitectura de los FPGAs de Xilinx
2.4.4.1 Bloque Lgico Configurable (CLB)
Bloque de Entrada-Salida (IOB)
Matriz de Interconexiones

MC. RODRIGO LUCIO MAYA RAMIREZ


PROGRAMA DEL CURSO

UNIDAD 3: VHDL

3.1 Estructura de una descripcin en VHDL


3.1.1 Entidad
3.1.2 Arquitectura
3.1.2.1 Descripcin Comportamental
3.1.2.2 Descripcin Flujo de Datos
3.1.2.3 Descripcin Estructural
3.2 Elementos Lxicos
3.3 Constantes y variables
3.4 Tipos de Datos Escalares
3.5 Datos del tipo Arreglo
3.6 Estructuras de Ejecucin Concurrente
3.7 Estructuras secuenciales
3.8 Descripciones Comportamentales
3.9 Descripciones Estructurales
3.10 Bibliotecas
3.11 Subprogramas
3.11.1 Funciones
3.11.2 Procedimientos
3.12 Paquetes

MC. RODRIGO LUCIO MAYA RAMIREZ


PROGRAMA DEL CURSO

UNIDAD 4: Diseo con VHDL

4.1 Arquitecturas de disponibles programables


4.2 Sistemas combinacionales
4.3 Sistemas secuenciales
4.4 Maquinas de Estado
4.7 Aplicaciones

UNIDAD 5: Procesadores Embebidos de 8 bits

5.1 Introduccin
5.2 Arquitectura Picoblaze
5.3 Programacin en ensamblador Picoblaze
5.4 Manejo de interrupciones

MC. RODRIGO LUCIO MAYA RAMIREZ


Lenguajes de descripcin de hardware
(HDLs)
Estos lenguajes fueron desarrollados para hacer frente a la creciente complejidad de los diseos.
Se puede hacer una analoga con los que se pueden llamar lenguajes de descripcin de software.
Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrnicos discretos.
Se utilizan en la fase de diseo
Necesidad de Simulador lgico
Herramienta necesaria para reproducir el comportamiento del sistema modelado
Permite la verificacin del sistema diseado.
Actualmente existen herramientas software que permiten pasar de dichas descripciones a diseos a
nivel de compuertas: SNTESIS

MC. RODRIGO LUCIO MAYA RAMIREZ


Dominios descriptivos y niveles de
abstraccin

Dominios descriptivos:
Comportamiento
Se realiza la funcin sin informacin de
cmo se hace
Estructural
Los bloques se conectan mediante
interconexiones (netlist o esquemas)
Fsico
Localizacin y propiedades fsicas
reales

MC. RODRIGO LUCIO MAYA RAMIREZ


Dominios descriptivos y niveles de
abstraccin

Niveles de abstraccin:
Circuito
Valores continuos, todo es electrnica,
tiempo continuo
Lgico
Valores lgicos (T,F), slo computacin,
tiempo continuo
RT (RegisterTransfer)
Palabras con valores discretos, control
y procesamiento, tiempo discreto
Algortmico
Estructuras abstractas, dependencias
en lugar de tiempo
Sistema
Relaciones entre subsistemas,
sncronos y protocolos

MC. RODRIGO LUCIO MAYA RAMIREZ


Dominios descriptivos y niveles de
abstraccin

Medidas:

Circuito
Tiempo de subida y bajada, consumos
rea
Lgico
Tiempo de conmutacin, skew, rea
equivalente
RT
Tiempo de ciclo, mrgenes,
compuertas equivalentes
Algortmico
Latencia, cadencia de datos, nmero
de mdulos
Sistema
Ancho de banda, MIPS.

MC. RODRIGO LUCIO MAYA RAMIREZ


Dominios descriptivos y niveles de
abstraccin

Transiciones:

Sntesis/Anlisis
Comportamiento estructural

Optimizacin
Mejora de una descripcin sin variar el
nivel de abstraccin

Generacin/Extraccin
Estructural fsico

Refinamiento/Abstraccin
Bajar/Subir el nivel de abstraccin en
el mismo dominio

MC. RODRIGO LUCIO MAYA RAMIREZ


Niveles de diseo y
dominios de representacin

VHDL: VHSIC, Hardware Description


Language
VHSIC: Very High Speed Integrated
Circuits

MC. RODRIGO LUCIO MAYA RAMIREZ


Lenguajes de descripcin de hardware
(HDLs). Sntesis lgica

Sntesis lgica:
Convierte una descripcin de un sistema digital
mediante un HDL en una implementacin
tecnologca.

Descripcin HDL:
library ieee;
use ieee.std_logic_1164.all;

entity puertas is
port ( A, B, C : in
std_logic;
Y: out std_logic
);
end puertas; El hecho de realizar una sntesis lgica obliga a ciertas
restricciones en la tarea de realizar las descripciones
ARCHITECTURE a of puertas is con HDLs.

begin

Y <= (A and B) or C;
end a;
MC. RODRIGO LUCIO MAYA RAMIREZ
Ventajas del uso de HLDs

El lenguaje es independiente de la Soportan tres estilos de descripcin bsicos:


tecnologa:
El mismo modelo puede ser
sintetizado en libreras de distintos DESCRIPCIN COMPORTAMENTAL (behavioral)
vendedores. DESCRIPCIN DE FLUJO DE DATOS (data-flow)
Reduccin de la dependencia con el DESCRIPCIN ESTRUCTURAL (estructural)
fabricante de ASICs, ya que la
portabilidad a otra tecnologa es
mucho ms rpida.
Un diseo puede ser descrito con una combinacin de los
Reutilizar el diseo en componentes tres estilos.
tan distintos como ASICs o FPGAs con
un esfuerzo mnimo.

MC. RODRIGO LUCIO MAYA RAMIREZ


Ventajas del uso de HLDs

Se puede verificar la funcionalidad del diseo muy


begin
pronto en el proceso de diseo.
La simulacin del diseo a tan alto nivel, antes de
la implementacin a nivel de compuertas, permite Y <= (A and B) or C;
probar la arquitectura y rectificar decisiones en las end a;
primeras fases de diseo, con un esfuerzo mucho
menor que si se realizase en fases posteriores.
El lenguaje tambin puede ser usado como medio de
Sencillez comunicacin entre diferentes herramientas CAD y
Como la descripcin se centra ms en la CAE.
funcionalidad que en la implementacin, resulta Un programa de captura de esquemticos puede ser
ms sencillo para una persona comprender qu utilizado para generar descripciones HDL del diseo, lo
funcin realiza el diseo a partir de una descripcin
HDL que a partir de un esquemtico de cual puede ser usado como entrada a un simulador.
interconexin de compuertas

Ahorro de tiempo
Facilita las correcciones en el diseo debidas a
fallos de diseo o cambio de especificaciones.
La existencia de herramientas comerciales
automticas (sintetizadores RTL) que permiten
crear descripciones gate-level a partir de los
modelos a nivel RTL

MC. RODRIGO LUCIO MAYA RAMIREZ


Ventajas del uso de HLDs

La propia descripcin en el lenguaje de alto Los HDL tienen elementos que permiten el diseo a
nivel sirve como especificacin del gran escala, de forma fcil; por ejemplo,
comportamiento del sistema a disear componentes, funciones, procedimientos,
(tanto a nivel funcional como las paquetes.
restricciones temporales), y la interface con
el resto del sistema.
Los modelos descritos con estos lenguajes,
pueden ser verificados fcilmente y de El lenguaje soporta metodologas de diseo
forma precisa por simuladores definidos en diferentes: top-down, bottom-up, o mixtas.
base a estos HDL.
El lenguaje puede ser usado como un medio
de intercambio entre los fabricantes de
ASICs y los usuarios de herramientas CAD.

El lenguaje soporta jerarqua


Un sistema digital puede ser modelado
como un conjunto de componentes
interconectados.
A su vez cada componente puede ser
modelado como un conjunto de
subcomponentes.

MC. RODRIGO LUCIO MAYA RAMIREZ


Ventajas del uso de HLDs

Soporta modelos de tiempos sncronos y El modelo, a travs de los atributos, puede contener
asncronos. informacin del diseo en s mismo, no solo de la
funcionalidad: por ejemplo, informaciones tales
Posibilidad de implementar distintas tcnicas de como el rea y velocidad.
modelado digital (descripciones de mquinas de
estados finitos (FSM), descripciones algortmicas,
redes de Petri, y ecuaciones Booleanas

El lenguaje es pblico y "not propietary"


(especialmente en el caso del VHDL).

Es un estndar ANSI e IEEE; por lo tanto, los


modelos descritos en estos lenguajes (VHDL o
VERILOG) son totalmente portables.

La capacidad de definir tipos de datos


sofisticados, suministra la potencia de describir y
simular nuevos diseos a un nivel de abstraccin
en el cual an no se barajan detalles de la
implementacin

Los genricos y atributos facilitan la descripcin


de modelos parametrizables. MC. RODRIGO LUCIO MAYA RAMIREZ
Inconvenientes del uso de HDLs

Supone un esfuerzo de aprendizaje, ya


que prcticamente se puede
considerar como nueva metodologa.
Necesaria la adquisicin de nuevas
herramientas:
Simuladores
Sintetizadores de HDL, teniendo que
mantener el resto de las herramientas
para otras fases del diseo.
El uso de estos lenguajes hace que
involuntariamente se pierda un poco
de control sobre el aspecto fsico del
diseo, dndole una mayor
importancia a la funcionalidad de
dicho diseo.

MC. RODRIGO LUCIO MAYA RAMIREZ


Lenguajes de Descripcin de Hardware.

Diversos grupos de investigadores En la actualidad se utilizan fundamentalmente VHDL,


empiezan a crear y desarrollar los Verilog y SystemC . Otro HDL, el UDI/L se utiliza
exclusivamente en Japn.
llamados "lenguajes de descripcin de
hardware" cada uno con sus VHDL (Very High Speed Integrated Circuit Hardware
peculiaridades, buscando una solucin Description Language). Nace como proyecto del
a los problemas que presentaba el Departamento de Defensa (DoD) de EEUU (ao 82) para
diseo de los sistemas complejos. disponer de una herramienta estndar, independiente
para la especificacin (modelado y/o descripcin) y
documentacin de los sistemas electrnicos. El IEEE lo
Ejemplos: adopta y estandariza.
IDL desarrollado por IBM ,
Verilog: Software de la firma Gateway y posteriormente de
TI - HDL de Texas Instruments, Cadence. Estndar industrial hasta que apareci el VHDL
ZEUS de General Electric, como estndar IEEE. En 1990 Cadence lo hace pblico y el
IEEE lo estandariza en 1995.
prototipos de universidades
SystemC: es una extensin del C++, que utiliza unas
bibliotecas de clase para describir y simular circuitos
digitales. Se public en 1.999 .

MC. RODRIGO LUCIO MAYA RAMIREZ


En resumen:
Para qu sirven los HDL?

Sirven para modelar circuitos, para


expresar ideas

Los modelos se pueden simular para


comprobar que se corresponden con
la funcionalidad deseada

MC. RODRIGO LUCIO MAYA RAMIREZ


Para qu sirven los HDL?

Para generar documentacin, siempre y cuando los modelos de los circuitos estn
bien comentados.

Entity bit8tobcd is
Port( clk: in std_logic;--reloj del sistema, para dividir
rst: in std_logic;
cuenta: out std_logic_vector(1 downto0);--para depurar
bitin: in std_logic_vector(7 downto0); --8 bits de entrada
seg: out std_logic_vector(6 downto0);--tiempo a iluminar
ctrlD: out std_logic_vector(3 downto0; --ctrl de los nodos
bcd: out std_logic_vector(15 downto0)--para depurar
);
End bit8tobcd;

Para crear bancos de prueba (test- bench), es decir, crear los estmulos y ver los
resultados durante la simulacin.

MC. RODRIGO LUCIO MAYA RAMIREZ


Para qu sirven los HDL?

Los "Test Bench" pueden ser escritos


en el mismo lenguaje que con el que
han sido modelados los diseos (HDL).

Esto permite un mejor manejo del


modelo, ya que se puede asociar el
modelo a sus estmulos de simulacin.

No limitamos el uso de dichos


estmulos a un determinado simulador,
pudiendo ser reutilizados dichos
estmulos aunque se use un simulador
distinto.

Los retardos de propagacin y


limitaciones temporales, pueden ser
descritos con estos HDL

MC. RODRIGO LUCIO MAYA RAMIREZ


UNIDAD 2: Dispositivos Lgicos Programables

2.1 Lgica Programable


2.2 SPLDs
2.2.1 Caractersticas
2.2.2 Arquitectura
2.3 CPLDs
2.3.1 Caractersticas
2.3.2 Arquitectura
2.4 FPGAs
2.4.1 Caractersticas
2.4.2 Aplicaciones y ventajas
2.4.3 Diferentes fabricantes de FPGAs
2.4.4 Arquitectura de los FPGAs de Xilinx
2.4.4.1 Bloque Lgico Configurable (CLB)
Bloque de Entrada-Salida (IOB)
Matriz de Interconexiones
MC. RODRIGO LUCIO MAYA RAMIREZ
Dispositivos Lgicos Programables

Los dispositivos lgicos programables son


circuitos integrados digitales que no
tienen una funcin predefinida por el
Los dispositivos actuales (CPLD y FPGAs) tienen una
fabricante. Su funcin puede ser definida
capacidad lgica de hasta millones de compuertas,
(o programada) por el usuario.
incluyen interfaces programables para varios estndares de
interface elctrica y tienen bloques de funciones especiales
Debido a la gran capacidad lgica que embebidos entre la lgica programable tales como
tienen los dispositivos modernos, memoria, multiplicadores o CPUs completas
sistemas completos pueden desarrollarse
sobre un solo circuito integrado.

Esta gran capacidad y variedad de los dispositivos los hace


sumamente tiles a la hora de crear prototipos, desarrollo
Esto da lugar a las denominaciones rpido de nuevos productos, para los productos que deben
Systemona-Programmable Chip, o ser reconfigurables por naturaleza o productos que se
SoPC (sistema sobre un circuito integrado producen en bajos volmenes y para los cuales no es
programable) y System-on-a- econmicamente viable crear un integrado a medida.
Reprogammable Chip (SoRC).

MC. RODRIGO LUCIO MAYA RAMIREZ


Evolucin de los Primeros Dispositivos
Lgicos Programables

Los primeros dispositivos lgicos


programables fueron las memorias PROM.
Para ello se utilizan como entradas las lneas
de direccin a la memoria. De esta manera la
memoria provee una tabla de decodificacin
completa de las entradas, y puede utilizarse
para implementar cualquier funcin lgica
combinacional.

Los primeros dispositivos diseados


especficamente para implementar funciones
digitales programables fueron los PLA,
introducidos al mercado en la dcada de 1970
por Philips.

La base terica de estos dispositivos es que


cualquier ecuacin lgica puede reducirse a
una suma de productos.
Esquema bsico de un tpico dispositivo PLA.
El corazn electrnico de estos dispositivos
consiste en un bloque que permite negar las
entradas y dos niveles de compuertas: un
nivel de compuertas AND y un nivel OR.
Mediante fusibles pueden programarse las
interconexiones entre las entradas y la lgica.

MC. RODRIGO LUCIO MAYA RAMIREZ


PAL

Debido a las limitaciones en la velocidad


de las conexiones programables y los
problemas en el proceso de manufactura
de las PLA, surgieron dispositivos con un
solo nivel de lgica programable
denominados PAL .

Los PAL se basan en el mismo principio


que las PLA, pero tienen un nivel de lgica
AND programable mientras el nivel de
lgica OR es fijo.

Esto limita la cantidad de funciones que


pueden definirse con un dispositivo
dado, as que los fabricantes de PAL los
ofrecan en una variedad de
configuraciones para adecuarlos a las
necesidades del usuario.
Esquema de una posible configuracin de un PAL.
Muchos PAL adems incorporaron
registros sobre las salidas y realimentacin
para implementar circuitos secuenciales.

MC. RODRIGO LUCIO MAYA RAMIREZ


GAL

Los dispositivos denominados GAL son


un poco mas complejos que los PAL
mencionados anteriormente.

Incluyen un nivel de lgica AND a la


entrada y luego un bloque lgico
denominado macrocelda a la salida, en
reemplazo del nivel OR.

La denominacin GAL fue utilizada en


principio por Lattice, y luego licenciada
a otros fabricantes.
La macrocelda de estas GAL se
denomina OLMC, por "Output Logic
Macro Cell".

Diagrama funcional de una GAL completa y de una macrocelda


de un dispositivo GAL22V10 de Lattice Semiconductors.

MC. RODRIGO LUCIO MAYA RAMIREZ


CPLDs

Los CPLDs son dispositivos que


combinan varios bloques lgicos
similares a las PAL o GAL con una
matriz de interconexin programable.

Estos dispositivos se fabrican con


distintas capacidades para adaptarlos
a las necesidades del usuario. Como
ejemplo, la familia MAX7000 de alto
rendimiento de Altera se manufactura
en versiones desde 32 hasta 512
macroceldas, con 36 a 212
entradas/salidas segn el dispositivo y
empaquetamiento que se elija.

Estructura general CPLD Altera

MC. RODRIGO LUCIO MAYA RAMIREZ


CPLDs

Macrocelda CPLD.

Como se de las figura, estos dispositivos incluyen adems de las macroceldas, un arreglo de interconexin
programable (PIA), una red de distribucin de reloj dedicada y bloques de entrada salida que permiten
interfaces compatibles con diferentes estndares elctricos.

Los bloques lgicos AND y OR estn ambos incluidos en la macrocelda del dispositivo.

MC. RODRIGO LUCIO MAYA RAMIREZ


FPGAs

La arquitectura de una FPGA consiste


en arreglos de bloques lgicos que se
comunican entre si a travs de canales
de conexin verticales y horizontales.

La principal diferencia entre las FPGA y


CPLDs es que en general los bloques
lgicos de las FPGA no implementan la
lgica usando compuertas sino con
generadores de funciones.

En la siguiente seccin se estudiar en


mayor detalle la arquitectura de una Estructura bsica FPGA
FPGA tpica.

MC. RODRIGO LUCIO MAYA RAMIREZ


Elementos del FPGA
Esta FPGA contiene cinco elementos principales:

Bloque de entrada-salida (IOB o Input-Output


Block): estos bloques proveen la interface entre las
patitas o "pines" del integrado y la lgica interna.

Bloque lgico configurable (CLB o Configurable


Logic Block): Estos son los bloques bsicos que se
utilizarn en la implementacin de un circuito
digital.

Bloque de distribucin y compensacin de reloj


(DLL o Delay Locked Loop): Estos bloques controlan
los dominios de reloj dentro del integrado y
compensan por retardos que pueda haber entre el
reloj externo y el interno.

Bloque de memoria (BLOCK RAM): Estos bloques


son memorias dedicadas integradas dentro de la
lgica programable.

Estructura de interconexin: Es una estructura


verstil y multi-nivel de interconexin entre los Diagrama en bloques de una FPGA Spartan IIe de Xilinx
otros componentes de la FPGA.

MC. RODRIGO LUCIO MAYA RAMIREZ


Bloque Lgico Programable

Todas las FPGA tienen algn tipo de bloque


lgico programable. Este es el corazn de la
FPGA, y permite implementar las
diferentes funciones lgicas.

Cada CLB esta compuesto por dos bloques


iguales denominados slices. Cada "slice"
contiene dos generadores de funciones y
un multiplexor MUXF5. El multiplexor
combina los resultados de los generadores
de funciones dentro de cada "slice" del
CLB.

Las dos "slices" estn unidas por un


multiplexor MUXF6, que puede seleccionar
la salida de una u otra slice hacia la salida
del CLB. Esto permite implementar
cualquier funcin de 6 entradas, un
multiplexor de 8:1 o determinadas
funciones lgicas de hasta 19 entradas.
Adems de poder implementarse lgica
combinacional, cada slice contiene
recursos para implementar circuitos Esquema del bloque lgico programable (CLB) de una FPGA de la
secuenciales y operaciones aritmticas familia Spartan IIe de Xilinx.
eficientes.
MC. RODRIGO LUCIO MAYA RAMIREZ
CLBs

En esta figura se ven los generadores de


funciones, compuesto por una tabla de entrada-
salida (LUT o Look-Up Table) de cuatro entradas y
una salida. Estas tablas pueden implementar
cualquier funcin lgica de cuatro entradas y una
salida, as como tambin utilizarse como
memorias distribuidas de 16 x 1 bit.

Las salidas de las LUT pasan a los bloques de


control, que contiene lgica que permite optimizar
funciones aritmticas.

Los elementos que permiten implementar lgica


secuencial son los elementos de almacenamiento
que se ven sobre las salidas del slice. Estos
pueden configurarse como flip-flops D con reloj o CLB de una FPGA Spartan 3 de Xilinx
como latches controlados por nivel. MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque de Entrada / Salida

Las interfaces de entrada-salida son otro


de los componentes particulares que
tienen las FPGAs. La familia de FPGAs
Spartan IIe de Xilinx, por ejemplo, divide
las entradas/salidas del integrado en
bancos que se pueden configurar para
tener una interface con lgica de
diferentes estndares elctricos de
manera independiente.

Los bancos se configuran aplicando


diferentes tensiones de alimentacin a los
pines denominados VccO y VREF.
Distribucin de los bancos de entrada/salida en una FPGA Spartan IIe
Al utilizar diferentes valores de VccO para los
distintos bancos se podr tener un sistema
con interface a diferentes familias lgicas
dentro de la misma FPGA. Las entradas de
reloj estn asociadas a diferentes bancos de
entrada-salida, para permitir que haya
diferentes dominios de reloj con interfaces
elctricas diferentes.

MC. RODRIGO LUCIO MAYA RAMIREZ


Bloque de Entrada / Salida

Adems de la tensin VccO, para varios


de las interfaces lgicas debe
configurarse la tensin de referencia
VREF y agregarse resistencias de
terminacin sobre la plaqueta en las
entradas-salidas de la FPGA. Cada
bloque de entrada-salida tiene una
resistencia de pull-up y pull - down
configurables que permiten fijar el
valor lgico mediante programacin.
Los bloques de entrada-salida de
muchas FPGAs tienen elementos de
almacenamiento integrados que
permiten controlar mejor los tiempos
de propagacin entre los pines del
integrado y la lgica interna. Esquema de un bloque de entrada-salida (IOB) de una FPGA Spartan
Adems cada bloque de entrada-salida IIe.
cuenta con buffers programables
que pueden configurarse para tres
estados y colocar la salidas de la FPGA
en alta impedancia (estado Z).

MC. RODRIGO LUCIO MAYA RAMIREZ


Bloque de Control de Reloj

El sistema de control del reloj consiste


en bloques de control integrados a la
red de distribucin de reloj.
La red de distribucin de reloj en las
FPGA asegura retardos parejos a todos
los bloques lgicos de la FPGA.
Cada fabricante utiliza una arquitectura
diferente para el control y distribucin
de reloj.
La familia Spartan IIe de Xilinx tiene
bloques especficos para control de reloj
denominados DLL (Delay Locked Loop). Red global de distribucin de reloj en la FPGA Spartan IIe

Estos bloques sincronizan el reloj interno


al reloj externo del sistema, controlan el
desplazamiento de fase entre los relojes,
sincronizan los diferentes dominios de
reloj y aseguran un retardo de distribucin
del reloj pareja para la lgica interna de la
FPGA.

MC. RODRIGO LUCIO MAYA RAMIREZ


Bloque de Control de Reloj

La familia Stratix de Altera tiene los


bloques de control de reloj.

Estos bloques (Enhanced PLL)


permiten controlar la fase y frecuencia
del reloj, el sistema de distribucin de
reloj y el estndar elctrico de
interface entre otras cosas

Esquema de un bloque de control de reloj de la FPGA Stratix de Altera

MC. RODRIGO LUCIO MAYA RAMIREZ


Memoria

Varias familias de FPGA contienen


bloques de memoria embebida
integrados con la lgica programable.
En general estos bloques bsicos de
memoria pueden utilizarse en
diferentes configuraciones para
generar RAMs y ROMs de diferentes
tamaos.
Adems de memorias embebidas, las
FPGAs basadas en memoria SRAM
pueden usar las tablas LUT de los
bloques lgicos como memoria.
Esquema de una celda de memoria bsica de la familia Spartan IIe de
Este bloque se denomina BLOCK RAM Xilinx.
y es una memoria de puerto dual
(dual-port), que puede leerse y
escribirse al mismo tiempo.
Estos bloques de memoria pueden
usarse como memorias de puerto dual,
puerto simple, RAMs o ROMs. Para
entender la versatilidad de estos bloques
de memoria, en la siguiente tabla se
muestran las opciones de configuracin.
MC. RODRIGO LUCIO MAYA RAMIREZ
Memoria

Adems de poder configurar cada


bloque, varios bloques pueden
conectarse utilizando lgica externa
para implementar memorias de otros
tamaos y colas FIFO o FILO.
La figura muestra un bloque de
memoria de Actel, que puede
configurarse como memoria de puerto
simple, dual o multi-puerto.

Esquema de un bloque de memoria de Actel configurada como


memoria multi-puerto

MC. RODRIGO LUCIO MAYA RAMIREZ


Bloque de Procesamiento de Seal
Varias FPGA contienen bloques especficos que
optimizan en hardware ciertas funciones
especiales.

Las FPGA de la familia Stratix de Altera, por


ejemplo, contienen uno o ms mdulos de
procesamiento de seal entre los bloques de
lgica programable de propsito general.

Estos bloques permiten desarrollar ciertas


funciones especficas tpicas de las aplicaciones
de procesamiento de seal de manera muy
eficiente.

Pueden configurarse de varias maneras


diferentes segn las necesidades del usuario.
Como muestra la figura, este bloque contiene
lgica para implementar operaciones de
multiplicacin-acumulacin que requeriran de
muchos recursos y ciclos de reloj si se
implementaran utilizando lgica de propsito
general.

Al igual que los otros bloques, los bloques


especficos pueden interconectarse a los dems
bloques utilizando la matriz de interconexin
programable de la FPGA.
Bloque de procesamiento de seal de la familia Stratix de Altera

MC. RODRIGO LUCIO MAYA RAMIREZ


CPUs Embebidas

La familia de FPGAs de Xilinx Virtex II-PRO


contiene una CPU Power PC 405 de IBM y lgica
de interconexin embebida dentro de lgica
programable.

Esto permite utilizar toda la potencia de una CPU


integrada con la flexibilidad de los perifricos
diseados mediante lgica programable.

Los bloques especficos integrados en el silicio de


las FPGAs se denominan "hardcores".

Altera ofrece la FPGA Excalibur que contiene un


microcontrolador ARM922T integrado a un
costado de lgica programable. La lgica Altera ofrece el microcontrolador Nios, de tecnologa
programable del Excalibur puede ser de hasta un RISC de 16 bits que puede utilizarse sobre varias de las
milln de compuertas. FPGA de Altera.
El micro es de arquitectura RISC de 32 bits, y A este tipo de diseo se lo denomina "softcore", ya que
puede correr a una frecuencia de reloj de hasta a FPGA no tiene ningn bloque especfico para la CPU
200 MHz .
implementado sobre el circuito integrado.
Hay muchos micros "softcore" pblicos y propietarios.
Por otro lado tambin pueden disearse
microcontroladores o procesadores usando
solamente la lgica de configuracin de las FPGAs. Xilinx ofrece el Microblaze y Actel ofrecer un micro de la
familia ARM.

MC. RODRIGO LUCIO MAYA RAMIREZ


Matriz de interconexin

Para poder implementar circuitos


lgicos, los elementos lgicos
presentados en las secciones anteriores
no solo deben configurarse
adecuadamente sino que tambin
deben conectarse entre si.
La estructura de interconexin interna
de un PLD consiste en un conjunto de
alambres o trazas que pueden
conectarse mediante elementos de
conexin programables.
Las herramientas de localizacin e
interconexin (place and route) son las
encargadas de decidir en que
elementos lgico se implementar la
lgica diseada por el usuario y como
deben programarse las interconexiones
para que el diseo funcione segn las
especificaciones de tiempo y retardos
que se han definido.

MC. RODRIGO LUCIO MAYA RAMIREZ


Matriz de interconexin de las FPGA
Spartan IIe de Xilinx

Estas FPGA tienen dos niveles de interconexin.


Por un lado tienen una interconexin de
propsito general a travs de la matriz de
interconexionado general o GRM por sus siglas
en ingls.
Por otro lado contienen recursos de
interconexin local.

Adems de los ya mencionados, las FPGA Spartan


IIe contienen recursos de interconexin
dedicados a seales de tres estados, de entrada-
salida y recursos de interconexin global para la Caminos de interconexin local en la FPGA Spartan IIe
distribucin de reloj y seales especficas.

Los recursos de interconexin local, mostrados Adems, el interconexionado a este nivel provee conexiones
en la Figura 31, permiten hacer las conexiones a la matriz de interconexionado general y a los CLB
entre los elementos internos de un bloque lgico adyacentes. Las conexiones a los CLB adyacentes permiten
o CLB, como las tablas de bsqueda (LUT), los optimizar los diseos al evitar los retardos y la utilizacin de
flip-flop y las realimentaciones dentro del CLB. recursos de la matriz general de interconexionado.

MC. RODRIGO LUCIO MAYA RAMIREZ


Matriz de interconexin de las FPGA
Spartan IIe

La mayor parte de las seales se conectarn a


travs de la matriz general de
interconexionado (GRM). Los elementos de la
GRM se encuentran entre los CLB, en los
canales de interconexin horizontales y
verticales de la FPGA.

Permiten hacer la interconexin entre las


trazas horizontales y verticales y hacia los CLB.
A travs de ellos se configuran las conexiones
entre CLBs no adyacentes y hacia los bloques
de entrada/salida.

Red dedicada de distribucin de reloj en la FPGA Spartan IIe

MC. RODRIGO LUCIO MAYA RAMIREZ


Granularidad de los Dispositivos
Lgicos Programables (PLDs)

La granularidad de un dispositivo lgico


programable est dada por la funcionalidad bsica
que provee cada bloque de configuracin lgica, o
la relacin entre las celdas lgicas y los recursos de
interconexionado.

Algunos parmetros para definir la granularidad


de un dispositivo programable son:

Nmero de funciones que puede implementar


cada celda lgica
Nmero de compuertas NAND de dos entradas
equivalente por cada celda lgica
Nmero total de transistores por celda lgica
rea total normalizada de lgica configurable
(relacin de rea lgica/rea de interconexionado)
Nmero de entradas y salidas por celda lgica

Algunos dispositivos tienen arquitecturas con


celdas lgicas que pueden implementar funciones
lgicas complejas, de varias entradas/salidas. A
estas se las denomina de granularidad gruesa.
Otras arquitecturas estn formadas por celdas
bsicas que solo permiten implementar lgica muy
simple. A estas se las denomina de granularidad
fina.

MC. RODRIGO LUCIO MAYA RAMIREZ


Granularidad de los Dispositivos
Lgicos Programables (PLDs)

La granularidad de un dispositivo lgico influir


en la manera que se implemente una funcin
lgica dada, en su frecuencia mxima de
funcionamiento y en la utilizacin que se hace del
dispositivo.

Un bloque lgico grande puede implementar


lgica ms compleja y por lo tanto se necesitan
menos bloques para una funcin dada. Por otro
lado cada bloque consume ms rea que puede
desaprovecharse.

Una arquitectura de granularidad fina ser


tpicamente ms densa y tendr menor retardo
Bloque Lgico (Logic Tile) de la ProAsicPlus de Actel
de interconexin entre celda y celda. Sin
embargo, para una funcin dada, se debern
conectar un mayor nmero de celdas.
En general la mejor granularidad depender de la
aplicacin y las restricciones que hay sobre el
diseo.

MC. RODRIGO LUCIO MAYA RAMIREZ


Granularidad de los Dispositivos
Lgicos Programables (PLDs)

Arquitecturas con granularidad fina


Celdas implementan funciones lgicas
parciales de n entradas
Relacin de entradas a registros por celda
muy baja (2/4 a 1)
Ejemplo: ProAsicPlus de Actel

Arquitecturas con granularidad media


Celdas implementan funciones completas
de n entradas
Relacin de entradas a registros por celda
de 6/8 a 1
Buenas para implementar mquinas de
estado y lgica secuencial compleja
Ejemplo: Xilinx Spartan 3

Arquitecturas con granularidad gruesa Arquitecturas mixtas


Celdas estilo PLD de arreglos de trminos
Relacin de entradas a registros de 32 a 1 Combinan celdas con granularidad fina y
Buenas para lgica combinacional como gruesa
decodificacin de direcciones, funciones Muchas veces tienen recursos de
aritmticas, interconexin dedicados para cada tipo de
Pobres para arquitecturas con colas
(pipelines) celda
Ejemplo: Altera MAX 3000 Ejemplo: ispXPGA de Lattice Semiconductors

MC. RODRIGO LUCIO MAYA RAMIREZ


Tecnologa de Configuracin de los
PLDs
La tecnologa utilizada para configurar los elementos de un PLD, ya sean los bloques lgicos o las
interconexiones, dependen del fabricante y el dispositivo. Entre los dispositivos reprogramables, se destacan las
tecnologas EEPROM, SRAM y Flash.
Los dispositivos que solo pueden configurarse una vez en general utilizan tecnologas de antifusible.
Cada tecnologa tiene sus ventajas y desventajas respecto a las otras.

MC. RODRIGO LUCIO MAYA RAMIREZ


Tendencias Actuales y Futuras

Desarrollo de FPGAs con mayor capacidad, ms Integracin con herramientas y otros software de
velocidad, menos consumo de potencia y menor desarrollo de mayor nivel, como son Matlab y
herramientas para el diseo integrado de
costo. software y hardware. (HW-SW co-design).
Integracin en hardware sobre las lgicas Integracin del manejo de configuracin de FPGAs
programables de bloques especficos como ALUs, con las herramientas de diseo de circuitos
componentes para procesamiento digital de seal, impresos (PCBs), para poder configurar el
integracin con uP y uC, memorias, etc. interconexionado interno del SoPC de manera
Integracin y mezcla entre FPGAs y circuitos integral con el conexionado hacia los
integrados de propsito especfico (ASICs). componentes externos.
Componentes que pueden pasar directamente de Instrumentos, tales como analizadores lgicos, que
un prototipo sobre una FPGA a un ASIC sin permiten observar la lgica de interna de las
FPGA en tiempo real al mismo tiempo que se
esfuerzo de diseo adicional. observan otras seales, externas a la FPGA.
Cambios en las herramientas de software para Sistemas con aplicaciones que utilicen la
tener mayor integracin entre los diferentes reconfiguracin o reprogramacin de las FPGAs
usuarios y en los distintos pasos del proyecto. Esto directamente en el producto final segn la
incluye el manejo de grupos de trabajo, el manejo necesidad del momento.
de la propiedad intelectual, la documentacin de Integracin de bloques lgicos programables
proyectos integrada a las herramientas de diseo, alrededor de lgica fija en ASICs o integrados
la transferencia de los diseos para FPGAs a ASICs, estndar.
etc.

MC. RODRIGO LUCIO MAYA RAMIREZ


UNIDAD 3: VHDL

3.1 Estructura de una descripcin en VHDL


3.1.1 Entidad
3.1.2 Arquitectura
3.1.2.1 Descripcin Comportamental
3.1.2.2 Descripcin Flujo de Datos
3.1.2.3 Descripcin Estructural
3.2 Elementos Lxicos
3.3 Constantes y variables
3.4 Tipos de Datos Escalares
3.5 Datos del tipo Arreglo
3.6 Estructuras de Ejecucin Concurrente
3.7 Estructuras secuenciales
3.8 Descripciones Comportamentales
3.9 Descripciones Estructurales
3.10 Bibliotecas
3.11 Subprogramas
3.11.1 Funciones
3.11.2 Procedimientos
3.12 Paquetes
MC. RODRIGO LUCIO MAYA RAMIREZ
Historia

Surge a principios de los 80s del proyecto DARPA (del Departamento de Defensa de los EE.UU.)
llamado VHSIC (Very High Speed Integrated Circuits)

Se utiliza como forma de describir circuitos integrados:

Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran ms complejos, y el coste de
reponerlos cada vez era mayor, bsicamente porque no estaban correctamente documentados. VHDL
naci como una manera estndar de documentar circuitos.

El uso de VHDL permiti comprobar que el tiempo de diseo de los circuitos se reduca, porque se
podan crear directamente de su descripcin: utilidad de la sntesis.

En 1987 el trabajo se cedi a la IEEE, y a partir de ese momento es un estndar abierto.

VHDL: VHSIC Hardware Description Language

VHSIC: Very High Speed Integrated Circuits

MC. RODRIGO LUCIO MAYA RAMIREZ


Evolucin

1980: El departamento de defensa de los


EEUU funda el proyecto para crear un HDL
estndar dentro del programa VHSIC.

1981: Woods Hole Workshop, reunin inicial


entre el Gobierno, Universidades e
Industria.

1983: Se concedi a Intermetrics, IBM y


Texas Instruments el contrato para
desarrollar VHDL.

1985: Versin 7.2 de dominio pblico.

1987: El IEEE lo ratifica como su estndar


1076 (VHDL-87).

1993: El lenguaje VHDL fue revisado y


ampliado, pasando a ser estndar 1076 93
(VHDL-93).

2000:ltima modificacin de VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ


VHDL: Caractersticas Generales

VHDL: lenguaje orientado a la descripcin o


modelado de Hardware similar a lenguajes de
alto nivel de propsito general (ADA en especial):
de ellos hereda:
Concepto de tipo de datos, con posibilidad de
definir nuevos tipos
facilita la descripcin de circuitos con diversos
niveles de abstraccin.
Sentencias de control de flujos (if, for while).
Junto con la caracterstica anterior
potencia para desarrollar algoritmos.
Capacidad de estructurar el cdigo
(subprogramas, funciones o procedimiento),
permite afrontar algoritmos complejos.
Posibilidad de utilizar y desarrollar bibliotecas de
diseo,
Incorpora conceptos especficos para el
modelado del hardware, como concurrencia y
ciclo de simulacin.

MC. RODRIGO LUCIO MAYA RAMIREZ


Estado actual y alternativa

En la actualidad el diseo mediante


esquemas no es una alternativa
realista en ningn proyecto, por
ejemplo Gforce 4 tiene 65 M
transistores y 800.000 lneas de cdigo
Verilog.
La alternativa estndar es usar un HDL
Verilog: Costa Oeste de EEUU, para
ASICs, menos verboso, ms parecido a
C, menos expresivo.
VHDL: Costa Este y Europa, para
FPGAs, ms descriptivo, ms parecido
a PASCAL y ADA, ms expresivo.
El diseo se sintetiza a partir de un
HDL, pero gran parte del diseo y la
verificacin se realiza con lenguajes
estndares C y Matlab
VHDL es el estndar para FPGAs en
proyectos industriales de moderada
complejidad.

MC. RODRIGO LUCIO MAYA RAMIREZ


Futuro?

Los lenguajes de descripcin de


hardware tambin tienen limitaciones:
Metodologa de diseo nueva, exige
un cambio de mentalidad con respecto
al Software
No permiten re usar cdigo SW para
HW.
Poseen enorme reusabilidad
intrnseca.
La decisin HW/SW se debe hacer
antes de la codificacin
La simulacin es lenta, siempre hay
que recurrir a una simulacin
algortmica usando lenguajes SW
Como respuesta a esto, hay varias
iniciativas para describir HW usando
lenguajes de alto nivel, tipo SW
Handel-C, System-C
Forge (Java)
Superlog

MC. RODRIGO LUCIO MAYA RAMIREZ


Estructura de un diseo en VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ


Elementos de descripcin VHDL

Bibliotecas (Library)
Almacenan los elementos de diseo:
tipo de datos, operadores, componentes,
objetos, funciones,...
Esos elementos de diseo se organizan
en Paquetes
Packages: son unidades de
almacenamiento de
elementos y tienen que
hacerse visibles para
poder ser utilizados .
Hay 2 bibliotecas que siempre son
visibles por defecto: std (la standard) y
work (la de trabajo) y que no es necesario
declarar

Entidades (Entity)
Es el modelo de interfaz de un circuito Una unidad hardware se puede visualizar como una caja
con el exterior mediante unas terminales negra, el interfaz de la caja negra est completamente
de entrada y de salida. definida.
Es la caja negra que define las entradas y El interior est oculto
salidas.
En VHDL la caja negra se denomina entidad
La entidad describe la E/S del diseo
Arquitectura (Architecture)
Para describir su funcionamiento se asocia una
Describe el funcionamiento del circuito.
implementacin que se denomina arquitectura
La arquitectura describe el contenido del diseo.

MC. RODRIGO LUCIO MAYA RAMIREZ


Puertos de una entidad

Cada una de las posibles conexiones se


denomina PORT y consta de:
Un nombre, que debe ser nico
dentro de la entidad.

Una lista de propiedades, como:


la direccin del flujo de datos, entrada,
salida, bidireccional y se conoce como
modo del puerto.

los valores que puede tomar el puerto:


'0, '1' o (Z), etc ., los valores posibles
dependen de lo que se denomina tipo
de seal.

Los puertos son una clase especial de


seales que adems aade el modo al
tipo de seal
e0e2e1salida0salida1caja

MC. RODRIGO LUCIO MAYA RAMIREZ


Modos de un Puerto

Indican la direccin y si el puerto


puede leerse o escribirse dentro de la
entidad.

IN: Una seal que entra en la entidad y


no sale. La seal puede ser leda pero
no escrita.

OUT: Una seal que sale fuera de la


seal y no es usada internamente. La
seal no puede ser leda dentro de la
entidad.

BUFFER: Una seal que sale de la


entidad y tambin es realimentada
dentro de la entidad.

INOUT: Una seal que es bidireccional,


entrada/salida de la entidad.

MC. RODRIGO LUCIO MAYA RAMIREZ


Estructura de un diseo en VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ


Declaracin de entidad

MC. RODRIGO LUCIO MAYA RAMIREZ


Resumen: Entidad y Arquitectura

La entidad se utiliza para hacer una descripcin "caja negra" del diseo, slo se detalla su interfaz

Los contenidos del circuito se modelan dentro de la arquitectura

Una entidad puede tener varias arquitecturas


Por ejemplo, la descripcin de comportamiento que ha hecho el diseador y el modelo post- layout
obtenido despus de implementar el chip

MC. RODRIGO LUCIO MAYA RAMIREZ


Invariancias
VHDL presenta ciertas invariancias que conviene conocer antes de su utilizacin.
Invariante a maysculas, es decir, dos expresiones iguales conteniendo maysculas y minsculas son idnticas.

Invariante a los espacios, es decir, dos expresiones iguales conteniendo ms o menos espacios son idnticas

Los comentarios van detrs de dos rayas --y convienen que sean claros para que las descripciones puedan
ser fcilmente utilizadas por otras personas o por ti mismo.
VHDL es relativamente laxo con la utilizacin de parntesis, una buena idea es utilizar los parntesis de
manera que una persona la pueda entender con facilidad

Cada asignacin termina con ;


Cada if tiene el correspondiente then
Cada if termina con el correspondiente endif
Si se necesita elseif se utilizar elsif
Cada case termina con el correspondiente end case
Cada loop termina con el correspondiente end loop

MC. RODRIGO LUCIO MAYA RAMIREZ


Identificadores

Identificadores. Son las palabras que


se utilizan para identificar a las
funciones, seales, puertos, variables,
etc. Es conveniente que dichas
palabras proporcionen informacin
suficiente para que la descripcin sea
fcilmente reutilizable.
El identificador debe dar suficiente
informacin para su uso .
El identificador puede ser tan largo
como se quiera, pero un nombre
demasiado largo es complicado de
utilizar, y demasiado corto quiz
proporcione poca informacin.
El identificador puede contener
cualquier combinacin de las letras (A-
Z y a-z) nmeros (0-9 ) y el sub-guin
(_)
Son palabras que no se pueden utilizar como identificadores
El identificador debe empezar por un
carcter alfabtico.
El identificador no puede termina con
el sub-guin (_)

MC. RODRIGO LUCIO MAYA RAMIREZ


Modelos de descripcin

Comportamental o algortmico (behavioral).


Especifica cmo se comportan las salidas con respecto a las entradas.
No proporciona al sintetizador informacin de cmo ser el circuito, siendo ste el que lo determina.
La parte fundamental de este tipo de descripciones es el proceso (process)

Flujo de datos (dataflow).


Especifica el circuito como una representacin concurrente del movimiento de los datos a su travs, es
decir, cmo circula la informacin

Estructural (structural). Describe la conexin entre distintos mdulos descritos previamente

MC. RODRIGO LUCIO MAYA RAMIREZ


Modelos de descripcin VHDL

Como hemos visto, la arquitectura


(architecture), en VHDL describe la
funcin que realiza una entidad
(entity).

La arquitectura se compone de dos


partes:

la parte declarativa en la que se


encuentran las definiciones de las
seales, funciones, tipos,
procedimientos, etc.. a utilizar.

y el cuerpo de la descripcin,
consistente en una sucesin de
asignaciones concurrentes y
procesos que modelan la entidad.

MC. RODRIGO LUCIO MAYA RAMIREZ


Concurrencia del hardware

El hardware es concurrente, es decir,


los circuitos coexisten en el tiempo y
por lo tanto trabajan al mismo tiempo.
Este chip tiene tres compuertas que
funcionan simultneamente
No se puede modelar con un lenguaje
como C:
S1 = A and B;
S2 = C or D;
S3 = C xor D;
Las tres puertas funcional al mismo S1 <= A and B;
tiempo no una despus de la otra! S2 <= C or D;
S3 <= C xor D;

La solucin al problema anterior es El valor de S ser el correcto una vez que se hayan
que aunque la ejecucin sea propagado los tiempos de retardo de las compuertas.
secuencial, las asignaciones no tengan No hay que olvidar que se trata de modelar circuitos reales,
tiempo de ejecucin: no virtuales, y las seales necesitan que transcurra el
tiempo para tomar un valor

MC. RODRIGO LUCIO MAYA RAMIREZ


Sentencias concurrentes

Caractersticas:
Se ejecutan de forma asncrona unas respecto de las otras en el mismo tiempo de simulacin.
El orden en que se escriban es indiferente, no siguen un orden de ejecucin predefinido.
No obstante conviene escribir el cdigo en el orden que mejor se pueda entender y mejor documente
el diseo.

Sirven para especificar:


Interconexiones entre componentes.
Estructuras jerrquicas.
Estructuras regulares.
Transferencias entre registros.

MC. RODRIGO LUCIO MAYA RAMIREZ


process: elemento de diseo principal

Un proceso describe el comportamiento de


un circuito:
Cuyo estado puede variar cuando cambian
ciertas seales
Utilizando construcciones muy expresivas:
if..then..else, case, bucles for y while, etc
Y que adems puede declarar variables,
procedimientos, etc...

MC. RODRIGO LUCIO MAYA RAMIREZ


Procesos

Los procesos se disparan(su cdigo se ejecuta) cuando cambia alguna de las seales de su lista de
sensibilidad.

Un proceso sin lista de sensibilidad es vlido, pero se activa con cualquier evento, no se asegura un
comportamiento correcto.

Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrs de otra, pero sin dar
lugar a que avance el tiempo durante su ejecucin.
El tiempo slo avanza cuando se llega al final del proceso.

Las seales modelan hilos del circuito, y como tales, slo pueden cambiar de valor si se deja que
avance el tiempo.

Una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan en paralelo.

Esta es la manera que tiene VHDL de expresar la concurrencia inherente al hardware

MC. RODRIGO LUCIO MAYA RAMIREZ


La solucin VHDL a la concurrencia

VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a la
concurrencia
En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan
concurrentemente

MC. RODRIGO LUCIO MAYA RAMIREZ


sentencias concurrentes

Asignacin simple
suma <= ope1 xorope2;

Para Seales y Puertos, el operador es <=, el


lado izquierdo es el destino y el lado
derecho la fuente.
OJO: fuente y destino tienen que ser del
mismo tipo.
Para Variables el operador es :=

acarreo_intermedio:= ope1 and ope2;

WHEN/ELSE

Permite realizar asignaciones condicionales


salida <= a and b when c =1 else a or c;

MC. RODRIGO LUCIO MAYA RAMIREZ


WHEN/ELSE

[etiqueta:] seal <= val_1 when condi_1 else


val_2 [whencondi_2] else
else
val_n;
Ejemplo:

MC. RODRIGO LUCIO MAYA RAMIREZ


WITH/SELECT

La asignacin condicional (WHEN/ELSE), Tambin se puede hacer mediante la sentencia de asignacin selectiva
WITH/SELECT

Por su ejecucin en paralelo es similar a un CASE


Se pueden dar problemas de memoria implcita si no se pone el ltimo when others.

MC. RODRIGO LUCIO MAYA RAMIREZ


WITH/SELECT

MC. RODRIGO LUCIO MAYA RAMIREZ


Dentro de los procesos: Descripciones
secuenciales

MC. RODRIGO LUCIO MAYA RAMIREZ


IF

MC. RODRIGO LUCIO MAYA RAMIREZ


Ejemplo IF

MC. RODRIGO LUCIO MAYA RAMIREZ


CASE

Sintaxis:

CASE expresin IS
WHEN caso1=>
secuencia sentencias1;
WHEN caso2 =>
secuencia sentencias2;
WHEN casoN=>
secuencia sentenciasN;
WHEN OTHERS =>
resto de casos;
END CASE;

MC. RODRIGO LUCIO MAYA RAMIREZ


FOR-LOOP

Realiza un bucle un nmero determinado de veces ejemplo:


[etiqueta:] FOR ndice IN rangoinf TO rangosup LOOP bucle: FOR i IN 0 TO 5 LOOP
x(i) <= enable AND w(i+2);
secuencia de sentencias
y(0, i) <= w(i);
END LOOP[etiqueta]; END LOOP bucle;

MC. RODRIGO LUCIO MAYA RAMIREZ


WHILE-LOOP

El bucle se repite mientras la condicin LOOP


que haya despus del while sea
verdadera El bucle se repite infinitamente

[etiqueta:] WHILE condicin LOOP [etiqueta:]LOOP


secuencia de sentencias
secuencia de sentencias END LOOP[etiqueta];
END LOOP[etiqueta];
ejemplo: ejemplo:
lazo1:WHILE (i < 10) LOOP lazo1: LOOP
WAIT UNTIL clk'EVENT AND clk='1'; a <= c and b;
END LOOP lazo1;
END LOOP lazo1;
La nica sentencia que deja romper el
bucle es EXIT

MC. RODRIGO LUCIO MAYA RAMIREZ


EXIT

Detiene la ejecucin en ese instante y sale NEXT


del bucle.
Si hay varios bucles anidados, sale de En VHDL se pueden crear bucles infinitos
donde se encuentre la instruccin o bien
del bucle que se especifica en la etiqueta. [etiqueta] loop
Solamente puede aparecer dentro de una secuencia de sentencias
sentencia LOOP. End loop [etiqueta];

exit [etiqueta] [when condicin]; Los bucles pueden tener una condicin de
salida.
Ejemplo:
--Interrumpe el FOR y sigue por el WHILE next [etiqueta] [when condicin];
termina: WHILE a< 100 LOOP
---sentencias Ejemplo:
sigue: FOR n IN 0 TO 100
--Interrumpe el FOR y sigue por el WHILE
---sentencias termina: WHILE a< 100 LOOP
EXIT termina WHEN n=a; ---sentencias
END LOOP sigue; sigue: FOR n IN0 TO100
END LOOP termina; ---sentencias
NEXT termina WHEN n=a;
Cuando existen bucles anidados, sale del END LOOP sigue;
ms interno, o bien, de aquel que tiene la END LOOP termina;
etiqueta que sigue al EXIT.

MC. RODRIGO LUCIO MAYA RAMIREZ


WAIT

Espera a que ocurra una condicin


NULL
WAIT UNTIL condicin;
No realiza funcin alguna. Pasa la
WAIT UNTIL e1=1 and e2=0;
ejecucin a la siguiente sentencia
secuencial.
Espera a que cambie alguna seal de la
lista de seales
til en sentencias CASE cuando no se
WAIT ON lista_seales; quiere realizar ninguna accin para
alguna de las elecciones.
WAIT ON e1,e2,clk;
Sintaxis:
Espera un cierto tiempo
[etiqueta:] NULL;
WAIT tiempo;

WAIT 25ns;

Espera indefinidamente

WAIT

MC. RODRIGO LUCIO MAYA RAMIREZ


GENERATE

Esta sentencia concurrente permite reducir el


tamao del cdigo de aquellas estructuras que se
repiten considerablemente.

Sintaxis:
etiqueta: FOR identificador IN range GENERATE
(sentencias concurrentes)
END GENERATE;

etiqueta: IF condicin GENERATE


(sentencias concurrentes)
END GENERATE;

MC. RODRIGO LUCIO MAYA RAMIREZ


Paquetes

MC. RODRIGO LUCIO MAYA RAMIREZ


Componentes

MC. RODRIGO LUCIO MAYA RAMIREZ


Atributos

Un atributo es una caracterstica asociada a un elemento(tipo de dato, seal, entidad,) que proporciona
informacin adicional.
Atributo Valor
Un objeto tiene un solo valor y puede tener mltiples atributos.
VHDL proporciona una serie de atributos predefinidos.

Atributos de rango vectores

MC. RODRIGO LUCIO MAYA RAMIREZ


Atributos de rango de vectores.

MC. RODRIGO LUCIO MAYA RAMIREZ


Atributos de rango de vectores
Loops

MC. RODRIGO LUCIO MAYA RAMIREZ


Atributos de las seales

DELAYED(t). Valor de la seal retrasada t


unidades de tiempo.
STABLE(t), verdadero si la seal permanece
invariable durante t unidades de tiempo.
QUIET(t), verdadero si la seal no ha recibido
ninguna asignacin en t unidades de tiempo.
TRANSACTION, tipo bit, a 1cuando hay una
asignacin a la seal.
EVENT, verdadero si ocurre un cambio en la
seal en el paso de simulacin.
ACTIVE, verdadero si ocurre una asignacin a
la seal en el paso de simulacin.
LAST_EVENT, unidades de tiempo desde el
ltimo evento.
LAST_ ACTIVE, unidades de tiempo desde la
ltima asignacin.
LAST_VALUE, valor anterior de la seal.
DRIVING, verdadero si el proceso actual
determina el valor de la seal.
DRIVING_VALUE, valor que toma la seal tras
el proceso.

MC. RODRIGO LUCIO MAYA RAMIREZ


Atributos

MC. RODRIGO LUCIO MAYA RAMIREZ


Resumen:
Estilos de descripcin

Independiente del nivel de 2. Transferencia entre registros (RTL) o flujo de datos


abstraccin, existen tres estilos de (Data Flow).
descripcin de una arquitectura: En este estilo de descripcin se especifican los flujos
de datos del sistema y la interconexin entre sus
Comportamiento (Behavioral) componentes.
Transferencia entre registros o flujo
de datos (Data Flow) El proceso de descripcin se realiza por medio de
funciones lgicas, que se ejecutarn de forma
Estructural (Structural) concurrente

En VHDL un sistema puede mezclar


diferentes estilos a la hora de describir 3. Estructural (Structural).
En este estilo de descripcin se definen o instancian
sus diferentes arquitecturas. todas las partes del sistema y sus interconexiones.

1. Comportamiento (Behavioral). Resulta muy til cuando se quiere aprovechar diseos


compilados con anterioridad y que se encuentran
En este estilo de descripcin se almacenados en bibliotecas de componentes.
modela la funcionalidad por medio de La instruccin concurrente fundamental utilizada
los recursos algortmicos del lenguaje. dentro de una arquitectura RTL es la de COMPONENT
COMPONENT nombre_componente
Se describe el algoritmo que refleja el PORT( nombre_puerto: tipo_puertotipo_dato;
comportamiento de dicho nombre_puerto: tipo_puertotipo_dato;
componente. ...
Tambin se le suele llamar estilo );
algortmico o secuencial. END COMPONENT;

MC. RODRIGO LUCIO MAYA RAMIREZ


Ejemplo de estilos de descripcin

Declaracin de la entidad (entity)


Multiplexor de dos entradas de datos
de un bit ( e0 y e1 ), una seal de
salida ( y ) y seal de control ( sel )

MC. RODRIGO LUCIO MAYA RAMIREZ


Ejemplo de estilos de descripcin

1. Descripcin de comportamiento o
algortmica (Behavioral)

MC. RODRIGO LUCIO MAYA RAMIREZ


Ejemplo de estilos de descripcin

3. Descripcin estructural (Structural)

MC. RODRIGO LUCIO MAYA RAMIREZ


Ejemplo de estilos de descripcin

MC. RODRIGO LUCIO MAYA RAMIREZ


UNIDAD 4: Diseo con VHDL

4.1 Sistemas combinacionales


4.2 Sistemas secuenciales
4.3 Maquinas de Estado
4.7 Aplicaciones usando la tarjeta Spartan 3E

MC. RODRIGO LUCIO MAYA RAMIREZ


Modelado combinacional

El modelado de sistemas combinacionales es


muy sencillo, puesto que en todo momento las
salidas slo dependen del estado actual de las
entradas, es decir, el circuito no tiene memoria.

Un circuito combinacional puede tener multitud


de entradas y salidas, por lo tanto:
Necesitar miles o millones de trminos
cannicos para describirlo matemticamente.
Tablas de verdad que resultan inmanejables.

La clave para el desarrollo de estos sistemas es


el pensamiento estructurado
Un sistema complejo se concibe como un
conjunto de subsistemas ms pequeos, cada
uno de los cuales tiene una descripcin ms
sencilla.

Estos bloque combinacionales constituyen las


estructuras bsicas con las que se construyen los
sistemas procesadores
Multiplexores, decodificadores, comparadores,
sumadores, etc.

MC. RODRIGO LUCIO MAYA RAMIREZ


Descripcin VHDL
de sistemas combinacionales

Para describir circuitos combinacionales Es decir, hay que evitar que una misma
utilizaremos sentencias de asignacin seal aparezca en el lado izquierdo y en el
concurrentes y procesos. lado derecho de la sentencia de asignacin:
Sentencias de asignacin concurrentes. Van
fuera del proceso. Esto se debe a que en una Y <= Y nand X;
declaracin concurrente no importa el orden en
el que se escriban las seales, ya que el
resultado para una determinada funcin sera el Procesos.
mismo. Se utilizarn tres tipos de sentencias de Se debe respetar las siguientes reglas:
asignacin concurrentes: Si una seal es leda en el interior de un
proceso, es decir, aparece en el lado derecho
Sentencias de asignacin simples, por ejemplo: de una sentencia de asignacin o en una
condicin, debe aparecer en su lista de
salida1 <= A and B;
sensibilidad.
Sentencias de asignacin condicionales, por Si a una seal se le asigna un valor de forma
ejemplo: condicional (con sentencias if o case) nos
salida2 <= A when S = 1elseB; debemos asegurar que no existen
condiciones para las cuales el valor de la
Sentencias de seleccin, por ejemplo: seal no se ha definido en el cdigo.
with S select
salida3 <= 1 when 00; En VHDL las seales mantienen su valor
0when others; hasta que se les asigna uno nuevo; por lo
tanto, si para una seal dada, su valor est
indefinido, el compilador sintetiza un latch
Siempre hay que evitar la realimentacin
combinacional, ya que esto modela elementos (biestable) que almacena la seal.
de memoria asncronos.

MC. RODRIGO LUCIO MAYA RAMIREZ


Multiplexores

Circuitos que tienen n entradas de


datos y una salida de datos, por lo
tanto necesitan m entradas de
seleccin, donde m es:

Habitualmente tambin poseen una


entrada de habilitacin

La funcin f que describe el


comportamiento de un multiplexor de
dos entradas (I0, I1) , una salida y una
entrada de seleccin (S), se puede
describir mediante la tabla
Aplicando Karnaugh se obtiene:

MC. RODRIGO LUCIO MAYA RAMIREZ


Multiplexores

MC. RODRIGO LUCIO MAYA RAMIREZ


Multiplexores

MC. RODRIGO LUCIO MAYA RAMIREZ


Decodificadores

Es un circuito lgico con n entradas y


m salidas, donde m es

Podemos encontrar decodificadores


con entrada de habilitacin, activos
por cero o activos por uno

MC. RODRIGO LUCIO MAYA RAMIREZ


Decodificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Decodificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Decodificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Decodificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Codificadores

Es un circuito lgico con n entradas y


m salidas, donde m es

Habitualmente tambin poseen una


entrada de habilitacin, pueden ser
activos por cero o por uno

MC. RODRIGO LUCIO MAYA RAMIREZ


Codificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Codificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Codificadores

MC. RODRIGO LUCIO MAYA RAMIREZ


Lgica Secuencial

entity latch is
Es necesario conocer el tipo de
port (a, b: in std_logic;
descripcin concreto a realizar para
d: out std_logic);
que se reconozca un elemento
end latch;
secuencial
architecture l_a of latch is
Es obligado el uso de procesos
begin
(excepto latches), y recomendable que
process (a,b)
incluyan lista de sensibilidad
begin
Diferencia entre variables y seales if b=1 then d <= a; end
Aconsejable incluir siempre un reset if;
global que aplique un valor de end process;
inicializacin end l_a;

entity latch is
port (a, b: in std_logic;
d: out std_logic);
end latch;
architecture l_a of latch is
begin
d <= a when b=1;
end l_a;

MC. RODRIGO LUCIO MAYA RAMIREZ


Inferencia de registros activos
por flanco

Es el mtodo ms habitual de describir rising_edge(reloj)


sistemas sncronos if relojevent and reloj=1
Los dispositivos lgicos incluyen if relojevent and reloj=1 and relojlast_value=0
registros activos por flanco
(generalmente de tipo D)
Existen varias formas de especificar la
llegada de un flanco:
Descripcin genrica
entity registro is
port (d, reset, preset, reloj: in std_logic;
q: out std_logic);
end registro;

architecture r_a of registro is


begin
process (d, reset, preset, reloj)
begin
if reset = 1 then q <= 0;
elsif preset = 1 then q <= 1;
elsif rising_edge(reloj) then q <= d;
end if;
end process;
end r_a; MC. RODRIGO LUCIO MAYA RAMIREZ
No emplear ms condiciones else elsif en la misma sentencia if..then..else despus de la condicin de
evaluacin del reloj
En la misma evaluacin if del reloj no se deben comparar otras seales o variables
La sentencia if del reloj no puede estar dentro de un bucle
La sentencia if del reloj no debe estar anidada, se pueden incluir ms if dentro de ella
Slo se puede incluir una evaluacin de flanco por proceso: varios relojes varios procesos
En comparaciones mltiples, emplear la sentencia case
No utilizar relojes derivados, alternativamente, emplear habilitacin de reloj

r_derivado <= not a and (b or c);


process (d, reset, preset, reloj,
r_derivado)
begin
if reset = 1 then q <= 0;
elsif preset = 1 then q <= 1;
elsif rising_edge(reloj) then
if r_derivado = 1 then
q <= d;
end if;
end if;
end process;
end r_a;

MC. RODRIGO LUCIO MAYA RAMIREZ


Mdulos funcionales
especficos
En sistemas complejos es necesaria una correcta particin del diseo (Top-Down)
Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas)
Aconsejable emplear mdulos del fabricante (generadores automticos, mdulos IP, ...)
Consultar documentacin del software de sntesis Herramientas y atributos especiales
Mdulos especficos usuales: Multiplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ...
Puertas triestado
Necesaria la utilizacin del tipo std_logic std_ulogic que define el estado 'Z
Basta con incluir una condicin en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia

architecture hab_b of hab is


begin
process (entrada, oe) begin
if (oe = 1) then salida <= entrada;
else salida <= Z;
end if;
end process;
end hab_b;

MC. RODRIGO LUCIO MAYA RAMIREZ


Para puertos bidireccionales la descripcin es similar a los triestado: Tipo inout

entity bidir is
port ( bid : inout std_logic ;
a, b, c, oe : in std_logic;
salida : out std_logic);
end bidir ;
architecture bidir_a of bidir is
signal interna1, interna2 : std_logic ;
begin
bid <= interna1 when oe = '1' else 'Z';
interna2 <= bid;

interna1 <= (a and b) nor c;


salida <= (c xor interna2) when oe='0' else 'Z';
end bidir_a ;

MC. RODRIGO LUCIO MAYA RAMIREZ


Mquinas de estados
Es necesaria una descripcin especfica con definicin de un tipo enumerado
Hay que hacer una divisin de la descripcin en dos procesos distintos:
1. Cambio sncrono de estado
2. Evaluacin de condiciones para dirigirse a un estado

MC. RODRIGO LUCIO MAYA RAMIREZ


MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo

MC. RODRIGO LUCIO MAYA RAMIREZ


Ejercicio

Recordar:
Usar 2 procesos
Definir tipo de dato TYPE

MC. RODRIGO LUCIO MAYA RAMIREZ


Memorias

Si el tamao de la memoria es
reducido, sta puede implementarse
mediante recursos lgicos comunes
(funciones lgicas y registros)
Habitualmente, existen en hardware
estructuras regulares que las
implementan y donde se sintetizan si
la descripcin VHDL es apropiada

MC. RODRIGO LUCIO MAYA RAMIREZ


Memorias
En el caso de RAM, es necesario
comprobar que el dispositivo
incorpora este
recurso lgico

MC. RODRIGO LUCIO MAYA RAMIREZ

Você também pode gostar