MC. RODRIGO LUCIO MAYA RAMIREZ
Diseño Digital con VHDL
OBJETIVO DEL CURSO: Diseñar y programar circuitos secuenciales síncronos, estructurar sistemas digitales utilizando lenguaje VHDL, conocer y desarrollar los componentes que conforman las arquitecturas básicas de un procesador.
MC. RODRIGO LUCIO MAYA RAMIREZ
Lenguajes de descripción de hardware (HDLs)
Estos lenguajes fueron desarrollados para hacer frente a la creciente complejidad de los diseños. Se puede hacer una analogía con los que se pueden llamar lenguajes de descripción de so;ware. Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrónicos discretos.
• Se uAlizan en la fase de diseño • Necesidad de Simulador lógico
Herramienta necesaria para reproducir el comportamiento del sistema modelado
Permite la verificación del sistema diseñado.
Actualmente existen herramientas so;ware que permiten pasar de dichas descripciones a diseños a nivel de compuertas: SÍNTESIS
MC. RODRIGO LUCIO MAYA RAMIREZ
Dominios descripDvos y niveles de abstracción
Dominios descripDvos: Comportamiento Se realiza la función sin información de cómo se hace Estructural Los bloques se conectan mediante interconexiones (netlist o esquemas) Físico Localización y propiedades Psicas reales
MC. RODRIGO LUCIO MAYA RAMIREZ
Dominios descripDvos y niveles de abstracción
Niveles de abstracción: Circuito Valores conAnuos, todo es electrónica, Aempo conAnuo Lógico Valores lógicos (T,F), sólo computación, Aempo conAnuo RT (RegisterTransfer) Palabras con valores discretos, control y procesamiento, Aempo discreto Algorítmico Estructuras abstractas, dependencias en lugar de Aempo Sistema Relaciones entre subsistemas, síncronos y protocolos
MC. RODRIGO LUCIO MAYA RAMIREZ
Dominios descripDvos y niveles de abstracción
Medidas: Circuito Tiempo de subida y bajada, consumos área Lógico Tiempo de conmutación, skew, área equivalente RT Tiempo de ciclo, márgenes, compuertas equivalentes Algorítmico Latencia, cadencia de datos, número de módulos Sistema Ancho de banda, MIPS.
MC. RODRIGO LUCIO MAYA RAMIREZ
Dominios descripDvos y niveles de abstracción
Transiciones: Síntesis/Análisis Comportamiento ⇔ estructural OpDmización Mejora de una descripción sin variar el nivel de abstracción Generación/Extracción Estructural ⇔ Psico Refinamiento/Abstracción Bajar/Subir el nivel de abstracción en el mismo dominio
MC. RODRIGO LUCIO MAYA RAMIREZ
Niveles de diseño y dominios de representación
VHDL: VHSIC, Hardware DescripAon Language VHSIC: Very High Speed Integrated Circuits
MC. RODRIGO LUCIO MAYA RAMIREZ
Lenguajes de descripción de hardware (HDLs). Síntesis lógica
Síntesis lógica: Convierte una descripción de un sistema digital mediante un HDL en una implementación tecnologíca. Descripción HDL: library ieee; use ieee.std_logic_1164.all; entity puertas is port ( A, B, C : in std_logic; Y: out std_logic ); end puertas; ARCHITECTURE a of puertas is begin Y <= (A and B) or C; end a;
El hecho de realizar una síntesis lógica obliga a ciertas restricciones en la tarea de realizar las descripciones con HDLs.
MC. RODRIGO LUCIO MAYA RAMIREZ
Ventajas del uso de HLDs
• Soportan tres esAlos de descripción básicos:
– DESCRIPCIÓN COMPORTAMENTAL (behavioral)
– DESCRIPCIÓN DE FLUJO DE DATOS (data-‐flow)
– DESCRIPCIÓN ESTRUCTURAL (estructural)
Un diseño puede ser descrito con una combinación de los tres esAlos.
El lenguaje es independiente de la tecnología:
El mismo modelo puede ser sinteAzado en librerías de disAntos vendedores.
Reducción de la dependencia con el fabricante de ASICs, ya que la portabilidad a otra tecnología es mucho más rápida.
ReuAlizar el diseño en componentes tan disAntos como ASICs o FPGAs con un esfuerzo mínimo.
MC. RODRIGO LUCIO MAYA RAMIREZ
Ventajas del uso de HLDs
Se puede verificar la funcionalidad del diseño muy pronto en el proceso de diseño. La simulación del diseño a tan alto nivel, antes de la implementación a nivel de compuertas, permite probar la arquitectura y recAficar decisiones en las primeras fases de diseño, con un esfuerzo mucho menor que si se realizase en fases posteriores. Sencillez Como la descripción se centra más en la funcionalidad que en la implementación, resulta más sencillo para una persona comprender qué función realiza el diseño a parAr de una descripción HDL que a parAr de un esquemáAco de interconexión de compuertas Ahorro de Dempo Facilita las correcciones en el diseño debidas a fallos de diseño o cambio de especificaciones. La existencia de herramientas comerciales automáAcas (sinteAzadores RTL) que permiten crear descripciones gate-‐level a parAr de los modelos a nivel RTL
begin
Y <= (A and B) or C;
end a;
El lenguaje también puede ser usado como medio de comunicación entre diferentes herramientas CAD y CAE. Un programa de captura de esquemáAcos puede ser uAlizado para generar descripciones HDL del diseño, lo cual puede ser usado como entrada a un simulador.
MC. RODRIGO LUCIO MAYA RAMIREZ
Ventajas del uso de HLDs
Los HDL Aenen elementos que permiten el diseño a gran escala, de forma fácil; por ejemplo, componentes, funciones, procedimientos, paquetes.
El lenguaje soporta metodologías de diseño
diferentes: top-‐down, bo`om-‐up, o mixtas.
La propia descripción en el lenguaje de alto nivel sirve como especificación del comportamiento del sistema a diseñar (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 fácilmente 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 jerarquía Un sistema digital puede ser modelado como un conjunto de componentes interconectados. A su vez cada componente puede ser mode l ado como un con j un to de subcomponentes.
MC. RODRIGO LUCIO MAYA RAMIREZ
Ventajas del uso de HLDs
El modelo, a través de los atributos, puede contener información del diseño en sí mismo, no solo de la funcionalidad: por ejemplo, informaciones tales como el área y velocidad.
Soporta modelos de Aempos síncronos y asíncronos. Posibilidad de implementar disAntas técnicas de modelado digital (descripciones de máquinas de estados finitos (FSM), descripciones algorítmicas, redes de Petri, y ecuaciones Booleanas E l l e n g u a j e e s p ú b l i c o y " n o t propietary" (especialmente en el caso del VHDL). Es un estándar ANSI e IEEE; por lo tanto, los modelos descritos en estos lenguajes (VHDL o VERILOG) son totalmente portables. La capacidad de definir Apos de datos sofisAcados, suministra la potencia de describir y simular nuevos diseños a un nivel de abstracción en el cual aún no se barajan detalles de la implementación Los genéricos y atributos facilitan la descripción de modelos parametrizables.
MC. RODRIGO LUCIO MAYA RAMIREZ
Inconvenientes del uso de HDLs
Supone un esfuerzo de aprendizaje, ya que p r á cAcamen te s e puede considerar como nueva metodología. Necesaria la adquisición de nuevas herramientas: Simuladores SinteDzadores de HDL, teniendo que mantener el resto de las herramientas para otras fases del diseño. El uso de estos lenguajes hace que involuntariamente se pierda un poco de control sobre el aspecto Psico del d i s e ñ o , d á n d o l e u n a m a y o r importancia a la funcionalidad de dicho diseño.
MC. RODRIGO LUCIO MAYA RAMIREZ
Lenguajes de Descripción de Hardware.
En la actualidad se uAlizan fundamentalmente VHDL, Verilog y SystemC . Otro HDL, el UDI/L se uAliza exclusivamente en Japón.
VHDL (Very High Speed Integrated Circuit Hardware
DescripAon Language). Nace como proyecto del Departamento de Defensa (DoD) de EEUU (año 82) para disponer de una herramienta estándar, independiente para la especificación (modelado y/o descripción) y documentación de los sistemas electrónicos. El IEEE lo adopta y estandariza.
Verilog: So;ware de la firma Gateway y posteriormente
de Cadence. Estándar industrial hasta que apareció el VHDL como estándar IEEE. En 1990 Cadence lo hace público y el IEEE lo estandariza en 1995.
SystemC: es una extensión del C++, que uAliza unas
bibliotecas de clase para describir y simular circuitos digitales. Se publicó en 1.999 .
Diversos grupos de invesAgadores empiezan a crear y desarrollar los llamados "lenguajes de descripción de hardware" cada uno con sus peculiaridades, buscando una solución a los problemas que presentaba el diseño de los sistemas complejos. Ejemplos: IDL desarrollado por IBM , TI -‐ HDL de Texas Instruments, ZEUS de General Electric, protoApos de universidades
MC. RODRIGO LUCIO MAYA RAMIREZ
En resumen: ¿Para qué sirven los HDL?
Sirven para modelar circuitos, para expresar ideas Los modelos se pueden simular para comprobar que se corresponden con la funcionalidad deseada
MC. RODRIGO LUCIO MAYA RAMIREZ
¿Para qué sirven los HDL?
Para generar documentación, siempre y cuando los modelos de los circuitos estén bien comentados. En?ty 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 bi?n: in std_logic_vector(7 downto0); -‐-‐8 bits de entrada seg: out std_logic_vector(6 downto0);-‐-‐?empo 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 es2mulos y ver los resultados durante la simulación.
MC. RODRIGO LUCIO MAYA RAMIREZ
¿Para qué sirven los HDL?
Los "Test Bench" pueden ser escritos en el mismo lenguaje que con el que han sido modelados los diseños (HDL). Esto permite un mejor manejo del modelo, ya que se puede asociar el modelo a sus eslmulos de simulación. No limitamos el uso de dichos e slmu l o s a u n d e t e rm i n ado simulador, pudiendo ser reuAlizados dichos eslmulos aunque se use un simulador disAnto. Los retardos de propagación y limitaciones temporales, pueden ser descritos con estos HDL
MC. RODRIGO LUCIO MAYA RAMIREZ
DisposiDvos Lógicos Programables
Los disposiAvos actuales (CPLD y FPGAs) Aenen una
capacidad lógica de hasta millones de compuertas, incluyen interfaces programables para varios estándares de interface eléctrica y Aenen bloques de funciones especiales embebidos entre la lógica programable tales como memoria, mulAplicadores o CPUs completas
Esta gran capacidad y variedad de los disposiAvos los hace
sumamente úAles a la hora de crear protoApos, desarrollo rápido de nuevos productos, para los productos que deben ser reconfigurables por naturaleza o productos que se producen en bajos volúmenes y para los cuales no es económicamente viable crear un integrado a medida.
Los disposiAvos lógicos programables son circuitos integrados digitales que no Aenen una función predefinida por el fabricante. Su función puede ser definida (o programada) por el usuario. Debido a la gran capacidad lógica que Aenen los disposiAvos modernos, sistemas completos pueden desarrollarse sobre un solo circuito integrado. Esto da lugar a las denominaciones System–on–a-‐Programmable Chip, o SoPC (s istema sobre un circuito integrado programable) y System-‐on-‐a-‐ Reprogammable Chip (SoRC).
MC. RODRIGO LUCIO MAYA RAMIREZ
Evolución de los Primeros DisposiDvos Lógicos Programables
L o s p r ime r o s d i s p o s i A v o s l ó g i c o s programables fueron las memorias PROM. Para ello se uAlizan como entradas las líneas de dirección a la memoria. De esta manera la memoria provee una tabla de decodificación completa de las entradas, y puede uAlizarse para implementar cualquier función lógica combinacional. Los pr imeros disposiAvos diseñados específicamente para implementar funciones digitales programables fueron los PLA, introducidos al mercado en la década de 1970 por Philips. La base teórica de estos disposiAvos es que cualquier ecuación lógica puede reducirse a una suma de productos. El corazón electrónico de estos disposiAvos 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 lógica.
Esquema básico de un lpico disposiAvo PLA.
MC. RODRIGO LUCIO MAYA RAMIREZ
PAL
Debido a las limitaciones en la velocidad de las conexiones programables y los problemas en el proceso de manufactura de las PLA, surgieron disposiAvos con un solo nivel de lógica programable denominados PAL . Los PAL se basan en el mismo principio que las PLA, pero Aenen un nivel de lógica AND programable mientras el nivel de lógica OR es fijo. Esto limita la canAdad de funciones que pueden definirse con un disposiAvo dado, así que los fabricantes de PAL los o f r e c í a n e n u n a v a r i e d a d d e configuraciones para adecuarlos a las necesidades del usuario. Muchos PAL además incorporaron registros sobre las salidas y realimentación para implementar circuitos secuenciales.
Esquema de una posible configuración de un PAL.
MC. RODRIGO LUCIO MAYA RAMIREZ
GAL
Los disposiAvos denominados GAL son un poco mas complejos que los PAL mencionados anteriormente. Incluyen un nivel de lógica AND a la entrada y luego un bloque lógico denominado macrocelda a la salida, en reemplazo del nivel OR. La denominación GAL fue uAlizada en principio por Laoce, 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 disposiAvo GAL22V10 de Laoce Semiconductors.
MC. RODRIGO LUCIO MAYA RAMIREZ
CPLDs
Los CPLDs son disposiAvos que combinan varios bloques lógicos similares a las PAL o GAL con una matriz de interconexión programable. Estos disposiAvos se fabrican con disAntas 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/sal idas según el d isposiAvo y empaquetamiento que se elija.
Estructura general CPLD Altera
MC. RODRIGO LUCIO MAYA RAMIREZ
CPLDs
Como se de las figura, estos disposiAvos incluyen además de las macroceldas, un arreglo de interconexión programable (PIA), una red de distribución de reloj dedicada y bloques de entrada salida que permiten interfaces compaAbles con diferentes estándares eléctricos. Los bloques lógicos AND y OR están ambos incluidos en la macrocelda del disposiAvo.
Macrocelda CPLD.
MC. RODRIGO LUCIO MAYA RAMIREZ
FPGAs
La arquitectura de una FPGA consiste en arreglos de bloques lógicos que se comunican entre si a través de canales de conexión verAcales y horizontales. La principal diferencia entre las FPGA y CPLDs es que en general los bloques lógicos de las FPGA no implementan la lógica usando compuertas sino con generadores de funciones. En la siguiente sección se estudiará en mayor detalle la arquitectura de una FPGA lpica.
Estructura básica FPGA
MC. RODRIGO LUCIO MAYA RAMIREZ
Elementos del FPGA
Esta FPGA conAene cinco elementos principales: • Bloque de entrada-‐salida (IOB o Input-‐Output Block): estos bloques proveen la interface entre las paAtas o "pines" del integrado y la lógica interna. • Bloque lógico configurable (CLB o Configurable Logic Block): Estos son los bloques básicos que se uAlizarán en la implementación de un circuito digital. • Bloque de distribución y compensación de reloj (DLL o Delay Locked Loop): Estos bloques controlan los dominios de reloj dentro del integrado y compensan por retardos que pueda haber entre el reloj externo y el interno. • Bloque de memoria (BLOCK RAM): Estos bloques son memorias dedicadas integradas dentro de la lógica programable. • Estructura de interconexión: Es una estructura versáAl y mulA-‐nivel de interconexión entre los otros componentes de la FPGA.
Diagrama en bloques de una FPGA Spartan IIe de Xilinx
MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque Lógico Programable
Todas las FPGA Aenen algún Apo de bloque lógico programable. Este es el corazón de la FPGA, y permite implementar las diferentes funciones lógicas. Cada CLB esta compuesto por dos bloques iguales denominados “slices”. Cada "slice" conAene dos generadores de funciones y un mulAplexor MUXF5. El mulAplexor combina los resultados de los generadores de funciones dentro de cada "slice" del CLB. Las dos "slices" están unidas por un mulAplexor MUXF6, que puede seleccionar la salida de una u otra “slice” hacia la salida del CLB. Esto permite implementar cualquier función de 6 entradas, un mulAplexor de 8:1 o determinadas funciones lógicas de hasta 19 entradas. Además de poder implementarse lógica combinacional, cada “slice” conAene recursos para implementar circuitos secuenciales y operaciones aritméAcas eficientes.
Esquema del bloque lógico programable (CLB) de una FPGA de la familia Spartan IIe de Xilinx.
MC. RODRIGO LUCIO MAYA RAMIREZ
CLBs
En esta figura se ven los generadores de funciones, compuesto por una tabla de entrada-‐salida (LUT o Look-‐Up Table) de cuatro entradas y una salida. Estas tablas pueden implementar cualquier función lógica de cuatro entradas y una salida, así como también uAlizarse como memorias distribuidas de 16 x 1 bit. Las salidas de las LUT pasan a los bloques de control, que conAene lógica que permite opAmizar funciones aritméAcas. Los elementos que permiten implementar lógica 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.
CLB de una FPGA Spartan 3 de Xilinx
MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque de Entrada / Salida
Las interfaces de entrada-‐salida son otro de los componentes parAculares que Aenen 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 lógica de diferentes estándares eléctricos de manera independiente. Los bancos se configuran aplicando diferentes tensiones de alimentación a los pines denominados VccO y VREF. Al uAlizar diferentes valores de VccO para los disAntos bancos se podrá tener un sistema con interface a diferentes familias lógicas dentro de la misma FPGA. Las entradas de reloj están asociadas a diferentes bancos de entrada-‐salida, para permiAr que haya diferentes dominios de reloj con interfaces eléctricas diferentes.
Distribución de los bancos de entrada/salida en una FPGA Spartan IIe
MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque de Entrada / Salida
Además de la tensión VccO, para varios de las interfaces lógicas debe configurarse la tensión de referencia VREF y agregarse resistencias de terminación sobre la plaqueta en las entradas-‐salidas de la FPGA. Cada bloque de entrada-‐salida Aene una resistencia de “pull-‐up” y “pull -‐ down” configurables que permiten fijar el valor lógico mediante programación. Los bloques de entrada-‐salida de muchas FPGAs Aenen elementos de almacenamiento integrados que permiten controlar mejor los Aempos de propagación entre los pines del integrado y la lógica interna. Además 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’).
Esquema de un bloque de entrada-‐salida (IOB) de una FPGA Spartan IIe.
MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque de Control de Reloj
El sistema de control del reloj consiste en bloques de control integrados a la red de distribución de reloj. La red de distribución de reloj en las FPGA asegura retardos parejos a todos los bloques lógicos de la FPGA. Cada fabricante uAliza una arquitectura diferente para el control y distribución de reloj. La familia Spartan IIe de Xilinx Aene bloques específicos 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 distribución del reloj pareja para la lógica interna de la FPGA.
Red global de distribución de reloj en la FPGA Spartan IIe
MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque de Control de Reloj
La familia StraAx de Altera Aene los bloques de control de reloj. Estos b loques (Enhanced PLL) permiten controlar la fase y frecuencia del reloj, el sistema de distribución de reloj y el estándar eléctrico de interface entre otras cosas
Esquema de un bloque de control de reloj de la FPGA StraAx de Altera
MC. RODRIGO LUCIO MAYA RAMIREZ
Memoria
Varias familias de FPGA conAenen bloques de memoria embebida integrados con la lógica programable. En general estos bloques básicos de memoria pueden uAl izarse en diferentes configuraciones para generar RAMs y ROMs de diferentes tamaños. Además de memorias embebidas, las FPGAs basadas en memoria SRAM pueden usar las tablas LUT de los bloques lógicos como memoria. Este bloque se denomina BLOCK RAM y es una memoria de puerto dual (dual-‐port), que puede leerse y escribirse al mismo Aempo. Estos bloques de memoria pueden usarse como memorias de puerto dual, puerto simple, RAMs o ROMs. Para entender la versaAlidad de estos bloques de memoria, en la siguiente tabla se muestran las opciones de configuración.
Esquema de una celda de memoria básica de la familia Spartan IIe de Xilinx.
MC. RODRIGO LUCIO MAYA RAMIREZ
Memoria
Además de poder configurar cada bloque, varios bloques pueden conectarse uAlizando lógica externa para implementar memorias de otros tamaños y colas FIFO o FILO. La figura muestra un bloque de memoria de Actel, que puede configurarse como memoria de puerto simple, dual o mulA-‐puerto.
Esquema de un bloque de memoria de Actel configurada como memoria mulA-‐puerto
MC. RODRIGO LUCIO MAYA RAMIREZ
Bloque de Procesamiento de Señal
Varias FPGA conAenen bloques específicos que opAmizan en hardware ciertas funciones especiales. Las FPGA de la familia StraAx de Altera, por ejemplo, conAenen uno o más módulos de procesamiento de señal entre los bloques de lógica programable de propósito general. Estos bloques permiten desarrollar ciertas funciones específicas lpicas de las aplicaciones de procesamiento de señal de manera muy eficiente. Pueden configurarse de varias maneras diferentes según las necesidades del usuario. Como muestra la figura, este bloque conAene lógica para implementar operaciones de mulAplicación-‐acumulación que requerirían de muchos recursos y ciclos de reloj si se implementaran uAlizando lógica de propósito general. Al igual que los otros bloques, los bloques específicos pueden interconectarse a los demás bloques uAlizando la matriz de interconexión programable de la FPGA. Bloque de procesamiento de señal de la familia StraDx de Altera
MC. RODRIGO LUCIO MAYA RAMIREZ
CPUs Embebidas
La familia de FPGAs de Xilinx Virtex II-‐PRO conAene una CPU Power PC 405 de IBM y lógica de interconexión embebida dentro de lógica programable. Esto permite uAlizar toda la potencia de una CPU integrada con la flexibilidad de los periféricos diseñados mediante lógica programable. Los bloques específicos integrados en el silicio de las FPGAs se denominan "hardcores". Altera ofrece la FPGA Excalibur que conAene un microcontrolador ARM922T integrado a un costado de lógica programable. La lógica programable del Excalibur puede ser de hasta un millón 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 también pueden diseñarse microcontroladores o procesadores usando solamente la lógica de configuración de las FPGAs.
Altera ofrece el microcontrolador Nios, de tecnología RISC de 16 bits que puede uAlizarse sobre varias de las FPGA de Altera. A este Apo de diseño se lo denomina "sodcore", ya que a FPGA no Aene ningún bloque específico para la CPU implementado sobre el circuito integrado. Hay muchos micros "so;core" públicos y propietarios. Xilinx ofrece el Microblaze y Actel ofrecerá un micro de la familia ARM.
MC. RODRIGO LUCIO MAYA RAMIREZ
Matriz de interconexión
Para poder implementar circuitos lóg icos , los e lementos lóg icos presentados en las secciones anteriores n o s o l o d e b e n c o n fi g u r a r s e adecuadamente sino que también deben conectarse entre si. La estructura de interconexión interna de un PLD consiste en un conjunto de alambres o trazas que pueden conectarse mediante elementos de conexión programables. Las herramientas de “localización e interconexión” (place and route) son las encargadas de dec id i r en que elementos lógico se implementará la lógica diseñada por el usuario y como deben programarse las interconexiones para que el diseño funcione según las especificaciones de Aempo y retardos que se han definido.
MC. RODRIGO LUCIO MAYA RAMIREZ
Matriz de interconexión de las FPGA Spartan IIe de Xilinx
Estas FPGA Aenen dos niveles de interconexión. Por un lado Aenen una interconexión de propósito general a través de la matriz de interconexionado general o GRM por sus siglas en inglés. Por otro lado conAenen recursos de interconexión local. Además de los ya mencionados, las FPGA Spartan IIe conAenen recursos de interconexión dedicados a señales de tres estados, de entrada-‐salida y recursos de interconexión global para la distribución de reloj y señales específicas. Los recursos de interconexión local, mostrados en la Figura 31, permiten hacer las conexiones entre los elementos internos de un bloque lógico o CLB, como las tablas de búsqueda (LUT), los flip-‐flop y las realimentaciones dentro del CLB.
Caminos de interconexión local en la FPGA Spartan IIe
Además, el interconexionado a este nivel provee conexiones a la matriz de interconexionado general y a los CLB adyacentes. Las conexiones a los CLB adyacentes permiten opAmizar los diseños al evitar los retardos y la uAlización de recursos de la matriz general de interconexionado.
MC. RODRIGO LUCIO MAYA RAMIREZ
Matriz de interconexión de las FPGA Spartan IIe
La mayor parte de las señales se conectarán a t r a v é s d e l a m a t r i z g e n e r a l d e interconexionado (GRM). Los elementos de la GRM se encuentran entre los CLB, en los canales de interconexión horizontales y verAcales de la FPGA. Permiten hacer la interconexión entre las trazas horizontales y verAcales y hacia los CLB. A través de ellos se configuran las conexiones entre CLBs no adyacentes y hacia los bloques de entrada/salida.
Red dedicada de distribución de reloj en la FPGA Spartan IIe
MC. RODRIGO LUCIO MAYA RAMIREZ
Granularidad de los DisposiDvos Lógicos Programables (PLDs)
La granularidad de un disposiAvo lógico programable está dada por la funcionalidad básica que provee cada bloque de configuración lógica, o la relación entre las celdas lógicas y los recursos de interconexionado. Algunos parámetros para definir la granularidad de un disposiAvo programable son: • Número de funciones que puede implementar cada celda lógica • Número de compuertas NAND de dos entradas equivalente por cada celda lógica • Número total de transistores por celda lógica • Área total normalizada de lógica configurable (relación de área lógica/área de interconexionado) • Número de entradas y salidas por celda lógica Algunos disposiAvos Aenen arquitecturas con celdas lógicas que pueden implementar funciones lógicas complejas, de varias entradas/salidas. A estas se las denomina de granularidad gruesa. Otras arquitecturas están formadas por celdas básicas que solo permiten implementar lógica muy simple. A estas se las denomina de granularidad fina.
MC. RODRIGO LUCIO MAYA RAMIREZ
Granularidad de los DisposiDvos Lógicos Programables (PLDs)
La granularidad de un disposiAvo lógico influirá en la manera que se implemente una función lógica dada, en su frecuencia máxima de funcionamiento y en la uAlización que se hace del disposiAvo. Un bloque lógico grande puede implementar lógica más compleja y por lo tanto se necesitan menos bloques para una función dada. Por otro lado cada bloque consume más área que puede desaprovecharse. Una arquitectura de granularidad fina será lpicamente más densa y tendrá menor retardo de interconexión entre celda y celda. Sin embargo, para una función dada, se deberán conectar un mayor número de celdas. En general la mejor granularidad dependerá de la aplicación y las restricciones que hay sobre el diseño.
Bloque Lógico (Logic Tile) de la ProAsicPlus de Actel
MC. RODRIGO LUCIO MAYA RAMIREZ
Granularidad de los DisposiDvos Lógicos Programables (PLDs)
Arquitecturas mixtas • Combinan celdas con granularidad fina y
gruesa • Muchas veces Aenen recu r sos de
interconexión dedicados para cada Apo de celda
• Ejemplo: ispXPGA de Laoce Semiconductors
Arquitecturas con granularidad fina • Celdas implementan funciones lógicas parciales de n entradas • Relación 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 • Relación de entradas a registros por celda de 6/8 a 1 • Buenas para implementar máquinas de estado y lógica secuencial compleja • Ejemplo: Xilinx Spartan 3 Arquitecturas con granularidad gruesa • Celdas esAlo PLD de arreglos de términos • Relación de entradas a registros de 32 a 1 • Buenas para lógica combinacional como decodificación de direcciones, funciones aritméAcas, • Pobres para arquitecturas con colas (pipelines) • Ejemplo: Altera MAX 3000
MC. RODRIGO LUCIO MAYA RAMIREZ
Tecnología de Configuración de los PLDs
La tecnología uAlizada para configurar los elementos de un PLD, ya sean los bloques lógicos o las interconexiones, dependen del fabricante y el disposiAvo. Entre los disposiAvos reprogramables, se destacan las tecnologías EEPROM, SRAM y Flash. Los disposiAvos que solo pueden configurarse una vez en general uAlizan tecnologías de anAfusible. Cada tecnología Aene sus ventajas y desventajas respecto a las otras.
MC. RODRIGO LUCIO MAYA RAMIREZ
Tendencias Actuales y Futuras
• Integración con herramientas y otros so;ware de desarrollo de mayor nivel, como son Matlab y herramientas para el diseño integrado de so;ware y hardware. (HW-‐SW co-‐design).
• Integración del manejo de configuración de FPGAs con las herramientas de diseño 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 lógicos, que permiten observar la lógica de interna de las FPGA en Aempo real al mismo Aempo que se observan otras señales, externas a la FPGA.
• Sistemas con aplicaciones que uAlicen la reconfiguración o reprogramación de las FPGAs directamente en el producto final según la necesidad del momento.
• Integración de bloques lógicos programables alrededor de lógica fija en ASICs o integrados estándar.
• Desarrollo de FPGAs con mayor capacidad, más velocidad, menos consumo de potencia y menor costo. • Integración en hardware sobre las lógicas programables de bloques específicos como ALUs, componentes para procesamiento digital de señal, integración con uP y uC, memorias, etc. • Integración y mezcla entre FPGAs y circuitos integrados de propósito específico (ASICs). Componentes que pueden pasar directamente de un protoApo sobre una FPGA a un ASIC sin esfuerzo de diseño adicional. • Cambios en las herramientas de so;ware para tener mayor integración entre los diferentes usuarios y en los disAntos pasos del proyecto. Esto incluye el manejo de grupos de trabajo, el manejo de la propiedad intelectual, la documentación de proyectos integrada a las herramientas de diseño, la transferencia de los diseños para FPGAs a ASICs, etc.
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 uAliza como forma de describir circuitos integrados: • Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran más complejos, y el coste de reponerlos cada vez era mayor, básicamente porque no estaban correctamente documentados. VHDL nació como una manera estándar de documentar circuitos.
• El uso de VHDL permiAó comprobar que el Aempo de diseño de los circuitos se reducía, porque se podían crear directamente de su descripción: uAlidad de la síntesis.
• En 1987 el trabajo se cedió a la IEEE, y a parAr de ese momento es un estándar abierto.
VHDL: VHSIC Hardware DescripAon Language
VHSIC: Very High Speed Integrated Circuits
MC. RODRIGO LUCIO MAYA RAMIREZ
Evolución
1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estándar dentro del programa VHSIC. 1981: Woods Hole Workshop, reunión inicial entre el Gobierno, Universidades e Industria. 1983: Se concedió a Intermetrics, IBM y Texas Instruments el contrato para desarrollar VHDL. 1985: Versión 7.2 de dominio público. 1987: El IEEE lo raAfica como su estándar 1076 (VHDL-‐87). 1993: El lenguaje VHDL fue revisado y ampliado, pasando a ser estándar 1076 ‘93 (VHDL-‐93). 2000:ÚlAma modificación de VHDL
MC. RODRIGO LUCIO MAYA RAMIREZ
VHDL: CaracterísDcas Generales
VHDL: lenguaje orientado a la descripción o modelado de Hardware similar a lenguajes de alto nivel de propósito general (ADA en especial): de ellos hereda: Concepto de Apo de datos, con posibilidad de definir nuevos Apos facilita la descripción de circuitos con diversos niveles de abstracción. Sentencias de control de flujos (if, for while). Junto con la caracterísAca anterior potencia para desarrollar algoritmos. C apa c i d ad de e s t r u c t u r a r e l c ód i go (subprogramas, funciones o procedimiento), permite afrontar algoritmos complejos. Posibilidad de uAlizar y desarrollar bibliotecas de diseño, Incorpora conceptos específicos para el modelado del hardware, como concurrencia y ciclo de simulación.
MC. RODRIGO LUCIO MAYA RAMIREZ
Estado actual y alternaDva
En la actualidad el diseño mediante esquemas no es una alternaAva realista en ningún proyecto, por ejemplo Gforce 4 Aene 65 M transistores y 800.000 líneas de código Verilog. La alternaAva estándar es usar un HDL Verilog: Costa Oeste de EEUU, para ASICs, menos verboso, más parecido a C, menos expresivo. VHDL: Costa Este y Europa, para FPGAs, más descrip?vo, más parecido a PASCAL y ADA, más expresivo. El diseño se sinteAza a parAr de un HDL, pero gran parte del diseño y la verificación se realiza con lenguajes estándares C y Matlab VHDL es el estándar para FPGAs en proyectos industriales de moderada complejidad.
MC. RODRIGO LUCIO MAYA RAMIREZ
¿Futuro?
Los lenguajes de descripción de hardware también Aenen limitaciones: Metodología de diseño nueva, exige un cambio de mentalidad con respecto al So;ware No permiten re usar código SW para HW. P o s een e no rme r e u s ab i l i d a d intrínseca. La decisión HW/SW se debe hacer antes de la codificación La simulación es lenta, siempre hay que recurrir a una simulación algorítmica usando lenguajes SW Como respuesta a esto, hay varias iniciaAvas para describir HW usando lenguajes de alto nivel, Apo SW Handel-‐C, System-‐C Forge (Java) Superlog
MC. RODRIGO LUCIO MAYA RAMIREZ
Estructura de un diseño en VHDL
MC. RODRIGO LUCIO MAYA RAMIREZ
Elementos de descripción VHDL
Bibliotecas (Library) • Almacenan los elementos de diseño: Apo de datos, operadores, componentes, objetos, funciones,... • Esos elementos de diseño se organizan en Paquetes
Packages: son unidades de almacenamiento de elementos y Aenen que hacerse “visibles” para poder ser uAlizados .
• Hay 2 bibliotecas que siempre son visibles por defecto: std (la standard) y work (la de trabajo) y que no es necesario declarar EnAdades (EnDty) Es el modelo de interfaz de un circuito con el exterior mediante unas terminales de entrada y de salida. Es la caja negra que define las entradas y salidas. Arquitectura (Architecture) Describe el funcionamiento del circuito.
Una unidad hardware se puede visualizar como una caja negra, el interfaz de la “caja negra” está completamente definida. El interior está oculto En VHDL la caja negra se denomina enDdad La enAdad describe la E/S del diseño Para describir su funcionamiento se asocia una implementación que se denomina arquitectura La arquitectura describe el contenido del diseño.
MC. RODRIGO LUCIO MAYA RAMIREZ
Puertos de una enDdad
Cada una de las posibles conexiones se denomina PORT y consta de: Un nombre, que debe ser único dentro de la enDdad. Una lista de propiedades, como: la dirección del flujo de datos, entrada, salida, bidireccional y se conoce como modo del puerto. los valores que puede tomar el puerto: '0’, '1' o (‘Z’), etc ., los valores posibles dependen de lo que se denomina Dpo de señal. Los puertos son una clase especial de señales que además añade el modo al Dpo de señal e0e2e1salida0salida1caja
MC. RODRIGO LUCIO MAYA RAMIREZ
Modos de un Puerto
Indican la dirección y si el puerto puede leerse o escribirse dentro de la enAdad. IN: Una señal que entra en la enAdad y no sale. La señal puede ser leída pero no escrita. OUT: Una señal que sale fuera de la señal y no es usada internamente. La señal no puede ser leída dentro de la enAdad. BUFFER: Una señal que sale de la enAdad y también es realimentada dentro de la enAdad. INOUT: Una señal que es bidireccional, entrada/salida de la enAdad.
MC. RODRIGO LUCIO MAYA RAMIREZ
Estructura de un diseño en VHDL
MC. RODRIGO LUCIO MAYA RAMIREZ
Declaración de enDdad
MC. RODRIGO LUCIO MAYA RAMIREZ
Resumen: EnDdad y Arquitectura
La enAdad se uAliza para hacer una descripción "caja negra" del diseño, sólo se detalla su interfaz Los contenidos del circuito se modelan dentro de la arquitectura Una enAdad puede tener varias arquitecturas Por ejemplo, la descripción de comportamiento que ha hecho el diseñador y el modelo post-‐ layout obtenido después de implementar el chip
MC. RODRIGO LUCIO MAYA RAMIREZ
Invariancias
VHDL presenta ciertas invariancias que conviene conocer antes de su uAlización. Invariante a mayúsculas, es decir, dos expresiones iguales conteniendo mayúsculas y minúsculas son idénAcas. Invariante a los espacios, es decir, dos expresiones iguales conteniendo más o menos espacios son idénAcas Los comentarios van detrás de dos rayas “-‐-‐”y convienen que sean claros para que las descripciones puedan ser fácilmente uAlizadas por otras personas o por A mismo. VHDL es relaAvamente laxo con la uAlización de paréntesis, una buena idea es uAlizar los paréntesis de manera que una persona la pueda entender con facilidad Cada asignación termina con “;” Cada “if” Dene el correspondiente “then“ Cada “if” termina con el correspondiente “endif” Si se necesita “elseif” se uDlizará “elsif” Cada “case” termina con el correspondiente “end case” Cada “loop” termina con el correspondiente “end loop”
MC. RODRIGO LUCIO MAYA RAMIREZ
IdenDficadores
IdenDficadores. Son las palabras que se uDlizan para idenDficar a las funciones, señales, puertos, variables, etc. Es conveniente que dichas palabras proporcionen información suficiente para que la descripción sea fácilmente reuDlizable. El idenAficador debe dar suficiente información para su uso . El idenAficador puede ser tan largo como se quiera, pero un nombre demasiado largo es complicado de uAlizar, y demasiado corto quizá proporcione poca información. El idenAficador puede contener cualquier combinación de las letras (A-‐Z y a-‐z) números (0-‐9 ) y el sub-‐guión (“_”) El idenAficador debe empezar por un carácter alfabéAco. El idenAficador no puede termina con el sub-‐guión (“_”)
Son palabras que no se pueden uAlizar como idenAficadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Modelos de descripción
Comportamental o algorítmico (behavioral). Especifica cómo se comportan las salidas con respecto a las entradas. No proporciona al sinteAzador información de cómo será el circuito, siendo éste el que lo determina. La parte fundamental de este Apo de descripciones es el proceso (process) Flujo de datos (dataflow). Especifica el circuito como una representación concurrente del movimiento de los datos a su través, es decir, cómo circula la información Estructural (structural). Describe la conexión entre disAntos módulos descritos previamente
MC. RODRIGO LUCIO MAYA RAMIREZ
Modelos de descripción VHDL
Como hemos visto, la arquitectura (architecture), en VHDL describe la función que realiza una en?dad (en?ty). La arquitectura se compone de dos partes: la parte declaraAva en la que se encuentran las definiciones de las s e ñ a l e s , f u n c i o n e s , A p o s , procedimientos, etc.. a uAlizar. y el cuerpo de la descripción, consistente en una sucesión de as ignac iones concurrentes y procesos que modelan la enAdad.
MC. RODRIGO LUCIO MAYA RAMIREZ
Concurrencia del hardware
El hardware es concurrente, es decir, los circuitos coexisten en el Aempo y por lo tanto trabajan al mismo Aempo. Este chip Aene tres compuertas que funcionan simultáneamente 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 Aempo ¡no una después de la otra! La solución al problema anterior es que aunque la e jecución sea secuencial, las asignaciones no tengan Dempo de ejecución:
S1 <= A and B; S2 <= C or D; S3 <= C xor D;
El valor de S será el correcto una vez que se hayan propagado los Aempos de retardo de las compuertas. No hay que olvidar que se trata de modelar circuitos reales, no virtuales, y las señales necesitan que transcurra el Aempo para tomar un valor
MC. RODRIGO LUCIO MAYA RAMIREZ
Sentencias concurrentes
CaracterísDcas: Se ejecutan de forma asíncrona unas respecto de las otras en el mismo Aempo de simulación. El orden en que se escriban es indiferente, no siguen un orden de ejecución predefinido. –No obstante conviene escribir el código en el orden que mejor se pueda entender y mejor documente el diseño. Sirven para especificar:
Interconexiones entre componentes. Estructuras jerárquicas. Estructuras regulares. Transferencias entre registros.
MC. RODRIGO LUCIO MAYA RAMIREZ
process: elemento de diseño principal
Un proceso describe el comportamiento de un circuito: Cuyo estado puede variar cuando cambian ciertas señales UAlizando construcciones muy expresivas: if..then..else, case, bucles for y while, etc… Y que además puede declarar variables, procedimientos, etc...
MC. RODRIGO LUCIO MAYA RAMIREZ
Procesos
Los procesos se “disparan”(su código se ejecuta) cuando cambia alguna de las señales de su lista de sensibilidad. Un proceso sin lista de sensibilidad es válido, pero se acAva con cualquier evento, no se asegura un comportamiento correcto. Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrás de otra, pero sin dar lugar a que avance el Aempo durante su ejecución. El Aempo sólo avanza cuando se llega al final del proceso. Las señales modelan hilos del circuito, y como tales, sólo pueden cambiar de valor si se deja que avance el Aempo. Una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan en paralelo. Esta es la manera que Aene VHDL de expresar la concurrencia inherente al hardware
MC. RODRIGO LUCIO MAYA RAMIREZ
La solución VHDL a la concurrencia
VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a la concurrencia En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan concurrentemente
MC. RODRIGO LUCIO MAYA RAMIREZ
sentencias concurrentes
Asignación simple suma <= ope1 xorope2; Para Señales y Puertos, el operador es <=, el lado izquierdo es el desAno y el lado derecho la fuente. OJO: fuente y desAno Aenen que ser del mismo Apo. Para Variables el operador es := acarreo_intermedio:= ope1 and ope2; WHEN/ELSE Permite realizar asignaciones condicionales salida <= a and b when c =‘1’ else a or c;
MC. RODRIGO LUCIO MAYA RAMIREZ
WHEN/ELSE
[eDqueta:] señal <= val_1 when condi_1 else val_2 [whencondi_2] else … else val_n; Ejemplo:
MC. RODRIGO LUCIO MAYA RAMIREZ
WITH/SELECT
La asignación condicional (WHEN/ELSE), También se puede hacer mediante la sentencia de asignación selecAva WITH/SELECT Por su ejecución en paralelo es similar a un CASE Se pueden dar problemas de memoria implícita si no se pone el úlAmo when others.
MC. RODRIGO LUCIO MAYA RAMIREZ
WITH/SELECT
MC. RODRIGO LUCIO MAYA RAMIREZ
Dentro de los procesos: Descripciones
secuenciales
MC. RODRIGO LUCIO MAYA RAMIREZ
IF
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo IF
MC. RODRIGO LUCIO MAYA RAMIREZ
CASE
Sintaxis: CASE expresión IS WHEN caso1=> secuencia sentencias1; WHEN caso2 => secuencia sentencias2; WHEN casoN=> secuencia sentenciasN; WHEN OTHERS => resto de casos; END CASE;
MC. RODRIGO LUCIO MAYA RAMIREZ
FOR-‐LOOP
Realiza un bucle un número determinado de veces [eAqueta:] FOR índice IN rango’inf TO rango’sup LOOP secuencia de sentencias END LOOP[eAqueta];
ejemplo: bucle: FOR i IN 0 TO 5 LOOP x(i) <= enable AND w(i+2); y(0, i) <= w(i); END LOOP bucle;
MC. RODRIGO LUCIO MAYA RAMIREZ
WHILE-‐LOOP
El bucle se repite mientras la condición que haya después del while sea verdadera [eAqueta:] WHILE condición LOOP secuencia de sentencias END LOOP[eAqueta]; ejemplo: lazo1:WHILE (i < 10) LOOP WAIT UNTIL clk'EVENT AND clk='1'; END LOOP lazo1;
LOOP El bucle se repite infinitamente [eAqueta:]LOOP secuencia de sentencias END LOOP[eAqueta]; ejemplo: lazo1: LOOP a <= c and b; END LOOP lazo1; La única sentencia que deja romper el bucle es EXIT
MC. RODRIGO LUCIO MAYA RAMIREZ
EXIT
DeAene la ejecución en ese instante y sale del bucle. Si hay varios bucles anidados, sale de donde se encuentre la instrucción o bien del bucle que se especifica en la eAqueta. Solamente puede aparecer dentro de una sentencia LOOP. exit [eDqueta] [when condición]; Ejemplo: -‐-‐Interrumpe el FOR y sigue por el WHILE termina: WHILE a< 100 LOOP -‐-‐-‐sentencias sigue: FOR n IN 0 TO 100 -‐-‐-‐sentencias EXIT termina WHEN n=a; END LOOP sigue; END LOOP termina; Cuando existen bucles anidados, sale del más interno, o bien, de aquel que Aene la eAqueta que sigue al EXIT.
NEXT En VHDL se pueden crear bucles infinitos [eDqueta] loop secuencia de sentencias End loop [eDqueta]; Los bucles pueden tener una condición de salida. next [eDqueta] [when condición]; 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
WAIT
Espera a que ocurra una condición WAIT UNTIL condición; WAIT UNTIL e1=‘1’ and e2=‘0’; Espera a que cambie alguna señal de la lista de señales WAIT ON lista_señales; WAIT ON e1,e2,clk; Espera un cierto Aempo WAIT Dempo; WAIT 25ns; Espera indefinidamente WAIT
NULL No realiza función alguna. Pasa la ejecución a la siguiente sentencia secuencial. ÚAl en sentencias CASE cuando no se quiere realizar ninguna acción para alguna de las elecciones. Sintaxis: [eDqueta:] NULL;
MC. RODRIGO LUCIO MAYA RAMIREZ
GENERATE
Esta sentencia concurrente permite reducir el tamaño del código de aquellas estructuras que se repiten considerablemente. Sintaxis: eAqueta: FOR idenAficador IN range GENERATE (sentencias concurrentes) END GENERATE; eAqueta: IF condición GENERATE (sentencias concurrentes) END GENERATE;
MC. RODRIGO LUCIO MAYA RAMIREZ
Paquetes
MC. RODRIGO LUCIO MAYA RAMIREZ
Componentes
MC. RODRIGO LUCIO MAYA RAMIREZ
Atributos
Un atributo es una caracterísAca asociada a un elemento(Apo de dato, señal, enAdad,…) que proporciona información adicional. Atributo ≠Valor Un objeto Aene un solo valor y puede tener múlAples atributos. VHDL proporciona una serie de atributos predefinidos.
Atributos de rango vectores
MC. RODRIGO LUCIO MAYA RAMIREZ
Atributos de rango de vectores.
MC. RODRIGO LUCIO MAYA RAMIREZ
Atributos de rango de vectores
Loops
MC. RODRIGO LUCIO MAYA RAMIREZ
Atributos de las señales
DELAYED(t). Valor de la señal retrasada t unidades de Aempo. STABLE(t), verdadero si la señal permanece invariable durante t unidades de Aempo. QUIET(t), verdadero si la señal no ha recibido ninguna asignación en t unidades de Aempo. TRANSACTION, Apo bit, a ‘1’cuando hay una asignación a la señal. EVENT, verdadero si ocurre un cambio en la señal en el paso de simulación. ACTIVE, verdadero si ocurre una asignación a la señal en el paso de simulación. LAST_EVENT, unidades de Aempo desde el úlAmo evento. LAST_ ACTIVE, unidades de Aempo desde la úlAma asignación. LAST_VALUE, valor anterior de la señal. DRIVING, verdadero si el proceso actual determina el valor de la señal. DRIVING_VALUE, valor que toma la señal tras el proceso.
MC. RODRIGO LUCIO MAYA RAMIREZ
Atributos
MC. RODRIGO LUCIO MAYA RAMIREZ
Resumen:
EsDlos de descripción
I n d e p e n d i e n t e d e l n i v e l d e abstracción, existen tres esAlos de descripción de una arquitectura: Comportamiento (Behavioral) Transferencia entre registros o flujo de datos (Data Flow) Estructural (Structural) En VHDL un sistema puede mezclar diferentes esAlos a la hora de describir sus diferentes arquitecturas. 1. Comportamiento (Behavioral). En este esDlo de descripción se modela la funcionalidad por medio de los recursos algorítmicos del lenguaje. Se describe el algoritmo que refleja el c o m p o r t a m i e n t o d e d i c h o componente. También se le suele llamar esAlo algorítmico o secuencial.
2. Transferencia entre registros (RTL) o flujo de datos (Data Flow). En este esDlo de descripción se especifican los flujos de datos del sistema y la interconexión entre sus componentes. El proceso de descripción se realiza por medio de funciones lógicas, que se ejecutarán de forma concurrente 3. Estructural (Structural). En este esDlo de descripción se definen o instancian todas las partes del sistema y sus interconexiones. Resulta muy úAl cuando se quiere aprovechar diseños compilados con anterioridad y que se encuentran almacenados en bibliotecas de componentes. La instrucción concurrente fundamental uAlizada dentro de una arquitectura RTL es la de COMPONENT COMPONENT nombre_componente PORT( nombre_puerto: Apo_puertoApo_dato; nombre_puerto: Apo_puertoApo_dato; ... ); END COMPONENT;
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo de esDlos de descripción
MulAplexor de dos entradas de datos de un bit ( e0 y e1 ), una señal de salida ( y ) y señal de control ( sel )
Declaración de la enAdad (enAty)
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo de esDlos de descripción
1. Descripción de comportamiento o algorítmica (Behavioral)
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo de esDlos de descripción
3. Descripción estructural (Structural)
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo de esDlos de descripción
MC. RODRIGO LUCIO MAYA RAMIREZ
Modelado combinacional
El modelado de sistemas combinacionales es muy sencillo, puesto que en todo momento las salidas sólo dependen del estado actual de las entradas, es decir, el circuito no 9ene memoria. Un circuito combinacional puede tener mulAtud de entradas y salidas, por lo tanto: • Necesitar miles o millones de términos canónicos para describirlo matemáAcamente. • 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 más pequeños, cada uno de los cuales Aene una descripción más sencilla.
Estos bloque combinacionales consAtuyen las estructuras básicas con las que se construyen los sistemas procesadores • MulAplexores, decodificadores, comparadores, sumadores, etc. …
MC. RODRIGO LUCIO MAYA RAMIREZ
Descripción VHDL
de sistemas combinacionales
Para describir circuitos combinacionales uAl izaremos sentencias de as ignación concurrentes y procesos. Sentencias de asignación concurrentes. Van fuera del proceso. Esto se debe a que en una declaración concurrente no importa el orden en el que se escriban las señales, ya que el resultado para una determinada función sería el mismo. Se uAlizarán tres Apos de sentencias de asignación concurrentes: Sentencias de asignación simples, por ejemplo: salida1 <= A and B; • Sentencias de asignación condicionales, por ejemplo: salida2 <= A when S = ‘1’elseB; • Sentencias de selección, por ejemplo: with S select salida3 <= ‘1’ when “00”; ‘0’when others; Siempre hay que evitar la realimentación combinacional, ya que esto modela elementos de memoria asíncronos.
Es decir, hay que evitar que una misma señal aparezca en el lado izquierdo y en el lado derecho de la sentencia de asignación: Y <= Y nand X; Procesos. Se debe respetar las siguientes reglas: • Si una señal es leída en el interior de un proceso, es decir, aparece en el lado derecho de una sentencia de asignación o en una condición, debe aparecer en su lista de sensibilidad.
• Si a una señal se le asigna un valor de forma condicional (con sentencias if o case) nos debemos asegurar que no ex i s ten condiciones para las cuales el valor de la señal no se ha definido en el código.
• En VHDL las señales manAenen su valor hasta que se les asigna uno nuevo; por lo tanto, si para una señal dada, su valor está indefinido, el compilador sinteAza un latch (biestable) que almacena la señal.
MC. RODRIGO LUCIO MAYA RAMIREZ
MulDplexores
Circuitos que Aenen n entradas de datos y una salida de datos, por lo tanto necesitan m entradas de selección, donde m es: Habitualmente también poseen una entrada de habilitación La func ión f que descr ibe e l comportamiento de un mul?plexor de dos entradas (I0, I1) , una salida y una entrada de selección (S), se puede describir mediante la tabla Aplicando Karnaugh se ob?ene:
MC. RODRIGO LUCIO MAYA RAMIREZ
MulDplexores
MC. RODRIGO LUCIO MAYA RAMIREZ
MulDplexores
MC. RODRIGO LUCIO MAYA RAMIREZ
Decodificadores
Es un circuito lógico con n entradas y m salidas, donde m es Podemos encontrar decodificadores con entrada de habilitación, ac?vos por cero o ac?vos por uno
MC. RODRIGO LUCIO MAYA RAMIREZ
Decodificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Decodificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Decodificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Decodificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Codificadores
Es un circuito lógico con n entradas y m salidas, donde m es Habitualmente también poseen una entrada de habilitación, pueden ser ac?vos por cero o por uno
MC. RODRIGO LUCIO MAYA RAMIREZ
Codificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Codificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Codificadores
MC. RODRIGO LUCIO MAYA RAMIREZ
Lógica Secuencial
Es necesario conocer el Apo de descripción 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 señales Aconsejable incluir siempre un reset global que aplique un valor de inicialización
• entity latch is • port (a, b: in std_logic; • d: out std_logic); • end latch;
• architecture l_a of latch is • begin • process (a,b)
• begin • if b=’1’ then d <= a; end
if;
• end process; • end l_a;
entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin d <= a when b=’1’; end l_a;
MC. RODRIGO LUCIO MAYA RAMIREZ
Inferencia de registros activos por flanco
Es el método más habitual de describir sistemas síncronos Los disposiAvos lógicos incluyen r e g i s t r o s a c A v o s p o r fl a n c o (generalmente de Apo D) Existen varias formas de especificar la llegada de un flanco: Descripción genérica
• entity registro is • port (d, reset, preset, reloj: in std_logic; • q: out std_logic); • end registro;
• • architecture r_a of registro is • begin
• process (d, reset, preset, reloj) • begin • if reset = ’1’ then q <= ‘0’; • elsif preset = ‘1’ then q <= ‘1’;
• elsif rising_edge(reloj) then q <= d; • end if; • end process;
• end r_a;
rising_edge(reloj) if reloj’event and reloj=‘1’
if reloj’event and reloj=‘1’ and reloj’last_value=‘0’
MC. RODRIGO LUCIO MAYA RAMIREZ
No emplear más condiciones else ó elsif en la misma sentencia if..then..else después de la condición de evaluación del reloj En la misma evaluación if del reloj no se deben comparar otras señales o variables La sentencia if del reloj no puede estar dentro de un bucle La sentencia if del reloj no debe estar anidada, se pueden incluir más if dentro de ella Sólo se puede incluir una evaluación de flanco por proceso: varios relojes à varios procesos En comparaciones múlAples, emplear la sentencia case No uAlizar relojes derivados, alternaAvamente, emplear habilitación de reloj
• r_derivado <= not a and (b or c); • process (d, reset, preset, reloj, r_derivado) • begin • if reset = ’1’ then q <= ‘0’;
• elsif preset = ‘1’ then q <= ‘1’; • elsif rising_edge(reloj) then • if r_derivado = ‘1’ then
• q <= d; • end if; • end if; • end process;
• end r_a;
MC. RODRIGO LUCIO MAYA RAMIREZ
Módulos funcionales específicos En sistemas complejos es necesaria una correcta parAción del diseño (Top-‐Down) Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas) Aconsejable emplear módulos del fabricante (generadores automáAcos, módulos IP, ...) Consultar documentación del so;ware de síntesis à Herramientas y atributos especiales Módulos específicos usuales: MulAplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ... Necesaria la uAlización del Apo std_logic ó std_ulogic que define el estado 'Z‘ Basta con incluir una condición en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia
Puertas triestado
architecture hab_b of hab is begin process (entrada, oe) begin if (oe = ’1’) then salida <= entrada; else salida <= ’Z’; end if; end process; end hab_b;
MC. RODRIGO LUCIO MAYA RAMIREZ
Para puertos bidireccionales la descripción es similar a los triestado: Tipo inout
• entity bidir is • port ( bid : inout std_logic ; • a, b, c, oe : in std_logic; • salida : out std_logic);
• end bidir ; • architecture bidir_a of bidir is • signal interna1, interna2 : std_logic ;
• begin • bid <= interna1 when oe = '1' else 'Z'; • interna2 <= bid; •
• interna1 <= (a and b) nor c; • salida <= (c xor interna2) when oe='0' else 'Z'; • end bidir_a ;
MC. RODRIGO LUCIO MAYA RAMIREZ
Máquinas de estados Es necesaria una descripción específica con definición de un Apo enumerado Hay que hacer una división de la descripción en dos procesos disAntos:
1. Cambio síncrono de estado 2. Evaluación de condiciones para dirigirse a un estado
MC. RODRIGO LUCIO MAYA RAMIREZ
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejemplo
MC. RODRIGO LUCIO MAYA RAMIREZ
Ejercicio
Recordar: Usar 2 procesos Definir Apo de dato TYPE
MC. RODRIGO LUCIO MAYA RAMIREZ
Memorias
Si el tamaño de la memoria es reducido, ésta puede implementarse mediante recursos lógicos comunes (funciones lógicas y registros) Habitualmente, existen en hardware estructuras regu lares que las implementan y donde se sinteAzan si la descripción VHDL es apropiada
MC. RODRIGO LUCIO MAYA RAMIREZ
Memorias
En el caso de RAM, es necesario comprobar que el disposiAvo incorpora este recurso lógico