Sunteți pe pagina 1din 122

SISTEMAS EMBEBIDOS

OBJETIVO DEL CURSO: Disear e implementar sistemas digitales utilizando tcnicas modernas: Un Lenguaje de Descripcin de Hardware y Dispositivos Programables a si mismo se comprenda el diseo de sistemas mnimos, y se puedan sintetizar en un FPGA.

MC. RODRIGO LUCIO MAYA RAMIREZ

RESUMEN:
En este curso-taller se aborda uno de los ms extendidos lenguajes de descripcin de hardware, el VHDL, sus utilidades y aplicaciones y las herramientas y metodologas para sintetizar sistemas digitales en FPGAs, que son los dispositivos programables ms ampliamente usados para generar tanto prototipos como sistemas finales de aplicacin. El aprendizaje se refuerza con simulaciones y prcticas. Tambin se aborda el diseo de sistemas mnimos basados en un microprocesador, y la interconexin de stos con otros bloques digitales diseados en VHDL, y sintetizables en un FPGA. Se usan microprocesadores definidos en software y ambientes de desarrollo integrado.

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 descripcin de hardware

Qu son los HDLs? Diferencias con los Lenguajes de Software Ejemplos de HDLs VHDL Breve Resea Histrica de VHDL Diseo Digital con VHDL Metodologas de Diseo utilizando VHDL Funcional Arquitectural Fsico

MC. RODRIGO LUCIO MAYA RAMIREZ

PROGRAMA DEL CURSO

UNIDAD 2:
2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.4.1

Dispositivos Lgicos Programables

Lgica Programable SPLDs Caractersticas Arquitectura CPLDs Caractersticas Arquitectura FPGAs Caractersticas Aplicaciones y ventajas Diferentes fabricantes de FPGAs Arquitectura de los FPGAs de Xilinx Bloque Lgico Configurable (CLB) Bloque de Entrada-Salida (IOB) Matriz de Interconexiones

MC. RODRIGO LUCIO MAYA RAMIREZ

PROGRAMA DEL CURSO

UNIDAD 3:
3.1 3.1.1 3.1.2 3.1.2.1 3.1.2.2 3.1.2.3 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.11.1 3.11.2 3.12

VHDL

Estructura de una descripcin en VHDL Entidad Arquitectura Descripcin Comportamental Descripcin Flujo de Datos Descripcin Estructural Elementos Lxicos Constantes y variables Tipos de Datos Escalares Datos del tipo Arreglo Estructuras de Ejecucin Concurrente Estructuras secuenciales Descripciones Comportamentales Descripciones Estructurales Bibliotecas Subprogramas Funciones Procedimientos Paquetes
MC. RODRIGO LUCIO MAYA RAMIREZ

PROGRAMA DEL CURSO

UNIDAD 4: Diseo con VHDL


4.1 Arquitecturas de disponibles programables 4.2 Sistemas combinacionales 4.3 Sistemas secuenciales 4.4 Maquinas de Estado 4.7 Aplicaciones

UNIDAD 5: Procesadores Embebidos de 8 bits


5.1 Introduccin 5.2 Arquitectura Picoblaze 5.3 Programacin en ensamblador Picoblaze 5.4 Manejo de interrupciones

MC. RODRIGO LUCIO MAYA RAMIREZ

Lenguajes de descripcin de hardware (HDLs)


Estos lenguajes fueron desarrollados para hacer frente a la creciente complejidad de los diseos. Se puede hacer una analoga con los que se pueden llamar lenguajes de descripcin de software. Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrnicos discretos. Se utilizan en la fase de diseo Necesidad de Simulador lgico

Herramienta necesaria para reproducir el comportamiento del sistema modelado


Permite la verificacin del sistema diseado. Actualmente existen herramientas software que permiten pasar de dichas descripciones a diseos a nivel de compuertas: SNTESIS

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstraccin

Dominios descriptivos: Comportamiento Se realiza la funcin sin informacin de cmo se hace Estructural Los bloques se conectan mediante interconexiones (netlist o esquemas) Fsico Localizacin y propiedades fsicas reales

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstraccin

Niveles de abstraccin: Circuito Valores continuos, todo es electrnica, tiempo continuo Lgico Valores lgicos (T,F), slo computacin, tiempo continuo RT (RegisterTransfer) Palabras con valores discretos, control y procesamiento, tiempo discreto Algortmico Estructuras abstractas, dependencias en lugar de tiempo Sistema Relaciones entre subsistemas, sncronos y protocolos

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstraccin

Medidas:
Circuito Tiempo de subida y bajada, consumos rea Lgico Tiempo de conmutacin, skew, rea equivalente RT Tiempo de ciclo, mrgenes, compuertas equivalentes Algortmico Latencia, cadencia de datos, nmero de mdulos Sistema Ancho de banda, MIPS.

MC. RODRIGO LUCIO MAYA RAMIREZ

Dominios descriptivos y niveles de abstraccin

Transiciones: Sntesis/Anlisis Comportamiento estructural

Optimizacin Mejora de una descripcin sin variar el nivel de abstraccin


Generacin/Extraccin Estructural fsico Refinamiento/Abstraccin Bajar/Subir el nivel de abstraccin en el mismo dominio

MC. RODRIGO LUCIO MAYA RAMIREZ

Niveles de diseo y dominios de representacin

VHDL: VHSIC, Hardware Description Language VHSIC: Very High Speed Integrated Circuits

MC. RODRIGO LUCIO MAYA RAMIREZ

Lenguajes de descripcin de hardware (HDLs). Sntesis lgica

Sntesis lgica: Convierte una descripcin de un sistema digital mediante un HDL en una implementacin tecnologca. Descripcin HDL: library ieee; use ieee.std_logic_1164.all; entity puertas is port ( A, B, C : in std_logic; Y: out std_logic ); end puertas; ARCHITECTURE a of puertas is begin

El hecho de realizar una sntesis lgica obliga a ciertas restricciones en la tarea de realizar las descripciones con HDLs.

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

C;
MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

El lenguaje es independiente de la tecnologa: El mismo modelo puede ser sintetizado en libreras de distintos vendedores. Reduccin de la dependencia con el fabricante de ASICs, ya que la portabilidad a otra tecnologa es mucho ms rpida.

Soportan tres estilos de descripcin bsicos:

DESCRIPCIN COMPORTAMENTAL (behavioral) DESCRIPCIN DE FLUJO DE DATOS (data-flow) DESCRIPCIN ESTRUCTURAL (estructural)

Reutilizar el diseo en componentes tan distintos como ASICs o FPGAs con un esfuerzo mnimo.

Un diseo puede ser descrito con una combinacin de los tres estilos.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

Se puede verificar la funcionalidad del diseo muy pronto en el proceso de diseo. La simulacin del diseo a tan alto nivel, antes de la implementacin a nivel de compuertas, permite probar la arquitectura y rectificar decisiones en las primeras fases de diseo, con un esfuerzo mucho menor que si se realizase en fases posteriores.

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

Sencillez Como la descripcin se centra ms en la funcionalidad que en la implementacin, resulta ms sencillo para una persona comprender qu funcin realiza el diseo a partir de una descripcin HDL que a partir de un esquemtico de interconexin de compuertas
Ahorro de tiempo Facilita las correcciones en el diseo debidas a fallos de diseo o cambio de especificaciones. La existencia de herramientas comerciales automticas (sintetizadores RTL) que permiten crear descripciones gate-level a partir de los modelos a nivel RTL

El lenguaje tambin puede ser usado como medio de comunicacin entre diferentes herramientas CAD y CAE. Un programa de captura de esquemticos puede ser utilizado para generar descripciones HDL del diseo, lo cual puede ser usado como entrada a un simulador.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs

La propia descripcin en el lenguaje de alto nivel sirve como especificacin del comportamiento del sistema a disear (tanto a nivel funcional como las restricciones temporales), y la interface con el resto del sistema. Los modelos descritos con estos lenguajes, pueden ser verificados fcilmente y de forma precisa por simuladores definidos en base a estos HDL. El lenguaje puede ser usado como un medio de intercambio entre los fabricantes de ASICs y los usuarios de herramientas CAD. El lenguaje soporta jerarqua Un sistema digital puede ser modelado como un conjunto de componentes interconectados. A su vez cada componente puede ser modelado como un conjunto de subcomponentes.

Los HDL tienen elementos que permiten el diseo a gran escala, de forma fcil; por ejemplo, componentes, funciones, procedimientos, paquetes.

El lenguaje soporta metodologas de diseo diferentes: top-down, bottom-up, o mixtas.

MC. RODRIGO LUCIO MAYA RAMIREZ

Ventajas del uso de HLDs


Soporta modelos de tiempos sncronos y asncronos. Posibilidad de implementar distintas tcnicas de modelado digital (descripciones de mquinas de estados finitos (FSM), descripciones algortmicas, redes de Petri, y ecuaciones Booleanas El lenguaje es pblico y "not propietary" (especialmente en el caso del VHDL). Es un estndar ANSI e IEEE; por lo tanto, los modelos descritos en estos lenguajes (VHDL o VERILOG) son totalmente portables. La capacidad de definir tipos de datos sofisticados, suministra la potencia de describir y simular nuevos diseos a un nivel de abstraccin en el cual an no se barajan detalles de la implementacin Los genricos y atributos facilitan la descripcin de modelos parametrizables. El modelo, a travs de los atributos, puede contener informacin del diseo en s mismo, no solo de la funcionalidad: por ejemplo, informaciones tales como el rea y velocidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

Inconvenientes del uso de HDLs

Supone un esfuerzo de aprendizaje, ya que prcticamente se puede considerar como nueva metodologa. Necesaria la adquisicin de nuevas herramientas: Simuladores Sintetizadores de HDL, teniendo que mantener el resto de las herramientas para otras fases del diseo. El uso de estos lenguajes hace que involuntariamente se pierda un poco de control sobre el aspecto fsico del diseo, dndole una mayor importancia a la funcionalidad de dicho diseo.

MC. RODRIGO LUCIO MAYA RAMIREZ

Lenguajes de Descripcin de Hardware.

Diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripcin de hardware" cada uno con sus peculiaridades, buscando una solucin a los problemas que presentaba el diseo de los sistemas complejos. Ejemplos: IDL desarrollado por IBM , TI - HDL de Texas Instruments, ZEUS de General Electric, prototipos de universidades

En la actualidad se utilizan fundamentalmente VHDL, Verilog y SystemC . Otro HDL, el UDI/L se utiliza exclusivamente en Japn. VHDL (Very High Speed Integrated Circuit Hardware Description Language). Nace como proyecto del Departamento de Defensa (DoD) de EEUU (ao 82) para disponer de una herramienta estndar, independiente para la especificacin (modelado y/o descripcin) y documentacin de los sistemas electrnicos. El IEEE lo adopta y estandariza. Verilog: Software de la firma Gateway y posteriormente de Cadence. Estndar industrial hasta que apareci el VHDL como estndar IEEE. En 1990 Cadence lo hace pblico y el IEEE lo estandariza en 1995. SystemC: es una extensin del C++, que utiliza unas bibliotecas de clase para describir y simular circuitos digitales. Se public en 1.999 .

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 documentacin, siempre y cuando los modelos de los circuitos estn bien comentados. Entity bit8tobcd is Port( clk: in std_logic;--reloj del sistema, para dividir rst: in std_logic; cuenta: out std_logic_vector(1 downto0);--para depurar bitin: in std_logic_vector(7 downto0); --8 bits de entrada seg: out std_logic_vector(6 downto0);--tiempo a iluminar ctrlD: out std_logic_vector(3 downto0; --ctrl de los nodos bcd: out std_logic_vector(15 downto0)--para depurar ); End bit8tobcd;

Para crear bancos de prueba (test- bench), es decir, crear los estmulos y ver los resultados durante la simulacin.

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 diseos (HDL). Esto permite un mejor manejo del modelo, ya que se puede asociar el modelo a sus estmulos de simulacin. No limitamos el uso de dichos estmulos a un determinado simulador, pudiendo ser reutilizados dichos estmulos aunque se use un simulador distinto. Los retardos de propagacin y limitaciones temporales, pueden ser descritos con estos HDL

MC. RODRIGO LUCIO MAYA RAMIREZ

UNIDAD 2:

Dispositivos Lgicos Programables

2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.4.1

Lgica Programable SPLDs Caractersticas Arquitectura CPLDs Caractersticas Arquitectura FPGAs Caractersticas Aplicaciones y ventajas Diferentes fabricantes de FPGAs Arquitectura de los FPGAs de Xilinx Bloque Lgico Configurable (CLB) Bloque de Entrada-Salida (IOB) Matriz de Interconexiones
MC. RODRIGO LUCIO MAYA RAMIREZ

Dispositivos Lgicos Programables

Los dispositivos lgicos programables son circuitos integrados digitales que no tienen una funcin predefinida por el fabricante. Su funcin puede ser definida (o programada) por el usuario. Debido a la gran capacidad lgica que tienen los dispositivos modernos, sistemas completos pueden desarrollarse sobre un solo circuito integrado.

Los dispositivos actuales (CPLD y FPGAs) tienen una capacidad lgica de hasta millones de compuertas, incluyen interfaces programables para varios estndares de interface elctrica y tienen bloques de funciones especiales embebidos entre la lgica programable tales como memoria, multiplicadores o CPUs completas

Esto da lugar a las denominaciones Systemona-Programmable Chip, o SoPC (sistema sobre un circuito integrado programable) y System-on-aReprogammable Chip (SoRC).

Esta gran capacidad y variedad de los dispositivos los hace sumamente tiles a la hora de crear prototipos, desarrollo rpido de nuevos productos, para los productos que deben ser reconfigurables por naturaleza o productos que se producen en bajos volmenes y para los cuales no es econmicamente viable crear un integrado a medida.

MC. RODRIGO LUCIO MAYA RAMIREZ

Evolucin de los Primeros Dispositivos Lgicos Programables


Los primeros dispositivos lgicos programables fueron las memorias PROM. Para ello se utilizan como entradas las lneas de direccin a la memoria. De esta manera la memoria provee una tabla de decodificacin completa de las entradas, y puede utilizarse para implementar cualquier funcin lgica combinacional. Los primeros dispositivos diseados especficamente para implementar funciones digitales programables fueron los PLA, introducidos al mercado en la dcada de 1970 por Philips. La base terica de estos dispositivos es que cualquier ecuacin lgica puede reducirse a una suma de productos. El corazn electrnico de estos dispositivos consiste en un bloque que permite negar las entradas y dos niveles de compuertas: un nivel de compuertas AND y un nivel OR. Mediante fusibles pueden programarse las interconexiones entre las entradas y la lgica.

Esquema bsico de un tpico dispositivo 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 dispositivos con un solo nivel de lgica programable denominados PAL . Los PAL se basan en el mismo principio que las PLA, pero tienen un nivel de lgica AND programable mientras el nivel de lgica OR es fijo. Esto limita la cantidad de funciones que pueden definirse con un dispositivo dado, as que los fabricantes de PAL los ofrecan en una variedad de configuraciones para adecuarlos a las necesidades del usuario. Muchos PAL adems incorporaron registros sobre las salidas y realimentacin para implementar circuitos secuenciales.

Esquema de una posible configuracin de un PAL.

MC. RODRIGO LUCIO MAYA RAMIREZ

GAL
Los dispositivos denominados GAL son un poco mas complejos que los PAL mencionados anteriormente. Incluyen un nivel de lgica AND a la entrada y luego un bloque lgico denominado macrocelda a la salida, en reemplazo del nivel OR. La denominacin GAL fue utilizada en principio por Lattice, y luego licenciada a otros fabricantes. La macrocelda de estas GAL se denomina OLMC, por "Output Logic Macro Cell".

Diagrama funcional de una GAL completa y de una macrocelda de un dispositivo GAL22V10 de Lattice Semiconductors.

MC. RODRIGO LUCIO MAYA RAMIREZ

CPLDs

Los CPLDs son dispositivos que combinan varios bloques lgicos similares a las PAL o GAL con una matriz de interconexin programable. Estos dispositivos se fabrican con distintas capacidades para adaptarlos a las necesidades del usuario. Como ejemplo, la familia MAX7000 de alto rendimiento de Altera se manufactura en versiones desde 32 hasta 512 macroceldas, con 36 a 212 entradas/salidas segn el dispositivo y empaquetamiento que se elija.

Estructura general CPLD Altera

MC. RODRIGO LUCIO MAYA RAMIREZ

CPLDs

Macrocelda CPLD.

Como se de las figura, estos dispositivos incluyen adems de las macroceldas, un arreglo de interconexin programable (PIA), una red de distribucin de reloj dedicada y bloques de entrada salida que permiten interfaces compatibles con diferentes estndares elctricos. Los bloques lgicos AND y OR estn ambos incluidos en la macrocelda del dispositivo.
MC. RODRIGO LUCIO MAYA RAMIREZ

FPGAs

La arquitectura de una FPGA consiste en arreglos de bloques lgicos que se comunican entre si a travs de canales de conexin verticales y horizontales. La principal diferencia entre las FPGA y CPLDs es que en general los bloques lgicos de las FPGA no implementan la lgica usando compuertas sino con generadores de funciones.

En la siguiente seccin se estudiar en mayor detalle la arquitectura de una FPGA tpica.

Estructura bsica 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 lgica interna. Bloque lgico configurable (CLB o Configurable Logic Block): Estos son los bloques bsicos que se utilizarn en la implementacin de un circuito digital. Bloque de distribucin y compensacin 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 lgica programable. Estructura de interconexin: Es una estructura verstil y multi-nivel de interconexin entre los otros componentes de la FPGA.

Diagrama en bloques de una FPGA Spartan IIe de Xilinx

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque Lgico Programable

Todas las FPGA tienen algn tipo de bloque lgico programable. Este es el corazn de la FPGA, y permite implementar las diferentes funciones lgicas. Cada CLB esta compuesto por dos bloques iguales denominados slices. Cada "slice" contiene dos generadores de funciones y un multiplexor MUXF5. El multiplexor combina los resultados de los generadores de funciones dentro de cada "slice" del CLB. Las dos "slices" estn unidas por un multiplexor MUXF6, que puede seleccionar la salida de una u otra slice hacia la salida del CLB. Esto permite implementar cualquier funcin de 6 entradas, un multiplexor de 8:1 o determinadas funciones lgicas de hasta 19 entradas. Adems de poder implementarse lgica combinacional, cada slice contiene recursos para implementar circuitos secuenciales y operaciones aritmticas eficientes.

Esquema del bloque lgico programable (CLB) de una FPGA de la familia Spartan IIe de Xilinx.
MC. RODRIGO LUCIO MAYA RAMIREZ

CLBs

En esta figura se ven los generadores de funciones, compuesto por una tabla de entradasalida (LUT o Look-Up Table) de cuatro entradas y una salida. Estas tablas pueden implementar cualquier funcin lgica de cuatro entradas y una salida, as como tambin utilizarse como memorias distribuidas de 16 x 1 bit.
Las salidas de las LUT pasan a los bloques de control, que contiene lgica que permite optimizar funciones aritmticas. Los elementos que permiten implementar lgica secuencial son los elementos de almacenamiento que se ven sobre las salidas del slice. Estos pueden configurarse como flip-flops D con reloj o como latches controlados por nivel.

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 particulares que tienen las FPGAs. La familia de FPGAs Spartan IIe de Xilinx, por ejemplo, divide las entradas/salidas del integrado en bancos que se pueden configurar para tener una interface con lgica de diferentes estndares elctricos de manera independiente.
Los bancos se configuran aplicando diferentes tensiones de alimentacin a los pines denominados VccO y VREF. Al utilizar diferentes valores de VccO para los distintos bancos se podr tener un sistema con interface a diferentes familias lgicas dentro de la misma FPGA. Las entradas de reloj estn asociadas a diferentes bancos de entrada-salida, para permitir que haya diferentes dominios de reloj con interfaces elctricas diferentes.
Distribucin de los bancos de entrada/salida en una FPGA Spartan IIe

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque de Entrada / Salida

Adems de la tensin VccO, para varios de las interfaces lgicas debe configurarse la tensin de referencia VREF y agregarse resistencias de terminacin sobre la plaqueta en las entradas-salidas de la FPGA. Cada bloque de entrada-salida tiene una resistencia de pull-up y pull - down configurables que permiten fijar el valor lgico mediante programacin. Los bloques de entrada-salida de muchas FPGAs tienen elementos de almacenamiento integrados que permiten controlar mejor los tiempos de propagacin entre los pines del integrado y la lgica interna. Adems cada bloque de entrada-salida cuenta con buffers programables que pueden configurarse para tres estados y colocar la salidas de la FPGA en alta impedancia (estado Z).

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 distribucin de reloj. La red de distribucin de reloj en las FPGA asegura retardos parejos a todos los bloques lgicos de la FPGA. Cada fabricante utiliza una arquitectura diferente para el control y distribucin de reloj.
La familia Spartan IIe de Xilinx tiene bloques especficos para control de reloj denominados DLL (Delay Locked Loop). Estos bloques sincronizan el reloj interno al reloj externo del sistema, controlan el desplazamiento de fase entre los relojes, sincronizan los diferentes dominios de reloj y aseguran un retardo de distribucin del reloj pareja para la lgica interna de la FPGA.
Red global de distribucin de reloj en la FPGA Spartan IIe

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque de Control de Reloj

La familia Stratix de Altera tiene los bloques de control de reloj. Estos bloques (Enhanced PLL) permiten controlar la fase y frecuencia del reloj, el sistema de distribucin de reloj y el estndar elctrico de interface entre otras cosas

Esquema de un bloque de control de reloj de la FPGA Stratix de Altera

MC. RODRIGO LUCIO MAYA RAMIREZ

Memoria
Varias familias de FPGA contienen bloques de memoria embebida integrados con la lgica programable. En general estos bloques bsicos de memoria pueden utilizarse en diferentes configuraciones para generar RAMs y ROMs de diferentes tamaos. Adems de memorias embebidas, las FPGAs basadas en memoria SRAM pueden usar las tablas LUT de los bloques lgicos como memoria. Este bloque se denomina BLOCK RAM y es una memoria de puerto dual (dual-port), que puede leerse y escribirse al mismo tiempo.
Estos bloques de memoria pueden usarse como memorias de puerto dual, puerto simple, RAMs o ROMs. Para entender la versatilidad de estos bloques de memoria, en la siguiente tabla se muestran las opciones de configuracin.
MC. RODRIGO LUCIO MAYA RAMIREZ

Esquema de una celda de memoria bsica de la familia Spartan IIe de Xilinx.

Memoria

Adems de poder configurar cada bloque, varios bloques pueden conectarse utilizando lgica externa para implementar memorias de otros tamaos y colas FIFO o FILO. La figura muestra un bloque de memoria de Actel, que puede configurarse como memoria de puerto simple, dual o multi-puerto.

Esquema de un bloque de memoria de Actel configurada como memoria multi-puerto

MC. RODRIGO LUCIO MAYA RAMIREZ

Bloque de Procesamiento de Seal


Varias FPGA contienen bloques especficos que optimizan en hardware ciertas funciones especiales. Las FPGA de la familia Stratix de Altera, por ejemplo, contienen uno o ms mdulos de procesamiento de seal entre los bloques de lgica programable de propsito general. Estos bloques permiten desarrollar ciertas funciones especficas tpicas de las aplicaciones de procesamiento de seal de manera muy eficiente. Pueden configurarse de varias maneras diferentes segn las necesidades del usuario. Como muestra la figura, este bloque contiene lgica para implementar operaciones de multiplicacin-acumulacin que requeriran de muchos recursos y ciclos de reloj si se implementaran utilizando lgica de propsito general. Al igual que los otros bloques, los bloques especficos pueden interconectarse a los dems bloques utilizando la matriz de interconexin programable de la FPGA.
Bloque de procesamiento de seal de la familia Stratix de Altera
MC. RODRIGO LUCIO MAYA RAMIREZ

CPUs Embebidas
La familia de FPGAs de Xilinx Virtex II-PRO contiene una CPU Power PC 405 de IBM y lgica de interconexin embebida dentro de lgica programable. Esto permite utilizar toda la potencia de una CPU integrada con la flexibilidad de los perifricos diseados mediante lgica programable. Los bloques especficos integrados en el silicio de las FPGAs se denominan "hardcores". Altera ofrece la FPGA Excalibur que contiene un microcontrolador ARM922T integrado a un costado de lgica programable. La lgica programable del Excalibur puede ser de hasta un milln de compuertas. El micro es de arquitectura RISC de 32 bits, y puede correr a una frecuencia de reloj de hasta 200 MHz . Por otro lado tambin pueden disearse microcontroladores o procesadores usando solamente la lgica de configuracin de las FPGAs.

Altera ofrece el microcontrolador Nios, de tecnologa RISC de 16 bits que puede utilizarse sobre varias de las FPGA de Altera. A este tipo de diseo se lo denomina "softcore", ya que a FPGA no tiene ningn bloque especfico para la CPU implementado sobre el circuito integrado. Hay muchos micros "softcore" pblicos y propietarios. Xilinx ofrece el Microblaze y Actel ofrecer un micro de la familia ARM.

MC. RODRIGO LUCIO MAYA RAMIREZ

Matriz de interconexin
Para poder implementar circuitos lgicos, los elementos lgicos presentados en las secciones anteriores no solo deben configurarse adecuadamente sino que tambin deben conectarse entre si. La estructura de interconexin interna de un PLD consiste en un conjunto de alambres o trazas que pueden conectarse mediante elementos de conexin programables. Las herramientas de localizacin e interconexin (place and route) son las encargadas de decidir en que elementos lgico se implementar la lgica diseada por el usuario y como deben programarse las interconexiones para que el diseo funcione segn las especificaciones de tiempo y retardos que se han definido.

MC. RODRIGO LUCIO MAYA RAMIREZ

Matriz de interconexin de las FPGA Spartan IIe de Xilinx


Estas FPGA tienen dos niveles de interconexin. Por un lado tienen una interconexin de propsito general a travs de la matriz de interconexionado general o GRM por sus siglas en ingls. Por otro lado contienen recursos de interconexin local. Adems de los ya mencionados, las FPGA Spartan IIe contienen recursos de interconexin dedicados a seales de tres estados, de entradasalida y recursos de interconexin global para la distribucin de reloj y seales especficas. Los recursos de interconexin local, mostrados en la Figura 31, permiten hacer las conexiones entre los elementos internos de un bloque lgico o CLB, como las tablas de bsqueda (LUT), los flip-flop y las realimentaciones dentro del CLB.

Caminos de interconexin local en la FPGA Spartan IIe

Adems, el interconexionado a este nivel provee conexiones a la matriz de interconexionado general y a los CLB adyacentes. Las conexiones a los CLB adyacentes permiten optimizar los diseos al evitar los retardos y la utilizacin de recursos de la matriz general de interconexionado.

MC. RODRIGO LUCIO MAYA RAMIREZ

Matriz de interconexin de las FPGA Spartan IIe

La mayor parte de las seales se conectarn a travs de la matriz general de interconexionado (GRM). Los elementos de la GRM se encuentran entre los CLB, en los canales de interconexin horizontales y verticales de la FPGA. Permiten hacer la interconexin entre las trazas horizontales y verticales y hacia los CLB. A travs de ellos se configuran las conexiones entre CLBs no adyacentes y hacia los bloques de entrada/salida.

Red dedicada de distribucin de reloj en la FPGA Spartan IIe

MC. RODRIGO LUCIO MAYA RAMIREZ

Granularidad de los Dispositivos Lgicos Programables (PLDs)


La granularidad de un dispositivo lgico programable est dada por la funcionalidad bsica que provee cada bloque de configuracin lgica, o la relacin entre las celdas lgicas y los recursos de interconexionado. Algunos parmetros para definir la granularidad de un dispositivo programable son: Nmero de funciones que puede implementar cada celda lgica Nmero de compuertas NAND de dos entradas equivalente por cada celda lgica Nmero total de transistores por celda lgica rea total normalizada de lgica configurable (relacin de rea lgica/rea de interconexionado) Nmero de entradas y salidas por celda lgica Algunos dispositivos tienen arquitecturas con celdas lgicas que pueden implementar funciones lgicas complejas, de varias entradas/salidas. A estas se las denomina de granularidad gruesa. Otras arquitecturas estn formadas por celdas bsicas que solo permiten implementar lgica muy simple. A estas se las denomina de granularidad fina.

MC. RODRIGO LUCIO MAYA RAMIREZ

Granularidad de los Dispositivos Lgicos Programables (PLDs)


La granularidad de un dispositivo lgico influir en la manera que se implemente una funcin lgica dada, en su frecuencia mxima de funcionamiento y en la utilizacin que se hace del dispositivo. Un bloque lgico grande puede implementar lgica ms compleja y por lo tanto se necesitan menos bloques para una funcin dada. Por otro lado cada bloque consume ms rea que puede desaprovecharse. Una arquitectura de granularidad fina ser tpicamente ms densa y tendr menor retardo de interconexin entre celda y celda. Sin embargo, para una funcin dada, se debern conectar un mayor nmero de celdas. En general la mejor granularidad depender de la aplicacin y las restricciones que hay sobre el diseo.

Bloque Lgico (Logic Tile) de la ProAsicPlus de Actel

MC. RODRIGO LUCIO MAYA RAMIREZ

Granularidad de los Dispositivos Lgicos Programables (PLDs)


Arquitecturas con granularidad fina Celdas implementan funciones lgicas parciales de n entradas Relacin de entradas a registros por celda muy baja (2/4 a 1) Ejemplo: ProAsicPlus de Actel Arquitecturas con granularidad media Celdas implementan funciones completas de n entradas Relacin de entradas a registros por celda de 6/8 a 1 Buenas para implementar mquinas de estado y lgica secuencial compleja Ejemplo: Xilinx Spartan 3 Arquitecturas con granularidad gruesa Celdas estilo PLD de arreglos de trminos Relacin de entradas a registros de 32 a 1 Buenas para lgica combinacional como decodificacin de direcciones, funciones aritmticas, Pobres para arquitecturas con colas (pipelines) Ejemplo: Altera MAX 3000

Arquitecturas mixtas Combinan celdas con granularidad fina y gruesa Muchas veces tienen recursos de interconexin dedicados para cada tipo de celda Ejemplo: ispXPGA de Lattice Semiconductors
MC. RODRIGO LUCIO MAYA RAMIREZ

Tecnologa de Configuracin de los PLDs


La tecnologa utilizada para configurar los elementos de un PLD, ya sean los bloques lgicos o las interconexiones, dependen del fabricante y el dispositivo. Entre los dispositivos reprogramables, se destacan las tecnologas EEPROM, SRAM y Flash. Los dispositivos que solo pueden configurarse una vez en general utilizan tecnologas de antifusible. Cada tecnologa tiene sus ventajas y desventajas respecto a las otras.

MC. RODRIGO LUCIO MAYA RAMIREZ

Tendencias Actuales y Futuras

Desarrollo de FPGAs con mayor capacidad, ms velocidad, menos consumo de potencia y menor costo. Integracin en hardware sobre las lgicas programables de bloques especficos como ALUs, componentes para procesamiento digital de seal, integracin con uP y uC, memorias, etc. Integracin y mezcla entre FPGAs y circuitos integrados de propsito especfico (ASICs). Componentes que pueden pasar directamente de un prototipo sobre una FPGA a un ASIC sin esfuerzo de diseo adicional. Cambios en las herramientas de software para tener mayor integracin entre los diferentes usuarios y en los distintos pasos del proyecto. Esto incluye el manejo de grupos de trabajo, el manejo de la propiedad intelectual, la documentacin de proyectos integrada a las herramientas de diseo, la transferencia de los diseos para FPGAs a ASICs, etc.

Integracin con herramientas y otros software de desarrollo de mayor nivel, como son Matlab y herramientas para el diseo integrado de software y hardware. (HW-SW co-design). Integracin del manejo de configuracin de FPGAs con las herramientas de diseo de circuitos impresos (PCBs), para poder configurar el interconexionado interno del SoPC de manera integral con el conexionado hacia los componentes externos. Instrumentos, tales como analizadores lgicos, que permiten observar la lgica de interna de las FPGA en tiempo real al mismo tiempo que se observan otras seales, externas a la FPGA. Sistemas con aplicaciones que utilicen la reconfiguracin o reprogramacin de las FPGAs directamente en el producto final segn la necesidad del momento. Integracin de bloques lgicos programables alrededor de lgica fija en ASICs o integrados estndar.

MC. RODRIGO LUCIO MAYA RAMIREZ

UNIDAD 3:

VHDL

3.1 3.1.1 3.1.2 3.1.2.1 3.1.2.2 3.1.2.3 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.11.1 3.11.2 3.12

Estructura de una descripcin en VHDL Entidad Arquitectura Descripcin Comportamental Descripcin Flujo de Datos Descripcin Estructural Elementos Lxicos Constantes y variables Tipos de Datos Escalares Datos del tipo Arreglo Estructuras de Ejecucin Concurrente Estructuras secuenciales Descripciones Comportamentales Descripciones Estructurales Bibliotecas Subprogramas Funciones Procedimientos Paquetes
MC. RODRIGO LUCIO MAYA RAMIREZ

Historia

Surge a principios de los 80s del proyecto DARPA (del Departamento de Defensa de los EE.UU.) llamado VHSIC (Very High Speed Integrated Circuits) Se utiliza como forma de describir circuitos integrados: Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran ms complejos, y el coste de reponerlos cada vez era mayor, bsicamente porque no estaban correctamente documentados. VHDL naci como una manera estndar de documentar circuitos. El uso de VHDL permiti comprobar que el tiempo de diseo de los circuitos se reduca, porque se podan crear directamente de su descripcin: utilidad de la sntesis. En 1987 el trabajo se cedi a la IEEE, y a partir de ese momento es un estndar abierto. VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits

MC. RODRIGO LUCIO MAYA RAMIREZ

Evolucin

1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estndar dentro del programa VHSIC. 1981: Woods Hole Workshop, reunin inicial entre el Gobierno, Universidades e Industria. 1983: Se concedi a Intermetrics, IBM y Texas Instruments el contrato para desarrollar VHDL. 1985: Versin 7.2 de dominio pblico.

1987: El IEEE lo ratifica como su estndar 1076 (VHDL-87).


1993: El lenguaje VHDL fue revisado y ampliado, pasando a ser estndar 1076 93 (VHDL-93).

2000:ltima modificacin de VHDL


MC. RODRIGO LUCIO MAYA RAMIREZ

VHDL: Caractersticas Generales

VHDL: lenguaje orientado a la descripcin o modelado de Hardware similar a lenguajes de alto nivel de propsito general (ADA en especial): de ellos hereda: Concepto de tipo de datos, con posibilidad de definir nuevos tipos facilita la descripcin de circuitos con diversos niveles de abstraccin. Sentencias de control de flujos (if, for while). Junto con la caracterstica anterior potencia para desarrollar algoritmos. Capacidad de estructurar el cdigo (subprogramas, funciones o procedimiento), permite afrontar algoritmos complejos. Posibilidad de utilizar y desarrollar bibliotecas de diseo, Incorpora conceptos especficos para el modelado del hardware, como concurrencia y ciclo de simulacin.

MC. RODRIGO LUCIO MAYA RAMIREZ

Estado actual y alternativa

En la actualidad el diseo mediante esquemas no es una alternativa realista en ningn proyecto, por ejemplo Gforce 4 tiene 65 M transistores y 800.000 lneas de cdigo Verilog. La alternativa estndar es usar un HDL Verilog: Costa Oeste de EEUU, para ASICs, menos verboso, ms parecido a C, menos expresivo. VHDL: Costa Este y Europa, para FPGAs, ms descriptivo, ms parecido a PASCAL y ADA, ms expresivo. El diseo se sintetiza a partir de un HDL, pero gran parte del diseo y la verificacin se realiza con lenguajes estndares C y Matlab VHDL es el estndar para FPGAs en proyectos industriales de moderada complejidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

Futuro?

Los lenguajes de descripcin de hardware tambin tienen limitaciones: Metodologa de diseo nueva, exige un cambio de mentalidad con respecto al Software No permiten re usar cdigo SW para HW. Poseen enorme reusabilidad intrnseca. La decisin HW/SW se debe hacer antes de la codificacin La simulacin es lenta, siempre hay que recurrir a una simulacin algortmica usando lenguajes SW Como respuesta a esto, hay varias iniciativas para describir HW usando lenguajes de alto nivel, tipo SW Handel-C, System-C Forge (Java) Superlog

MC. RODRIGO LUCIO MAYA RAMIREZ

Estructura de un diseo en VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ

Elementos de descripcin VHDL


Bibliotecas (Library) Almacenan los elementos de diseo: tipo de datos, operadores, componentes, objetos, funciones,... Esos elementos de diseo se organizan en Paquetes Packages: son unidades de almacenamiento de elementos y tienen que hacerse visibles para poder ser utilizados . Hay 2 bibliotecas que siempre son visibles por defecto: std (la standard) y work (la de trabajo) y que no es necesario declarar Entidades (Entity) Es el modelo de interfaz de un circuito con el exterior mediante unas terminales de entrada y de salida. Es la caja negra que define las entradas y salidas. Arquitectura (Architecture) Describe el funcionamiento del circuito. 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 entidad La entidad describe la E/S del diseo Para describir su funcionamiento se asocia una implementacin que se denomina arquitectura La arquitectura describe el contenido del diseo.
MC. RODRIGO LUCIO MAYA RAMIREZ

Puertos de una entidad

Cada una de las posibles conexiones se denomina PORT y consta de: Un nombre, que debe ser nico dentro de la entidad. Una lista de propiedades, como: la direccin del flujo de datos, entrada, salida, bidireccional y se conoce como modo del puerto. los valores que puede tomar el puerto: '0, '1' o (Z), etc ., los valores posibles dependen de lo que se denomina tipo de seal. Los puertos son una clase especial de seales que adems aade el modo al tipo de seal e0e2e1salida0salida1caja

MC. RODRIGO LUCIO MAYA RAMIREZ

Modos de un Puerto

Indican la direccin y si el puerto puede leerse o escribirse dentro de la entidad. IN: Una seal que entra en la entidad y no sale. La seal puede ser leda pero no escrita. OUT: Una seal que sale fuera de la seal y no es usada internamente. La seal no puede ser leda dentro de la entidad.

BUFFER: Una seal que sale de la entidad y tambin es realimentada dentro de la entidad.
INOUT: Una seal que es bidireccional, entrada/salida de la entidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

Estructura de un diseo en VHDL

MC. RODRIGO LUCIO MAYA RAMIREZ

Declaracin de entidad

MC. RODRIGO LUCIO MAYA RAMIREZ

Resumen: Entidad y Arquitectura

La entidad se utiliza para hacer una descripcin "caja negra" del diseo, slo se detalla su interfaz

Los contenidos del circuito se modelan dentro de la arquitectura

Una entidad puede tener varias arquitecturas Por ejemplo, la descripcin de comportamiento que ha hecho el diseador y el modelo post- layout obtenido despus de implementar el chip

MC. RODRIGO LUCIO MAYA RAMIREZ

Invariancias
VHDL presenta ciertas invariancias que conviene conocer antes de su utilizacin. Invariante a maysculas, es decir, dos expresiones iguales conteniendo maysculas y minsculas son idnticas.

Invariante a los espacios, es decir, dos expresiones iguales conteniendo ms o menos espacios son idnticas

Los comentarios van detrs de dos rayas --y convienen que sean claros para que las descripciones puedan ser fcilmente utilizadas por otras personas o por ti mismo. VHDL es relativamente laxo con la utilizacin de parntesis, una buena idea es utilizar los parntesis de manera que una persona la pueda entender con facilidad

Cada asignacin termina con ; Cada if tiene el correspondiente then Cada if termina con el correspondiente endif Si se necesita elseif se utilizar elsif Cada case termina con el correspondiente end case Cada loop termina con el correspondiente end loop

MC. RODRIGO LUCIO MAYA RAMIREZ

Identificadores

Identificadores. Son las palabras que se utilizan para identificar a las funciones, seales, puertos, variables, etc. Es conveniente que dichas palabras proporcionen informacin suficiente para que la descripcin sea fcilmente reutilizable. El identificador debe dar suficiente informacin para su uso . El identificador puede ser tan largo como se quiera, pero un nombre demasiado largo es complicado de utilizar, y demasiado corto quiz proporcione poca informacin. El identificador puede contener cualquier combinacin de las letras (AZ y a-z) nmeros (0-9 ) y el sub-guin (_) El identificador debe empezar por un carcter alfabtico. El identificador no puede termina con el sub-guin (_)

Son palabras que no se pueden utilizar como identificadores

MC. RODRIGO LUCIO MAYA RAMIREZ

Modelos de descripcin

Comportamental o algortmico (behavioral). Especifica cmo se comportan las salidas con respecto a las entradas. No proporciona al sintetizador informacin de cmo ser el circuito, siendo ste el que lo determina. La parte fundamental de este tipo de descripciones es el proceso (process)

Flujo de datos (dataflow). Especifica el circuito como una representacin concurrente del movimiento de los datos a su travs, es decir, cmo circula la informacin

Estructural (structural). Describe la conexin entre distintos mdulos descritos previamente

MC. RODRIGO LUCIO MAYA RAMIREZ

Modelos de descripcin VHDL

Como hemos visto, la arquitectura (architecture), en VHDL describe la funcin que realiza una entidad (entity). La arquitectura se compone de dos partes: la parte declarativa en la que se encuentran las definiciones de las seales, funciones, tipos, procedimientos, etc.. a utilizar. y el cuerpo de la descripcin, consistente en una sucesin de asignaciones concurrentes y procesos que modelan la entidad.

MC. RODRIGO LUCIO MAYA RAMIREZ

Concurrencia del hardware

El hardware es concurrente, es decir, los circuitos coexisten en el tiempo y por lo tanto trabajan al mismo tiempo. Este chip tiene tres compuertas que funcionan simultneamente No se puede modelar con un lenguaje como C: S1 = A and B; S2 = C or D; S3 = C xor D; Las tres puertas funcional al mismo tiempo no una despus de la otra!

S1 <= A and B; S2 <= C or D; S3 <= C xor D; El valor de S ser el correcto una vez que se hayan propagado los tiempos de retardo de las compuertas. No hay que olvidar que se trata de modelar circuitos reales, no virtuales, y las seales necesitan que transcurra el tiempo para tomar un valor

La solucin al problema anterior es que aunque la ejecucin sea secuencial, las asignaciones no tengan tiempo de ejecucin:

MC. RODRIGO LUCIO MAYA RAMIREZ

Sentencias concurrentes

Caractersticas: Se ejecutan de forma asncrona unas respecto de las otras en el mismo tiempo de simulacin. El orden en que se escriban es indiferente, no siguen un orden de ejecucin predefinido. No obstante conviene escribir el cdigo en el orden que mejor se pueda entender y mejor documente el diseo.

Sirven para especificar: Interconexiones entre componentes. Estructuras jerrquicas. Estructuras regulares. Transferencias entre registros.

MC. RODRIGO LUCIO MAYA RAMIREZ

process: elemento de diseo principal

Un proceso describe el comportamiento de un circuito: Cuyo estado puede variar cuando cambian ciertas seales Utilizando construcciones muy expresivas: if..then..else, case, bucles for y while, etc Y que adems puede declarar variables, procedimientos, etc...

MC. RODRIGO LUCIO MAYA RAMIREZ

Procesos
Los procesos se disparan(su cdigo se ejecuta) cuando cambia alguna de las seales de su lista de sensibilidad. Un proceso sin lista de sensibilidad es vlido, pero se activa con cualquier evento, no se asegura un comportamiento correcto. Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrs de otra, pero sin dar lugar a que avance el tiempo durante su ejecucin. El tiempo slo avanza cuando se llega al final del proceso. Las seales modelan hilos del circuito, y como tales, slo pueden cambiar de valor si se deja que avance el tiempo. Una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan en paralelo.

Esta es la manera que tiene VHDL de expresar la concurrencia inherente al hardware

MC. RODRIGO LUCIO MAYA RAMIREZ

La solucin VHDL a la concurrencia


VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a la concurrencia En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan concurrentemente

MC. RODRIGO LUCIO MAYA RAMIREZ

sentencias concurrentes

Asignacin simple suma <= ope1 xorope2; Para Seales y Puertos, el operador es <=, el lado izquierdo es el destino y el lado derecho la fuente. OJO: fuente y destino tienen que ser del mismo tipo. Para Variables el operador es := acarreo_intermedio:= ope1 and ope2; WHEN/ELSE Permite realizar asignaciones condicionales salida <= a and b when c =1 else a or c;

MC. RODRIGO LUCIO MAYA RAMIREZ

WHEN/ELSE

[etiqueta:] seal <= val_1 when condi_1 else val_2 [whencondi_2] else else val_n; Ejemplo:

MC. RODRIGO LUCIO MAYA RAMIREZ

WITH/SELECT

La asignacin condicional (WHEN/ELSE), Tambin se puede hacer mediante la sentencia de asignacin selectiva WITH/SELECT

Por su ejecucin en paralelo es similar a un CASE Se pueden dar problemas de memoria implcita si no se pone el ltimo when others.

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 expresin 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 nmero determinado de veces *etiqueta:+ FOR ndice IN rangoinf TO rangosup LOOP secuencia de sentencias END LOOP[etiqueta]; ejemplo: bucle: FOR i IN 0 TO 5 LOOP x(i) <= enable AND w(i+2); y(0, i) <= w(i); END LOOP bucle;

MC. RODRIGO LUCIO MAYA RAMIREZ

WHILE-LOOP

El bucle se repite mientras la condicin que haya despus del while sea verdadera [etiqueta:] WHILE condicin LOOP secuencia de sentencias END LOOP[etiqueta]; ejemplo: lazo1:WHILE (i < 10) LOOP WAIT UNTIL clk'EVENT AND clk='1'; END LOOP lazo1;

LOOP El bucle se repite infinitamente [etiqueta:]LOOP secuencia de sentencias END LOOP[etiqueta]; ejemplo: lazo1: LOOP a <= c and b; END LOOP lazo1; La nica sentencia que deja romper el bucle es EXIT

MC. RODRIGO LUCIO MAYA RAMIREZ

EXIT
Detiene la ejecucin en ese instante y sale del bucle. Si hay varios bucles anidados, sale de donde se encuentre la instruccin o bien del bucle que se especifica en la etiqueta. Solamente puede aparecer dentro de una sentencia LOOP. exit [etiqueta] [when condicin]; Ejemplo: --Interrumpe el FOR y sigue por el WHILE termina: WHILE a< 100 LOOP ---sentencias sigue: FOR n IN 0 TO 100 ---sentencias EXIT termina WHEN n=a; END LOOP sigue; END LOOP termina; NEXT En VHDL se pueden crear bucles infinitos [etiqueta] loop secuencia de sentencias End loop [etiqueta]; Los bucles pueden tener una condicin de salida. next [etiqueta] [when condicin]; Ejemplo: --Interrumpe el FOR y sigue por el WHILE termina: WHILE a< 100 LOOP ---sentencias sigue: FOR n IN0 TO100 ---sentencias NEXT termina WHEN n=a; END LOOP sigue; END LOOP termina;
MC. RODRIGO LUCIO MAYA RAMIREZ

Cuando existen bucles anidados, sale del ms interno, o bien, de aquel que tiene la etiqueta que sigue al EXIT.

WAIT
Espera a que ocurra una condicin WAIT UNTIL condicin; WAIT UNTIL e1=1 and e2=0; Espera a que cambie alguna seal de la lista de seales WAIT ON lista_seales; WAIT ON e1,e2,clk; NULL No realiza funcin alguna. Pasa la ejecucin a la siguiente sentencia secuencial. til en sentencias CASE cuando no se quiere realizar ninguna accin para alguna de las elecciones. Sintaxis: [etiqueta:] NULL;

Espera un cierto tiempo


WAIT tiempo; WAIT 25ns; Espera indefinidamente WAIT

MC. RODRIGO LUCIO MAYA RAMIREZ

GENERATE

Esta sentencia concurrente permite reducir el tamao del cdigo de aquellas estructuras que se repiten considerablemente. Sintaxis: etiqueta: FOR identificador IN range GENERATE (sentencias concurrentes) END GENERATE; etiqueta: IF condicin GENERATE (sentencias concurrentes) END GENERATE;

MC. RODRIGO LUCIO MAYA RAMIREZ

Paquetes

MC. RODRIGO LUCIO MAYA RAMIREZ

Componentes

MC. RODRIGO LUCIO MAYA RAMIREZ

Atributos
Un atributo es una caracterstica asociada a un elemento(tipo de dato, seal, entidad,) que proporciona informacin adicional. Atributo Valor Un objeto tiene un solo valor y puede tener mltiples atributos. VHDL proporciona una serie de atributos predefinidos.

Atributos 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 seales


DELAYED(t). Valor de la seal retrasada t unidades de tiempo. STABLE(t), verdadero si la seal permanece invariable durante t unidades de tiempo. QUIET(t), verdadero si la seal no ha recibido ninguna asignacin en t unidades de tiempo. TRANSACTION, tipo bit, a 1cuando hay una asignacin a la seal. EVENT, verdadero si ocurre un cambio en la seal en el paso de simulacin. ACTIVE, verdadero si ocurre una asignacin a la seal en el paso de simulacin. LAST_EVENT, unidades de tiempo desde el ltimo evento. LAST_ ACTIVE, unidades de tiempo desde la ltima asignacin. LAST_VALUE, valor anterior de la seal. DRIVING, verdadero si el proceso actual determina el valor de la seal. DRIVING_VALUE, valor que toma la seal tras el proceso.

MC. RODRIGO LUCIO MAYA RAMIREZ

Atributos

MC. RODRIGO LUCIO MAYA RAMIREZ

Resumen: Estilos de descripcin


Independiente del nivel de abstraccin, existen tres estilos de descripcin de una arquitectura: Comportamiento (Behavioral) Transferencia entre registros o flujo de datos (Data Flow) Estructural (Structural) En VHDL un sistema puede mezclar diferentes estilos a la hora de describir sus diferentes arquitecturas. 1. Comportamiento (Behavioral). En este estilo de descripcin se modela la funcionalidad por medio de los recursos algortmicos del lenguaje. Se describe el algoritmo que refleja el comportamiento de dicho componente. Tambin se le suele llamar estilo algortmico o secuencial. 2. Transferencia entre registros (RTL) o flujo de datos (Data Flow). En este estilo de descripcin se especifican los flujos de datos del sistema y la interconexin entre sus componentes. El proceso de descripcin se realiza por medio de funciones lgicas, que se ejecutarn de forma concurrente 3. Estructural (Structural). En este estilo de descripcin se definen o instancian todas las partes del sistema y sus interconexiones. Resulta muy til cuando se quiere aprovechar diseos compilados con anterioridad y que se encuentran almacenados en bibliotecas de componentes. La instruccin concurrente fundamental utilizada dentro de una arquitectura RTL es la de COMPONENT COMPONENT nombre_componente PORT( nombre_puerto: tipo_puertotipo_dato; nombre_puerto: tipo_puertotipo_dato; ... ); END COMPONENT;

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripcin

Multiplexor de dos entradas de datos de un bit ( e0 y e1 ), una seal de salida ( y ) y seal de control ( sel )

Declaracin de la entidad (entity)

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripcin

1.

Descripcin de comportamiento o algortmica (Behavioral)

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripcin

3. Descripcin estructural (Structural)

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo de estilos de descripcin

MC. RODRIGO LUCIO MAYA RAMIREZ

UNIDAD 4: Diseo con VHDL

4.1 Sistemas combinacionales 4.2 Sistemas secuenciales 4.3 Maquinas de Estado 4.7 Aplicaciones usando la tarjeta Spartan 3E

MC. RODRIGO LUCIO MAYA RAMIREZ

Modelado combinacional
El modelado de sistemas combinacionales es muy sencillo, puesto que en todo momento las salidas slo dependen del estado actual de las entradas, es decir, el circuito no tiene memoria. Un circuito combinacional puede tener multitud de entradas y salidas, por lo tanto: Necesitar miles o millones de trminos cannicos para describirlo matemticamente. Tablas de verdad que resultan inmanejables. La clave para el desarrollo de estos sistemas es el pensamiento estructurado Un sistema complejo se concibe como un conjunto de subsistemas ms pequeos, cada uno de los cuales tiene una descripcin ms sencilla. Estos bloque combinacionales constituyen las estructuras bsicas con las que se construyen los sistemas procesadores Multiplexores, decodificadores, comparadores, sumadores, etc.
MC. RODRIGO LUCIO MAYA RAMIREZ

Descripcin VHDL de sistemas combinacionales


Para describir circuitos combinacionales utilizaremos sentencias de asignacin concurrentes y procesos. Sentencias de asignacin concurrentes. Van fuera del proceso. Esto se debe a que en una declaracin concurrente no importa el orden en el que se escriban las seales, ya que el resultado para una determinada funcin sera el mismo. Se utilizarn tres tipos de sentencias de asignacin concurrentes: Sentencias de asignacin simples, por ejemplo: salida1 <= A and B; Sentencias de asignacin condicionales, por ejemplo: salida2 <= A when S = 1elseB; Sentencias de seleccin, por ejemplo: with S select salida3 <= 1 when 00; 0when others; Es decir, hay que evitar que una misma seal aparezca en el lado izquierdo y en el lado derecho de la sentencia de asignacin: Y <= Y nand X; Procesos. Se debe respetar las siguientes reglas: Si una seal es leda en el interior de un proceso, es decir, aparece en el lado derecho de una sentencia de asignacin o en una condicin, debe aparecer en su lista de sensibilidad. Si a una seal 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 seal no se ha definido en el cdigo. En VHDL las seales mantienen su valor hasta que se les asigna uno nuevo; por lo tanto, si para una seal dada, su valor est indefinido, el compilador sintetiza un latch (biestable) que almacena la seal.

Siempre hay que evitar la realimentacin combinacional, ya que esto modela elementos de memoria asncronos.

MC. RODRIGO LUCIO MAYA RAMIREZ

Multiplexores

Circuitos que tienen n entradas de datos y una salida de datos, por lo tanto necesitan m entradas de seleccin, donde m es:

Habitualmente tambin poseen una entrada de habilitacin La funcin f que describe el comportamiento de un multiplexor de dos entradas (I0, I1) , una salida y una entrada de seleccin (S), se puede describir mediante la tabla Aplicando Karnaugh se obtiene:

MC. RODRIGO LUCIO MAYA RAMIREZ

Multiplexores

MC. RODRIGO LUCIO MAYA RAMIREZ

Multiplexores

MC. RODRIGO LUCIO MAYA RAMIREZ

Decodificadores

Es un circuito lgico con n entradas y m salidas, donde m es

Podemos encontrar decodificadores con entrada de habilitacin, activos por cero o activos por uno

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 lgico con n entradas y m salidas, donde m es

Habitualmente tambin poseen una entrada de habilitacin, pueden ser activos por cero o por uno

MC. RODRIGO LUCIO MAYA RAMIREZ

Codificadores

MC. RODRIGO LUCIO MAYA RAMIREZ

Codificadores

MC. RODRIGO LUCIO MAYA RAMIREZ

Codificadores

MC. RODRIGO LUCIO MAYA RAMIREZ

Lgica Secuencial
Es necesario conocer el tipo de descripcin concreto a realizar para que se reconozca un elemento secuencial Es obligado el uso de procesos (excepto latches), y recomendable que incluyan lista de sensibilidad Diferencia entre variables y seales Aconsejable incluir siempre un reset global que aplique un valor de inicializacin
entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin process (a,b) begin if b=1 then d <= a; end if; end process; end l_a;

entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin d <= a when b=1; end l_a;

MC. RODRIGO LUCIO MAYA RAMIREZ

Inferencia de registros activos por flanco

Es el mtodo ms habitual de describir sistemas sncronos Los dispositivos lgicos incluyen registros activos por flanco (generalmente de tipo D) Existen varias formas de especificar la llegada de un flanco: Descripcin genrica

rising_edge(reloj) if relojevent and reloj=1 if relojevent and reloj=1 and relojlast_value=0

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;

MC. RODRIGO LUCIO MAYA RAMIREZ

No emplear ms condiciones else elsif en la misma sentencia if..then..else despus de la condicin de evaluacin del reloj En la misma evaluacin if del reloj no se deben comparar otras seales o variables La sentencia if del reloj no puede estar dentro de un bucle La sentencia if del reloj no debe estar anidada, se pueden incluir ms if dentro de ella Slo se puede incluir una evaluacin de flanco por proceso: varios relojes varios procesos En comparaciones mltiples, emplear la sentencia case No utilizar relojes derivados, alternativamente, emplear habilitacin de reloj
r_derivado <= not a and (b or c); process (d, reset, preset, reloj, r_derivado) begin if reset = 1 then q <= 0; elsif preset = 1 then q <= 1; elsif rising_edge(reloj) then if r_derivado = 1 then q <= d; end if; end if; end process; end r_a;
MC. RODRIGO LUCIO MAYA RAMIREZ

Mdulos funcionales especficos


En sistemas complejos es necesaria una correcta particin del diseo (Top-Down) Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas) Aconsejable emplear mdulos del fabricante (generadores automticos, mdulos IP, ...) Consultar documentacin del software de sntesis Herramientas y atributos especiales Mdulos especficos usuales: Multiplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ...

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

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

MC. RODRIGO LUCIO MAYA RAMIREZ

Para puertos bidireccionales la descripcin es similar a los triestado: Tipo inout


entity bidir is port ( bid : inout std_logic ; a, b, c, oe : in std_logic; salida : out std_logic); end bidir ; architecture bidir_a of bidir is signal interna1, interna2 : std_logic ; begin bid <= interna1 when oe = '1' else 'Z'; interna2 <= bid;
interna1 <= (a and b) nor c; salida <= (c xor interna2) when oe='0' else 'Z'; end bidir_a ;

MC. RODRIGO LUCIO MAYA RAMIREZ

Mquinas de estados
Es necesaria una descripcin especfica con definicin de un tipo enumerado Hay que hacer una divisin de la descripcin en dos procesos distintos: 1. Cambio sncrono de estado 2. Evaluacin de condiciones para dirigirse a un estado

MC. RODRIGO LUCIO MAYA RAMIREZ

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejemplo

MC. RODRIGO LUCIO MAYA RAMIREZ

Ejercicio

Recordar: Usar 2 procesos Definir tipo de dato TYPE

MC. RODRIGO LUCIO MAYA RAMIREZ

Memorias

Si el tamao de la memoria es reducido, sta puede implementarse mediante recursos lgicos comunes (funciones lgicas y registros) Habitualmente, existen en hardware estructuras regulares que las implementan y donde se sintetizan si la descripcin VHDL es apropiada

MC. RODRIGO LUCIO MAYA RAMIREZ

Memorias
En el caso de RAM, es necesario comprobar que el dispositivo incorpora este recurso lgico

MC. RODRIGO LUCIO MAYA RAMIREZ

S-ar putea să vă placă și