Post on 19-Sep-2018
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
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
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
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
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 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
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
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
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
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
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
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