1.22k likes | 1.65k Vues
En este curso-taller se aborda uno de los ms extendidos lenguajes de descripcin de hardware, el VHDL, sus utilidades y aplicaciones y las herramientas y metodologas para sintetizar sistemas digitales en FPGAs, que son los dispositivos programables ms ampliamente usados para generar tanto prototi
E N D
7. Lenguajes de descripcin de hardware (HDLs) Estos lenguajes fueron desarrollados para hacer frente a la creciente complejidad de los diseos.
Se puede hacer una analoga con los que se pueden llamar lenguajes de descripcin de software.
Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrnicos discretos.
Se utilizan en la fase de diseo
Necesidad de Simulador lgico
Herramienta necesaria para reproducir el comportamiento del sistema modelado
Permite la verificacin del sistema diseado.
Actualmente existen herramientas software que permiten pasar de dichas descripciones a diseos a nivel de compuertas: SNTESIS
8. Dominios descriptivos y niveles de abstraccin Dominios descriptivos:
Comportamiento
Se realiza la funcin sin informacin de cmo se hace
Estructural
Los bloques se conectan mediante interconexiones (netlist o esquemas)
Fsico
Localizacin y propiedades fsicas reales
9. Dominios descriptivos y niveles de abstraccin Niveles de abstraccin:
Circuito
Valores continuos, todo es electrnica, tiempo continuo
Lgico
Valores lgicos (T,F), slo computacin, tiempo continuo
RT (RegisterTransfer)
Palabras con valores discretos, control y procesamiento, tiempo discreto
Algortmico
Estructuras abstractas, dependencias en lugar de tiempo
Sistema
Relaciones entre subsistemas, sncronos y protocolos
10. Dominios descriptivos y niveles de abstraccin Medidas:
Circuito
Tiempo de subida y bajada, consumos rea
Lgico
Tiempo de conmutacin, skew, rea equivalente
RT
Tiempo de ciclo, mrgenes, compuertas equivalentes
Algortmico
Latencia, cadencia de datos, nmero de mdulos
Sistema
Ancho de banda, MIPS.
11. Dominios descriptivos y niveles de abstraccin Transiciones:
Sntesis/Anlisis
Comportamiento ? estructural
Optimizacin
Mejora de una descripcin sin variar el nivel de abstraccin
Generacin/Extraccin
Estructural ? fsico
Refinamiento/Abstraccin
Bajar/Subir el nivel de abstraccin en el mismo dominio
12. Niveles de diseo y dominios de representacin
VHDL: VHSIC, Hardware Description Language
VHSIC: Very High Speed Integrated Circuits
13. Lenguajes de descripcin de hardware (HDLs). Sntesis lgica Sntesis lgica:
Convierte una descripcin de un sistema digital mediante un HDL en una implementacin tecnologca.
Descripcin HDL:
library ieee;
use ieee.std_logic_1164.all;
entity puertas is
port ( A, B, C : in std_logic;
Y: out std_logic
);
end puertas;
ARCHITECTURE a of puertas is
begin
Y <= (A and B) or C;
end a;
14. Ventajas del uso de HLDs Soportan tres estilos de descripcin bsicos:
DESCRIPCIN COMPORTAMENTAL (behavioral)
DESCRIPCIN DE FLUJO DE DATOS (data-flow)
DESCRIPCIN ESTRUCTURAL (estructural)
Un diseo puede ser descrito con una combinacin de los tres estilos.
El lenguaje es independiente de la tecnologa:
El mismo modelo puede ser sintetizado en libreras de distintos vendedores.
Reduccin de la dependencia con el fabricante de ASICs, ya que la portabilidad a otra tecnologa es mucho ms rpida.
Reutilizar el diseo en componentes tan distintos como ASICs o FPGAs con un esfuerzo mnimo.
15. Ventajas del uso de HLDs Se puede verificar la funcionalidad del diseo muy pronto en el proceso de diseo.
La simulacin del diseo a tan alto nivel, antes de la implementacin a nivel de compuertas, permite probar la arquitectura y rectificar decisiones en las primeras fases de diseo, con un esfuerzo mucho menor que si se realizase en fases posteriores.
Sencillez
Como la descripcin se centra ms en la funcionalidad que en la implementacin, resulta ms sencillo para una persona comprender qu funcin realiza el diseo a partir de una descripcin HDL que a partir de un esquemtico de interconexin de compuertas
Ahorro de tiempo
Facilita las correcciones en el diseo debidas a fallos de diseo o cambio de especificaciones.
La existencia de herramientas comerciales automticas (sintetizadores RTL) que permiten crear descripciones gate-level a partir de los modelos a nivel RTL
begin
Y <= (A and B) or C;
end a;
16. Ventajas del uso de HLDs Los HDL tienen elementos que permiten el diseo a gran escala, de forma fcil; por ejemplo, componentes, funciones, procedimientos, paquetes.
El lenguaje soporta metodologas de diseo diferentes: top-down, bottom-up, o mixtas.
La propia descripcin en el lenguaje de alto nivel sirve como especificacin del comportamiento del sistema a disear (tanto a nivel funcional como las restricciones temporales), y la interface con el resto del sistema.
Los modelos descritos con estos lenguajes, pueden ser verificados fcilmente y de forma precisa por simuladores definidos en base a estos HDL.
El lenguaje puede ser usado como un medio de intercambio entre los fabricantes de ASICs y los usuarios de herramientas CAD.
El lenguaje soporta jerarqua
Un sistema digital puede ser modelado como un conjunto de componentes interconectados.
A su vez cada componente puede ser modelado como un conjunto de subcomponentes.
17. Ventajas del uso de HLDs El modelo, a travs de los atributos, puede contener informacin del diseo en s mismo, no solo de la funcionalidad: por ejemplo, informaciones tales como el rea y velocidad.
Soporta modelos de tiempos sncronos y asncronos.
Posibilidad de implementar distintas tcnicas de modelado digital (descripciones de mquinas de estados finitos (FSM), descripciones algortmicas, redes de Petri, y ecuaciones Booleanas
El lenguaje es pblico y "not propietary" (especialmente en el caso del VHDL).
Es un estndar ANSI e IEEE; por lo tanto, los modelos descritos en estos lenguajes (VHDL o VERILOG) son totalmente portables.
La capacidad de definir tipos de datos sofisticados, suministra la potencia de describir y simular nuevos diseos a un nivel de abstraccin en el cual an no se barajan detalles de la implementacin
Los genricos y atributos facilitan la descripcin de modelos parametrizables.
18. Inconvenientes del uso de HDLs Supone un esfuerzo de aprendizaje, ya que prcticamente se puede considerar como nueva metodologa.
Necesaria la adquisicin de nuevas herramientas:
Simuladores
Sintetizadores de HDL, teniendo que mantener el resto de las herramientas para otras fases del diseo.
El uso de estos lenguajes hace que involuntariamente se pierda un poco de control sobre el aspecto fsico del diseo, dndole una mayor importancia a la funcionalidad de dicho diseo.
19. Lenguajes de Descripcin de Hardware. En la actualidad se utilizan fundamentalmente VHDL, Verilog y SystemC . Otro HDL, el UDI/L se utiliza exclusivamente en Japn.
VHDL (Very High Speed Integrated Circuit Hardware Description Language). Nace como proyecto del Departamento de Defensa (DoD) de EEUU (ao 82) para disponer de una herramienta estndar, independiente para la especificacin (modelado y/o descripcin) y documentacin de los sistemas electrnicos. El IEEE lo adopta y estandariza.
Verilog: Software de la firma Gateway y posteriormente de Cadence. Estndar industrial hasta que apareci el VHDL como estndar IEEE. En 1990 Cadence lo hace pblico y el IEEE lo estandariza en 1995.
SystemC: es una extensin del C++, que utiliza unas bibliotecas de clase para describir y simular circuitos digitales. Se public en 1.999 .
Diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripcin de hardware" cada uno con sus peculiaridades, buscando una solucin a los problemas que presentaba el diseo de los sistemas complejos.
Ejemplos:
IDL desarrollado por IBM ,
TI - HDL de Texas Instruments,
ZEUS de General Electric,
prototipos de universidades
20. 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
21. Para qu sirven los HDL?
Para generar documentacin, siempre y cuando los modelos de los circuitos estn bien comentados.
Entity bit8tobcd is
Port( clk: in std_logic;--reloj del sistema, para dividir
rst: in std_logic;
cuenta: out std_logic_vector(1 downto0);--para depurar
bitin: in std_logic_vector(7 downto0); --8 bits de entrada
seg: out std_logic_vector(6 downto0);--tiempo a iluminar
ctrlD: out std_logic_vector(3 downto0; --ctrl de los nodos
bcd: out std_logic_vector(15 downto0)--para depurar
);
End bit8tobcd;
Para crear bancos de prueba (test- bench), es decir, crear los estmulos y ver los resultados durante la simulacin.
22. Para qu sirven los HDL? Los "Test Bench" pueden ser escritos en el mismo lenguaje que con el que han sido modelados los diseos (HDL).
Esto permite un mejor manejo del modelo, ya que se puede asociar el modelo a sus estmulos de simulacin.
No limitamos el uso de dichos estmulos a un determinado simulador, pudiendo ser reutilizados dichos estmulos aunque se use un simulador distinto.
Los retardos de propagacin y limitaciones temporales, pueden ser descritos con estos HDL
24. Dispositivos Lgicos Programables
Los dispositivos actuales (CPLD y FPGAs) tienen una capacidad lgica de hasta millones de compuertas, incluyen interfaces programables para varios estndares de interface elctrica y tienen bloques de funciones especiales embebidos entre la lgica programable tales como memoria, multiplicadores o CPUs completas
Esta gran capacidad y variedad de los dispositivos los hace sumamente tiles a la hora de crear prototipos, desarrollo rpido de nuevos productos, para los productos que deben ser reconfigurables por naturaleza o productos que se producen en bajos volmenes y para los cuales no es econmicamente viable crear un integrado a medida.
Los dispositivos lgicos programables son circuitos integrados digitales que no tienen una funcin predefinida por el fabricante. Su funcin puede ser definida (o programada) por el usuario.
Debido a la gran capacidad lgica que tienen los dispositivos modernos, sistemas completos pueden desarrollarse sobre un solo circuito integrado.
Esto da lugar a las denominaciones Systemona-Programmable Chip, o SoPC (sistema sobre un circuito integrado programable) y System-on-a- Reprogammable Chip (SoRC).
25. Evolucin de los Primeros Dispositivos Lgicos Programables
Los primeros dispositivos lgicos programables fueron las memorias PROM.
Para ello se utilizan como entradas las lneas de direccin a la memoria. De esta manera la memoria provee una tabla de decodificacin completa de las entradas, y puede utilizarse para implementar cualquier funcin lgica combinacional.
Los primeros dispositivos diseados especficamente para implementar funciones digitales programables fueron los PLA, introducidos al mercado en la dcada de 1970 por Philips.
La base terica de estos dispositivos es que cualquier ecuacin lgica puede reducirse a una suma de productos.
El corazn electrnico de estos dispositivos consiste en un bloque que permite negar las entradas y dos niveles de compuertas: un nivel de compuertas AND y un nivel OR. Mediante fusibles pueden programarse las interconexiones entre las entradas y la lgica.
26. PAL
27. GAL Los dispositivos denominados GAL son un poco mas complejos que los PAL mencionados anteriormente.
Incluyen un nivel de lgica AND a la entrada y luego un bloque lgico denominado macrocelda a la salida, en reemplazo del nivel OR.
La denominacin GAL fue utilizada en principio por Lattice, y luego licenciada a otros fabricantes.
La macrocelda de estas GAL se denomina OLMC, por "Output Logic Macro Cell".
28. CPLDs
Los CPLDs son dispositivos que combinan varios bloques lgicos similares a las PAL o GAL con una matriz de interconexin programable.
Estos dispositivos se fabrican con distintas capacidades para adaptarlos a las necesidades del usuario. Como ejemplo, la familia MAX7000 de alto rendimiento de Altera se manufactura en versiones desde 32 hasta 512 macroceldas, con 36 a 212 entradas/salidas segn el dispositivo y empaquetamiento que se elija.
29. CPLDs Como se de las figura, estos dispositivos incluyen adems de las macroceldas, un arreglo de interconexin programable (PIA), una red de distribucin de reloj dedicada y bloques de entrada salida que permiten interfaces compatibles con diferentes estndares elctricos.
Los bloques lgicos AND y OR estn ambos incluidos en la macrocelda del dispositivo.
30. FPGAs
La arquitectura de una FPGA consiste en arreglos de bloques lgicos que se comunican entre si a travs de canales de conexin verticales y horizontales.
La principal diferencia entre las FPGA y CPLDs es que en general los bloques lgicos de las FPGA no implementan la lgica usando compuertas sino con generadores de funciones.
En la siguiente seccin se estudiar en mayor detalle la arquitectura de una FPGA tpica.
31. Elementos del FPGA
32. Bloque Lgico Programable Todas las FPGA tienen algn tipo de bloque lgico programable. Este es el corazn de la FPGA, y permite implementar las diferentes funciones lgicas.
Cada CLB esta compuesto por dos bloques iguales denominados slices. Cada "slice" contiene dos generadores de funciones y un multiplexor MUXF5. El multiplexor combina los resultados de los generadores de funciones dentro de cada "slice" del CLB.
Las dos "slices" estn unidas por un multiplexor MUXF6, que puede seleccionar la salida de una u otra slice hacia la salida del CLB. Esto permite implementar cualquier funcin de 6 entradas, un multiplexor de 8:1 o determinadas funciones lgicas de hasta 19 entradas. Adems de poder implementarse lgica combinacional, cada slice contiene recursos para implementar circuitos secuenciales y operaciones aritmticas eficientes.
33. CLBs
34. Bloque de Entrada / Salida Las interfaces de entrada-salida son otro de los componentes particulares que tienen las FPGAs. La familia de FPGAs Spartan IIe de Xilinx, por ejemplo, divide las entradas/salidas del integrado en bancos que se pueden configurar para tener una interface con lgica de diferentes estndares elctricos de manera independiente.
Los bancos se configuran aplicando diferentes tensiones de alimentacin a los pines denominados VccO y VREF.
Al utilizar diferentes valores de VccO para los distintos bancos se podr tener un sistema con interface a diferentes familias lgicas dentro de la misma FPGA. Las entradas de reloj estn asociadas a diferentes bancos de entrada-salida, para permitir que haya diferentes dominios de reloj con interfaces elctricas diferentes.
35. Bloque de Entrada / Salida Adems de la tensin VccO, para varios de las interfaces lgicas debe configurarse la tensin de referencia VREF y agregarse resistencias de terminacin sobre la plaqueta en las entradas-salidas de la FPGA. Cada bloque de entrada-salida tiene una resistencia de pull-up y pull - down configurables que permiten fijar el valor lgico mediante programacin.
Los bloques de entrada-salida de muchas FPGAs tienen elementos de almacenamiento integrados que permiten controlar mejor los tiempos de propagacin entre los pines del integrado y la lgica interna.
Adems cada bloque de entrada-salida cuenta con buffers programables que pueden configurarse para tres estados y colocar la salidas de la FPGA en alta impedancia (estado Z).
36. Bloque de Control de Reloj El sistema de control del reloj consiste en bloques de control integrados a la red de distribucin de reloj.
La red de distribucin de reloj en las FPGA asegura retardos parejos a todos los bloques lgicos de la FPGA.
Cada fabricante utiliza una arquitectura diferente para el control y distribucin de reloj.
La familia Spartan IIe de Xilinx tiene bloques especficos para control de reloj denominados DLL (Delay Locked Loop).
Estos bloques sincronizan el reloj interno al reloj externo del sistema, controlan el desplazamiento de fase entre los relojes, sincronizan los diferentes dominios de reloj y aseguran un retardo de distribucin del reloj pareja para la lgica interna de la FPGA.
37. Bloque de Control de Reloj
La familia Stratix de Altera tiene los bloques de control de reloj.
Estos bloques (Enhanced PLL) permiten controlar la fase y frecuencia del reloj, el sistema de distribucin de reloj y el estndar elctrico de interface entre otras cosas
38. Memoria Varias familias de FPGA contienen bloques de memoria embebida integrados con la lgica programable.
En general estos bloques bsicos de memoria pueden utilizarse en diferentes configuraciones para generar RAMs y ROMs de diferentes tamaos.
Adems de memorias embebidas, las FPGAs basadas en memoria SRAM pueden usar las tablas LUT de los bloques lgicos como memoria.
Este bloque se denomina BLOCK RAM y es una memoria de puerto dual (dual-port), que puede leerse y escribirse al mismo tiempo.
Estos bloques de memoria pueden usarse como memorias de puerto dual, puerto simple, RAMs o ROMs. Para entender la versatilidad de estos bloques de memoria, en la siguiente tabla se muestran las opciones de configuracin.
39. Memoria
Adems de poder configurar cada bloque, varios bloques pueden conectarse utilizando lgica externa para implementar memorias de otros tamaos y colas FIFO o FILO.
La figura muestra un bloque de memoria de Actel, que puede configurarse como memoria de puerto simple, dual o multi-puerto.
40. Bloque de Procesamiento de Seal Varias FPGA contienen bloques especficos que optimizan en hardware ciertas funciones especiales.
Las FPGA de la familia Stratix de Altera, por ejemplo, contienen uno o ms mdulos de procesamiento de seal entre los bloques de lgica programable de propsito general.
Estos bloques permiten desarrollar ciertas funciones especficas tpicas de las aplicaciones de procesamiento de seal de manera muy eficiente.
Pueden configurarse de varias maneras diferentes segn las necesidades del usuario. Como muestra la figura, este bloque contiene lgica para implementar operaciones de multiplicacin-acumulacin que requeriran de muchos recursos y ciclos de reloj si se implementaran utilizando lgica de propsito general.
Al igual que los otros bloques, los bloques especficos pueden interconectarse a los dems bloques utilizando la matriz de interconexin programable de la FPGA.
41. CPUs Embebidas La familia de FPGAs de Xilinx Virtex II-PRO contiene una CPU Power PC 405 de IBM y lgica de interconexin embebida dentro de lgica programable.
Esto permite utilizar toda la potencia de una CPU integrada con la flexibilidad de los perifricos diseados mediante lgica programable.
Los bloques especficos integrados en el silicio de las FPGAs se denominan "hardcores".
Altera ofrece la FPGA Excalibur que contiene un microcontrolador ARM922T integrado a un costado de lgica programable. La lgica programable del Excalibur puede ser de hasta un milln de compuertas.
El micro es de arquitectura RISC de 32 bits, y puede correr a una frecuencia de reloj de hasta 200 MHz .
Por otro lado tambin pueden disearse microcontroladores o procesadores usando solamente la lgica de configuracin de las FPGAs.
42. Matriz de interconexin Para poder implementar circuitos lgicos, los elementos lgicos presentados en las secciones anteriores no solo deben configurarse adecuadamente sino que tambin deben conectarse entre si.
La estructura de interconexin interna de un PLD consiste en un conjunto de alambres o trazas que pueden conectarse mediante elementos de conexin programables.
Las herramientas de localizacin e interconexin (place and route) son las encargadas de decidir en que elementos lgico se implementar la lgica diseada por el usuario y como deben programarse las interconexiones para que el diseo funcione segn las especificaciones de tiempo y retardos que se han definido.
43. Matriz de interconexin de las FPGA Spartan IIe de Xilinx Estas FPGA tienen dos niveles de interconexin. Por un lado tienen una interconexin de propsito general a travs de la matriz de interconexionado general o GRM por sus siglas en ingls.
Por otro lado contienen recursos de interconexin local.
Adems de los ya mencionados, las FPGA Spartan IIe contienen recursos de interconexin dedicados a seales de tres estados, de entrada-salida y recursos de interconexin global para la distribucin de reloj y seales especficas.
Los recursos de interconexin local, mostrados en la Figura 31, permiten hacer las conexiones entre los elementos internos de un bloque lgico o CLB, como las tablas de bsqueda (LUT), los flip-flop y las realimentaciones dentro del CLB.
44. Matriz de interconexin de las FPGA Spartan IIe
La mayor parte de las seales se conectarn a travs de la matriz general de interconexionado (GRM). Los elementos de la GRM se encuentran entre los CLB, en los canales de interconexin horizontales y verticales de la FPGA.
Permiten hacer la interconexin entre las trazas horizontales y verticales y hacia los CLB. A travs de ellos se configuran las conexiones entre CLBs no adyacentes y hacia los bloques de entrada/salida.
45. Granularidad de los Dispositivos Lgicos Programables (PLDs) La granularidad de un dispositivo lgico programable est dada por la funcionalidad bsica que provee cada bloque de configuracin lgica, o la relacin entre las celdas lgicas y los recursos de interconexionado.
Algunos parmetros para definir la granularidad de un dispositivo programable son:
Nmero de funciones que puede implementar cada celda lgica
Nmero de compuertas NAND de dos entradas equivalente por cada celda lgica
Nmero total de transistores por celda lgica
rea total normalizada de lgica configurable (relacin de rea lgica/rea de interconexionado)
Nmero de entradas y salidas por celda lgica
Algunos dispositivos tienen arquitecturas con celdas lgicas que pueden implementar funciones lgicas complejas, de varias entradas/salidas. A estas se las denomina de granularidad gruesa. Otras arquitecturas estn formadas por celdas bsicas que solo permiten implementar lgica muy simple. A estas se las denomina de granularidad fina.
46. Granularidad de los Dispositivos Lgicos Programables (PLDs) La granularidad de un dispositivo lgico influir en la manera que se implemente una funcin lgica dada, en su frecuencia mxima de funcionamiento y en la utilizacin que se hace del dispositivo.
Un bloque lgico grande puede implementar lgica ms compleja y por lo tanto se necesitan menos bloques para una funcin dada. Por otro lado cada bloque consume ms rea que puede desaprovecharse.
Una arquitectura de granularidad fina ser tpicamente ms densa y tendr menor retardo de interconexin entre celda y celda. Sin embargo, para una funcin dada, se debern conectar un mayor nmero de celdas.
En general la mejor granularidad depender de la aplicacin y las restricciones que hay sobre el diseo.
47. Granularidad de los Dispositivos Lgicos Programables (PLDs) Arquitecturas mixtas
Combinan celdas con granularidad fina y gruesa
Muchas veces tienen recursos de interconexin dedicados para cada tipo de celda
Ejemplo: ispXPGA de Lattice Semiconductors
Arquitecturas con granularidad fina
Celdas implementan funciones lgicas parciales de n entradas
Relacin de entradas a registros por celda muy baja (2/4 a 1)
Ejemplo: ProAsicPlus de Actel
Arquitecturas con granularidad media
Celdas implementan funciones completas de n entradas
Relacin de entradas a registros por celda de 6/8 a 1
Buenas para implementar mquinas de estado y lgica secuencial compleja
Ejemplo: Xilinx Spartan 3
Arquitecturas con granularidad gruesa
Celdas estilo PLD de arreglos de trminos
Relacin de entradas a registros de 32 a 1
Buenas para lgica combinacional como decodificacin de direcciones, funciones aritmticas,
Pobres para arquitecturas con colas (pipelines)
Ejemplo: Altera MAX 3000
48. Tecnologa de Configuracin de los PLDs La tecnologa utilizada para configurar los elementos de un PLD, ya sean los bloques lgicos o las interconexiones, dependen del fabricante y el dispositivo. Entre los dispositivos reprogramables, se destacan las tecnologas EEPROM, SRAM y Flash.
Los dispositivos que solo pueden configurarse una vez en general utilizan tecnologas de antifusible.
Cada tecnologa tiene sus ventajas y desventajas respecto a las otras.
49. Tendencias Actuales y Futuras Integracin con herramientas y otros software de desarrollo de mayor nivel, como son Matlab y herramientas para el diseo integrado de software y hardware. (HW-SW co-design).
Integracin del manejo de configuracin de FPGAs con las herramientas de diseo de circuitos impresos (PCBs), para poder configurar el interconexionado interno del SoPC de manera integral con el conexionado hacia los componentes externos.
Instrumentos, tales como analizadores lgicos, que permiten observar la lgica de interna de las FPGA en tiempo real al mismo tiempo que se observan otras seales, externas a la FPGA.
Sistemas con aplicaciones que utilicen la reconfiguracin o reprogramacin de las FPGAs directamente en el producto final segn la necesidad del momento.
Integracin de bloques lgicos programables alrededor de lgica fija en ASICs o integrados estndar.
Desarrollo de FPGAs con mayor capacidad, ms velocidad, menos consumo de potencia y menor costo.
Integracin en hardware sobre las lgicas programables de bloques especficos como ALUs, componentes para procesamiento digital de seal, integracin con uP y uC, memorias, etc.
Integracin y mezcla entre FPGAs y circuitos integrados de propsito especfico (ASICs). Componentes que pueden pasar directamente de un prototipo sobre una FPGA a un ASIC sin esfuerzo de diseo adicional.
Cambios en las herramientas de software para tener mayor integracin entre los diferentes usuarios y en los distintos pasos del proyecto. Esto incluye el manejo de grupos de trabajo, el manejo de la propiedad intelectual, la documentacin de proyectos integrada a las herramientas de diseo, la transferencia de los diseos para FPGAs a ASICs, etc.
51. Historia
Surge a principios de los 80s del proyecto DARPA (del Departamento de Defensa de los EE.UU.) llamado VHSIC (Very High Speed Integrated Circuits)
Se utiliza como forma de describir circuitos integrados:
Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran ms complejos, y el coste de reponerlos cada vez era mayor, bsicamente porque no estaban correctamente documentados. VHDL naci como una manera estndar de documentar circuitos.
El uso de VHDL permiti comprobar que el tiempo de diseo de los circuitos se reduca, porque se podan crear directamente de su descripcin: utilidad de la sntesis.
En 1987 el trabajo se cedi a la IEEE, y a partir de ese momento es un estndar abierto.
VHDL: VHSIC Hardware Description Language
VHSIC: Very High Speed Integrated Circuits
52. Evolucin 1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estndar dentro del programa VHSIC.
1981: Woods Hole Workshop, reunin inicial entre el Gobierno, Universidades e Industria.
1983: Se concedi a Intermetrics, IBM y Texas Instruments el contrato para desarrollar VHDL.
1985: Versin 7.2 de dominio pblico.
1987: El IEEE lo ratifica como su estndar 1076 (VHDL-87).
1993: El lenguaje VHDL fue revisado y ampliado, pasando a ser estndar 1076 93 (VHDL-93).
2000:ltima modificacin de VHDL
53. VHDL: Caractersticas Generales VHDL: lenguaje orientado a la descripcin o modelado de Hardware similar a lenguajes de alto nivel de propsito general (ADA en especial): de ellos hereda:
Concepto de tipo de datos, con posibilidad de definir nuevos tipos
facilita la descripcin de circuitos con diversos niveles de abstraccin.
Sentencias de control de flujos (if, for while). Junto con la caracterstica anterior
potencia para desarrollar algoritmos.
Capacidad de estructurar el cdigo (subprogramas, funciones o procedimiento), permite afrontar algoritmos complejos.
Posibilidad de utilizar y desarrollar bibliotecas de diseo,
Incorpora conceptos especficos para el modelado del hardware, como concurrencia y ciclo de simulacin.
54. Estado actual y alternativa
En la actualidad el diseo mediante esquemas no es una alternativa realista en ningn proyecto, por ejemplo Gforce 4 tiene 65 M transistores y 800.000 lneas de cdigo Verilog.
La alternativa estndar es usar un HDL
Verilog: Costa Oeste de EEUU, para ASICs, menos verboso, ms parecido a C, menos expresivo.
VHDL: Costa Este y Europa, para FPGAs, ms descriptivo, ms parecido a PASCAL y ADA, ms expresivo.
El diseo se sintetiza a partir de un HDL, pero gran parte del diseo y la verificacin se realiza con lenguajes estndares C y Matlab
VHDL es el estndar para FPGAs en proyectos industriales de moderada complejidad.
55. Futuro? Los lenguajes de descripcin de hardware tambin tienen limitaciones:
Metodologa de diseo nueva, exige un cambio de mentalidad con respecto al Software
No permiten re usar cdigo SW para HW.
Poseen enorme reusabilidad intrnseca.
La decisin HW/SW se debe hacer antes de la codificacin
La simulacin es lenta, siempre hay que recurrir a una simulacin algortmica usando lenguajes SW
Como respuesta a esto, hay varias iniciativas para describir HW usando lenguajes de alto nivel, tipo SW
Handel-C, System-C
Forge (Java)
Superlog
56. Estructura de un diseo en VHDL
57. Elementos de descripcin VHDL Bibliotecas (Library)
Almacenan los elementos de diseo: tipo de datos, operadores, componentes, objetos, funciones,...
Esos elementos de diseo se organizan en Paquetes
Packages: son unidades de almacenamiento de elementos y tienen que hacerse visibles para poder ser utilizados .
Hay 2 bibliotecas que siempre son visibles por defecto: std (la standard) y work (la de trabajo) y que no es necesario declarar
Entidades (Entity)
Es el modelo de interfaz de un circuito 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.
58. Puertos de una entidad Cada una de las posibles conexiones se denomina PORT y consta de:
Un nombre, que debe ser nico dentro de la entidad.
Una lista de propiedades, como:
la direccin del flujo de datos, entrada, salida, bidireccional y se conoce como modo del puerto.
los valores que puede tomar el puerto: '0, '1' o (Z), etc ., los valores posibles dependen de lo que se denomina tipo de seal.
Los puertos son una clase especial de seales que adems aade el modo al tipo de seal
e0e2e1salida0salida1caja
59. Modos de un Puerto Indican la direccin y si el puerto puede leerse o escribirse dentro de la entidad.
IN: Una seal que entra en la entidad y no sale. La seal puede ser leda pero no escrita.
OUT: Una seal que sale fuera de la seal y no es usada internamente. La seal no puede ser leda dentro de la entidad.
BUFFER: Una seal que sale de la entidad y tambin es realimentada dentro de la entidad.
INOUT: Una seal que es bidireccional, entrada/salida de la entidad.
60. Estructura de un diseo en VHDL
61. Declaracin de entidad
62. Resumen: Entidad y Arquitectura La entidad se utiliza para hacer una descripcin "caja negra" del diseo, slo se detalla su interfaz
Los contenidos del circuito se modelan dentro de la arquitectura
Una entidad puede tener varias arquitecturas
Por ejemplo, la descripcin de comportamiento que ha hecho el diseador y el modelo post- layout obtenido despus de implementar el chip
63. Invariancias VHDL presenta ciertas invariancias que conviene conocer antes de su utilizacin.
Invariante a maysculas, es decir, dos expresiones iguales conteniendo maysculas y minsculas son idnticas.
Invariante a los espacios, es decir, dos expresiones iguales conteniendo ms o menos espacios son idnticas
Los comentarios van detrs de dos rayas --y convienen que sean claros para que las descripciones puedan ser fcilmente utilizadas por otras personas o por ti mismo.
VHDL es relativamente laxo con la utilizacin de parntesis, una buena idea es utilizar los parntesis de manera que una persona la pueda entender con facilidad
Cada asignacin termina con ;
Cada if tiene el correspondiente then
Cada if termina con el correspondiente endif
Si se necesita elseif se utilizar elsif
Cada case termina con el correspondiente end case
Cada loop termina con el correspondiente end loop
64. Identificadores Identificadores. Son las palabras que se utilizan para identificar a las funciones, seales, puertos, variables, etc. Es conveniente que dichas palabras proporcionen informacin suficiente para que la descripcin sea fcilmente reutilizable.
El identificador debe dar suficiente informacin para su uso .
El identificador puede ser tan largo como se quiera, pero un nombre demasiado largo es complicado de utilizar, y demasiado corto quiz proporcione poca informacin.
El identificador puede contener cualquier combinacin de las letras (A-Z y a-z) nmeros (0-9 ) y el sub-guin (_)
El identificador debe empezar por un carcter alfabtico.
El identificador no puede termina con el sub-guin (_)
65. Modelos de descripcin Comportamental o algortmico (behavioral).
Especifica cmo se comportan las salidas con respecto a las entradas.
No proporciona al sintetizador informacin de cmo ser el circuito, siendo ste el que lo determina.
La parte fundamental de este tipo de descripciones es el proceso (process)
Flujo de datos (dataflow).
Especifica el circuito como una representacin concurrente del movimiento de los datos a su travs, es decir, cmo circula la informacin
Estructural (structural). Describe la conexin entre distintos mdulos descritos previamente
66. Modelos de descripcin VHDL
Como hemos visto, la arquitectura (architecture), en VHDL describe la funcin que realiza una entidad (entity).
La arquitectura se compone de dos partes:
la parte declarativa en la que se encuentran las definiciones de las seales, funciones, tipos, procedimientos, etc.. a utilizar.
y el cuerpo de la descripcin, consistente en una sucesin de asignaciones concurrentes y procesos que modelan la entidad.
67. Concurrencia del hardware El hardware es concurrente, es decir, los circuitos coexisten en el tiempo y por lo tanto trabajan al mismo tiempo.
Este chip tiene tres compuertas que funcionan simultneamente
No se puede modelar con un lenguaje como C:
S1 = A and B;
S2 = C or D;
S3 = C xor D;
Las tres puertas funcional al mismo tiempo no una despus de la otra!
La solucin al problema anterior es que aunque la ejecucin sea secuencial, las asignaciones no tengan tiempo de ejecucin:
68. Sentencias concurrentes Caractersticas:
Se ejecutan de forma asncrona unas respecto de las otras en el mismo tiempo de simulacin.
El orden en que se escriban es indiferente, no siguen un orden de ejecucin predefinido.
No obstante conviene escribir el cdigo en el orden que mejor se pueda entender y mejor documente el diseo.
Sirven para especificar:
Interconexiones entre componentes.
Estructuras jerrquicas.
Estructuras regulares.
Transferencias entre registros.
69. process: elemento de diseo principal Un proceso describe el comportamiento de un circuito:
Cuyo estado puede variar cuando cambian ciertas seales
Utilizando construcciones muy expresivas: if..then..else, case, bucles for y while, etc
Y que adems puede declarar variables, procedimientos, etc...
70. Procesos Los procesos se disparan(su cdigo se ejecuta) cuando cambia alguna de las seales de su lista de sensibilidad.
Un proceso sin lista de sensibilidad es vlido, pero se activa con cualquier evento, no se asegura un comportamiento correcto.
Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrs de otra, pero sin dar lugar a que avance el tiempo durante su ejecucin.
El tiempo slo avanza cuando se llega al final del proceso.
Las seales modelan hilos del circuito, y como tales, slo pueden cambiar de valor si se deja que avance el tiempo.
Una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan en paralelo.
Esta es la manera que tiene VHDL de expresar la concurrencia inherente al hardware
71. La solucin VHDL a la concurrencia VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a la concurrencia
En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan concurrentemente
72. sentencias concurrentes
Asignacin simple
suma <= ope1 xorope2;
Para Seales y Puertos, el operador es <=, el lado izquierdo es el destino y el lado derecho la fuente.
OJO: fuente y destino tienen que ser del mismo tipo.
Para Variables el operador es :=
acarreo_intermedio:= ope1 and ope2;
WHEN/ELSE
Permite realizar asignaciones condicionales
salida <= a and b when c =1 else a or c;
73. WHEN/ELSE [etiqueta:] seal <= val_1 when condi_1 else
val_2 [whencondi_2] else
else
val_n;
Ejemplo:
74. WITH/SELECT La asignacin condicional (WHEN/ELSE), Tambin se puede hacer mediante la sentencia de asignacin selectiva WITH/SELECT
Por su ejecucin en paralelo es similar a un CASE
Se pueden dar problemas de memoria implcita si no se pone el ltimo when others.
75. WITH/SELECT
76. Dentro de los procesos: Descripciones secuenciales
77. IF
78. Ejemplo IF
79. CASE Sintaxis:
CASE expresin IS
WHEN caso1=>
secuencia sentencias1;
WHEN caso2 =>
secuencia sentencias2;
WHEN casoN=>
secuencia sentenciasN;
WHEN OTHERS =>
resto de casos;
END CASE;
80. FOR-LOOP Realiza un bucle un nmero determinado de veces
[etiqueta:] FOR ndice IN rangoinf TO rangosup LOOP
secuencia de sentencias
END LOOP[etiqueta];
81. WHILE-LOOP El bucle se repite mientras la condicin que haya despus del while sea verdadera
[etiqueta:] WHILE condicin LOOP
secuencia de sentencias
END LOOP[etiqueta];
ejemplo:
lazo1:WHILE (i < 10) LOOP
WAIT UNTIL clk'EVENT AND clk='1';
END LOOP lazo1;
82. EXIT Detiene la ejecucin en ese instante y sale del bucle.
Si hay varios bucles anidados, sale de donde se encuentre la instruccin o bien del bucle que se especifica en la etiqueta.
Solamente puede aparecer dentro de una sentencia LOOP.
exit [etiqueta] [when condicin];
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 del ms interno, o bien, de aquel que tiene la etiqueta que sigue al EXIT.
83. WAIT Espera a que ocurra una condicin
WAIT UNTIL condicin;
WAIT UNTIL e1=1 and e2=0;
Espera a que cambie alguna seal de la lista de seales
WAIT ON lista_seales;
WAIT ON e1,e2,clk;
Espera un cierto tiempo
WAIT tiempo;
WAIT 25ns;
Espera indefinidamente
WAIT
84. GENERATE Esta sentencia concurrente permite reducir el tamao del cdigo de aquellas estructuras que se repiten considerablemente.
Sintaxis:
etiqueta: FOR identificador IN range GENERATE
(sentencias concurrentes)
END GENERATE;
etiqueta: IF condicin GENERATE
(sentencias concurrentes)
END GENERATE;
85. Paquetes
86. Componentes
87. Atributos Un atributo es una caracterstica asociada a un elemento(tipo de dato, seal, entidad,) que proporciona informacin adicional.
Atributo ?Valor
Un objeto tiene un solo valor y puede tener mltiples atributos.
VHDL proporciona una serie de atributos predefinidos.
88. Atributos de rango de vectores.
89. Atributos de rango de vectores Loops
90. Atributos de las seales
DELAYED(t). Valor de la seal retrasada t unidades de tiempo.
STABLE(t), verdadero si la seal permanece invariable durante t unidades de tiempo.
QUIET(t), verdadero si la seal no ha recibido ninguna asignacin en t unidades de tiempo.
TRANSACTION, tipo bit, a 1cuando hay una asignacin a la seal.
EVENT, verdadero si ocurre un cambio en la seal en el paso de simulacin.
ACTIVE, verdadero si ocurre una asignacin a la seal en el paso de simulacin.
LAST_EVENT, unidades de tiempo desde el ltimo evento.
LAST_ ACTIVE, unidades de tiempo desde la ltima asignacin.
LAST_VALUE, valor anterior de la seal.
DRIVING, verdadero si el proceso actual determina el valor de la seal.
DRIVING_VALUE, valor que toma la seal tras el proceso.
91. Atributos
92. Resumen: Estilos de descripcin Independiente del nivel de abstraccin, existen tres estilos de descripcin de una arquitectura:
Comportamiento (Behavioral)
Transferencia entre registros o flujo de datos (Data Flow)
Estructural (Structural)
En VHDL un sistema puede mezclar diferentes estilos a la hora de describir sus diferentes arquitecturas.
1. Comportamiento (Behavioral).
En este estilo de descripcin se modela la funcionalidad por medio de los recursos algortmicos del lenguaje.
Se describe el algoritmo que refleja el comportamiento de dicho componente.
Tambin se le suele llamar estilo algortmico o secuencial.
93. Ejemplo de estilos de descripcin
Multiplexor de dos entradas de datos de un bit ( e0 y e1 ), una seal de salida ( y ) y seal de control ( sel )
94. Ejemplo de estilos de descripcin Descripcin de comportamiento o algortmica (Behavioral)
95. Ejemplo de estilos de descripcin 3. Descripcin estructural (Structural)
96. Ejemplo de estilos de descripcin
98. Modelado combinacional El modelado de sistemas combinacionales es muy sencillo, puesto que en todo momento las salidas slo dependen del estado actual de las entradas, es decir, el circuito no tiene memoria.
Un circuito combinacional puede tener multitud de entradas y salidas, por lo tanto:
Necesitar miles o millones de trminos cannicos para describirlo matemticamente.
Tablas de verdad que resultan inmanejables.
La clave para el desarrollo de estos sistemas es el pensamiento estructurado
Un sistema complejo se concibe como un conjunto de subsistemas ms pequeos, cada uno de los cuales tiene una descripcin ms sencilla.
Estos bloque combinacionales constituyen las estructuras bsicas con las que se construyen los sistemas procesadores
Multiplexores, decodificadores, comparadores, sumadores, etc.
99. Descripcin VHDL de sistemas combinacionales Para describir circuitos combinacionales utilizaremos sentencias de asignacin concurrentes y procesos.
Sentencias de asignacin concurrentes. Van fuera del proceso. Esto se debe a que en una declaracin concurrente no importa el orden en el que se escriban las seales, ya que el resultado para una determinada funcin sera el mismo. Se utilizarn tres tipos de sentencias de asignacin concurrentes:
Sentencias de asignacin simples, por ejemplo:
salida1 <= A and B;
Sentencias de asignacin condicionales, por ejemplo:
salida2 <= A when S = 1elseB;
Sentencias de seleccin, por ejemplo:
with S select
salida3 <= 1 when 00;
0when others;
Siempre hay que evitar la realimentacin combinacional, ya que esto modela elementos de memoria asncronos.
100. Multiplexores Circuitos que tienen n entradas de datos y una salida de datos, por lo tanto necesitan m entradas de seleccin, donde m es:
Habitualmente tambin poseen una entrada de habilitacin
La funcin f que describe el comportamiento de un multiplexor de dos entradas (I0, I1) , una salida y una entrada de seleccin (S), se puede describir mediante la tabla
Aplicando Karnaugh se obtiene:
101. Multiplexores
102. Multiplexores
103. Decodificadores
Es un circuito lgico con n entradas y m salidas, donde m es
Podemos encontrar decodificadores con entrada de habilitacin, activos por cero o activos por uno
104. Decodificadores
105. Decodificadores
106. Decodificadores
107. Decodificadores
108. Codificadores
Es un circuito lgico con n entradas y m salidas, donde m es
Habitualmente tambin poseen una entrada de habilitacin, pueden ser activos por cero o por uno
109. Codificadores
110. Codificadores
111. Codificadores
112. Lgica Secuencial Es necesario conocer el tipo de descripcin concreto a realizar para que se reconozca un elemento secuencial
Es obligado el uso de procesos (excepto latches), y recomendable que incluyan lista de sensibilidad
Diferencia entre variables y seales
Aconsejable incluir siempre un reset global que aplique un valor de inicializacin
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;
113. Inferencia de registros activos por flanco Es el mtodo ms habitual de describir sistemas sncronos
Los dispositivos lgicos incluyen registros activos por flanco (generalmente de tipo D)
Existen varias formas de especificar la llegada de un flanco:
Descripcin genrica
entity registro is
port (d, reset, preset, reloj: in std_logic;
q: out std_logic);
end registro;
architecture r_a of registro is
begin
process (d, reset, preset, reloj)
begin
if reset = 1 then q <= 0;
elsif preset = 1 then q <= 1;
elsif rising_edge(reloj) then q <= d;
end if;
end process;
end r_a;
114. No emplear ms condiciones else elsif en la misma sentencia if..then..else despus de la condicin de evaluacin del reloj
En la misma evaluacin if del reloj no se deben comparar otras seales o variables
La sentencia if del reloj no puede estar dentro de un bucle
La sentencia if del reloj no debe estar anidada, se pueden incluir ms if dentro de ella
Slo se puede incluir una evaluacin de flanco por proceso: varios relojes ? varios procesos
En comparaciones mltiples, emplear la sentencia case
No utilizar relojes derivados, alternativamente, emplear habilitacin de reloj
r_derivado <= not a and (b or c);
process (d, reset, preset, reloj, r_derivado)
begin
if reset = 1 then q <= 0;
elsif preset = 1 then q <= 1;
elsif rising_edge(reloj) then
if r_derivado = 1 then
q <= d;
end if;
end if;
end process;
end r_a;
115. Mdulos funcionales especficos En sistemas complejos es necesaria una correcta particin del diseo (Top-Down)
Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas)
Aconsejable emplear mdulos del fabricante (generadores automticos, mdulos IP, ...)
Consultar documentacin del software de sntesis ? Herramientas y atributos especiales
Mdulos especficos usuales: Multiplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ...
Necesaria la utilizacin del tipo std_logic std_ulogic que define el estado 'Z
Basta con incluir una condicin en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia
116. Para puertos bidireccionales la descripcin es similar a los triestado: Tipo inout
entity bidir is
port ( bid : inout std_logic ;
a, b, c, oe : in std_logic;
salida : out std_logic);
end bidir ;
architecture bidir_a of bidir is
signal interna1, interna2 : std_logic ;
begin
bid <= interna1 when oe = '1' else 'Z';
interna2 <= bid;
interna1 <= (a and b) nor c;
salida <= (c xor interna2) when oe='0' else 'Z';
end bidir_a ;
117. Mquinas de estados Es necesaria una descripcin especfica con definicin de un tipo enumerado
Hay que hacer una divisin de la descripcin en dos procesos distintos:
1. Cambio sncrono de estado
2. Evaluacin de condiciones para dirigirse a un estado
119. Ejemplo
120. Ejercicio Recordar:
Usar 2 procesos
Definir tipo de dato TYPE
121. Memorias Si el tamao de la memoria es reducido, sta puede implementarse mediante recursos lgicos comunes (funciones lgicas y registros)
Habitualmente, existen en hardware estructuras regulares que las implementan y donde se sintetizan si la descripcin VHDL es apropiada
122. Memorias En el caso de RAM, es necesario comprobar que el dispositivo
incorpora este
recurso lgico