Documente Academic
Documente Profesional
Documente Cultură
OBJETIVO DEL CURSO: Disear e implementar sistemas digitales utilizando tcnicas modernas: Un Lenguaje de Descripcin de Hardware y Dispositivos Programables a si mismo se comprenda el diseo de sistemas mnimos, y se puedan sintetizar en un FPGA.
RESUMEN:
En este curso-taller se aborda uno de los ms extendidos lenguajes de descripcin de hardware, el VHDL, sus utilidades y aplicaciones y las herramientas y metodologas para sintetizar sistemas digitales en FPGAs, que son los dispositivos programables ms ampliamente usados para generar tanto prototipos como sistemas finales de aplicacin. El aprendizaje se refuerza con simulaciones y prcticas. Tambin se aborda el diseo de sistemas mnimos basados en un microprocesador, y la interconexin de stos con otros bloques digitales diseados en VHDL, y sintetizables en un FPGA. Se usan microprocesadores definidos en software y ambientes de desarrollo integrado.
UNIDAD 1
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.7.1 1.7.2 1.7.3
Qu son los HDLs? Diferencias con los Lenguajes de Software Ejemplos de HDLs VHDL Breve Resea Histrica de VHDL Diseo Digital con VHDL Metodologas de Diseo utilizando VHDL Funcional Arquitectural Fsico
UNIDAD 2:
2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.4.1
Lgica Programable SPLDs Caractersticas Arquitectura CPLDs Caractersticas Arquitectura FPGAs Caractersticas Aplicaciones y ventajas Diferentes fabricantes de FPGAs Arquitectura de los FPGAs de Xilinx Bloque Lgico Configurable (CLB) Bloque de Entrada-Salida (IOB) Matriz de Interconexiones
UNIDAD 3:
3.1 3.1.1 3.1.2 3.1.2.1 3.1.2.2 3.1.2.3 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.11.1 3.11.2 3.12
VHDL
Estructura de una descripcin en VHDL Entidad Arquitectura Descripcin Comportamental Descripcin Flujo de Datos Descripcin Estructural Elementos Lxicos Constantes y variables Tipos de Datos Escalares Datos del tipo Arreglo Estructuras de Ejecucin Concurrente Estructuras secuenciales Descripciones Comportamentales Descripciones Estructurales Bibliotecas Subprogramas Funciones Procedimientos Paquetes
MC. RODRIGO LUCIO MAYA RAMIREZ
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
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
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.
VHDL: VHSIC, Hardware Description Language VHSIC: Very High Speed Integrated Circuits
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
El hecho de realizar una sntesis lgica obliga a ciertas restricciones en la tarea de realizar las descripciones con HDLs.
C;
MC. RODRIGO LUCIO MAYA RAMIREZ
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.
DESCRIPCIN COMPORTAMENTAL (behavioral) DESCRIPCIN DE FLUJO DE DATOS (data-flow) DESCRIPCIN ESTRUCTURAL (estructural)
Reutilizar el diseo en componentes tan distintos como ASICs o FPGAs con un esfuerzo mnimo.
Un diseo puede ser descrito con una combinacin de los tres estilos.
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
El lenguaje tambin puede ser usado como medio de comunicacin entre diferentes herramientas CAD y CAE. Un programa de captura de esquemticos puede ser utilizado para generar descripciones HDL del diseo, lo cual puede ser usado como entrada a un simulador.
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.
Los HDL tienen elementos que permiten el diseo a gran escala, de forma fcil; por ejemplo, componentes, funciones, procedimientos, paquetes.
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.
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
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 .
Sirven para modelar circuitos, para expresar ideas Los modelos se pueden simular para comprobar que se corresponden con la funcionalidad deseada
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.
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
UNIDAD 2:
2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.4.1
Lgica Programable SPLDs Caractersticas Arquitectura CPLDs Caractersticas Arquitectura FPGAs Caractersticas Aplicaciones y ventajas Diferentes fabricantes de FPGAs Arquitectura de los FPGAs de Xilinx Bloque Lgico Configurable (CLB) Bloque de Entrada-Salida (IOB) Matriz de Interconexiones
MC. RODRIGO LUCIO MAYA RAMIREZ
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.
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
Esto da lugar a las denominaciones Systemona-Programmable Chip, o SoPC (sistema sobre un circuito integrado programable) y System-on-aReprogammable Chip (SoRC).
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.
PAL
Debido a las limitaciones en la velocidad de las conexiones programables y los problemas en el proceso de manufactura de las PLA, surgieron dispositivos con un solo nivel de lgica programable denominados PAL . Los PAL se basan en el mismo principio que las PLA, pero tienen un nivel de lgica AND programable mientras el nivel de lgica OR es fijo. Esto limita la cantidad de funciones que pueden definirse con un dispositivo dado, as que los fabricantes de PAL los ofrecan en una variedad de configuraciones para adecuarlos a las necesidades del usuario. Muchos PAL adems incorporaron registros sobre las salidas y realimentacin para implementar circuitos secuenciales.
GAL
Los dispositivos denominados GAL son un poco mas complejos que los PAL mencionados anteriormente. Incluyen un nivel de lgica AND a la entrada y luego un bloque lgico denominado macrocelda a la salida, en reemplazo del nivel OR. La denominacin GAL fue utilizada en principio por Lattice, y luego licenciada a otros fabricantes. La macrocelda de estas GAL se denomina OLMC, por "Output Logic Macro Cell".
Diagrama funcional de una GAL completa y de una macrocelda de un dispositivo GAL22V10 de Lattice Semiconductors.
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.
CPLDs
Macrocelda CPLD.
Como se de las figura, estos dispositivos incluyen adems de las macroceldas, un arreglo de interconexin programable (PIA), una red de distribucin de reloj dedicada y bloques de entrada salida que permiten interfaces compatibles con diferentes estndares elctricos. Los bloques lgicos AND y OR estn ambos incluidos en la macrocelda del dispositivo.
MC. RODRIGO LUCIO MAYA RAMIREZ
FPGAs
La arquitectura de una FPGA consiste en arreglos de bloques lgicos que se comunican entre si a travs de canales de conexin verticales y horizontales. La principal diferencia entre las FPGA y CPLDs es que en general los bloques lgicos de las FPGA no implementan la lgica usando compuertas sino con generadores de funciones.
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.
Esquema del bloque lgico programable (CLB) de una FPGA de la familia Spartan IIe de Xilinx.
MC. RODRIGO LUCIO MAYA RAMIREZ
CLBs
En esta figura se ven los generadores de funciones, compuesto por una tabla de entradasalida (LUT o Look-Up Table) de cuatro entradas y una salida. Estas tablas pueden implementar cualquier funcin lgica de cuatro entradas y una salida, as como tambin utilizarse como memorias distribuidas de 16 x 1 bit.
Las salidas de las LUT pasan a los bloques de control, que contiene lgica que permite optimizar funciones aritmticas. Los elementos que permiten implementar lgica secuencial son los elementos de almacenamiento que se ven sobre las salidas del slice. Estos pueden configurarse como flip-flops D con reloj o como latches controlados por nivel.
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.
Distribucin de los bancos de entrada/salida en una FPGA Spartan IIe
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).
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.
Red global de distribucin de reloj en la FPGA Spartan IIe
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
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.
MC. RODRIGO LUCIO MAYA RAMIREZ
Memoria
Adems de poder configurar cada bloque, varios bloques pueden conectarse utilizando lgica externa para implementar memorias de otros tamaos y colas FIFO o FILO. La figura muestra un bloque de memoria de Actel, que puede configurarse como memoria de puerto simple, dual o multi-puerto.
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.
Altera ofrece el microcontrolador Nios, de tecnologa RISC de 16 bits que puede utilizarse sobre varias de las FPGA de Altera. A este tipo de diseo se lo denomina "softcore", ya que a FPGA no tiene ningn bloque especfico para la CPU implementado sobre el circuito integrado. Hay muchos micros "softcore" pblicos y propietarios. Xilinx ofrece el Microblaze y Actel ofrecer un micro de la familia ARM.
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.
Adems, el interconexionado a este nivel provee conexiones a la matriz de interconexionado general y a los CLB adyacentes. Las conexiones a los CLB adyacentes permiten optimizar los diseos al evitar los retardos y la utilizacin de recursos de la matriz general de interconexionado.
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.
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
MC. RODRIGO LUCIO MAYA RAMIREZ
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.
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.
UNIDAD 3:
VHDL
3.1 3.1.1 3.1.2 3.1.2.1 3.1.2.2 3.1.2.3 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.11.1 3.11.2 3.12
Estructura de una descripcin en VHDL Entidad Arquitectura Descripcin Comportamental Descripcin Flujo de Datos Descripcin Estructural Elementos Lxicos Constantes y variables Tipos de Datos Escalares Datos del tipo Arreglo Estructuras de Ejecucin Concurrente Estructuras secuenciales Descripciones Comportamentales Descripciones Estructurales Bibliotecas Subprogramas Funciones Procedimientos Paquetes
MC. RODRIGO LUCIO MAYA RAMIREZ
Historia
Surge a principios de los 80s del proyecto DARPA (del Departamento de Defensa de los EE.UU.) llamado VHSIC (Very High Speed Integrated Circuits) Se utiliza como forma de describir circuitos integrados: Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran ms complejos, y el coste de reponerlos cada vez era mayor, bsicamente porque no estaban correctamente documentados. VHDL naci como una manera estndar de documentar circuitos. El uso de VHDL permiti comprobar que el tiempo de diseo de los circuitos se reduca, porque se podan crear directamente de su descripcin: utilidad de la sntesis. En 1987 el trabajo se cedi a la IEEE, y a partir de ese momento es un estndar abierto. VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits
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.
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.
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.
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
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
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.
Declaracin de entidad
La entidad se utiliza para hacer una descripcin "caja negra" del diseo, slo se detalla su interfaz
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
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
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 (AZ 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 (_)
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
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.
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!
S1 <= A and B; S2 <= C or D; S3 <= C xor D; El valor de S ser el correcto una vez que se hayan propagado los tiempos de retardo de las compuertas. No hay que olvidar que se trata de modelar circuitos reales, no virtuales, y las seales necesitan que transcurra el tiempo para tomar un valor
La solucin al problema anterior es que aunque la ejecucin sea secuencial, las asignaciones no tengan tiempo de ejecucin:
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.
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...
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.
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;
WHEN/ELSE
[etiqueta:] seal <= val_1 when condi_1 else val_2 [whencondi_2] else else val_n; Ejemplo:
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.
WITH/SELECT
IF
Ejemplo IF
CASE
Sintaxis: CASE expresin IS WHEN caso1=> secuencia sentencias1; WHEN caso2 => secuencia sentencias2; WHEN casoN=> secuencia sentenciasN; WHEN OTHERS => resto de casos; END CASE;
FOR-LOOP
Realiza un bucle un nmero determinado de veces *etiqueta:+ FOR ndice IN rangoinf TO rangosup LOOP secuencia de sentencias END LOOP[etiqueta]; ejemplo: bucle: FOR i IN 0 TO 5 LOOP x(i) <= enable AND w(i+2); y(0, i) <= w(i); END LOOP bucle;
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;
LOOP El bucle se repite infinitamente [etiqueta:]LOOP secuencia de sentencias END LOOP[etiqueta]; ejemplo: lazo1: LOOP a <= c and b; END LOOP lazo1; La nica sentencia que deja romper el bucle es EXIT
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; NEXT En VHDL se pueden crear bucles infinitos [etiqueta] loop secuencia de sentencias End loop [etiqueta]; Los bucles pueden tener una condicin de salida. next [etiqueta] [when condicin]; Ejemplo: --Interrumpe el FOR y sigue por el WHILE termina: WHILE a< 100 LOOP ---sentencias sigue: FOR n IN0 TO100 ---sentencias NEXT termina WHEN n=a; END LOOP sigue; END LOOP termina;
MC. RODRIGO LUCIO MAYA RAMIREZ
Cuando existen bucles anidados, sale del ms interno, o bien, de aquel que tiene la etiqueta que sigue al EXIT.
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; NULL No realiza funcin alguna. Pasa la ejecucin a la siguiente sentencia secuencial. til en sentencias CASE cuando no se quiere realizar ninguna accin para alguna de las elecciones. Sintaxis: [etiqueta:] NULL;
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;
Paquetes
Componentes
Atributos
Un atributo es una caracterstica asociada a un elemento(tipo de dato, seal, entidad,) que proporciona informacin adicional. Atributo Valor Un objeto tiene un solo valor y puede tener mltiples atributos. VHDL proporciona una serie de atributos predefinidos.
Atributos
Multiplexor de dos entradas de datos de un bit ( e0 y e1 ), una seal de salida ( y ) y seal de control ( sel )
1.
4.1 Sistemas combinacionales 4.2 Sistemas secuenciales 4.3 Maquinas de Estado 4.7 Aplicaciones usando la tarjeta Spartan 3E
Modelado combinacional
El modelado de sistemas combinacionales es muy sencillo, puesto que en todo momento las salidas slo dependen del estado actual de las entradas, es decir, el circuito no tiene memoria. Un circuito combinacional puede tener multitud de entradas y salidas, por lo tanto: Necesitar miles o millones de trminos cannicos para describirlo matemticamente. Tablas de verdad que resultan inmanejables. La clave para el desarrollo de estos sistemas es el pensamiento estructurado Un sistema complejo se concibe como un conjunto de subsistemas ms pequeos, cada uno de los cuales tiene una descripcin ms sencilla. Estos bloque combinacionales constituyen las estructuras bsicas con las que se construyen los sistemas procesadores Multiplexores, decodificadores, comparadores, sumadores, etc.
MC. RODRIGO LUCIO MAYA RAMIREZ
Siempre hay que evitar la realimentacin combinacional, ya que esto modela elementos de memoria asncronos.
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:
Multiplexores
Multiplexores
Decodificadores
Podemos encontrar decodificadores con entrada de habilitacin, activos por cero o activos por uno
Decodificadores
Decodificadores
Decodificadores
Decodificadores
Codificadores
Habitualmente tambin poseen una entrada de habilitacin, pueden ser activos por cero o por uno
Codificadores
Codificadores
Codificadores
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;
entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin d <= a when b=1; end l_a;
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;
No emplear ms condiciones else elsif en la misma sentencia if..then..else despus de la condicin de evaluacin del reloj En la misma evaluacin if del reloj no se deben comparar otras seales o variables La sentencia if del reloj no puede estar dentro de un bucle La sentencia if del reloj no debe estar anidada, se pueden incluir ms if dentro de ella Slo se puede incluir una evaluacin de flanco por proceso: varios relojes varios procesos En comparaciones mltiples, emplear la sentencia case No utilizar relojes derivados, alternativamente, emplear habilitacin de reloj
r_derivado <= not a and (b or c); process (d, reset, preset, reloj, r_derivado) begin if reset = 1 then q <= 0; elsif preset = 1 then q <= 1; elsif rising_edge(reloj) then if r_derivado = 1 then q <= d; end if; end if; end process; end r_a;
MC. RODRIGO LUCIO MAYA RAMIREZ
Puertas triestado
Necesaria la utilizacin del tipo std_logic std_ulogic que define el estado 'Z Basta con incluir una condicin en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia
architecture hab_b of hab is begin process (entrada, oe) begin if (oe = 1) then salida <= entrada; else salida <= Z; end if; end process; end hab_b;
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
Ejemplo
Ejercicio
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
Memorias
En el caso de RAM, es necesario comprobar que el dispositivo incorpora este recurso lgico