1 / 122

SISTEMAS EMBEBIDOS

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

alexandria
Télécharger la présentation

SISTEMAS EMBEBIDOS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    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

More Related