You are on page 1of 122

SISTEMAS EMBEBIDOS

OBJETIVO DEL CURSO: Diseñar e implementar sistemas digitales utilizando técnicas modernas: Un Lenguaje de Descripción de Hardware y Dispositivos Programables a si mismo se comprenda el diseño de sistemas mínimos, y se puedan sintetizar en un FPGA.

MC. RODRIGO LUCIO MAYA RAMIREZ

RESUMEN:
En este curso-taller se aborda uno de los más extendidos lenguajes de descripción de hardware, el VHDL, sus utilidades y aplicaciones y las herramientas y metodologías para sintetizar sistemas digitales en FPGAs, que son los dispositivos programables más ampliamente usados para generar tanto prototipos como sistemas finales de aplicación. El aprendizaje se refuerza con simulaciones y prácticas. También se aborda el diseño de sistemas mínimos basados en un microprocesador, y la interconexión de éstos con otros bloques digitales diseñados en VHDL, y sintetizables en un FPGA. Se usan microprocesadores definidos en software y ambientes de desarrollo integrado.

MC. RODRIGO LUCIO MAYA RAMIREZ

PROGRAMA DEL CURSO

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

Lenguajes de descripción de hardware

¿Qué son los HDLs? Diferencias con los Lenguajes de Software Ejemplos de HDLs VHDL Breve Reseña Histórica de VHDL Diseño Digital con VHDL Metodologías de Diseño utilizando VHDL Funcional Arquitectural Físico

MC. RODRIGO LUCIO MAYA RAMIREZ

4.3.2 2.1 2.1 Dispositivos Lógicos Programables Lógica Programable SPLDs Características Arquitectura CPLDs Características Arquitectura FPGAs Características Aplicaciones y ventajas Diferentes fabricantes de FPGAs Arquitectura de los FPGAs de Xilinx Bloque Lógico Configurable (CLB) Bloque de Entrada-Salida (IOB) Matriz de Interconexiones MC.3 2. RODRIGO LUCIO MAYA RAMIREZ .2 2.4.4.4 2.2.2 2.4.2.4 2.1 2.3 2.4.1 2.PROGRAMA DEL CURSO UNIDAD 2: 2.4.1 2.2 2.3.

12 VHDL Estructura de una descripción en VHDL Entidad Arquitectura Descripción Comportamental Descripción Flujo de Datos Descripción Estructural Elementos Léxicos Constantes y variables Tipos de Datos Escalares Datos del tipo Arreglo Estructuras de Ejecución Concurrente Estructuras secuenciales Descripciones Comportamentales Descripciones Estructurales Bibliotecas Subprogramas Funciones Procedimientos Paquetes MC.2.5 3.2.PROGRAMA DEL CURSO UNIDAD 3: 3.11.2.8 3. RODRIGO LUCIO MAYA RAMIREZ .7 3.2 3.1.3 3.10 3.11.1.1 3.1.6 3.3 3.1.4 3.1 3.9 3.1.11 3.2 3.1 3.2 3.1 3.2 3.

4 Maquinas de Estado 4.1 Arquitecturas de disponibles programables 4.4 Manejo de interrupciones MC.2 Arquitectura Picoblaze 5.3 Programación en ensamblador Picoblaze 5.PROGRAMA DEL CURSO UNIDAD 4: Diseño con VHDL 4.3 Sistemas secuenciales 4.1 Introducción 5.2 Sistemas combinacionales 4.7 Aplicaciones UNIDAD 5: Procesadores Embebidos de 8 bits 5. 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. Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrónicos discretos. Se puede hacer una analogía con los que se pueden llamar lenguajes de descripción de software. RODRIGO LUCIO MAYA RAMIREZ . Actualmente existen herramientas software que permiten pasar de dichas descripciones a diseños a nivel de compuertas: SÍNTESIS MC. • Se utilizan en la fase de diseño • Necesidad de Simulador lógico Herramienta necesaria para reproducir el comportamiento del sistema modelado Permite la verificación del sistema diseñado.

Dominios descriptivos y niveles de abstracción Dominios descriptivos: Comportamiento Se realiza la función sin información de cómo se hace Estructural Los bloques se conectan mediante interconexiones (netlist o esquemas) Físico Localización y propiedades físicas reales MC. RODRIGO LUCIO MAYA RAMIREZ .

sólo computación. RODRIGO LUCIO MAYA RAMIREZ .Dominios descriptivos y niveles de abstracción Niveles de abstracción: Circuito Valores continuos. síncronos y protocolos MC. tiempo continuo RT (RegisterTransfer) Palabras con valores discretos. tiempo discreto Algorítmico Estructuras abstractas.F). todo es electrónica. tiempo continuo Lógico Valores lógicos (T. dependencias en lugar de tiempo Sistema Relaciones entre subsistemas. control y procesamiento.

número de módulos Sistema Ancho de banda.Dominios descriptivos y niveles de abstracción Medidas: Circuito Tiempo de subida y bajada. márgenes. compuertas equivalentes Algorítmico Latencia. skew. área equivalente RT Tiempo de ciclo. MIPS. consumos área Lógico Tiempo de conmutación. RODRIGO LUCIO MAYA RAMIREZ . cadencia de datos. MC.

Dominios descriptivos y niveles de abstracción Transiciones: Síntesis/Análisis Comportamiento ⇔ estructural Optimización Mejora de una descripción sin variar el nivel de abstracción Generación/Extracción Estructural ⇔ físico Refinamiento/Abstracción Bajar/Subir el nivel de abstracción en el mismo dominio MC. RODRIGO LUCIO MAYA RAMIREZ .

RODRIGO LUCIO MAYA RAMIREZ . Hardware Description Language VHSIC: Very High Speed Integrated Circuits MC.Niveles de diseño y dominios de representación VHDL: VHSIC.

ARCHITECTURE a of puertas is begin El hecho de realizar una síntesis lógica obliga a ciertas restricciones en la tarea de realizar las descripciones con HDLs. Y <= (A and B) or end a. Y: out std_logic ). 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. C : in std_logic. B. C. end puertas. RODRIGO LUCIO MAYA RAMIREZ .std_logic_1164. use ieee.Lenguajes de descripción de hardware (HDLs). entity puertas is port ( A. Descripción HDL: library ieee. MC.all.

Ventajas del uso de HLDs

El lenguaje es independiente de la tecnología: El mismo modelo puede ser sintetizado en librerías de distintos vendedores. Reducción de la dependencia con el fabricante de ASICs, ya que la portabilidad a otra tecnología es mucho más rápida.

Soportan tres estilos de descripción básicos:

– – –

DESCRIPCIÓN COMPORTAMENTAL (behavioral) DESCRIPCIÓN DE FLUJO DE DATOS (data-flow) DESCRIPCIÓN ESTRUCTURAL (estructural)

Reutilizar el diseño en componentes tan distintos como ASICs o FPGAs con un esfuerzo mínimo.

Un diseño puede ser descrito con una combinación de los tres estilos.

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 rectificar decisiones en las primeras fases de diseño, con un esfuerzo mucho menor que si se realizase en fases posteriores.

begin Y <= (A and B) or end a; C;

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 partir de una descripción HDL que a partir de un esquemático de interconexión de compuertas
Ahorro de tiempo Facilita las correcciones en el diseño debidas a fallos de diseño o cambio de especificaciones. La existencia de herramientas comerciales automáticas (sintetizadores RTL) que permiten crear descripciones gate-level a partir de los modelos a nivel RTL

El lenguaje también puede ser usado como medio de comunicación entre diferentes herramientas CAD y CAE. Un programa de captura de esquemáticos puede ser utilizado para generar descripciones HDL del diseño, lo cual puede ser usado como entrada a un simulador.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

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 modelado como un conjunto de subcomponentes.

Los HDL tienen elementos que permiten el diseño a gran escala, de forma fácil; por ejemplo, componentes, funciones, procedimientos, paquetes.

El lenguaje soporta metodologías de diseño diferentes: top-down, bottom-up, o mixtas.

MC. RODRIGO LUCIO MAYA RAMIREZ

El modelo. puede contener información del diseño en sí mismo. y ecuaciones Booleanas El lenguaje es público y "not propietary" (especialmente en el caso del VHDL). Posibilidad de implementar distintas técnicas de modelado digital (descripciones de máquinas de estados finitos (FSM). 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. informaciones tales como el área y velocidad. Es un estándar ANSI e IEEE. RODRIGO LUCIO MAYA RAMIREZ . por lo tanto.Ventajas del uso de HLDs Soporta modelos de tiempos síncronos y asíncronos. descripciones algorítmicas. MC. La capacidad de definir tipos de datos sofisticados. los modelos descritos en estos lenguajes (VHDL o VERILOG) son totalmente portables. redes de Petri. no solo de la funcionalidad: por ejemplo. a través de los atributos.

Necesaria la adquisición de nuevas herramientas: Simuladores Sintetizadores de HDL. teniendo que mantener el resto de las herramientas para otras fases del diseño.Inconvenientes del uso de HDLs Supone un esfuerzo de aprendizaje. MC. dándole una mayor importancia a la funcionalidad de dicho diseño. El uso de estos lenguajes hace que involuntariamente se pierda un poco de control sobre el aspecto físico del diseño. ya que prácticamente se puede considerar como nueva metodología. RODRIGO LUCIO MAYA RAMIREZ .

MC.Lenguajes de Descripción de Hardware. independiente para la especificación (modelado y/o descripción) y documentación de los sistemas electrónicos. Otro HDL.999 . ZEUS de General Electric. 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. TI . el UDI/L se utiliza exclusivamente en Japón. El IEEE lo adopta y estandariza. que utiliza unas bibliotecas de clase para describir y simular circuitos digitales.HDL de Texas Instruments. Se publicó en 1. prototipos de universidades En la actualidad se utilizan fundamentalmente VHDL. RODRIGO LUCIO MAYA RAMIREZ . Verilog: Software de la firma Gateway y posteriormente de Cadence. buscando una solución a los problemas que presentaba el diseño de los sistemas complejos. SystemC: es una extensión del C++. Verilog y SystemC . Nace como proyecto del Departamento de Defensa (DoD) de EEUU (año 82) para disponer de una herramienta estándar. VHDL (Very High Speed Integrated Circuit Hardware Description Language). Ejemplos: IDL desarrollado por IBM . Diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripción de hardware" cada uno con sus peculiaridades.

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.

--ctrl de los ánodos bcd: out std_logic_vector(15 downto0)--para depurar ).--tiempo a iluminar ctrlD: out std_logic_vector(3 downto0. crear los estímulos y ver los resultados durante la simulación.--reloj del sistema.--para depurar bitin: in std_logic_vector(7 downto0). End bit8tobcd.¿Para qué sirven los HDL? Para generar documentación. --8 bits de entrada seg: out std_logic_vector(6 downto0). para dividir rst: in std_logic. MC. RODRIGO LUCIO MAYA RAMIREZ . siempre y cuando los modelos de los circuitos estén bien comentados. es decir. Para crear bancos de prueba (test. Entity bit8tobcd is Port( clk: in std_logic. cuenta: out std_logic_vector(1 downto0).bench).

¿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. pudiendo ser reutilizados dichos estímulos aunque se use un simulador distinto. pueden ser descritos con estos HDL MC. No limitamos el uso de dichos estímulos a un determinado simulador. RODRIGO LUCIO MAYA RAMIREZ . ya que se puede asociar el modelo a sus estímulos de simulación. Los retardos de propagación y limitaciones temporales.

3.2.1 Lógica Programable SPLDs Características Arquitectura CPLDs Características Arquitectura FPGAs Características Aplicaciones y ventajas Diferentes fabricantes de FPGAs Arquitectura de los FPGAs de Xilinx Bloque Lógico Configurable (CLB) Bloque de Entrada-Salida (IOB) Matriz de Interconexiones MC.1 2.2 2.4.4.2 2.UNIDAD 2: Dispositivos Lógicos Programables 2.4 2.2 2.3 2.1 2.4 2.1 2.2 2.1 2.3 2.3.4.2.4. RODRIGO LUCIO MAYA RAMIREZ .4.4.

Los dispositivos actuales (CPLD y FPGAs) tienen una capacidad lógica de hasta millones de compuertas. o SoPC (sistema sobre un circuito integrado programable) y System-on-aReprogammable Chip (SoRC). MC. desarrollo rápido de nuevos productos. RODRIGO LUCIO MAYA RAMIREZ . Su función puede ser definida (o programada) por el usuario.Dispositivos Lógicos Programables Los dispositivos lógicos programables son circuitos integrados digitales que no tienen una función predefinida por el fabricante. sistemas completos pueden desarrollarse sobre un solo circuito integrado. Esta gran capacidad y variedad de los dispositivos los hace sumamente útiles a la hora de crear prototipos. multiplicadores o CPUs completas Esto da lugar a las denominaciones System–on–a-Programmable Chip. Debido a la gran capacidad lógica que tienen los dispositivos modernos. 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. incluyen interfaces programables para varios estándares de interface eléctrica y tienen bloques de funciones especiales embebidos entre la lógica programable tales como memoria.

RODRIGO LUCIO MAYA RAMIREZ . Esquema básico de un típico dispositivo PLA. Los primeros dispositivos diseñados específicamente para implementar funciones digitales programables fueron los PLA. El corazón electrónico de estos dispositivos consiste en un bloque que permite negar las entradas y dos niveles de compuertas: un nivel de compuertas AND y un nivel OR. De esta manera la memoria provee una tabla de decodificación completa de las entradas. La base teórica de estos dispositivos es que cualquier ecuación lógica puede reducirse a una suma de productos.Evolución de los Primeros Dispositivos Lógicos Programables Los primeros dispositivos lógicos programables fueron las memorias PROM. y puede utilizarse para implementar cualquier función lógica combinacional. MC. Mediante fusibles pueden programarse las interconexiones entre las entradas y la lógica. Para ello se utilizan como entradas las líneas de dirección a la memoria. introducidos al mercado en la década de 1970 por Philips.

MC.PAL Debido a las limitaciones en la velocidad de las conexiones programables y los problemas en el proceso de manufactura de las PLA. pero tienen un nivel de lógica AND programable mientras el nivel de lógica OR es fijo. Esquema de una posible configuración de un PAL. así que los fabricantes de PAL los ofrecían en una variedad de configuraciones para adecuarlos a las necesidades del usuario. Esto limita la cantidad de funciones que pueden definirse con un dispositivo dado. Los PAL se basan en el mismo principio que las PLA. Muchos PAL además incorporaron registros sobre las salidas y realimentación para implementar circuitos secuenciales. RODRIGO LUCIO MAYA RAMIREZ . surgieron dispositivos con un solo nivel de lógica programable denominados PAL .

La denominación GAL fue utilizada en principio por Lattice. por "Output Logic Macro Cell".GAL Los dispositivos 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. La macrocelda de estas GAL se denomina OLMC. RODRIGO LUCIO MAYA RAMIREZ . en reemplazo del nivel OR. Diagrama funcional de una GAL completa y de una macrocelda de un dispositivo GAL22V10 de Lattice Semiconductors. y luego licenciada a otros fabricantes. MC.

Como ejemplo. la familia MAX7000 de alto rendimiento de Altera se manufactura en versiones desde 32 hasta 512 macroceldas. Estructura general CPLD Altera MC. RODRIGO LUCIO MAYA RAMIREZ . con 36 a 212 entradas/salidas según el dispositivo y empaquetamiento que se elija. Estos dispositivos se fabrican con distintas capacidades para adaptarlos a las necesidades del usuario.CPLDs Los CPLDs son dispositivos que combinan varios bloques lógicos similares a las PAL o GAL con una matriz de interconexión programable.

Como se de las figura. una red de distribución de reloj dedicada y bloques de entrada salida que permiten interfaces compatibles con diferentes estándares eléctricos.CPLDs Macrocelda CPLD. un arreglo de interconexión programable (PIA). MC. estos dispositivos incluyen además de las macroceldas. RODRIGO LUCIO MAYA RAMIREZ . Los bloques lógicos AND y OR están ambos incluidos en la macrocelda del dispositivo.

FPGAs

La arquitectura de una FPGA consiste en arreglos de bloques lógicos que se comunican entre si a través de canales de conexión verticales y horizontales. La principal diferencia entre las FPGA y CPLDs es que en general los bloques lógicos de las FPGA no implementan la lógica usando compuertas sino con generadores de funciones.

En la siguiente sección se estudiará en mayor detalle la arquitectura de una FPGA típica.

Estructura básica FPGA

MC. RODRIGO LUCIO MAYA RAMIREZ

Elementos del FPGA
Esta FPGA contiene cinco elementos principales: • Bloque de entrada-salida (IOB o Input-Output Block): estos bloques proveen la interface entre las patitas 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 utilizará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átil y multi-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 tienen algún tipo 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" 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" están unidas por un multiplexor 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 multiplexor de 8:1 o determinadas funciones lógicas de hasta 19 entradas. Además de poder implementarse lógica combinacional, cada “slice” contiene recursos para implementar circuitos secuenciales y operaciones aritméticas 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. así como también utilizarse como memorias distribuidas de 16 x 1 bit. compuesto por una tabla de entradasalida (LUT o Look-Up Table) de cuatro entradas y una salida. que contiene lógica que permite optimizar funciones aritméticas. Las salidas de las LUT pasan a los bloques de control. CLB de una FPGA Spartan 3 de Xilinx MC. Estas tablas pueden implementar cualquier función lógica de cuatro entradas y una salida. RODRIGO LUCIO MAYA RAMIREZ . Estos pueden configurarse como flip-flops D con reloj o como latches controlados por nivel. Los elementos que permiten implementar lógica secuencial son los elementos de almacenamiento que se ven sobre las salidas del “slice”.

Los bancos se configuran aplicando diferentes tensiones de alimentación a los pines denominados VccO y VREF. RODRIGO LUCIO MAYA RAMIREZ . Las entradas de reloj están asociadas a diferentes bancos de entrada-salida.Bloque de Entrada / Salida Las interfaces de entrada-salida son otro de los componentes particulares que tienen las FPGAs. Distribución de los bancos de entrada/salida en una FPGA Spartan IIe MC. para permitir que haya diferentes dominios de reloj con interfaces eléctricas diferentes. 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. por ejemplo. Al utilizar diferentes valores de VccO para los distintos bancos se podrá tener un sistema con interface a diferentes familias lógicas dentro de la misma FPGA. La familia de FPGAs Spartan IIe de Xilinx.

MC. 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 tiene una resistencia de “pull-up” y “pull . RODRIGO LUCIO MAYA RAMIREZ . 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’).down” configurables que permiten fijar el valor lógico mediante programación. Esquema de un bloque de entrada-salida (IOB) de una FPGA Spartan IIe.Bloque de Entrada / Salida Además de la tensión VccO. Los bloques de entrada-salida de muchas FPGAs tienen elementos de almacenamiento integrados que permiten controlar mejor los tiempos de propagación entre los pines del integrado y la lógica interna.

La familia Spartan IIe de Xilinx tiene bloques específicos para control de reloj denominados DLL (Delay Locked Loop).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. controlan el desplazamiento de fase entre los relojes. Estos bloques sincronizan el reloj interno al reloj externo del sistema. RODRIGO LUCIO MAYA RAMIREZ . La red de distribución de reloj en las FPGA asegura retardos parejos a todos los bloques lógicos de la FPGA. Cada fabricante utiliza una arquitectura diferente para el control y distribución de reloj. Red global de distribución de reloj en la FPGA Spartan IIe MC. sincronizan los diferentes dominios de reloj y aseguran un retardo de distribución del reloj pareja para la lógica interna de la FPGA.

Bloque de Control de Reloj La familia Stratix de Altera tiene los bloques de control de reloj. RODRIGO LUCIO MAYA RAMIREZ . Estos bloques (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 Stratix de Altera MC.

RAMs o ROMs. Además de memorias embebidas. . Este bloque se denomina BLOCK RAM y es una memoria de puerto dual (dual-port). MC. En general estos bloques básicos de memoria pueden utilizarse en diferentes configuraciones para generar RAMs y ROMs de diferentes tamaños. que puede leerse y escribirse al mismo tiempo. en la siguiente tabla se muestran las opciones de configuración. Estos bloques de memoria pueden usarse como memorias de puerto dual. Para entender la versatilidad de estos bloques de memoria. RODRIGO LUCIO MAYA RAMIREZ Esquema de una celda de memoria básica de la familia Spartan IIe de Xilinx. las FPGAs basadas en memoria SRAM pueden usar las tablas LUT de los bloques lógicos como memoria. puerto simple.Memoria Varias familias de FPGA contienen bloques de memoria embebida integrados con la lógica programable.

que puede configurarse como memoria de puerto simple. RODRIGO LUCIO MAYA RAMIREZ . Esquema de un bloque de memoria de Actel configurada como memoria multi-puerto MC. varios bloques pueden conectarse utilizando lógica externa para implementar memorias de otros tamaños y colas FIFO o FILO. La figura muestra un bloque de memoria de Actel.Memoria Además de poder configurar cada bloque. dual o multi-puerto.

los bloques específicos pueden interconectarse a los demás bloques utilizando la matriz de interconexión programable de la FPGA. Al igual que los otros bloques. Pueden configurarse de varias maneras diferentes según las necesidades del usuario. contienen uno o más módulos de procesamiento de señal entre los bloques de lógica programable de propósito general. Las FPGA de la familia Stratix de Altera. Estos bloques permiten desarrollar ciertas funciones específicas típicas de las aplicaciones de procesamiento de señal de manera muy eficiente. RODRIGO LUCIO MAYA RAMIREZ . Como muestra la figura. este bloque contiene lógica para implementar operaciones de multiplicación-acumulación que requerirían de muchos recursos y ciclos de reloj si se implementaran utilizando lógica de propósito general. por ejemplo.Bloque de Procesamiento de Señal Varias FPGA contienen bloques específicos que optimizan en hardware ciertas funciones especiales. Bloque de procesamiento de señal de la familia Stratix de Altera MC.

Xilinx ofrece el Microblaze y Actel ofrecerá un micro de la familia ARM. Hay muchos micros "softcore" públicos y propietarios. A este tipo de diseño se lo denomina "softcore". RODRIGO LUCIO MAYA RAMIREZ . El micro es de arquitectura RISC de 32 bits. Esto permite utilizar toda la potencia de una CPU integrada con la flexibilidad de los periféricos diseñados mediante lógica programable. ya que a FPGA no tiene ningún bloque específico para la CPU implementado sobre el circuito integrado. Los bloques específicos integrados en el silicio de las FPGAs se denominan "hardcores". La lógica programable del Excalibur puede ser de hasta un millón de compuertas. Altera ofrece la FPGA Excalibur que contiene un microcontrolador ARM922T integrado a un costado de lógica programable. Por otro lado también pueden diseñarse microcontroladores o procesadores usando solamente la lógica de configuración de las FPGAs. de tecnología RISC de 16 bits que puede utilizarse sobre varias de las FPGA de Altera. MC.CPUs Embebidas La familia de FPGAs de Xilinx Virtex II-PRO contiene una CPU Power PC 405 de IBM y lógica de interconexión embebida dentro de lógica programable. y puede correr a una frecuencia de reloj de hasta 200 MHz . Altera ofrece el microcontrolador Nios.

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. RODRIGO LUCIO MAYA RAMIREZ . Las herramientas de “localización e interconexión” (place and route) son las encargadas de decidir 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 tiempo y retardos que se han definido.Matriz de interconexión Para poder implementar circuitos lógicos. los elementos lógicos presentados en las secciones anteriores no solo deben configurarse adecuadamente sino que también deben conectarse entre si. MC.

Las conexiones a los CLB adyacentes permiten optimizar los diseños al evitar los retardos y la utilización de recursos de la matriz general de interconexionado.Matriz de interconexión de las FPGA Spartan IIe de Xilinx Estas FPGA tienen dos niveles de interconexión. RODRIGO LUCIO MAYA RAMIREZ . el interconexionado a este nivel provee conexiones a la matriz de interconexionado general y a los CLB adyacentes. Caminos de interconexión local en la FPGA Spartan IIe Además. permiten hacer las conexiones entre los elementos internos de un bloque lógico o CLB. Por otro lado contienen recursos de interconexión local. Además de los ya mencionados. MC. mostrados en la Figura 31. como las tablas de búsqueda (LUT). Por un lado tienen una interconexión de propósito general a través de la matriz de interconexionado general o GRM por sus siglas en inglés. Los recursos de interconexión local. de entradasalida y recursos de interconexión global para la distribución de reloj y señales específicas. los flip-flop y las realimentaciones dentro del CLB. las FPGA Spartan IIe contienen recursos de interconexión dedicados a señales de tres estados.

Permiten hacer la interconexión entre las trazas horizontales y verticales y hacia los CLB. RODRIGO LUCIO MAYA RAMIREZ . A través de ellos se configuran las conexiones entre CLBs no adyacentes y hacia los bloques de entrada/salida.Matriz de interconexión de las FPGA Spartan IIe La mayor parte de las señales se conectarán a través de la matriz general de interconexionado (GRM). en los canales de interconexión horizontales y verticales de la FPGA. Los elementos de la GRM se encuentran entre los CLB. Red dedicada de distribución de reloj en la FPGA Spartan IIe MC.

o la relación entre las celdas lógicas y los recursos de interconexionado. MC. A estas se las denomina de granularidad fina. de varias entradas/salidas. RODRIGO LUCIO MAYA RAMIREZ . Algunos parámetros para definir la granularidad de un dispositivo 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 dispositivos tienen arquitecturas con celdas lógicas que pueden implementar funciones lógicas complejas.Granularidad de los Dispositivos Lógicos Programables (PLDs) La granularidad de un dispositivo lógico programable está dada por la funcionalidad básica que provee cada bloque de configuración lógica. Otras arquitecturas están formadas por celdas básicas que solo permiten implementar lógica muy simple. A estas se las denomina de granularidad gruesa.

Por otro lado cada bloque consume más área que puede desaprovecharse. 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. para una función dada.Granularidad de los Dispositivos Lógicos Programables (PLDs) La granularidad de un dispositivo lógico influirá en la manera que se implemente una función lógica dada. Una arquitectura de granularidad fina será típicamente más densa y tendrá menor retardo de interconexión entre celda y celda. en su frecuencia máxima de funcionamiento y en la utilización que se hace del dispositivo. RODRIGO LUCIO MAYA RAMIREZ . se deberán conectar un mayor número de celdas. Sin embargo. 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.

• Pobres para arquitecturas con colas (pipelines) • Ejemplo: Altera MAX 3000 Arquitecturas mixtas • Combinan celdas con granularidad fina y gruesa • Muchas veces tienen recursos de interconexión dedicados para cada tipo de celda • Ejemplo: ispXPGA de Lattice Semiconductors MC. RODRIGO LUCIO MAYA RAMIREZ . funciones aritméticas.Granularidad de los Dispositivos Lógicos Programables (PLDs) 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 estilo 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.

se destacan las tecnologías EEPROM. Entre los dispositivos reprogramables. Los dispositivos que solo pueden configurarse una vez en general utilizan tecnologías de antifusible. dependen del fabricante y el dispositivo. Cada tecnología tiene sus ventajas y desventajas respecto a las otras. RODRIGO LUCIO MAYA RAMIREZ .Tecnología de Configuración de los PLDs La tecnología utilizada para configurar los elementos de un PLD. SRAM y Flash. MC. ya sean los bloques lógicos o las interconexiones.

más velocidad. menos consumo de potencia y menor costo. memorias. como son Matlab y herramientas para el diseño integrado de software y hardware. Componentes que pueden pasar directamente de un prototipo sobre una FPGA a un ASIC sin esfuerzo de diseño adicional. Integración del manejo de configuración de FPGAs con las herramientas de diseño de circuitos impresos (PCBs). • • • • • Integración con herramientas y otros software de desarrollo de mayor nivel.Tendencias Actuales y Futuras • Desarrollo de FPGAs con mayor capacidad. MC. Sistemas con aplicaciones que utilicen 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. etc. la transferencia de los diseños para FPGAs a ASICs. • Cambios en las herramientas de software para tener mayor integración entre los diferentes usuarios y en los distintos pasos del proyecto. para poder configurar el interconexionado interno del SoPC de manera integral con el conexionado hacia los componentes externos. componentes para procesamiento digital de señal. que permiten observar la lógica de interna de las FPGA en tiempo real al mismo tiempo que se observan otras señales. RODRIGO LUCIO MAYA RAMIREZ . integración con uP y uC. externas a la FPGA. Instrumentos. • Integración en hardware sobre las lógicas programables de bloques específicos como ALUs. Esto incluye el manejo de grupos de trabajo. (HW-SW co-design). la documentación de proyectos integrada a las herramientas de diseño. tales como analizadores lógicos. etc. • Integración y mezcla entre FPGAs y circuitos integrados de propósito específico (ASICs). el manejo de la propiedad intelectual.

4 3.2.2 3.2.7 3.1 3.2 3.1 3.5 3.1 3.UNIDAD 3: VHDL 3.3 3.9 3.11 3.1 3.2 3.10 3. RODRIGO LUCIO MAYA RAMIREZ .8 3.6 3.3 3.1.2.1.2 3.1.1.11.1.12 Estructura de una descripción en VHDL Entidad Arquitectura Descripción Comportamental Descripción Flujo de Datos Descripción Estructural Elementos Léxicos Constantes y variables Tipos de Datos Escalares Datos del tipo Arreglo Estructuras de Ejecución Concurrente Estructuras secuenciales Descripciones Comportamentales Descripciones Estructurales Bibliotecas Subprogramas Funciones Procedimientos Paquetes MC.11.

básicamente porque no estaban correctamente documentados. •En 1987 el trabajo se cedió a la IEEE. •El uso de VHDL permitió comprobar que el tiempo de diseño de los circuitos se reducía. VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits MC. RODRIGO LUCIO MAYA RAMIREZ . y el coste de reponerlos cada vez era mayor. porque se podían crear directamente de su descripción: utilidad de la síntesis.Historia Surge a principios de los ’80s del proyecto DARPA (del Departamento de Defensa de los EE. VHDL nació como una manera estándar de documentar circuitos. y a partir de ese momento es un estándar abierto.UU.) llamado VHSIC (Very High Speed Integrated Circuits) Se utiliza como forma de describir circuitos integrados: •Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran más complejos.

1983: Se concedió a Intermetrics. RODRIGO LUCIO MAYA RAMIREZ . reunión inicial entre el Gobierno. Universidades e Industria. 1981: Woods Hole Workshop. IBM y Texas Instruments el contrato para desarrollar VHDL.Evolución 1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estándar dentro del programa VHSIC. pasando a ser estándar 1076 ‘93 (VHDL-93). 1993: El lenguaje VHDL fue revisado y ampliado. 1987: El IEEE lo ratifica como su estándar 1076 (VHDL-87).2 de dominio público. 2000:Última modificación de VHDL MC. 1985: Versión 7.

Incorpora conceptos específicos para el modelado del hardware.VHDL: Características 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 tipo de datos. for while). MC. Posibilidad de utilizar y desarrollar bibliotecas de diseño. Sentencias de control de flujos (if. RODRIGO LUCIO MAYA RAMIREZ . Capacidad de estructurar el código (subprogramas. como concurrencia y ciclo de simulación. permite afrontar algoritmos complejos. con posibilidad de definir nuevos tipos facilita la descripción de circuitos con diversos niveles de abstracción. funciones o procedimiento). Junto con la característica anterior potencia para desarrollar algoritmos.

VHDL: Costa Este y Europa. La alternativa estándar es usar un HDL Verilog: Costa Oeste de EEUU. 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. más descriptivo. El diseño se sintetiza a partir de un HDL. más parecido a C. menos verboso. por ejemplo Gforce 4 tiene 65 M transistores y 800. más parecido a PASCAL y ADA. para ASICs.000 líneas de código Verilog. para FPGAs. RODRIGO LUCIO MAYA RAMIREZ . más expresivo.Estado actual y alternativa En la actualidad el diseño mediante esquemas no es una alternativa realista en ningún proyecto. MC. menos expresivo.

hay varias iniciativas para describir HW usando lenguajes de alto nivel. exige un cambio de mentalidad con respecto al Software No permiten re usar código SW para HW. tipo SW Handel-C.¿Futuro? Los lenguajes de descripción de hardware también tienen limitaciones: Metodología de diseño nueva. System-C Forge (Java) Superlog MC. Poseen enorme reusabilidad intrínseca. RODRIGO LUCIO MAYA RAMIREZ . 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.

RODRIGO LUCIO MAYA RAMIREZ .Estructura de un diseño en VHDL MC.

el interfaz de la “caja negra” está completamente definida. Una unidad hardware se puede visualizar como una caja negra.Elementos de descripción VHDL Bibliotecas (Library) • Almacenan los elementos de diseño: tipo de datos. funciones.. • Esos elementos de diseño se organizan en Paquetes Packages: son unidades de almacenamiento de elementos y tienen que hacerse “visibles” para poder ser utilizados . RODRIGO LUCIO MAYA RAMIREZ . objetos. Es la caja negra que define las entradas y salidas. componentes. operadores.. MC. Arquitectura (Architecture) Describe el funcionamiento del circuito.. •Hay 2 bibliotecas que siempre son visibles por defecto: std (la standard) y work (la de trabajo) y que no es necesario declarar Entidades (Entity) Es el modelo de interfaz de un circuito con el exterior mediante unas terminales de entrada y de salida. El interior está oculto En VHDL la caja negra se denomina entidad La entidad 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.

Puertos de una entidad Cada una de las posibles conexiones se denomina PORT y consta de: Un nombre. RODRIGO LUCIO MAYA RAMIREZ . Los puertos son una clase especial de señales que además añade el modo al tipo de señal e0e2e1salida0salida1caja MC. que debe ser único dentro de la entidad. salida. los valores posibles dependen de lo que se denomina tipo de señal. como: la dirección del flujo de datos. '1' o (‘Z’). bidireccional y se conoce como modo del puerto. entrada. Una lista de propiedades. los valores que puede tomar el puerto: '0’. etc ..

BUFFER: Una señal que sale de la entidad y también es realimentada dentro de la entidad.Modos de un Puerto Indican la dirección y si el puerto puede leerse o escribirse dentro de la entidad. RODRIGO LUCIO MAYA RAMIREZ . MC. entrada/salida de la entidad. IN: Una señal que entra en la entidad y no sale. INOUT: Una señal que es bidireccional. La señal puede ser leída pero no escrita. La señal no puede ser leída dentro de la entidad. OUT: Una señal que sale fuera de la señal y no es usada internamente.

RODRIGO LUCIO MAYA RAMIREZ .Estructura de un diseño en VHDL MC.

RODRIGO LUCIO MAYA RAMIREZ .Declaración de entidad MC.

layout obtenido después de implementar el chip MC. la descripción de comportamiento que ha hecho el diseñador y el modelo post.Resumen: Entidad y Arquitectura La entidad se utiliza para hacer una descripción "caja negra" del diseño. RODRIGO LUCIO MAYA RAMIREZ . sólo se detalla su interfaz Los contenidos del circuito se modelan dentro de la arquitectura Una entidad puede tener varias arquitecturas Por ejemplo.

Invariante a mayúsculas. dos expresiones iguales conteniendo mayúsculas y minúsculas son idénticas. una buena idea es utilizar los paréntesis de manera que una persona la pueda entender con facilidad Cada asignación termina con “.” Cada “if” tiene el correspondiente “then“ Cada “if” termina con el correspondiente “endif” Si se necesita “elseif” se utilizará “elsif” Cada “case” termina con el correspondiente “end case” Cada “loop” termina con el correspondiente “end loop” MC. dos expresiones iguales conteniendo más o menos espacios son idénticas Los comentarios van detrás de dos rayas “--”y convienen que sean claros para que las descripciones puedan ser fácilmente utilizadas por otras personas o por ti mismo.Invariancias VHDL presenta ciertas invariancias que conviene conocer antes de su utilización. Invariante a los espacios. RODRIGO LUCIO MAYA RAMIREZ . es decir. VHDL es relativamente laxo con la utilización de paréntesis. es decir.

El identificador no puede termina con el sub-guión (“_”) Son palabras que no se pueden utilizar como identificadores MC. Es conveniente que dichas palabras proporcionen información suficiente para que la descripción sea fácilmente reutilizable. El identificador puede ser tan largo como se quiera. pero un nombre demasiado largo es complicado de utilizar. RODRIGO LUCIO MAYA RAMIREZ . puertos. señales. y demasiado corto quizá proporcione poca información. El identificador debe dar suficiente información para su uso . Son las palabras que se utilizan para identificar a las funciones. El identificador puede contener cualquier combinación de las letras (AZ y a-z) números (0-9 ) y el sub-guión (“_”) El identificador debe empezar por un carácter alfabético. variables. etc.Identificadores Identificadores.

Describe la conexión entre distintos módulos descritos previamente MC.Modelos de descripción Comportamental o algorítmico (behavioral). Especifica el circuito como una representación concurrente del movimiento de los datos a su través. No proporciona al sintetizador información de cómo será el circuito. cómo circula la información Estructural (structural). siendo éste el que lo determina. La parte fundamental de este tipo de descripciones es el proceso (process) Flujo de datos (dataflow). es decir. RODRIGO LUCIO MAYA RAMIREZ . Especifica cómo se comportan las salidas con respecto a las entradas.

procedimientos. la arquitectura (architecture).. a utilizar. en VHDL describe la función que realiza una entidad (entity).Modelos de descripción VHDL Como hemos visto. consistente en una sucesión de asignaciones concurrentes y procesos que modelan la entidad. MC. La arquitectura se compone de dos partes: la parte declarativa en la que se encuentran las definiciones de las señales. tipos. funciones. y el cuerpo de la descripción. RODRIGO LUCIO MAYA RAMIREZ . etc.

El valor de S será el correcto una vez que se hayan propagado los tiempos de retardo de las compuertas. y las señales necesitan que transcurra el tiempo para tomar un valor La solución al problema anterior es que aunque la ejecución sea secuencial. S3 <= C xor D. S2 = C or D. los circuitos coexisten en el tiempo y por lo tanto trabajan al mismo tiempo. Este chip tiene tres compuertas que funcionan simultáneamente No se puede modelar con un lenguaje como C: S1 = A and B. No hay que olvidar que se trata de modelar circuitos reales.Concurrencia del hardware El hardware es concurrente. Las tres puertas funcional al mismo tiempo ¡no una después de la otra! S1 <= A and B. las asignaciones no tengan tiempo de ejecución: MC. RODRIGO LUCIO MAYA RAMIREZ . no virtuales. S3 = C xor D. S2 <= C or D. es decir.

Sirven para especificar: Interconexiones entre componentes.Sentencias concurrentes Características: Se ejecutan de forma asíncrona unas respecto de las otras en el mismo tiempo de simulación. MC. no siguen un orden de ejecución predefinido. Transferencias entre registros. Estructuras regulares. –No obstante conviene escribir el código en el orden que mejor se pueda entender y mejor documente el diseño. Estructuras jerárquicas. El orden en que se escriban es indiferente. 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 Utilizando construcciones muy expresivas: if.then. procedimientos. RODRIGO LUCIO MAYA RAMIREZ . case. etc… Y que además puede declarar variables... etc. MC.else... bucles for y while.

Esta es la manera que tiene VHDL de expresar la concurrencia inherente al hardware MC. no se asegura un comportamiento correcto. Las señales modelan hilos del circuito. pero se activa con cualquier evento. y como tales. Las instrucciones dentro del proceso se ejecutan secuencialmente. una detrás de otra. RODRIGO LUCIO MAYA RAMIREZ . sólo pueden cambiar de valor si se deja que avance el tiempo.Procesos Los procesos se “disparan”(su código se ejecuta) cuando cambia alguna de las señales de su lista de sensibilidad. El tiempo sólo avanza cuando se llega al final del proceso. Una arquitectura puede tener tantos procesos como queramos. pero sin dar lugar a que avance el tiempo durante su ejecución. y todos se ejecutan en paralelo. Un proceso sin lista de sensibilidad es válido.

una arquitectura puede tener tantos procesos como queramos. y todos se ejecutan concurrentemente 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.

RODRIGO LUCIO MAYA RAMIREZ . el lado izquierdo es el destino y el lado derecho la fuente. Para Señales y Puertos. Para Variables el operador es := acarreo_intermedio:= ope1 and ope2.sentencias concurrentes Asignación simple suma <= ope1 xorope2. el operador es <=. WHEN/ELSE Permite realizar asignaciones condicionales salida <= a and b when c =‘1’ else a or c. OJO: fuente y destino tienen que ser del mismo tipo. MC.

Ejemplo: MC. RODRIGO LUCIO MAYA RAMIREZ .WHEN/ELSE [etiqueta:] señal <= val_1 when condi_1 else val_2 [whencondi_2] else … else val_n.

RODRIGO LUCIO MAYA RAMIREZ . También se puede hacer mediante la sentencia de asignación selectiva 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 último when others. MC.WITH/SELECT La asignación condicional (WHEN/ELSE).

RODRIGO LUCIO MAYA RAMIREZ .WITH/SELECT MC.

Dentro de los procesos: Descripciones secuenciales MC. RODRIGO LUCIO MAYA RAMIREZ .

RODRIGO LUCIO MAYA RAMIREZ .IF MC.

Ejemplo IF MC. RODRIGO LUCIO MAYA RAMIREZ .

WHEN casoN=> secuencia sentenciasN. RODRIGO LUCIO MAYA RAMIREZ . WHEN caso2 => secuencia sentencias2. MC. END CASE. WHEN OTHERS => resto de casos.CASE Sintaxis: CASE expresión IS WHEN caso1=> secuencia sentencias1.

FOR-LOOP Realiza un bucle un número determinado de veces *etiqueta:+ FOR índice IN rango’inf TO rango’sup LOOP secuencia de sentencias END LOOP[etiqueta]. END LOOP bucle. ejemplo: bucle: FOR i IN 0 TO 5 LOOP x(i) <= enable AND w(i+2). MC. i) <= w(i). RODRIGO LUCIO MAYA RAMIREZ . y(0.

LOOP El bucle se repite infinitamente [etiqueta:]LOOP secuencia de sentencias END LOOP[etiqueta]. END LOOP lazo1. La única sentencia que deja romper el bucle es EXIT MC. ejemplo: lazo1: LOOP a <= c and b.WHILE-LOOP El bucle se repite mientras la condición que haya después del while sea verdadera [etiqueta:] WHILE condición LOOP secuencia de sentencias END LOOP[etiqueta]. END LOOP lazo1. ejemplo: lazo1:WHILE (i < 10) LOOP WAIT UNTIL clk'EVENT AND clk='1'. RODRIGO LUCIO MAYA RAMIREZ .

next [etiqueta] [when condición].EXIT Detiene la ejecución en ese instante y sale del bucle. 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. Los bucles pueden tener una condición de salida. END LOOP termina. NEXT En VHDL se pueden crear bucles infinitos [etiqueta] loop secuencia de sentencias End loop [etiqueta]. o bien. END LOOP sigue. RODRIGO LUCIO MAYA RAMIREZ Cuando existen bucles anidados. de aquel que tiene la etiqueta que sigue al EXIT. . 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. Si hay varios bucles anidados. Solamente puede aparecer dentro de una sentencia LOOP. MC. exit [etiqueta] [when condición]. sale de donde se encuentre la instrucción o bien del bucle que se especifica en la etiqueta. END LOOP sigue. END LOOP termina. sale del más interno.

Pasa la ejecución a la siguiente sentencia secuencial. Espera indefinidamente WAIT MC. Espera un cierto tiempo WAIT tiempo. Sintaxis: [etiqueta:] NULL. RODRIGO LUCIO MAYA RAMIREZ .WAIT Espera a que ocurra una condición WAIT UNTIL condición. WAIT UNTIL e1=‘1’ and e2=‘0’.clk.e2. NULL No realiza función alguna. Espera a que cambie alguna señal de la lista de señales WAIT ON lista_señales. WAIT ON e1. Útil en sentencias CASE cuando no se quiere realizar ninguna acción para alguna de las elecciones. WAIT 25ns.

RODRIGO LUCIO MAYA RAMIREZ . Sintaxis: etiqueta: FOR identificador IN range GENERATE (sentencias concurrentes) END GENERATE. etiqueta: IF condición GENERATE (sentencias concurrentes) END GENERATE. MC.GENERATE Esta sentencia concurrente permite reducir el tamaño del código de aquellas estructuras que se repiten considerablemente.

RODRIGO LUCIO MAYA RAMIREZ .Paquetes MC.

Componentes MC. RODRIGO LUCIO MAYA RAMIREZ .

señal.Atributos Un atributo es una característica asociada a un elemento(tipo de dato. RODRIGO LUCIO MAYA RAMIREZ . Atributos de rango vectores MC. Atributo ≠Valor Un objeto tiene un solo valor y puede tener múltiples atributos.…) que proporciona información adicional. entidad. VHDL proporciona una serie de atributos predefinidos.

MC. RODRIGO LUCIO MAYA RAMIREZ .Atributos de rango de vectores.

Atributos de rango de vectores Loops MC. RODRIGO LUCIO MAYA RAMIREZ .

unidades de tiempo desde la última asignación. EVENT. DRIVING_VALUE. MC. valor que toma la señal tras el proceso. verdadero si ocurre una asignación a la señal en el paso de simulación. verdadero si ocurre un cambio en la señal en el paso de simulación. ACTIVE. verdadero si la señal permanece invariable durante t unidades de tiempo. LAST_VALUE. DRIVING. LAST_ ACTIVE. STABLE(t). a ‘1’cuando hay una asignación a la señal. valor anterior de la señal. tipo bit. RODRIGO LUCIO MAYA RAMIREZ . TRANSACTION. LAST_EVENT. verdadero si la señal no ha recibido ninguna asignación en t unidades de tiempo. QUIET(t). unidades de tiempo desde el último evento. Valor de la señal retrasada t unidades de tiempo. verdadero si el proceso actual determina el valor de la señal.Atributos de las señales DELAYED(t).

Atributos MC. RODRIGO LUCIO MAYA RAMIREZ .

Transferencia entre registros (RTL) o flujo de datos (Data Flow). .Resumen: Estilos de descripción Independiente del nivel de abstracción. Estructural (Structural). En este estilo de descripción se definen o instancian todas las partes del sistema y sus interconexiones. nombre_puerto: tipo_puertotipo_dato. ). La instrucción concurrente fundamental utilizada dentro de una arquitectura RTL es la de COMPONENT COMPONENT nombre_componente PORT( nombre_puerto: tipo_puertotipo_dato. También se le suele llamar estilo algorítmico o secuencial. existen tres estilos 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 estilos a la hora de describir sus diferentes arquitecturas. 1. Resulta muy útil cuando se quiere aprovechar diseños compilados con anterioridad y que se encuentran almacenados en bibliotecas de componentes. El proceso de descripción se realiza por medio de funciones lógicas. En este estilo de descripción se especifican los flujos de datos del sistema y la interconexión entre sus componentes. RODRIGO LUCIO MAYA RAMIREZ . Comportamiento (Behavioral). MC. 2.. Se describe el algoritmo que refleja el comportamiento de dicho componente. END COMPONENT.. En este estilo de descripción se modela la funcionalidad por medio de los recursos algorítmicos del lenguaje. que se ejecutarán de forma concurrente 3.

una señal de salida ( y ) y señal de control ( sel ) Declaración de la entidad (entity) MC. RODRIGO LUCIO MAYA RAMIREZ .Ejemplo de estilos de descripción Multiplexor de dos entradas de datos de un bit ( e0 y e1 ).

Ejemplo de estilos de descripción 1. RODRIGO LUCIO MAYA RAMIREZ . Descripción de comportamiento o algorítmica (Behavioral) MC.

RODRIGO LUCIO MAYA RAMIREZ . Descripción estructural (Structural) MC.Ejemplo de estilos de descripción 3.

Ejemplo de estilos de descripción MC. RODRIGO LUCIO MAYA RAMIREZ .

7 Aplicaciones usando la tarjeta Spartan 3E MC.UNIDAD 4: Diseño con VHDL 4. RODRIGO LUCIO MAYA RAMIREZ .1 Sistemas combinacionales 4.2 Sistemas secuenciales 4.3 Maquinas de Estado 4.

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. por lo tanto: •Necesitar miles o millones de términos canónicos para describirlo matemáticamente. puesto que en todo momento las salidas sólo dependen del estado actual de las entradas. es decir. •Tablas de verdad que resultan inmanejables. etc. RODRIGO LUCIO MAYA RAMIREZ . decodificadores. sumadores. Un circuito combinacional puede tener multitud de entradas y salidas. … MC. comparadores.Modelado combinacional El modelado de sistemas combinacionales es muy sencillo. cada uno de los cuales tiene una descripción más sencilla. el circuito no tiene memoria. Estos bloque combinacionales constituyen las estructuras básicas con las que se construyen los sistemas procesadores • Multiplexores.

ya que el resultado para una determinada función sería el mismo. por lo tanto. aparece en el lado derecho de una sentencia de asignación o en una condición. Siempre hay que evitar la realimentación combinacional. el compilador sintetiza un latch (biestable) que almacena la señal. 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. •En VHDL las señales mantienen su valor hasta que se les asigna uno nuevo. por ejemplo: salida1 <= A and B. debe aparecer en su lista de sensibilidad. •Sentencias de asignación condicionales. si para una señal dada.Descripción VHDL de sistemas combinacionales Para describir circuitos combinacionales utilizaremos sentencias de asignación concurrentes y procesos. por ejemplo: with S select salida3 <= ‘1’ when “00”. es decir. ya que esto modela elementos de memoria asíncronos. Se debe respetar las siguientes reglas: •Si una señal es leída en el interior de un proceso. Es decir. RODRIGO LUCIO MAYA RAMIREZ . •Si a una señal se le asigna un valor de forma condicional (con sentencias if o case) nos debemos asegurar que no existen condiciones para las cuales el valor de la señal no se ha definido en el código. Se utilizarán tres tipos de sentencias de asignación concurrentes: Sentencias de asignación simples. su valor está indefinido. Esto se debe a que en una declaración concurrente no importa el orden en el que se escriban las señales. Sentencias de asignación concurrentes. MC. •Sentencias de selección. por ejemplo: salida2 <= A when S = ‘1’elseB. Van fuera del proceso. ‘0’when others. Procesos.

una salida y una entrada de selección (S). RODRIGO LUCIO MAYA RAMIREZ . por lo tanto necesitan m entradas de selección.Multiplexores Circuitos que tienen n entradas de datos y una salida de datos. I1) . se puede describir mediante la tabla Aplicando Karnaugh se obtiene: MC. donde m es: Habitualmente también poseen una entrada de habilitación La función f que describe el comportamiento de un multiplexor de dos entradas (I0.

RODRIGO LUCIO MAYA RAMIREZ .Multiplexores MC.

Multiplexores MC. RODRIGO LUCIO MAYA RAMIREZ .

RODRIGO LUCIO MAYA RAMIREZ . donde m es Podemos encontrar decodificadores con entrada de habilitación. activos por cero o activos por uno MC.Decodificadores Es un circuito lógico con n entradas y m salidas.

Decodificadores MC. RODRIGO LUCIO MAYA RAMIREZ .

RODRIGO LUCIO MAYA RAMIREZ .Decodificadores MC.

Decodificadores MC. RODRIGO LUCIO MAYA RAMIREZ .

Decodificadores MC. RODRIGO LUCIO MAYA RAMIREZ .

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 activos por cero o por uno MC.

RODRIGO LUCIO MAYA RAMIREZ .Codificadores MC.

Codificadores MC. RODRIGO LUCIO MAYA RAMIREZ .

Codificadores MC. RODRIGO LUCIO MAYA RAMIREZ .

end latch. d: out std_logic).Lógica Secuencial Es necesario conocer el tipo de descripción concreto a realizar para que se reconozca un elemento secuencial Es obligado el uso de procesos (excepto latches). MC. end l_a. b: in std_logic. end l_a. b: in std_logic. architecture l_a of latch is begin d <= a when b=’1’. RODRIGO LUCIO MAYA RAMIREZ . end process. 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. end latch. d: out std_logic). entity latch is port (a.b) begin if b=’1’ then d <= a. architecture l_a of latch is begin process (a. end if.

end process. elsif rising_edge(reloj) then q <= d. preset. elsif preset = ‘1’ then q <= ‘1’. reset. q: out std_logic). end r_a.Inferencia de registros activos por flanco Es el método más habitual de describir sistemas síncronos Los dispositivos lógicos incluyen registros activos por flanco (generalmente de tipo D) Existen varias formas de especificar la llegada de un flanco: Descripción genérica • • • • • • • • • • • • • • • rising_edge(reloj) if reloj’event and reloj=‘1’ if reloj’event and reloj=‘1’ and reloj’last_value=‘0’ entity registro is port (d. reset. RODRIGO LUCIO MAYA RAMIREZ . preset. end if. architecture r_a of registro is begin process (d. reloj) begin if reset = ’1’ then q <= ‘0’. MC. reloj: in std_logic. end registro.

end process. end if. RODRIGO LUCIO MAYA RAMIREZ . end r_a.. end if. process (d. se pueden incluir más if dentro de ella Sólo se puede incluir una evaluación de flanco por proceso: varios relojes  varios procesos En comparaciones múltiples. elsif rising_edge(reloj) then if r_derivado = ‘1’ then q <= d.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.No emplear más condiciones else ó elsif en la misma sentencia if. reset. MC. elsif preset = ‘1’ then q <= ‘1’.. emplear habilitación de reloj • • • • • • • • • • • • r_derivado <= not a and (b or c). emplear la sentencia case No utilizar relojes derivados. preset. reloj. r_derivado) begin if reset = ’1’ then q <= ‘0’. alternativamente.then.

Módulos funcionales específicos
En sistemas complejos es necesaria una correcta partición del diseño (Top-Down) Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas) Aconsejable emplear módulos del fabricante (generadores automáticos, módulos IP, ...) Consultar documentación del software de síntesis  Herramientas y atributos especiales Módulos específicos usuales: Multiplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ...

Puertas triestado
Necesaria la utilización del tipo std_logic ó std_ulogic que define el estado 'Z‘ Basta con incluir una condición en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia

architecture hab_b of hab is begin process (entrada, oe) begin if (oe = ’1’) then salida <= entrada; else salida <= ’Z’; end if; end process; end hab_b;

MC. RODRIGO LUCIO MAYA RAMIREZ

Para puertos bidireccionales la descripción es similar a los triestado: Tipo inout
• • • • • • • • • • • • • • entity bidir is port ( bid : inout std_logic ; a, b, c, oe : in std_logic; salida : out std_logic); end bidir ; architecture bidir_a of bidir is signal interna1, interna2 : std_logic ; begin bid <= interna1 when oe = '1' else 'Z'; interna2 <= bid;
interna1 <= (a and b) nor c; salida <= (c xor interna2) when oe='0' else 'Z'; end bidir_a ;

MC. RODRIGO LUCIO MAYA RAMIREZ

Máquinas de estados
Es necesaria una descripción específica con definición de un tipo enumerado Hay que hacer una división de la descripción en dos procesos distintos: 1. Cambio síncrono de estado 2. Evaluación de condiciones para dirigirse a un estado

MC. RODRIGO LUCIO MAYA RAMIREZ

MC. RODRIGO LUCIO MAYA RAMIREZ .

RODRIGO LUCIO MAYA RAMIREZ .Ejemplo MC.

RODRIGO LUCIO MAYA RAMIREZ .Ejercicio Recordar: Usar 2 procesos Definir tipo de dato TYPE MC.

ésta puede implementarse mediante recursos lógicos comunes (funciones lógicas y registros) Habitualmente. RODRIGO LUCIO MAYA RAMIREZ . existen en hardware estructuras regulares que las implementan y donde se sintetizan si la descripción VHDL es apropiada MC.Memorias Si el tamaño de la memoria es reducido.

Memorias En el caso de RAM. RODRIGO LUCIO MAYA RAMIREZ . es necesario comprobar que el dispositivo incorpora este recurso lógico MC.