sistemas embebidos - … · lenguajes de descripción de hardware, el vhdl, sus utilidades y ......

122
MC. RODRIGO LUCIO MAYA RAMIREZ SISTEMAS EMBEBIDOS OBJETIVO DEL CURSO: Diseñar e implementar sistemas digitales utilizando técnicas modernas: Un Lenguaje de Descripción de Hardware y Dispositivos Programables a si mismo se comprenda el diseño de sistemas mínimos, y se puedan sintetizar en un FPGA.

Upload: hoangdang

Post on 19-Sep-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

MC. RODRIGO LUCIO MAYA RAMIREZ

SISTEMAS EMBEBIDOS

OBJETIVO DEL CURSO:

Diseñar e implementar sistemas digitales utilizando técnicas modernas: Un

Lenguaje de Descripción de Hardware y Dispositivos Programables a si mismo

se comprenda el diseño de sistemas mínimos, y se puedan sintetizar en un

FPGA.

MC. RODRIGO LUCIO MAYA RAMIREZ

En este curso-taller se aborda uno de los más extendidos

lenguajes de descripción de hardware, el VHDL, sus utilidades y

aplicaciones y las herramientas y metodologías para sintetizar

sistemas digitales en FPGAs, que son los dispositivos programables

más ampliamente usados para generar tanto prototipos como

sistemas finales de aplicación. El aprendizaje se refuerza con

simulaciones y prácticas.

También se aborda el diseño de sistemas mínimos basados en

un microprocesador, y la interconexión de éstos con otros bloques

digitales diseñados en VHDL, y sintetizables en un FPGA. Se usan

microprocesadores definidos en software y ambientes de desarrollo

integrado.

RESUMEN:

MC. RODRIGO LUCIO MAYA RAMIREZ

UNIDAD 1 Lenguajes de descripción 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 Reseña Histórica de VHDL

1.6 Diseño Digital con VHDL

1.7 Metodologías de Diseño utilizando VHDL

1.7.1 Funcional

1.7.2 Arquitectural

1.7.3 Físico

PROGRAMA DEL CURSO

MC. RODRIGO LUCIO MAYA RAMIREZ

PROGRAMA DEL CURSO

UNIDAD 2: Dispositivos Lógicos Programables

2.1 Lógica Programable

2.2 SPLDs

2.2.1 Características

2.2.2 Arquitectura

2.3 CPLDs

2.3.1 Características

2.3.2 Arquitectura

2.4 FPGAs

2.4.1 Características

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 Lógico 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 descripción en VHDL

3.1.1 Entidad

3.1.2 Arquitectura

3.1.2.1 Descripción Comportamental

3.1.2.2 Descripción Flujo de Datos

3.1.2.3 Descripción Estructural

3.2 Elementos Léxicos

3.3 Constantes y variables

3.4 Tipos de Datos Escalares

3.5 Datos del tipo Arreglo

3.6 Estructuras de Ejecución 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: Diseño 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 Introducción

5.2 Arquitectura Picoblaze

5.3 Programación en ensamblador Picoblaze

5.4 Manejo de interrupciones

MC. RODRIGO LUCIO MAYA RAMIREZ

Lenguajes de descripción de hardware (HDLs)

Estos lenguajes fueron desarrollados para hacer frente a la creciente complejidad de los diseños.Se puede hacer una analogía con los que se pueden llamar lenguajes de descripción de software.

Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrónicos discretos.

• Se utilizan en la fase de diseño

• Necesidad de Simulador lógico

Herramienta necesaria para reproducir el comportamiento del sistema modelado

Permite la verificación del sistema diseñado.

Actualmente existen herramientas software que permiten pasar de dichas descripciones a diseños a nivel de compuertas: SÍNTESIS

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstracción

Dominios descriptivos:

Comportamiento

Se realiza la función sin información de cómo se hace

Estructural

Los bloques se conectan mediante interconexiones (netlist o esquemas)

Físico

Localización y propiedades físicas reales

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstracción

Niveles de abstracción:

Circuito

Valores continuos, todo es electrónica, tiempo continuo

Lógico

Valores lógicos (T,F), sólo computación, tiempo continuo

RT (RegisterTransfer)

Palabras con valores discretos, control y procesamiento, tiempo discreto

Algorítmico

Estructuras abstractas, dependencias en lugar de tiempo

Sistema

Relaciones entre subsistemas, síncronos y protocolos

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstracción

Medidas:

Circuito

Tiempo de subida y bajada, consumos área

Lógico

Tiempo de conmutación, skew, área equivalente

RT

Tiempo de ciclo, márgenes, compuertas equivalentes

Algorítmico

Latencia, cadencia de datos, número de módulos

Sistema

Ancho de banda, MIPS.

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstracción

Transiciones:

Síntesis/Análisis

Comportamiento ⇔ estructural

Optimización

Mejora de una descripción sin variar el nivel de abstracción

Generación/Extracción

Estructural ⇔ físico

Refinamiento/Abstracción

Bajar/Subir el nivel de abstracción en el mismo dominio

MC. RODRIGO LUCIO MAYA RAMIREZ

Niveles de diseño y dominios de representación

VHDL: VHSIC, Hardware Description Language

VHSIC: Very High Speed Integrated Circuits

MC. RODRIGO LUCIO MAYA RAMIREZ

Lenguajes de descripción de hardware (HDLs). Síntesis lógica

Síntesis lógica:

Convierte una descripción de un sistema digital mediante un HDL en una implementación tecnologíca.

Descripción 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;

ARCHITECTURE a of puertas is

begin

Y <= (A and B) or C;

end a;

El hecho de realizar una síntesis lógica obliga a ciertasrestricciones en la tarea de realizar las descripcionescon HDLs.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

• Soportan tres estilos de descripción básicos:

– DESCRIPCIÓN COMPORTAMENTAL (behavioral)

– DESCRIPCIÓN DE FLUJO DE DATOS (data-flow)

– DESCRIPCIÓN ESTRUCTURAL (estructural)

Un diseño puede ser descrito con una combinación de los tres estilos.

El lenguaje es independiente de la tecnología:

El mismo modelo puede ser sintetizado en librerías de distintos vendedores.

Reducción de la dependencia con el fabricante de ASICs, ya que la portabilidad a otra tecnología es mucho más rápida.

Reutilizar el diseño en componentes tan distintos como ASICs o FPGAs con un esfuerzo mínimo.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

Se puede verificar la funcionalidad del diseño muypronto en el proceso de diseño.

La simulación del diseño a tan alto nivel, antes dela implementación a nivel de compuertas, permiteprobar la arquitectura y rectificar decisiones en lasprimeras fases de diseño, con un esfuerzo muchomenor que si se realizase en fases posteriores.

Sencillez

Como la descripción se centra más en lafuncionalidad que en la implementación, resultamás sencillo para una persona comprender quéfunción realiza el diseño a partir de una descripciónHDL que a partir de un esquemático deinterconexión de compuertas

Ahorro de tiempo

Facilita las correcciones en el diseño debidas afallos de diseño o cambio de especificaciones.

La existencia de herramientas comercialesautomáticas (sintetizadores RTL) que permitencrear descripciones gate-level a partir de losmodelos a nivel RTL

begin

Y <= (A and B) or C;

end a;

El lenguaje también puede ser usado como medio de comunicación entre diferentes herramientas CAD y CAE. Un programa de captura de esquemáticos puede ser utilizado para generar descripciones HDL del diseño, lo cual puede ser usado como entrada a un simulador.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

Los HDL tienen elementos que permiten el diseño a gran escala, de forma fácil; por ejemplo, componentes, funciones, procedimientos, paquetes.

El lenguaje soporta metodologías de diseño diferentes: top-down, bottom-up, o mixtas.

La propia descripción en el lenguaje de altonivel sirve como especificación delcomportamiento del sistema a diseñar(tanto a nivel funcional como lasrestricciones temporales), y la interface conel resto del sistema.

Los modelos descritos con estos lenguajes,pueden ser verificados fácilmente y deforma precisa por simuladores definidos enbase a estos HDL.

El lenguaje puede ser usado como un mediode intercambio entre los fabricantes deASICs y los usuarios de herramientas CAD.

El lenguaje soporta jerarquía

Un sistema digital puede ser modeladocomo un conjunto de componentesinterconectados.

A su vez cada componente puede sermodelado como un conjunto desubcomponentes.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

El modelo, a través de los atributos, puede contenerinformación del diseño en sí mismo, no solo de lafuncionalidad: por ejemplo, informaciones talescomo el área y velocidad.

Soporta modelos de tiempos síncronos yasíncronos.

Posibilidad de implementar distintas técnicas demodelado digital (descripciones de máquinas deestados finitos (FSM), descripciones algorítmicas,redes de Petri, y ecuaciones Booleanas

El lenguaje es público y "not propietary"(especialmente en el caso del VHDL).

Es un estándar ANSI e IEEE; por lo tanto, losmodelos descritos en estos lenguajes (VHDL oVERILOG) son totalmente portables.

La capacidad de definir tipos de datossofisticados, suministra la potencia de describir ysimular nuevos diseños a un nivel de abstracciónen el cual aún no se barajan detalles de laimplementación

Los genéricos y atributos facilitan la descripción de modelos parametrizables.

MC. RODRIGO LUCIO MAYA RAMIREZ

Inconvenientes del uso de HDLs

Supone un esfuerzo de aprendizaje, yaque prácticamente se puedeconsiderar como nueva metodología.

Necesaria la adquisición de nuevasherramientas:

Simuladores

Sintetizadores de HDL, teniendo quemantener el resto de las herramientaspara otras fases del diseño.

El uso de estos lenguajes hace queinvoluntariamente se pierda un pocode control sobre el aspecto físico deldiseño, dándole una mayorimportancia a la funcionalidad dedicho diseño.

MC. RODRIGO LUCIO MAYA RAMIREZ

Lenguajes de Descripción de Hardware.

En la actualidad se utilizan fundamentalmente VHDL,Verilog y SystemC . Otro HDL, el UDI/L se utilizaexclusivamente en Japón.

VHDL (Very High Speed Integrated Circuit HardwareDescription Language). Nace como proyecto delDepartamento de Defensa (DoD) de EEUU (año 82) paradisponer de una herramienta estándar, independientepara la especificación (modelado y/o descripción) ydocumentación de los sistemas electrónicos. El IEEE loadopta y estandariza.

Verilog: Software de la firma Gateway y posteriormente deCadence. Estándar industrial hasta que apareció el VHDLcomo estándar IEEE. En 1990 Cadence lo hace público y elIEEE lo estandariza en 1995.

SystemC: es una extensión del C++, que utiliza unasbibliotecas de clase para describir y simular circuitosdigitales. Se publicó en 1.999 .

Diversos grupos de investigadoresempiezan a crear y desarrollar losllamados "lenguajes de descripción dehardware" cada uno con suspeculiaridades, buscando una solucióna los problemas que presentaba eldiseño de los sistemas complejos.

Ejemplos:

IDL desarrollado por IBM ,

TI - HDL de Texas Instruments,

ZEUS de General Electric,

prototipos de universidades

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 documentación, siempre y cuando los modelos de los circuitos estén 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 estímulos y ver los resultados durante la simulación.

MC. RODRIGO LUCIO MAYA RAMIREZ

¿Para qué sirven los HDL?

Los "Test Bench" pueden ser escritosen el mismo lenguaje que con el quehan sido modelados los diseños (HDL).

Esto permite un mejor manejo delmodelo, ya que se puede asociar elmodelo a sus estímulos de simulación.

No limitamos el uso de dichosestímulos a un determinado simulador,pudiendo ser reutilizados dichosestímulos aunque se use un simuladordistinto.

Los retardos de propagación ylimitaciones temporales, pueden serdescritos con estos HDL

MC. RODRIGO LUCIO MAYA RAMIREZ

2.1 Lógica Programable

2.2 SPLDs

2.2.1 Características

2.2.2 Arquitectura

2.3 CPLDs

2.3.1 Características

2.3.2 Arquitectura

2.4 FPGAs

2.4.1 Características

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 Lógico Configurable (CLB)

Bloque de Entrada-Salida (IOB)

Matriz de Interconexiones

UNIDAD 2: Dispositivos Lógicos Programables

MC. RODRIGO LUCIO MAYA RAMIREZ

Dispositivos Lógicos Programables

Los dispositivos actuales (CPLD y FPGAs) tienen unacapacidad lógica de hasta millones de compuertas,incluyen interfaces programables para varios estándares deinterface eléctrica y tienen bloques de funciones especialesembebidos entre la lógica programable tales comomemoria, multiplicadores o CPUs completas

Esta gran capacidad y variedad de los dispositivos los hacesumamente útiles a la hora de crear prototipos, desarrollorápido de nuevos productos, para los productos que debenser reconfigurables por naturaleza o productos que seproducen en bajos volúmenes y para los cuales no es

económicamente viable crear un integrado a medida.

Los dispositivos lógicos programables soncircuitos integrados digitales que notienen una función predefinida por elfabricante. Su función puede ser definida(o programada) por el usuario.

Debido a la gran capacidad lógica quetienen los dispositivos modernos,sistemas completos pueden desarrollarsesobre un solo circuito integrado.

Esto da lugar a las denominacionesSystem–on–a-Programmable Chip, oSoPC (sistema sobre un circuito integradoprogramable) y System-on-a-Reprogammable Chip (SoRC).

MC. RODRIGO LUCIO MAYA RAMIREZ

Evolución de los Primeros Dispositivos Lógicos Programables

Los primeros dispositivos lógicosprogramables fueron las memorias PROM.

Para ello se utilizan como entradas las líneasde dirección a la memoria. De esta manera lamemoria provee una tabla de decodificacióncompleta de las entradas, y puede utilizarsepara implementar cualquier función lógicacombinacional.

Los primeros dispositivos diseñadosespecíficamente para implementar funcionesdigitales programables fueron los PLA,introducidos al mercado en la década de 1970por Philips.

La base teórica de estos dispositivos es quecualquier ecuación lógica puede reducirse auna suma de productos.

El corazón electrónico de estos dispositivosconsiste en un bloque que permite negar lasentradas y dos niveles de compuertas: unnivel de compuertas AND y un nivel OR.Mediante fusibles pueden programarse lasinterconexiones entre las entradas y la lógica.

Esquema básico de un típico dispositivo PLA.

MC. RODRIGO LUCIO MAYA RAMIREZ

PAL

Debido a las limitaciones en la velocidadde las conexiones programables y losproblemas en el proceso de manufacturade las PLA, surgieron dispositivos con unsolo nivel de lógica programabledenominados PAL .

Los PAL se basan en el mismo principio que las PLA, pero tienen un nivel de lógica AND programable mientras el nivel de lógica OR es fijo.

Esto limita la cantidad de funciones quepueden definirse con un dispositivodado, así que los fabricantes de PAL losofrecían en una variedad deconfiguraciones para adecuarlos a lasnecesidades del usuario.

Muchos PAL además incorporaronregistros sobre las salidas y realimentaciónpara implementar circuitos secuenciales.

Esquema de una posible configuración de un PAL.

MC. RODRIGO LUCIO MAYA RAMIREZ

GAL

Los dispositivos denominados GAL sonun poco mas complejos que los PALmencionados anteriormente.

Incluyen un nivel de lógica AND a laentrada y luego un bloque lógicodenominado macrocelda a la salida, enreemplazo del nivel OR.

La denominación GAL fue utilizada enprincipio por Lattice, y luego licenciadaa otros fabricantes.

La macrocelda de estas GAL sedenomina OLMC, por "Output LogicMacro 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 quecombinan varios bloques lógicossimilares a las PAL o GAL con unamatriz de interconexión programable.

Estos dispositivos se fabrican condistintas capacidades para adaptarlosa las necesidades del usuario. Comoejemplo, la familia MAX7000 de altorendimiento de Altera se manufacturaen versiones desde 32 hasta 512macroceldas, con 36 a 212entradas/salidas según el dispositivo yempaquetamiento que se elija.

Estructura general CPLD Altera

MC. RODRIGO LUCIO MAYA RAMIREZ

CPLDs

Como se de las figura, estos dispositivos incluyen además de las macroceldas, un arreglo de interconexiónprogramable (PIA), una red de distribución de reloj dedicada y bloques de entrada salida que permiteninterfaces compatibles con diferentes estándares eléctricos.

Los bloques lógicos AND y OR están ambos incluidos en la macrocelda del dispositivo.

Macrocelda CPLD.

MC. RODRIGO LUCIO MAYA RAMIREZ

FPGAs

La arquitectura de una FPGA consiste en arreglos de bloques lógicos que se comunican entre si a través de canales de conexión verticales y horizontales.

La principal diferencia entre las FPGA y CPLDs es que en general los bloques lógicos de las FPGA no implementan la lógica usando compuertas sino con generadores de funciones.

En la siguiente sección se estudiará en mayor detalle la arquitectura de una FPGA típica.

Estructura básica FPGA

MC. RODRIGO LUCIO MAYA RAMIREZ

Elementos del FPGA

Esta FPGA contiene cinco elementos principales:

• Bloque de entrada-salida (IOB o Input-OutputBlock): estos bloques proveen la interface entre laspatitas o "pines" del integrado y la lógica interna.

• Bloque lógico configurable (CLB o ConfigurableLogic Block): Estos son los bloques básicos que seutilizarán en la implementación de un circuitodigital.

• Bloque de distribución y compensación de reloj(DLL o Delay Locked Loop): Estos bloques controlanlos dominios de reloj dentro del integrado ycompensan por retardos que pueda haber entre elreloj externo y el interno.

• Bloque de memoria (BLOCK RAM): Estos bloquesson memorias dedicadas integradas dentro de lalógica programable.

• Estructura de interconexión: Es una estructuraversátil y multi-nivel de interconexión entre losotros componentes de la FPGA.

Diagrama en bloques de una FPGA Spartan IIe de Xilinx

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque Lógico Programable

Todas las FPGA tienen algún tipo de bloquelógico programable. Este es el corazón de laFPGA, y permite implementar lasdiferentes funciones lógicas.

Cada CLB esta compuesto por dos bloquesiguales denominados “slices”. Cada "slice"contiene dos generadores de funciones yun multiplexor MUXF5. El multiplexorcombina los resultados de los generadoresde funciones dentro de cada "slice" delCLB.

Las dos "slices" están unidas por unmultiplexor MUXF6, que puede seleccionarla salida de una u otra “slice” hacia la salidadel CLB. Esto permite implementarcualquier función de 6 entradas, unmultiplexor de 8:1 o determinadasfunciones lógicas de hasta 19 entradas.Además de poder implementarse lógicacombinacional, cada “slice” contienerecursos para implementar circuitossecuenciales y operaciones aritméticaseficientes.

Esquema del bloque lógico programable (CLB) de una FPGA de la familia Spartan IIe de Xilinx.

MC. RODRIGO LUCIO MAYA RAMIREZ

CLBs

En esta figura se ven los generadores defunciones, compuesto por una tabla de entrada-salida (LUT o Look-Up Table) de cuatro entradas yuna salida. Estas tablas pueden implementarcualquier función lógica de cuatro entradas y unasalida, así como también utilizarse comomemorias distribuidas de 16 x 1 bit.

Las salidas de las LUT pasan a los bloques decontrol, que contiene lógica que permite optimizarfunciones aritméticas.

Los elementos que permiten implementar lógicasecuencial son los elementos de almacenamientoque se ven sobre las salidas del “slice”. Estospueden configurarse como flip-flops D con reloj ocomo latches controlados por nivel.

CLB de una FPGA Spartan 3 de Xilinx

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque de Entrada / Salida

Las interfaces de entrada-salida son otrode los componentes particulares quetienen las FPGAs. La familia de FPGAsSpartan IIe de Xilinx, por ejemplo, dividelas entradas/salidas del integrado enbancos que se pueden configurar paratener una interface con lógica dediferentes estándares eléctricos demanera independiente.

Los bancos se configuran aplicandodiferentes tensiones de alimentación a lospines denominados VccO y VREF.

Al utilizar diferentes valores de VccO para losdistintos bancos se podrá tener un sistemacon interface a diferentes familias lógicasdentro de la misma FPGA. Las entradas dereloj están asociadas a diferentes bancos deentrada-salida, para permitir que hayadiferentes dominios de reloj con interfaceseléctricas diferentes.

Distribución de los bancos de entrada/salida en una FPGA Spartan IIe

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque de Entrada / Salida

Además de la tensión VccO, para variosde las interfaces lógicas debeconfigurarse la tensión de referenciaVREF y agregarse resistencias determinación sobre la plaqueta en lasentradas-salidas de la FPGA. Cadabloque de entrada-salida tiene unaresistencia de “pull-up” y “pull - down”configurables que permiten fijar elvalor lógico mediante programación.

Los bloques de entrada-salida demuchas FPGAs tienen elementos dealmacenamiento integrados quepermiten controlar mejor los tiemposde propagación entre los pines delintegrado y la lógica interna.

Además cada bloque de entrada-salidacuenta con “buffers” programablesque pueden configurarse para tresestados y colocar la salidas de la FPGAen alta impedancia (estado ‘Z’).

Esquema de un bloque de entrada-salida (IOB) de una FPGA Spartan IIe.

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque de Control de Reloj

El sistema de control del reloj consisteen bloques de control integrados a lared de distribución de reloj.

La red de distribución de reloj en lasFPGA asegura retardos parejos a todoslos bloques lógicos de la FPGA.

Cada fabricante utiliza una arquitecturadiferente para el control y distribuciónde reloj.

La familia Spartan IIe de Xilinx tienebloques específicos para control de relojdenominados DLL (Delay Locked Loop).

Estos bloques sincronizan el reloj internoal reloj externo del sistema, controlan eldesplazamiento de fase entre los relojes,sincronizan los diferentes dominios dereloj y aseguran un retardo de distribucióndel reloj pareja para la lógica interna de laFPGA.

Red global de distribución de reloj en la FPGA Spartan IIe

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 frecuenciadel reloj, el sistema de distribución dereloj y el estándar eléctrico deinterface 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 contienenbloques de memoria embebidaintegrados con la lógica programable.

En general estos bloques básicos dememoria pueden utilizarse endiferentes configuraciones paragenerar RAMs y ROMs de diferentestamaños.

Además de memorias embebidas, lasFPGAs basadas en memoria SRAMpueden usar las tablas LUT de losbloques lógicos como memoria.

Este bloque se denomina BLOCK RAMy es una memoria de puerto dual(dual-port), que puede leerse yescribirse al mismo tiempo.

Estos bloques de memoria puedenusarse como memorias de puerto dual,puerto simple, RAMs o ROMs. Paraentender la versatilidad de estos bloquesde memoria, en la siguiente tabla semuestran las opciones de configuración.

Esquema de una celda de memoria básica de la familia Spartan IIe de Xilinx.

MC. RODRIGO LUCIO MAYA RAMIREZ

Memoria

Además de poder configurar cadabloque, varios bloques puedenconectarse utilizando lógica externapara implementar memorias de otrostamaños y colas FIFO o FILO.

La figura muestra un bloque dememoria de Actel, que puedeconfigurarse como memoria de puertosimple, 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 Señal

Varias FPGA contienen bloques específicos queoptimizan en hardware ciertas funcionesespeciales.

Las FPGA de la familia Stratix de Altera, porejemplo, contienen uno o más módulos deprocesamiento de señal entre los bloques delógica programable de propósito general.

Estos bloques permiten desarrollar ciertasfunciones específicas típicas de las aplicacionesde procesamiento de señal de manera muyeficiente.

Pueden configurarse de varias manerasdiferentes según las necesidades del usuario.Como muestra la figura, este bloque contienelógica para implementar operaciones demultiplicación-acumulación que requerirían demuchos recursos y ciclos de reloj si seimplementaran utilizando lógica de propósitogeneral.

Al igual que los otros bloques, los bloquesespecíficos pueden interconectarse a los demásbloques utilizando la matriz de interconexiónprogramable de la FPGA.

Bloque de procesamiento de señal de la familia Stratix de Altera

MC. RODRIGO LUCIO MAYA RAMIREZ

CPUs Embebidas

La familia de FPGAs de Xilinx Virtex II-PROcontiene una CPU Power PC 405 de IBM y lógicade interconexión embebida dentro de lógicaprogramable.

Esto permite utilizar toda la potencia de una CPUintegrada con la flexibilidad de los periféricosdiseñados mediante lógica programable.

Los bloques específicos integrados en el silicio delas FPGAs se denominan "hardcores".

Altera ofrece la FPGA Excalibur que contiene unmicrocontrolador ARM922T integrado a uncostado de lógica programable. La lógicaprogramable del Excalibur puede ser de hasta unmillón de compuertas.El micro es de arquitectura RISC de 32 bits, ypuede correr a una frecuencia de reloj de hasta200 MHz .

Por otro lado también pueden diseñarsemicrocontroladores o procesadores usandosolamente la lógica de configuración de las FPGAs.

Altera ofrece el microcontrolador Nios, de tecnologíaRISC de 16 bits que puede utilizarse sobre varias de lasFPGA de Altera.A este tipo de diseño se lo denomina "softcore", ya quea FPGA no tiene ningún bloque específico para la CPUimplementado sobre el circuito integrado.Hay muchos micros "softcore" públicos y propietarios.

Xilinx ofrece el Microblaze y Actel ofrecerá un micro de lafamilia ARM.

MC. RODRIGO LUCIO MAYA RAMIREZ

Matriz de interconexión

Para poder implementar circuitoslógicos, los elementos lógicospresentados en las secciones anterioresno solo deben configurarseadecuadamente sino que tambiéndeben conectarse entre si.

La estructura de interconexión internade un PLD consiste en un conjunto dealambres o trazas que puedenconectarse mediante elementos deconexión programables.

Las herramientas de “localización einterconexión” (place and route) son lasencargadas de decidir en queelementos lógico se implementará lalógica diseñada por el usuario y comodeben programarse las interconexionespara que el diseño funcione según lasespecificaciones de tiempo y retardosque se han definido.

MC. RODRIGO LUCIO MAYA RAMIREZ

Matriz de interconexión de las FPGA Spartan IIe de Xilinx

Estas FPGA tienen dos niveles de interconexión.Por un lado tienen una interconexión depropósito general a través de la matriz deinterconexionado general o GRM por sus siglasen inglés.

Por otro lado contienen recursos deinterconexión local.

Además de los ya mencionados, las FPGA SpartanIIe contienen recursos de interconexióndedicados a señales de tres estados, de entrada-salida y recursos de interconexión global para ladistribución de reloj y señales específicas.

Los recursos de interconexión local, mostradosen la Figura 31, permiten hacer las conexionesentre los elementos internos de un bloque lógicoo CLB, como las tablas de búsqueda (LUT), losflip-flop y las realimentaciones dentro del CLB.

Caminos de interconexión local en la FPGA Spartan IIe

Además, el interconexionado a este nivel provee conexionesa la matriz de interconexionado general y a los CLBadyacentes. Las conexiones a los CLB adyacentes permitenoptimizar los diseños al evitar los retardos y la utilización derecursos de la matriz general de interconexionado.

MC. RODRIGO LUCIO MAYA RAMIREZ

Matriz de interconexión de las FPGA Spartan IIe

La mayor parte de las señales se conectarán através de la matriz general deinterconexionado (GRM). Los elementos de laGRM se encuentran entre los CLB, en loscanales de interconexión horizontales yverticales de la FPGA.

Permiten hacer la interconexión entre lastrazas horizontales y verticales y hacia los CLB.A través de ellos se configuran las conexionesentre CLBs no adyacentes y hacia los bloquesde entrada/salida.

Red dedicada de distribución de reloj en la FPGA Spartan IIe

MC. RODRIGO LUCIO MAYA RAMIREZ

Granularidad de los Dispositivos Lógicos Programables (PLDs)

La granularidad de un dispositivo lógicoprogramable está dada por la funcionalidad básicaque provee cada bloque de configuración lógica, ola relación entre las celdas lógicas y los recursos deinterconexionado.

Algunos parámetros para definir la granularidadde un dispositivo programable son:

• Número de funciones que puede implementarcada celda lógica• Número de compuertas NAND de dos entradasequivalente por cada celda lógica• Número total de transistores por celda lógica• Área total normalizada de lógica configurable(relación de área lógica/área de interconexionado)• Número de entradas y salidas por celda lógica

Algunos dispositivos tienen arquitecturas conceldas lógicas que pueden implementar funcioneslógicas complejas, de varias entradas/salidas. Aestas se las denomina de granularidad gruesa.Otras arquitecturas están formadas por celdasbásicas que solo permiten implementar lógica muysimple. A estas se las denomina de granularidadfina.

MC. RODRIGO LUCIO MAYA RAMIREZ

Granularidad de los Dispositivos Lógicos Programables (PLDs)

La granularidad de un dispositivo lógico influiráen la manera que se implemente una funciónlógica dada, en su frecuencia máxima defuncionamiento y en la utilización que se hace deldispositivo.

Un bloque lógico grande puede implementarlógica más compleja y por lo tanto se necesitanmenos bloques para una función dada. Por otrolado cada bloque consume más área que puededesaprovecharse.

Una arquitectura de granularidad fina serátípicamente más densa y tendrá menor retardode interconexión entre celda y celda. Sinembargo, para una función dada, se deberánconectar un mayor número de celdas.

En general la mejor granularidad dependerá de laaplicación y las restricciones que hay sobre eldiseño.

Bloque Lógico (Logic Tile) de la ProAsicPlus de Actel

MC. RODRIGO LUCIO MAYA RAMIREZ

Granularidad de los Dispositivos Lógicos Programables (PLDs)

Arquitecturas mixtas

• Combinan celdas con granularidad fina ygruesa

• Muchas veces tienen recursos deinterconexión dedicados para cada tipo decelda

• Ejemplo: ispXPGA de Lattice Semiconductors

Arquitecturas con granularidad fina• Celdas implementan funciones lógicasparciales de n entradas• Relación de entradas a registros por celdamuy baja (2/4 a 1)• Ejemplo: ProAsicPlus de Actel

Arquitecturas con granularidad media• Celdas implementan funciones completasde n entradas• Relación de entradas a registros por celdade 6/8 a 1• Buenas para implementar máquinas deestado y lógica secuencial compleja• Ejemplo: Xilinx Spartan 3

Arquitecturas con granularidad gruesa• Celdas estilo PLD de arreglos de términos• Relación de entradas a registros de 32 a 1• Buenas para lógica combinacional comodecodificación de direcciones, funcionesaritméticas,• Pobres para arquitecturas con colas(pipelines)• Ejemplo: Altera MAX 3000

MC. RODRIGO LUCIO MAYA RAMIREZ

Tecnología de Configuración de los PLDs

La tecnología utilizada para configurar los elementos de un PLD, ya sean los bloques lógicos o lasinterconexiones, dependen del fabricante y el dispositivo. Entre los dispositivos reprogramables, se destacan lastecnologías EEPROM, SRAM y Flash.

Los dispositivos que solo pueden configurarse una vez en general utilizan tecnologías de antifusible.

Cada tecnología tiene sus ventajas y desventajas respecto a las otras.

MC. RODRIGO LUCIO MAYA RAMIREZ

Tendencias Actuales y Futuras

• Integración con herramientas y otros software dedesarrollo de mayor nivel, como son Matlab yherramientas para el diseño integrado desoftware y hardware. (HW-SW co-design).

• Integración del manejo de configuración de FPGAscon las herramientas de diseño de circuitosimpresos (PCBs), para poder configurar elinterconexionado interno del SoPC de maneraintegral con el conexionado hacia loscomponentes externos.

• Instrumentos, tales como analizadores lógicos, quepermiten observar la lógica de interna de lasFPGA en tiempo real al mismo tiempo que seobservan otras señales, externas a la FPGA.

• Sistemas con aplicaciones que utilicen lareconfiguración o reprogramación de las FPGAsdirectamente en el producto final según lanecesidad del momento.

• Integración de bloques lógicos programablesalrededor de lógica fija en ASICs o integradosestándar.

• Desarrollo de FPGAs con mayor capacidad, másvelocidad, menos consumo de potencia y menorcosto.

• Integración en hardware sobre las lógicasprogramables de bloques específicos como ALUs,componentes para procesamiento digital de señal,integración con uP y uC, memorias, etc.

• Integración y mezcla entre FPGAs y circuitosintegrados de propósito específico (ASICs).Componentes que pueden pasar directamente deun prototipo sobre una FPGA a un ASIC sinesfuerzo de diseño adicional.

• Cambios en las herramientas de software paratener mayor integración entre los diferentesusuarios y en los distintos pasos del proyecto. Estoincluye el manejo de grupos de trabajo, el manejode la propiedad intelectual, la documentación deproyectos integrada a las herramientas de diseño,la transferencia de los diseños para FPGAs a ASICs,etc.

MC. RODRIGO LUCIO MAYA RAMIREZ

3.1 Estructura de una descripción en VHDL

3.1.1 Entidad

3.1.2 Arquitectura

3.1.2.1 Descripción Comportamental

3.1.2.2 Descripción Flujo de Datos

3.1.2.3 Descripción Estructural

3.2 Elementos Léxicos

3.3 Constantes y variables

3.4 Tipos de Datos Escalares

3.5 Datos del tipo Arreglo

3.6 Estructuras de Ejecución 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

UNIDAD 3: VHDL

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 más complejos, y el coste dereponerlos cada vez era mayor, básicamente porque no estaban correctamente documentados. VHDLnació como una manera estándar de documentar circuitos.

•El uso de VHDL permitió comprobar que el tiempo de diseño de los circuitos se reducía, porque sepodían crear directamente de su descripción: utilidad de la síntesis.

•En 1987 el trabajo se cedió a la IEEE, y a partir de ese momento es un estándar abierto.

VHDL: VHSIC Hardware Description Language

VHSIC: Very High Speed Integrated Circuits

MC. RODRIGO LUCIO MAYA RAMIREZ

Evolución

1980: El departamento de defensa de losEEUU funda el proyecto para crear un HDLestándar dentro del programa VHSIC.

1981: Woods Hole Workshop, reunión inicialentre el Gobierno, Universidades eIndustria.

1983: Se concedió a Intermetrics, IBM yTexas Instruments el contrato paradesarrollar VHDL.

1985: Versión 7.2 de dominio público.

1987: El IEEE lo ratifica como su estándar1076 (VHDL-87).

1993: El lenguaje VHDL fue revisado yampliado, pasando a ser estándar 1076 ‘93(VHDL-93).

2000:Última modificación de VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ

VHDL: Características Generales

VHDL: lenguaje orientado a la descripción omodelado de Hardware similar a lenguajes dealto nivel de propósito general (ADA en especial):de ellos hereda:

Concepto de tipo de datos, con posibilidad dedefinir nuevos tipos

facilita la descripción de circuitos con diversosniveles de abstracción.

Sentencias de control de flujos (if, for while).Junto con la característica anterior

potencia para desarrollar algoritmos.

Capacidad de estructurar el código(subprogramas, funciones o procedimiento),permite afrontar algoritmos complejos.

Posibilidad de utilizar y desarrollar bibliotecas dediseño,

Incorpora conceptos específicos para elmodelado del hardware, como concurrencia yciclo de simulación.

MC. RODRIGO LUCIO MAYA RAMIREZ

Estado actual y alternativa

En la actualidad el diseño medianteesquemas no es una alternativarealista en ningún proyecto, porejemplo Gforce 4 tiene 65 Mtransistores y 800.000 líneas de códigoVerilog.

La alternativa estándar es usar un HDL

Verilog: Costa Oeste de EEUU, paraASICs, menos verboso, más parecido aC, menos expresivo.

VHDL: Costa Este y Europa, paraFPGAs, más descriptivo, más parecidoa PASCAL y ADA, más expresivo.

El diseño se sintetiza a partir de unHDL, pero gran parte del diseño y laverificación se realiza con lenguajesestándares C y Matlab

VHDL es el estándar para FPGAs enproyectos industriales de moderadacomplejidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

¿Futuro?

Los lenguajes de descripción dehardware también tienen limitaciones:

Metodología de diseño nueva, exigeun cambio de mentalidad con respectoal Software

No permiten re usar código SW paraHW.

Poseen enorme reusabilidadintrínseca.

La decisión HW/SW se debe hacerantes de la codificación

La simulación es lenta, siempre hayque recurrir a una simulaciónalgorítmica usando lenguajes SW

Como respuesta a esto, hay variasiniciativas para describir HW usandolenguajes de alto nivel, tipo SW

Handel-C, System-C

Forge (Java)

Superlog

MC. RODRIGO LUCIO MAYA RAMIREZ

Estructura de un diseño en VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ

Elementos de descripción VHDL

Bibliotecas (Library)• Almacenan los elementos de diseño: tipo de datos, operadores, componentes, objetos, funciones,...• Esos elementos de diseño 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 con el exterior mediante unas terminales de entrada y de salida.Es la caja negra que define las entradas y salidas.

Arquitectura (Architecture)Describe el funcionamiento del circuito.

Una unidad hardware se puede visualizar como una cajanegra, el interfaz de la “caja negra” está completamentedefinida.El interior está ocultoEn VHDL la caja negra se denomina entidadLa entidad describe la E/S del diseñoPara describir su funcionamiento se asocia unaimplementación que se denomina arquitecturaLa arquitectura describe el contenido del diseño.

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 dirección 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 señal.

Los puertos son una clase especial de señales que además añade el modo al tipo de señal

e0e2e1salida0salida1caja

MC. RODRIGO LUCIO MAYA RAMIREZ

Modos de un Puerto

Indican la dirección y si el puertopuede leerse o escribirse dentro de laentidad.

IN: Una señal que entra en la entidad yno sale. La señal puede ser leída perono escrita.

OUT: Una señal que sale fuera de laseñal y no es usada internamente. Laseñal no puede ser leída dentro de laentidad.

BUFFER: Una señal que sale de laentidad y también es realimentadadentro de la entidad.

INOUT: Una señal que es bidireccional,entrada/salida de la entidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

Estructura de un diseño en VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ

Declaración de entidad

MC. RODRIGO LUCIO MAYA RAMIREZ

Resumen: Entidad y Arquitectura

La entidad se utiliza para hacer una descripción "caja negra" del diseño, sólo se detalla su interfaz

Los contenidos del circuito se modelan dentro de la arquitectura

Una entidad puede tener varias arquitecturas

Por ejemplo, la descripción de comportamiento que ha hecho el diseñador y el modelo post- layoutobtenido después de implementar el chip

MC. RODRIGO LUCIO MAYA RAMIREZ

Invariancias

VHDL presenta ciertas invariancias que conviene conocer antes de su utilización.

Invariante a mayúsculas, es decir, dos expresiones iguales conteniendo mayúsculas y minúsculas son idénticas.

Invariante a los espacios, es decir, dos expresiones iguales conteniendo más o menos espacios son idénticas

Los comentarios van detrás de dos rayas “--”y convienen que sean claros para que las descripciones puedan ser fácilmente utilizadas por otras personas o por ti mismo.

VHDL es relativamente laxo con la utilización de paréntesis, una buena idea es utilizar los paréntesis de manera que una persona la pueda entender con facilidad

Cada asignación 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 quese utilizan para identificar a lasfunciones, señales, puertos, variables,etc. Es conveniente que dichaspalabras proporcionen informaciónsuficiente para que la descripción seafácilmente reutilizable.

El identificador debe dar suficienteinformación para su uso .

El identificador puede ser tan largocomo se quiera, pero un nombredemasiado largo es complicado deutilizar, y demasiado corto quizáproporcione poca información.

El identificador puede contenercualquier combinación de las letras (A-Z y a-z) números (0-9 ) y el sub-guión(“_”)

El identificador debe empezar por uncarácter alfabético.

El identificador no puede termina conel sub-guión (“_”)

Son palabras que no se pueden utilizar como identificadores

MC. RODRIGO LUCIO MAYA RAMIREZ

Modelos de descripción

Comportamental o algorítmico (behavioral).

Especifica cómo se comportan las salidas con respecto a las entradas.

No proporciona al sintetizador información de cómo 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 representación concurrente del movimiento de los datos a su través, esdecir, cómo circula la información

Estructural (structural). Describe la conexión entre distintos módulos descritos previamente

MC. RODRIGO LUCIO MAYA RAMIREZ

Modelos de descripción VHDL

Como hemos visto, la arquitectura(architecture), en VHDL describe lafunción que realiza una entidad(entity).

La arquitectura se compone de dospartes:

la parte declarativa en la que seencuentran las definiciones de lasseñales, funciones, tipos,procedimientos, etc.. a utilizar.

y el cuerpo de la descripción,consistente en una sucesión deasignaciones concurrentes yprocesos que modelan la entidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

Concurrencia del hardware

El hardware es concurrente, es decir,los circuitos coexisten en el tiempo ypor lo tanto trabajan al mismo tiempo.

Este chip tiene tres compuertas quefuncionan simultáneamente

No se puede modelar con un lenguajecomo C:

S1 = A and B;

S2 = C or D;

S3 = C xor D;

Las tres puertas funcional al mismotiempo ¡no una después de la otra!

La solución al problema anterior esque aunque la ejecución seasecuencial, las asignaciones no tengantiempo de ejecución:

S1 <= A and B;S2 <= C or D;S3 <= C xor D;

El valor de S será el correcto una vez que se hayanpropagado los tiempos de retardo de las compuertas.No hay que olvidar que se trata de modelar circuitos reales,no virtuales, y las señales necesitan que transcurra eltiempo para tomar un valor

MC. RODRIGO LUCIO MAYA RAMIREZ

Sentencias concurrentes

Características:

Se ejecutan de forma asíncrona unas respecto de las otras en el mismo tiempo de simulación.

El orden en que se escriban es indiferente, no siguen un orden de ejecución predefinido.

–No obstante conviene escribir el código en el orden que mejor se pueda entender y mejor documenteel diseño.

Sirven para especificar:

Interconexiones entre componentes.

Estructuras jerárquicas.

Estructuras regulares.

Transferencias entre registros.

MC. RODRIGO LUCIO MAYA RAMIREZ

process: elemento de diseño principal

Un proceso describe el comportamiento deun circuito:

Cuyo estado puede variar cuando cambianciertas señales

Utilizando construcciones muy expresivas:if..then..else, case, bucles for y while, etc…

Y que además puede declarar variables,procedimientos, etc...

MC. RODRIGO LUCIO MAYA RAMIREZ

Procesos

Los procesos se “disparan”(su código se ejecuta) cuando cambia alguna de las señales de su lista de sensibilidad.

Un proceso sin lista de sensibilidad es válido, pero se activa con cualquier evento, no se asegura uncomportamiento correcto.

Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrás de otra, pero sin darlugar a que avance el tiempo durante su ejecución.

El tiempo sólo avanza cuando se llega al final del proceso.

Las señales modelan hilos del circuito, y como tales, sólo pueden cambiar de valor si se deja queavance 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 solución VHDL a la concurrencia

VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a laconcurrencia

En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutanconcurrentemente

MC. RODRIGO LUCIO MAYA RAMIREZ

sentencias concurrentes

Asignación simple

suma <= ope1 xorope2;

Para Señales 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:] señal <= val_1 when condi_1 else

val_2 [whencondi_2] else

… else

val_n;

Ejemplo:

MC. RODRIGO LUCIO MAYA RAMIREZ

WITH/SELECT

La asignación condicional (WHEN/ELSE), También se puede hacer mediante la sentencia de asignación selectivaWITH/SELECT

Por su ejecución en paralelo es similar a un CASE

Se pueden dar problemas de memoria implícita 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 expresión 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 número determinado de veces

*etiqueta:+ FOR índice IN rango’inf TO rango’sup LOOP

secuencia de sentencias

END LOOP[etiqueta];

ejemplo:bucle: FOR i IN 0 TO 5 LOOP

x(i) <= enable AND w(i+2);y(0, i) <= w(i);

END LOOP bucle;

MC. RODRIGO LUCIO MAYA RAMIREZ

WHILE-LOOP

El bucle se repite mientras la condición que haya después del while sea verdadera

[etiqueta:] WHILE condición LOOP

secuencia de sentencias

END LOOP[etiqueta];

ejemplo:

lazo1:WHILE (i < 10) LOOP

WAIT UNTIL clk'EVENT AND clk='1';

END LOOP lazo1;

LOOP

El bucle se repite infinitamente

[etiqueta:]LOOPsecuencia de sentencias

END LOOP[etiqueta];

ejemplo:lazo1: LOOP

a <= c and b;END LOOP lazo1;

La única sentencia que deja romper el bucle es EXIT

MC. RODRIGO LUCIO MAYA RAMIREZ

EXIT

Detiene la ejecución en ese instante y saledel bucle.

Si hay varios bucles anidados, sale dedonde se encuentre la instrucción o biendel bucle que se especifica en la etiqueta.

Solamente puede aparecer dentro de unasentencia LOOP.

exit [etiqueta] [when condición];

Ejemplo:

--Interrumpe el FOR y sigue por el WHILE

termina: WHILE a< 100 LOOP

---sentencias

sigue: FOR n IN 0 TO 100

---sentencias

EXIT termina WHEN n=a;

END LOOP sigue;

END LOOP termina;

Cuando existen bucles anidados, sale delmás interno, o bien, de aquel que tiene laetiqueta que sigue al EXIT.

NEXT

En VHDL se pueden crear bucles infinitos

[etiqueta] loopsecuencia de sentencias

End loop [etiqueta];

Los bucles pueden tener una condición de salida.

next [etiqueta] [when condición];

Ejemplo:

--Interrumpe el FOR y sigue por el WHILEtermina: WHILE a< 100 LOOP---sentencias

sigue: FOR n IN0 TO100---sentencias

NEXT termina WHEN n=a;END LOOP sigue;

END LOOP termina;

MC. RODRIGO LUCIO MAYA RAMIREZ

WAIT

Espera a que ocurra una condición

WAIT UNTIL condición;WAIT UNTIL e1=‘1’ and e2=‘0’;

Espera a que cambie alguna señal de la lista de señales

WAIT ON lista_señales;

WAIT ON e1,e2,clk;

Espera un cierto tiempo

WAIT tiempo;

WAIT 25ns;

Espera indefinidamente

WAIT

NULL

No realiza función alguna. Pasa laejecución a la siguiente sentenciasecuencial.

Útil en sentencias CASE cuando no sequiere realizar ninguna acción paraalguna de las elecciones.

Sintaxis:

[etiqueta:] NULL;

MC. RODRIGO LUCIO MAYA RAMIREZ

GENERATE

Esta sentencia concurrente permite reducir eltamaño del código de aquellas estructuras que serepiten considerablemente.

Sintaxis:

etiqueta: FOR identificador IN range GENERATE

(sentencias concurrentes)

END GENERATE;

etiqueta: IF condición 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 característica asociada a un elemento(tipo de dato, señal, entidad,…) que proporciona información adicional.

Atributo ≠Valor

Un objeto tiene un solo valor y puede tener múltiples 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 señales

DELAYED(t). Valor de la señal retrasada t unidades de tiempo.

STABLE(t), verdadero si la señal permanece invariable durante t unidades de tiempo.

QUIET(t), verdadero si la señal no ha recibido ninguna asignación en t unidades de tiempo.

TRANSACTION, tipo bit, a ‘1’cuando hay una asignación a la señal.

EVENT, verdadero si ocurre un cambio en la señal en el paso de simulación.

ACTIVE, verdadero si ocurre una asignación a la señal en el paso de simulación.

LAST_EVENT, unidades de tiempo desde el último evento.

LAST_ ACTIVE, unidades de tiempo desde la última asignación.

LAST_VALUE, valor anterior de la señal.

DRIVING, verdadero si el proceso actual determina el valor de la señal.

DRIVING_VALUE, valor que toma la señal tras el proceso.

MC. RODRIGO LUCIO MAYA RAMIREZ

Atributos

MC. RODRIGO LUCIO MAYA RAMIREZ

Resumen: Estilos de descripción

Independiente del nivel deabstracción, existen tres estilos dedescripción de una arquitectura:

Comportamiento (Behavioral)

Transferencia entre registros o flujode datos (Data Flow)

Estructural (Structural)

En VHDL un sistema puede mezclardiferentes estilos a la hora de describirsus diferentes arquitecturas.

1. Comportamiento (Behavioral).

En este estilo de descripción semodela la funcionalidad por medio delos recursos algorítmicos del lenguaje.

Se describe el algoritmo que refleja elcomportamiento de dichocomponente.

También se le suele llamar estiloalgorítmico o secuencial.

2. Transferencia entre registros (RTL) o flujo de datos(Data Flow).En este estilo de descripción se especifican los flujosde datos del sistema y la interconexión entre suscomponentes.

El proceso de descripción se realiza por medio defunciones lógicas, que se ejecutarán de formaconcurrente

3. Estructural (Structural).En este estilo de descripción se definen o instanciantodas las partes del sistema y sus interconexiones.

Resulta muy útil cuando se quiere aprovechar diseñoscompilados con anterioridad y que se encuentranalmacenados en bibliotecas de componentes.La instrucción concurrente fundamental utilizadadentro de una arquitectura RTL es la de COMPONENT

COMPONENT nombre_componentePORT( nombre_puerto: tipo_puertotipo_dato;

nombre_puerto: tipo_puertotipo_dato;...

);END COMPONENT;

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripción

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

Declaración de la entidad (entity)

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripción

1. Descripción de comportamiento o algorítmica (Behavioral)

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripción

3. Descripción estructural (Structural)

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripción

MC. RODRIGO LUCIO MAYA RAMIREZ

4.1 Sistemas combinacionales

4.2 Sistemas secuenciales

4.3 Maquinas de Estado

4.7 Aplicaciones usando la tarjeta Spartan 3E

UNIDAD 4: Diseño con VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ

Modelado combinacional

El modelado de sistemas combinacionales esmuy sencillo, puesto que en todo momento lassalidas sólo dependen del estado actual de lasentradas, es decir, el circuito no tiene memoria.

Un circuito combinacional puede tener multitudde entradas y salidas, por lo tanto:

•Necesitar miles o millones de términoscanónicos para describirlo matemáticamente.

•Tablas de verdad que resultan inmanejables.

La clave para el desarrollo de estos sistemas esel pensamiento estructurado

•Un sistema complejo se concibe como unconjunto de subsistemas más pequeños, cadauno de los cuales tiene una descripción mássencilla.

Estos bloque combinacionales constituyen lasestructuras básicas con las que se construyen lossistemas procesadores

• Multiplexores, decodificadores, comparadores,sumadores, etc. …

MC. RODRIGO LUCIO MAYA RAMIREZ

Descripción VHDL de sistemas combinacionales

Para describir circuitos combinacionalesutilizaremos sentencias de asignaciónconcurrentes y procesos.Sentencias de asignación concurrentes. Vanfuera del proceso. Esto se debe a que en unadeclaración concurrente no importa el orden enel que se escriban las señales, ya que elresultado para una determinada función sería elmismo. Se utilizarán tres tipos de sentencias deasignación concurrentes:

Sentencias de asignación simples, por ejemplo:salida1 <= A and B;

•Sentencias de asignación condicionales, por ejemplo:

salida2 <= A when S = ‘1’elseB;

•Sentencias de selección, por ejemplo:with S select

salida3 <= ‘1’ when “00”;‘0’when others;

Siempre hay que evitar la realimentación combinacional, ya que esto modela elementos de memoria asíncronos.

Es decir, hay que evitar que una misma señal aparezca en el lado izquierdo y en el lado derecho de la sentencia de asignación:

Y <= Y nand X;

Procesos. Se debe respetar las siguientes reglas:•Si una señal es leída en el interior de unproceso, es decir, aparece en el lado derechode una sentencia de asignación o en unacondición, debe aparecer en su lista desensibilidad.

•Si a una señal se le asigna un valor de formacondicional (con sentencias if o case) nosdebemos asegurar que no existencondiciones para las cuales el valor de laseñal no se ha definido en el código.

•En VHDL las señales mantienen su valorhasta que se les asigna uno nuevo; por lotanto, si para una señal dada, su valor estáindefinido, el compilador sintetiza un latch(biestable) que almacena la señal.

MC. RODRIGO LUCIO MAYA RAMIREZ

Multiplexores

Circuitos que tienen n entradas dedatos y una salida de datos, por lotanto necesitan m entradas deselección, donde m es:

Habitualmente también poseen unaentrada de habilitación

La función f que describe elcomportamiento de un multiplexor dedos entradas (I0, I1) , una salida y unaentrada de selección (S), se puededescribir 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 lógico con n entradas y m salidas, donde m es

Podemos encontrar decodificadores con entrada de habilitación, 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 lógico con n entradas ym salidas, donde m es

Habitualmente también poseen unaentrada de habilitación, pueden seractivos 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

Lógica Secuencial

Es necesario conocer el tipo dedescripción concreto a realizar paraque se reconozca un elementosecuencial

Es obligado el uso de procesos(excepto latches), y recomendable queincluyan lista de sensibilidad

Diferencia entre variables y señales

Aconsejable incluir siempre un resetglobal que aplique un valor deinicialización

• entity latch is

• port (a, b: in std_logic;

• d: out std_logic);

• end latch;

• architecture l_a of latch is

• begin

• process (a,b)

• begin

• if b=’1’ then d <= a; end

if;

• end process;

• 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 método más habitual de describirsistemas síncronos

Los dispositivos lógicos incluyenregistros activos por flanco(generalmente de tipo D)

Existen varias formas de especificar lallegada de un flanco:

Descripción genérica

• 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;

rising_edge(reloj)

if reloj’event and reloj=‘1’

if reloj’event and reloj=‘1’ and reloj’last_value=‘0’

MC. RODRIGO LUCIO MAYA RAMIREZ

No emplear más condiciones else ó elsif en la misma sentencia if..then..else después de la condición deevaluación del reloj

En la misma evaluación if del reloj no se deben comparar otras señales 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 más if dentro de ella

Sólo se puede incluir una evaluación de flanco por proceso: varios relojes varios procesos

En comparaciones múltiples, emplear la sentencia case

No utilizar relojes derivados, alternativamente, emplear habilitación 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

Módulos funcionales específicos

En sistemas complejos es necesaria una correcta partición del diseño (Top-Down)

Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas)

Aconsejable emplear módulos del fabricante (generadores automáticos, módulos IP, ...)

Consultar documentación del software de síntesis Herramientas y atributos especiales

Módulos específicos usuales: Multiplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ...

Necesaria la utilización del tipo std_logic ó std_ulogic que define el estado 'Z‘

Basta con incluir una condición en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia

Puertas triestado

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 descripción 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

Máquinas de estados

Es necesaria una descripción específica con definición de un tipo enumerado

Hay que hacer una división de la descripción en dos procesos distintos:

1. Cambio síncrono de estado

2. Evaluación 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 tamaño de la memoria esreducido, ésta puede implementarsemediante recursos lógicos comunes(funciones lógicas y registros)

Habitualmente, existen en hardwareestructuras regulares que lasimplementan y donde se sintetizan sila descripción VHDL es apropiada

MC. RODRIGO LUCIO MAYA RAMIREZ

Memorias

En el caso de RAM, es necesario comprobar que el dispositivo

incorpora este

recurso lógico