Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Vhdl tutorial, Apuntes de Ingeniería de Telecomunicaciones

Descripcion de la programacion en VHDL

Tipo: Apuntes

2015/2016
En oferta
30 Puntos
Discount

Oferta a tiempo limitado


Subido el 06/05/2016

laucamacho
laucamacho 🇪🇸

1 documento

Vista previa parcial del texto

¡Descarga Vhdl tutorial y más Apuntes en PDF de Ingeniería de Telecomunicaciones solo en Docsity! VHDL: Lenguaje de descripción de hardware HDLs discretos vs. continuos VHDL Very High Speed Integrated Circuits Hardware Description Language Breve visión sobre su uso para tareas de síntesis. “Análisis de casos usando ALTERA FLEX10K y el ambiente de diseño MAX+plus Il de ALTERA IMPORTANTE! Existen lenguajes de descripción de hardware pensados para el diseño de sistemas continuos (analógicos), y otros concebidos para trabajar con sistemas discretos (usualmente binarios) Este curso trata sobre lenguajes de descripción hardwa mas dis Qué es un HDL? Características de un HDL + Unlenguaje HDL para descripción de hardware (HDL: Hardware Description Language) es una herramienta formal para describir el comportamiento y la estructura de sistemas (usualmente electrónicos pero a veces también de otros tipos) usando un esquema textual Usando HDL el diseñador puede describir la operación del sistema con diferentes niveles de abstracción (o “estilos”): — describiendo QUÉ es lo que el sistema debe hacer (comportamiento) — describiendo CÓMO hacerlo (algorítmico) — detallando CON QUÉ hacerlo (flujo de datos y estructural) Describe actividades que ocurren en forma simultánea (CONCURRENCIA) Permite describir módulos con acciones que serán evaluadas en torma secuencial (procedural), donde todo el módulo será visto 'como una acción concurrente más Posibilita la construcción de una estructura jerárquica, donde es posible combinar descripciones estructurales y de flujo de datos con descripciones de comportamiento (BEHAVIOR) Permite modelizar el concepto de “tiempo”, fundamental para la descripción de sistemas electrónicos Que ventajas da el uso de HDLs? Qué HDLs existen? + Como herramienta de especificación — es posible su uso para la de especificación general de un sistema, tanto a nivel de hardware como de software — permite describir el hardware, tanto a nivel de sistemas y subsistemas, como de componentes + Como herramienta de diseño — Mejor documentación y facilidad de reuso — Posibilidad de parametrización - Portablidad de un diseño. Independencia tecnológica + Como herramienta de simulación — Disponibilidad de modelos de distintos componentes de fabricantes variados en HDLs normalizados - Facilidad para la generación de vectores de test complejos + Debajo nivel: permiten definir un circuito a nivel de arquitectura (FlipFlops, compuertas básicas, ecuaciones lógicas) — PALASM, CUPL, ABEL De nivel medio: superset de los previos, permiten definir un circulo 'en modo jerárquico, así como la generación condicional/terativa de hardware; en ciertos permiten el uso de descripciones de comportamiento (funciones aritméticas, máquinas de estado) — AHDL (ALTERA Hardware Description Language) De alto nivel: superset delos previos, no sólo poshblitan mayor nivel de abstracción, sino que también son usados para la simulación, para la síntesis del generador de estímulos y el monitor de salidas — VHDL, VERILOG HDL Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware HDLs estándar de alto nivel: VHDL HDLs estándar de alto nivel: VERILOG HDL Estandarizado por el IEEE (IEEE standard 1076-1987), fué creado por iniciativa del Departamento de Defensa de USA desde los inicios de la década del 80, como medio de documentación de sus desarrollos de ASICs. Por este origen, copia muchas características del lenguaje ADA Fué actualizado y corregido en 1993 (VHDL'93) Permite la descripción en alto nivel del comportamiento del hardware, ya sea a nivel de comportamiento (behavior) o de registros (ATL) Especialmente útil en diseños MUY complejos, aunque su elevada abstracción a veces oscurece la relación final entre la especificación de un diseño y los recursos que terminan siendo empleados Desarrollado en 1983/84 por Gateway Design Automation, fué luego perfeccionado por Cadence Design Systems + Estandarizado por el IEEE (IEEE standard 41364-1995) Es usual que la herramientas de síntesis que soportan VERILOG toleren sólo un subconjunto del lenguaje completo —Estas limitaciones pueden deberse a imposiblidades físicas (P.Ej: en un diseño basado en PLD es imposible far externamente el retardo que añadirá una compuerta, porque eso está predefinida por eltipo de chip) -O a imitaciones del propio compilador Es un lenguaje de sintaxis más simple que VHDL, pero también menos potente, y en ciertos aspectos incluso más limitado que AHDL (por ejemplo, ausencia de construcciones FOR..GENERATE) + Tiene ciertas similitudes formales con el lenguaje C Flujo de diseño con VHDL Dónde es posible usar HDL? Fasa dadnsarolo | estado 1 pocunentción Análisis logar a los resultados. e mprezos prasupaso hy mrocipo dy Ena tecnología Simulación y vectores + “VHDL for Sinthosis” comprando a sólo un subconjunto do las aplicaconos de VHDL, y omplea sólo part de las faciidados dol longuajo. + El disoñadordo hardware debo ostar plonamonto concirto de asas dilerencas ESPECIFICACIÓN DEL SISTEMA PARTICIÓN HARDWARE/SOFTWARE ESPECIFICACIÓN ESPECIFICACIÓN DE HARDWARE Qué es un “estilo de descripción de hardware”? Modelado por comportamiento (behavior) Es la manera en que el diseñador describe el sistema. Puede ser: — Comportamiento (Behavioral): detalla la función entrada-salida del diseño, sin profundizar la arquitectura o los registros empleados - Algorítmico: detalla las acciones a realizar para alcanzar los objetivos, a modo de un algoritmo de software - Rlujo de datos a nivel de registros: describe la solución en forma de una máquina secuencial, detallando los registros y la lógica que 1 Sólo se describe la funcionalidad del sistema, pero ningún circuito o estructura In No se hace ningún intento de especificar hardware 1 Sirve tanto para especificación y simulación, como para síntesis (aunque en este caso hay limitaciones) Es usual el empleo de sentencias de modelado del tiempo hput1, .. output los une, sin incluir cómo resolver esa lógica. Es una descripción de inputí,... imputa — | 1% inpuel mes ota ue! FOR j IN high DOMNTO 10w+1 LOOP la arquitectura del sistema, pero no de la tecnología ante lo) be de a END LOOP; — Estructural, a nivel de registros: describe una red de compuertas A Lo (Re y registros, incorporando posibles esquemas de conexión uno square 2001 uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware Preguntas Preguntas U Cuáles de los siguientes identificadores son válidos y cuáles no? Porqué? Umi-nombre Dni nombre Dnmi_nombre ? Omi_nambre D_mi_nombre_ O hni_nombres Q Escriba los siguientes literales decimales en formato hexadecimal Q Cuáles es el equivalente decimal de los siguientes iterales? Dsh214 D2410.014 O 241489 ? D 16480_0r4 Dsha14 Q Cual es la diferencia entre 8412344 y 01234"? Convertir a bit-string binarios Dor176" Dio24 Dxespo Dr Dx-o002* Das6.0 Q Cuál es la diferencia entre 'Q! y "0"? ao Q Cuál es la diferencia entre B”1001” y “10017? ueno taquenoó 2001 Evento: ASHENDEN, uno square 2001 Tipos, y Subtipos en VHDL Tipos, y Subtipos en VHDL En VHDL se requiere necesariamente especificar el tipo (type) de cada objeto, existiendo cuatro dlases de tipos: —escalares: pueden ser por enumeración, enteros, de punto flotante, físicos. Los 2 primeros se llaman discretos, los 3 últimos numéricos., en tanto los tipos físicos corresponden a tiempo, voltajes, ... ete. —compuestos: «+ un caso muy usual en una matriz o vector (is array + aunque también existe el agrupamiento (is record...end record;) —de acceso; punteros —archivos: para manejo de VO en archivos Dado un type, es posible declarar un nuevo tipo (como rango restringido del primero), llamado subtype Ejemplos de tipos: 1ype word is array (0 to 31) ofBIT; type byte ¡s array (NATURAL range 7 downto 0) of BIT; ype arcos ¡s(rojo.naranja,amarillo,verde,azul,indigo violeta); ype complejo ¡s record real:INTEGER; imag : INTEGER; end record; type MVLA is (X', 0,1, Z); Ejemplos de subtipos: subiype nibble is byte (3 downto 0); Sidefino type caso! is (1'/2,'3'/4') y type casoZ Is (1:/2,'3'/4no puedo asignar una variable tipo caso1 a otra de tipo ca502, aunque "compartan los mismos posibles valores. Son dos tipos distintos!I!! Tipos definidos por enumeración Tipos INTEGER y REAL Su sintaxis es ento, ¡donde los elementos usados para definir los posibles valores del tipo pueden soridentficadores o caracteres. A su vez, dado un tipo enumerado pueden definirse sublipos de él como un rango limitado de las opciones enumeradas axPE día semana 15 (Luna, e. que,vie,sa,do, SUBTNSE mo laboral IS día_semana RANGE sa Un objeto de tipo enumerado se incializa por defecto al valor del primer elemento de la ista. Si se revisa el package STANDARD.VHD de la Library STD se observan ciertas definiciones por enumeración: Eype SEVERITE LEVEL 38 (NOTE, MARNING, ERROR, PAILURE) Son tipos numéricos predefinidos, ejemplos de los cuales taambién pueden verse en el Package STANDARD. TYDE integer IS RANGE -2147483648 TO 2147483647; TYDE real IS RANGE -1.7e38 to 1.7838; Para declarar un subtipo entero o real especificando su rango puede emplearse tanto TO como DOWNTO, del siguiente modo: es IS RANGE 0.0 TO SUBIYPE eres_coma,* SUBTYPE despegue IS RANGE pOHNTO Donde el subipo corresponde a los tipos integer o real según sea la orma de especificar su rango. Alternativamente, esta decisión puede hacerse explícita poniendo el tipo base antes de RANGE. SUSTYPE natural 1S integer RANGE O TO integer'HIGH; aero mos 20 “as se deine ltpo NATURAL en STANDARD VHO | Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware Tipos físicos Tipos compuestos: los ARRAYs + Permiten representar objetos que usan unidades de medida, tales como distancia, tiempo, temperatura, velocidad, peso, voltaje, cortiente, capacidad, resistendia e inductancia, etc... Además de un Iiteral numérico, llevan asociada una unidad de medida, que identfica la variable física que se quiere cuantlfcar + Para un mismo tipo físico es posible definir varias unidades de medida y la relación entre ellas. Por ejemplo, en STANDARD.VHD se define el tipo time y el sublipo delay length, como: Eype TIME da range -9223372036954775908 Eo 9223372036954775007 units £s, unidad bas: pe = 1000 fe; ms - 1000 ns, end antes; Subeype DELAY LENGTH 49 UN ARRAY es un conjunto de objetos de igual tipo, con sintaxis ARRAY (rango) OP tipo de donde el rango puede definirse de modo explícito (usando TO o DOWNTO), por mención a algún tipo de rango definido, o quedar abierta (unconsirained). aYPE word 1 PE ordaz Un aray puede tener varias dimensiones, y por ejemplo una memoria RAM de 64 palabras de 7 bits puede definirse como: Dm CE Tipos compuestos: RECORD Preguntas Un RECORD es un conjunto de objetos que pueden ser de distinto tipo, con sintaxis: TYPE nombre 1S RECORD identificador(,..): tipo; Lo.) END RECORD. [nombre] ; ¡Cada uno de los objetos (o campos) de un RECORD deben tener una indicación de tipo. Por ejemplo: TYPE fecha 15 RECORD dia: integer RANGE 1 TO 31; es: integer RANGE 1 TO 12; año: integer RANGE 19 END RECORD fecha; tral suboiectro MAXPLUS2IVHDLSSISTD y eótar el package STANDARD. VHD U Cómo están defido ls ipos BOOLEAN, BITy CHARAcTERO Qué dean hay ete NATURAL y POSITIVE? ? O Es poste asignar tvator den ajto POSITIVE aun objeto NATURAL Esposo asignar l valor don cto poa un cto o HARACTerO Declarar una constante de nombre terio” y valor 1/3. Kbeciarar una varable entera representatio con 8 bts GOeiiniruntipo “lstancia" con unidades desde micrómetos hasta Kilómetros (ummm mmm, eme Jm) Preguntas y ejercicios Declaración de objetos en VHDL Q Definir un tipo escalar entero llamado día_mes que comprenda los números 1 a 31 Definir un tipo escalar por enumeracion llamado mes, con los nombres de los 12 meses del año A Delfinirun tipo compuesto RECORD capaz de almacenar + En VHDL existen cuatro clases de objetos: constant, variable, signaly fe, cuya declaración se hace en conjunto con una espedlicación de tipo Una constantes un objeto que mantiene siempre su valor inicial CONSTANT <nombre> : <tipo> [:= <expresion»]; Porejemplo: CONSTANT 1argocte : INTEGER := 16; P fechas + Las variables sólo pueden ser declaradas en estructuras secuenciales A Definir un tipo compuesto RECORD capaz de almacenar (pmcesos o subprogramas) antes de BEGIN; puede pensarse que una variable botes y stnga ds caracares es o dat en menors sl computadora ue cua nario ym tene 3 Delinruntpo compuesto po ARRAY capaz de ser usado a a a cmo a el Ana aro ola puedo para definir hasta 10 fechas+nombres a » P A Definir un tipo compuesto RECORD de nombre A “complejo” compuesto por un elemento real y otro Porejemplo: VARIABLE largovar : INTEGER := 16; imaginario (aos de punto fini) mr Far asno mr Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware Declaración de objetos en VHDL Declaración de objetos en VHDL + Las señales (signal) sólo pueden ser declaradas en la sección de arquitectura, antes de BEGIN. + Puede pensarse que un objeto tipo signal representa uno o varios cables de conexionado, y por eso su alcance no está restingido al interior de un proceso, sino que puede ser usado para inteconectar componentes, y activar o suspender la ejecución de procesos Durante la simulación, una señal no se actualiza cuando se analiza la sentencia sino al fin de cada ciclo de simulación, o en momentos futuros que se registran en una cola de eventos SIGNAL <nombre> : <tipo> <expreSion>]; Cuando una soñalvarabio astpo INTEGER os importo dofinr su rango: XX: INTEGER RANGE uu DOWNTO dd (0 dd TO uu) Si esto no e haco ol complador asignará 32 ts para su roprasantación, y en l caso de nforrse registros ello resuará en el uso innecesaro de una importante cantidad de recursos ll + Las variables de clase fle permiten el manejo de archivos desde VHDL; aunque en general no son sintetizables en hardware, pueden servir para el generador de estimulos del testbench La declaración de un objeto de clase file pueden incluir su modo de apertura y en general VHDL ofrece funciones para la lectura y escritura de datos desdefnacia un objeto clase fle FILE file_name: file_type_name [[OPEN mode] IS <string>); Declaración de atributos Atributos predefinidos en VHDL — Un atributo es una característica posible de asociar a un objeto, y debe tener un tipo especilicado en su declaración. Ejemplo: -- defino el tipo “coordenada”. TYPE coord IS RECORD X,Y:INTEGER; END RECORD; -- declaro ubicacion como un atributo de tipo “coordenada”. ATTRISUTE ubicacion: cora; — asigno el atributo a mi variable y le doy valor ATIRISUTE ubicacion OF mi_variable:otrotipo 18 (10,18); - sitengo definida una variable posic de tipo “coord”, le puedo asignar el atributo “ubicación” de mi_variable mediante: posic += mi variable/ubicacion - Eluso de atributos puede ser útil para asignar a una dada señal ciertas características requeridas para su posterior síntesis. Por ejemplo, definir la codilicación a usar para un tipo enumerado Ciertos atributos ya están predefinidos en VHDL. Por ejemplo, dada una señal “muestra” definida por: muestra : INSTD_LOGIC_ VECTOR(7 DOWNTO 0) Los atributos definidos para rangos de vectores son 'muestra'HIGH valdrá 7 muestra'LOW valdrá 0 'muestra'RIGHT valdrá 0 muestra'LEFT valdrá 7 'muestra'RANGE valdrá 7 DOWNTO O — 'muestra'REVERSE RANGE valdrá 0 TO 7 'muestra'LENGTH valdrá 8 — 'muestra'ASCENDING será falso Atributos predefinidos en VHDL Atributos predefinidos para tipos enumerados Ciertos atributos predefinidos de VHDL están pensados para señales. Por ejemplo, dada una señal S: E S'DELAYED (T) genera una nueva señal que copia el valor de S con una demora T E S'STABLE (T) devuelve TRUE si S no ha cambiado durante el lapso previo de tiempo T 'S'QUIET (T) devuelve TRUE si no se han asignado nuevos valores a S durante el lapso previo de tiempo T. 'S'TRANSACTION es TRUE si se ha asignado un nuevo valor a S S'LAST_EVENT devuelve el tiempo pasado desde el úlimo evento 'S'EVENT devuele TRUE si S ha cambiado 4— Ciertos atributos se acomodan especialmente a tipos enumerados (aunque también sirven para otros tipos). Por ejemplo, dado un tipo: oscuro" BASE'LEFT vale rojo SEURANGE vale rojo 10 rosa Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware Entidades en VHDL Entidades en VHDL: datos genéricos + Una entidad (“entity”) corresponde a la definición de un diseño a manera de “caja negra”, o símbolo, donde sólo se declara su intertase: —las conexiones de esa caja (puertas) capaces de transportar información variable entre entidades -valores genéricos, capaces de transportar parametros o información estática (constante) entre entidades + La sintaxis esleytzrY <identificador> 18 [GENERIC (AT ÍPORT(...151 END [eNrIÉx] [<identificador»] ; «Porejemplo: [awzrzi hargzada 15 FORT (xy rn BI 72001) sum couts CUT BY exp ENTITY halé_ada PA mica) [a 2; + El campo GENERIC de una entidad define ciertos valores propios de la entidad cuyo valor puede ser cambiado durante la compilación. + Es un método útil para definir parámetros, en megafunciones parametrizadas ENTITY <nombre de la entidad» 18 GEMERIC (CONSTANT Eplh,Ephlstáme 38 5 no; —-9e asun Seran va a A Entidades en VHDL: las puertas La arquitectura de una entidad VHDL + Las puertas de una entidad se declaran con la palabra port, seguida de una listal formal de señales Cada señal (o grupo de señales. de igual tipo) se compone de su <identificador>, su modo de operación (in, out, ¡nout, buffer), su tipo, y un eventual valor por defecto para señales de tipo in o inout que queden sin conectar. Las puertas corresponden a señales físicas (signals) y, para los modos definidos en STANDARD: = una puerta in puede ser leida (estar en ellado derecho de una asignación 6 AHS) pero no puede ser modificada (LHS) — una puerta out puede ser modificada (LHS) pero no leída (RHS) — una puerta buffer es una puerta de salida siempre activa, en tanto una puerta inoutse asocia a una puerta bidireccional (por ejemplo: con TAI- 'STATE). Ambas pueden ser leídas y modificadas + Laresolución intema de la función asociada a una dada entidad es resuelta en el bloque “ARCHITECTURE”, que podría asociarse al “schematic” que describe qué hay dentro de un símbolo ARCHITECTURE <idontiicador> OF <ontidad> 15 Declaración do soñalos locales Dectaración do constantos locales Declaración do tpos y subtpos locales Dectaración do Compenontes Deciaración do atrbutos Deciaración y cuerpo de Subprogramas. BEGIN Instanciacón de componortos Asignacionas concurrentes a soñalos La dupla VHDL “Entidad + Arquitectura” Estructura básica de modelado en VHDL + La separación entre la declaración de una entidad y su arquitectura implica cambiar el modo de realización de una función sin afectar a quienes usen ese módulo desde un nivel de mayor jerarquía Sila descripción de una entidad y su arquitectura se mantienen en archivos separados, es necesario un modo de interconectar entre sí estos bloques, llamado bloque “CONFIGURATION”, que asocia el nombre de una entidad a una descripción de un componente, así ¡como los nombres de las puertas de la entidad con las puertas locales del componente Este esquema de vinculación facilita el reuso del código y el cambio de “LIBRARIES. Una entidad, sus posibles arquitecturas y los eventuales bloques de configuracion se denominan “DESIGN UNITS" LIBRARY nomére_de library; USE nombre_de_package.componentes_o_ subprogramas; ENTITY nombre_entidad IS generos declaración de port ENDENTITY nombre_entidad; ARCHITECTURE nombre_arquitectura OF nombre_entidad IS declaración de tipos y subtipos locales. ción de señales locales ción de componentes de dedar BEGIN. sentencias de asignación a señales sentencias de procesos instanciación de componentes. END ARCHITECTURE nombre_amufectura; uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 10 VHDL: Lenguaje de descripción de hardware Estructuras de VHDÍ “libraries” y “packages” Una “library unit” es un conjunto de bloques elementales de diseño (entidades, arquitecturas y configuraciones: “design units”) Una “library unit” puede corresponder al diseño en curso (“working library”), a diseños previos del usuario, o a diseños realizados por otra empresa.Está asociada a un subdirectorio Un “package” es el nombre dado a un conjunto de subprogramas, definiciones de tipo y sublipo, constantes, operadores complejos, de señales, de componentes, ete., y forma parte de una “Ilbrary”. El uso de un package se indica con la secuencia: LIBRARY <nombre de la library>; USE <nombre del package.funciones o procedimientos usados de ese package»; Los Packages en VHDL + Los Packages son una forma conveniente para almacenar y usar innformación útl para todo un modelo. + Los Packages están formados por una dedaración de Package (necesaria), y un cuerpo “Package Body” opcional PACKAGE «package name» 15 Desaracón de Constantes Decaracón de Constantes Packages del VHDL La library STD y el package STANDARD + El VHDL estándar tiene dos Packages nativos en la Library STD: - Standard donde se definen los tipos lógicos y numéricos básicos - TEXTIO: este package, que forma parte de la ibrary STD, define tipos asociados a la creacion de líneas de texto (LINE, TEXT) a partir del tipo 'STRING (definido en el package STANDARD de STD), así como procedimientos para el ingreso e impresión de textos usando los streams de entrada y salida. Es de uso importante para elaborar el generador de estímulos y el monitor de salidas del Tes!_Bench + Packages matemáticos: suministrados por algunas compañias, resuelven funciones de conversión, trigonométricas, de punto flotante, estadísticas, etc. Packages de síntesis: estos packages usualmente permiten que la herramienta de síntesis pueda detectar ciertas funciones y sintetizarias de modo óptimo para su tipo especial de tecnología Enla library STD el package STANDARD STANDARD, a partir de pactos . ciertos elementos impletos dependientes dela implementación (como INTEGER y REAL, o la De O e pm a ago) tiempo) se dear la sa implementación devaños | “E9RRDELA Cenar arme tpos de variable ross. ie = 100 Estalibrary y package, y los |" tpos que define son inherentes alVHDL y no necesitan ser declarados ona packago STANDARD; uno square 2001 Fuente: ALTERA MAXplus Tipos definidos en el package STANDARD Ejemplo de un Package cualquiera Discretos riscos | | Punto fotante Enteros |lEnumerados | | Tiempo Boolean || caráaior ]| 81 ] |. Severiy Level revisar STANDARD.VHD en Cimaxplus 2vnd93std Fuente: ASHENDEN asar ana - - Declaración Y eee pr 18 (a, cop, 192, ta, cop) del Package z Hb e cor eo MES ut ata logie estara! domo 005 / Funcion Compare (variable a , 1 integer) or tdi Cuerpo del ESE Package Eimerton comparo (variable 3,b: inteser) 18 LON Fuente: ALTERA Guillermo Jaquenod, 2001 11 VHDL: Lenguaje de descripción de hardware Las Libraries en VHDL La Library IEEE Una Library puede ser asociada a un subdirectoio, donde se almacena uno o más packages. Existen Libraries de donde se copian elementos de referencia estándar (lamadas Resource Libraries), tales como: - STD: contiene al Standard Package y es inherente al VHDL - IEEE: packages desarollados por el IEEE — ALTERA, LPM: Packages desarrollados por un dado fabricante — VITAL: package que define ciertos modelos temporales Pero además existe la llamada Working Library, indicada por WORK, que es aquel directorio donde el diseño actual está siendo procesado m Dima "== denássusaracorsdepontios en ad C: MAXPLUS2AVEDL3 + La Library IEEE es muy usada en VHDL, pues no sólo define nuevos tipos de señales, sino también el comportamiento de los operadores aritméticos y lógicos sobre esos nuevos tipos. La Library IEEE contiene los siguientes packages: - sta logic_1164 + tipos STD_LOGIC, STD_LOGIC_VECTOR y ovetioad de las tinciones relacionadas con estos pos. - site logi_aritn + overlcad de funciones ariméticas, de conversión, y los tipos SIGNED y UNSIGNED - ste logic_signed: + funciones aritméticas para STD_LOGIC_ VECTOR con signo - sta logic_unsigned: , * Iunciones artméticas para STO, LOGIC. VECTOR sin signo A cocina El package /EEE.Std_logic_1164 Interpretación de 'X' y de El package STANDARD define sólo los valores lógicos Oy 'Y para objetos tipo BIT y BIT_VECTOR. La necesidad de contar con la posibilidad de modelizar los estados de alta impedancia y el estado desconocido llevó a la creación por el IEEE de un package llamado Std_logic_1164 0 MVL9 Alise define el tipo STD_ULOGIC con9 posibles valores lógicos: — fuonos: Y: sn inicializar," desconocido, U:co1o,7": uno, Z”:ala impodancia — débles'w":dosconocido, 'L':coro.'H":uno,*: sin importancia Este package a su vez redefine (overload) los valores de retomo de los operadores lógicos sobre este tipo de variables 'STD_LOGIC, es un subtipo de STD_ULOGIC resuelve los conflictos entre señales fuertes y débiles library IEEE; uso IEEE. + EnVHDLla interpretación de los valores 'X' (desconocido) y'- (sin importancia) es dista al caso habitual en diseño lógico o en AHDL, donde la 'X' se usa para indicar al programa de síntesis que un valor puede ser asignado tanto a '0' como a *1'a los fines de optimización. Por ejemplo, dado un valor s="01100110+, de ejecutarse la sentencia IP s="0110--10" THEN q <= “1”; ELSE q no se dará el primer caso, y esta sentencia equivaldrá a q <='0%; -- 01100110 distinto a 0110--10 1 Eso es así porque se están comparando dos strings de caracteres, y desde ese punto de vista el '1' yel * son caracteres distintos Flsring STD_LOGIC. VECTOR no eva a feta Bal nico! Estructuras de VHDL: la Configuración Estructuras de VHDL: configuracion La configuración es una estructura usada para indicar ciertas asociaciones: = Asociaruna Entidad con una dada Arquitectura — Asociarun Componente a una dupla Entidad-Arquitectura Es mayormente usada en instancias de simulación, porque habiita una forma eficiente de chequear altemativas, En instancias de Síntesis iene soporte limitado o nulo CONFIGURATION <identifier> OP <entity_name> 18 FOR <architecture_name> END POR; END CONFIGURATION; o 1 Cenasez >) [Arqr | [arg2| [aros Alasociar una Entidad con una Arquitectura se definen dos tipos de vinculos: -Entre una entidad y la arquitectura elegida para resolverla en una dada aplicación -Entre una arquitectura y una entidad usada como parte de esa arquitectura Guillermo Jaquenod, 2001 12 VHDL: Lenguaje de descripción de hardware Asignaciones condicionales concurrentes a señales: WITH..SELECT Asignaciones condicionales concurrentes a señales: WITH..SELECT + Parecida a CASE, sólo que los posibles valores constantes de una expresión sólo controlan una única asignación, y no la ejecución de sentencias varias como en CASE [label:] WITH <expresión> SELECT <señal> <= cexpresión> WHEN <constante>, Cexpresión> NHEN <constante>, <expresión> NHEV OTHERS; > . o | a 10 2 sel 2 WHEN OTHERS considera los 78.casos restantes. Porqué 782 WITH sel SELECT q <= a WHEN "00", D WHEN “01”, € WBEN “10”, A WHEN OTHERS; --- decodificador BCD a 7 segmentos ENTITY bed7seg 1S pore ( codbed : IN INTEGER RANGE 0 70 9; sevsegs : CUP BIT_VECTOR (6 DONNTO 0); END ENTITY bed7seg; ARCHITECTURE usoselece OF bed7seg 15 BEGIN WETA codbed SELECT sevsega[ <-] B"1111110" WHEN O,BY0110000% WHEN 1, BY1101101" WHEN 2,B"1111001% WHBN 3, BYOL1OO11" WHEN 4,B"1011011% WHBN S, BY1O11111" WHEN 6,B"1110000" WHBN 7, BU1111111% WHEN 8/B"1111011% WHBN 9, B“0000000* WHEN OTHERS; END ARCHITECTURE usoselece; os SIT VECTOR Havana lara Bal nicol Ejemplos: decodificador 2 a 4 usando WITH LIBRARY ieee; USE ieee.stá logic_1164.ALL; ENTITY decod2a4 1S PORT ( sel : IN STD_LOCIC VECTOR (1 downto 0); pro Y: OUT STD_LOGIC_VECTOR (3 downto 0)); -SelO) put | END ENTITY decod2a4 ; sel ye, ya) ARCHITECTURE usowich OF decod2a4 1S BEGIN WITH sel SELECT y <= "LOOO" WRRN "11%, "0100" HRBN "10%, "0010" WHEN "01%, "0001" WHEN "00%, "0000" WHEN oshers; END ARCHITECTURE usowith; pa po 4 codboa SELECT BUAL11227 HUEN others; des segir Ejemplos: multiplexor 8 a 1 usando WITH Asignaciones usando SELECT: el uso de WHEN OTHERS Bxr_VeCTOR(2 domto 0) ECTOR(7 downto 0) A am a «0 a mex "000 e, an Bro0zr ae ” Pague eáno nl mu aroxo" o EN n men sona Ormens> y N + Deben considerarse TODOS los casos, y en STD-LOGIC cada señal puede tener 9 valores distintos! + WHEN OTHERS permite considerar todos los casos restantes de una vez seles de tipo STD_LOGIC!! ARCHITECTURE logic OP muxzal 1S WHEN OTHERS consiá =- selected signal ascigmment Sa ES Ed ED ARCHITECTURE Logic, L- Guillermo Jaquenod, 2001 15 VHDL: Lenguaje de descripción de hardware Mezclas de (a DOWNTO b) con (c TO a) Mezclas de (a DOWNTO b) con (c TO a) + El uso de vector de rango descendiente (a DOWNTO b) con otros de rango ascendiente (c TO d) se puede prestar a multiples contusiones Y. Cuánto vaa as (2) y nz, entes) y niss) para que tte a 17, unto valen was (2) tas (1) y tas (017. Valen 1) 140 unto valen sale. DOWN) sale. DON!) y Sale. CÓMN (07 Valn'1:1'y 0 unto valen sale UP, sal UP(1)y sale. UPIO)?, Valen 0.1 y 1 Qué vals deta na ait2, anto) antes) pura que segu 17 nar O Py Mezclas de (a DOWNTO b) con (c TO a) 7 — A A EE Profa fea] [cio] os [ui] + Las distintas formas do indicar ol rango de un vectr sólo simon para, ofinircuál valor do indico os usado para roforoncia al olemento do la lzquiorda y cual para ol do la derecha + Alroalizar asignaciones mozoladas lo quo so respota os quién está a/a “zquierda y quien a la derecha. + Al tinc un bl string o un String constante so asume que el primer elemento está a/a izquierda y e úlimo a la derecha Bases de VHDL pasando de la concurrencia a la secuencialidad: los procesos las variables las asignaciones secuenciales Otras acciones concurrentes: los PROCESOS Sentencias concurrentes: PROCESOS Un proceso se comporta como una única sentencia, resuelta en forma concurrente con otros procesos, compuesto intemamente por un ¡conjunto de sentencias que son analizadas en forma secuencial, en vez de concurrente Esta descripción secuencial de la resolución faciita la realización de descripciones algorítmicas, o behaviorales. Sin embargo, no implica que una vezen hardware esto signifique una jerarquía temporal, sino sólo un ordenamiento de dependencias Un proceso conforma un loop infinito, que comienza luego de PROCESS..BEGIN, lega hasta END PROCESS y vuelve al inicio Para que un proceso pueda resolverse en cada ciclo de simulación se requiere algún medio de detención y activación, que puede ser una lista de sensibilidad o alguna de las 3 posibles variantes de la sentencia WAIT. + Los modos posibles (excluyentes entre si) son: —la lista de sensiblidad: es un conjunto de variables adjunto a la palabra PROCESS, cuyo cambio (ya sea de valor numérico o lógico) activa la ejecución del proceso por un barrido -una sentencia WAIT (aceptada con restricciones por las herramientas de síntesis) lista de + La sintaxis de un proceso es: sensibilidad Labels] euocess [[(nombre de seña1/: as) [declaraciones Locales: señales, variables, constantes, eto.) <sentencias secuenciales» ..-72>7 xD PROCESS [label)y Ellabeles opcional! Guillermo Jaquenod, 2001 16 VHDL: Lenguaje de descripción de hardware Asignaciones concurrentes y procesos implícitos Sentencias de control de procesos, asociadas a eventos: WAIT + Se ha visto que el cambio de valor de cualquiera de las variables definidas en lalista de sensibilidad de un procesos activa su evaluación + Un bloque combinatorio puede ser entonces visto como un proceso implícito” donde todas las variables en juego están enla lista de sensibilidad. + Porejemplo q Sr 2 MEN x=01? ELSE D WHEN y='1! ELSE Cs + equivale a PROCESS (8,D,0,X,y) 1S BEGIN IP xe'1' THEN ena] ELSIS yu"1” THEN qesby ELSE gene; END 187 + De igual modo, hay simlitud entre la construcción concurrente WITH..SELECT. y la construcción secuencial CASE..END CASE; + Eincluso para una asignación simple gb <= (qa aná notíg xor 2))7 + Hay un proceso implicito: process (qa,9/2) 1S BEoz qbeníga and not(g xor 1))7 END PROCESS; La sentencia WAIT ofrece 3 variantes para detener la resolución de un conjunto de sentencias secuenciales (un proceso, un procedimiento, un lazo LOOP) hasta el cumplimiento de un dado evento: - label:] WAIT ON <lista de sensibilidad»; la resolución del proceso se detiene hasta que alguna de las señales en la lista de sensibilidad cambia, noimporta de qué valor a qué valor - [label] WAIT UNTIL <condición>; el proceso se detiene hasta el momento ¡en que la condición cambia de FALSA a VERDADERA - [abel:] WAIT FOR <expresión temporal»; la resolución se detiene porun dado iempo. ATENCION: WAIT FOR no es sintetizable! WAIT ON <lista de sensibilidad»; WAIT UNTIL <condición>; WAIT FOR <expresión temporal>; Sentencias asociadas a evento: ejemplos del uso de WAIT Ejemplos de WAIT Dada una variable luz, definida mediante: TYPE semáforo IS (rojo,ama,verde); SIGNAL — luz:semáforo; la sentencia: — WAIT ON 132; detiene el proceso hasta que cambie alguna luz. Por sulado, la sentencia IF luz=(rojo OR ama) WAIT UNTIL luz=verdo; END 1") indica las reglas que debe cumplir un conductor frente al semáforo en una intersección. Alavez: WAIT FOR 2 ns; puede ser usada en procesos de simulación. Las 3variantes pueden combinarse entre sí, yla sentencia mar UNTIL 201 se satisface (se sale de WAIT) si alguna de las 3 condiciones es válidas a/b.c/d: eventos para WAIT ON Process 1 asa a ario, mare a a O e Mor 01 oro EAN Fuente: ssoH01A!] Diseño de un Flipflop usando WAIT Variables locales y globales + MAX+plusil sólo soporta una instrucción walt until para una señal rrrx wat 15 sor ( simple a = Otras variedades de walt TN (el: walt on) o señales complejas no son toleradas para la síntesis LIBRARY deeey USE dese std Logic_1164.ALty ARCHITECTURE usouaie OP Wd£f 35 WATUÑTA esper aque la condición pase de alas veracea => Ranas posto! + Al definirlas variables se indicó que sólo pueden ser declaradas en un proceso, una función o un procedimiento, antes del BEGIN, y que sólo pueden almacenar valores temporarios dentro de esa estructura. Es decir no pueden ser usadas para sacar información luera de la estructura secuencial donde son declaradas. VHDL'93 agrega las variables globales, que pueden ser usadas para compartir información entre distintos procesos secuenciales (pero no ser usadas fuera de ellos en sentencias concurrentes, o como parte de la lista de sensibilidad de un proceso.o en un WAIT)! Las variables globales suelen no ser soportadas por las herramientas de síntesis, yla sintaxis de su uso es: SHARED VARIABLE <nombre> : <tipo>; Guillermo Jaquenod, 2001 17 VHDL: Lenguaje de descripción de hardware Asignaciones condicionales en procesos: CASE usando rangos u OR Ejemplos: multiplexor 4 a 1 usando CASE + Dentro de cada WHEN de un CASE es posible incluir varios casos + Paraelose usa ol caráctorT'a, considera el OR de ENTITY case_rango 15 Ps OUT INTRGER RANGE 0 70 3); END ENTITY case_rengor ARCUITECIURE rangovar 0% case rango 15 mícase: PROCESS (a) + Tambón puedo aeom or] speciicarso un rango A dovalores END ARCHITECTURE rangovary Distimas formas de incluir máliples casos en una sola lina Ejemplos: demux 3:8 negado tipo 74138 Comparación entre CASE y WITH..SELECT ¿re > 5 A a BERELARA , SE2 a + Ambas sentencias comparan una expresión contra una tabla de valores CONSTANTES y operan en consecuencia + Pero CASE permite describir varias sentencias en cada caso, y además es de tipo secuencial (permite usar asignaciones múltiples para definir defaults) Proceso Implícito Proceso Explícito IT sel SELECT PROCESS (sel, a, b, e, 8) qe. a mue roo" BEGIN al CASE sel 18 o mE 0200 E A mue OTHERS a MEEN 10" => q <= EEN OTHERS => q <= dy END CASE; END PROCESS; IF-ELSE versus CASE += El uso de sentencias IF debe ser controlado cuidadosamente, por: += la posibilidad de inferir registros (F incompletos) - generar circuitos de complejidad innecesaria (prioridades indeseadas) » El uso de sentencias CASE es más conveniente: + No induce prioridades. » Eluso de hardware es más evidente y predecible + El complaador obliga a definir todos los casos, evitando la inferencia indeseada de registros + Más próximo al comportamiento de una tabla de verdad ae + Usado por el MAX+plus Il para definirla tabla de transición de estados | Y 9% en máquinas de estado Recomend donde pueda reemplace IF por CASE uno square 2001 vente: ALTERA Iteraciones en procesos usando LOOP, FOR LOOP y WHILE LOOP Permiten reemplazar la enunciación explícita de sentencias secuenciales, en forma de unlazo de iteración. La sentencia LOOP permát tres construcciones distintas: LOOP, FOR LOOP, y WHILE LOOP, que varían en relación a las condiciones que determinan el final de la iteración. En el primer ¡caso elllazo debe incluir al menos una sentencia WAIT. Guillermo Jaquenod, 2001 20 VHDL: Lenguaje de descripción de hardware Ejemplo: iteraciones usando LOOP Generador de paridad: LOOP de rango abierto -- cuento la cantidad de unos en una palabra var x proc 18 (A 18 BIT_VECTOR (2 DOMO 0); 4 :07T INTRGER RANGE 0 70 2); END ENTITY pros; RE maxpla Or proc 18 A ER ENTITY generador_paridad impar 15 PORT ( entra: IN BIT_VECTOR; y-- vector de "rango abier: paridad: QU! BIT); Sólo se dico que ar END ENTITY generador_paridad impar; LO VECTOR sl al ARCHITECTURE usoloop OF generador_paridad_impar 1S BEGIN xor_loop: PROCESS (entra) 15 VARIABLE tempo: BIT; BEGIN tempo := "01; -- se inicializa en “1” para paridad par FOR i IN encra'RANGE LOOP tempo po XOR entra(i); END LOOP; paridad po; END PROCESS xor_loop; END ARCHITECTURE 3soloop; Ejemplo: AND(N) con parametros y LOOP Ejemplo: suma(N) con parametros y LOOP ENTITY and parametrizada 18 (entradas Eradas'LENGTH-1 DOMO 0 1009 meradas(£) = '0% THEN tempo <= 0; END 3F. salida <- tempo AFTER retardo EXD PROCESS proc 1eee.otd logic 1164.27 : INTBOBR== 4); -- por defecto: 4 bite “STD_UOGIC_ VECTOR (num bits DOHNTO 1 STDzLOGIC-VECTOR (numcbies pOmNTO 1 Sia LD ALE ione VECTOR (nm ESE BORO 2) eo ria Sunpaca: RE ripple OP sumpara 15 CABLE valm 2 STD LOGIC VECTOR (num báte DOMNTO 1); CABLE carry : STDLLOGI07 Controles de LOOP: NEXT y EXIT + Para las estructuras LOOP existen dos sentencias capaces de alterar la teración: NEXT y EXIT, estas sentencias se comportan como las sentencias CONTINUE y BREAK del C, y sólo son soportadas por algunas las herramientas de síntesis. + Tanto para NEXT como para EXIT hay dos posibles modos, absoluto y condicional: - NEXT y NEXT WHEN <condición> - EXIT y EXIT WHEN <condición> + Por ejemplo, para sumar los términos positivos de un vector: mur muros WEE dxta(d) <= 0) e a Alcance de la variable de iteración en un FOR En una sentencia + Sólo el valor de la <variable de Heracion> puede ser usado en las asignaciones, siendo inválido cualquier intento de cambiar este valor + Además, dentro del LOOP esta variable local deshabiita cualquier otra posbble variable de igual nombre —— acá k sigue valiendo 7 y m vale 15 Guillermo Jaquenod, 2001 21 VHDL: Lenguaje de descripción de hardware Asignaciones combinatorias incompletas: inferencia de elementos de memoria Bases de VHDL Inferencia de elementos de memoria (voluntaria e involuntaria) valor, ésta toma por default un valor estático (GND o VCC). A especificarse el comportamiento para TODOS los casos, sin olvidar del tipo STD_LOGIC tiene 9 valores posibles. + Como alternativa, el uso de cláusulas de tipo OTHERS permite a Inferencia de latches dentro/fuera de procesos Ejemplos: latches ENTITY latehconeu 18 PORT(a,b:2N BIT; C:0UT BIT)y SE a bacmeras coco ee heces zo A << b when am us pasa. END ARCHITECTURE concu el valor previo so conserva > so croa un laten ENTITY mi _latch 18 PORT (datos enable:IN BIT) q:0UT BET); END ENTITY mi_latohy - ElIF notiono ELSE AncurmecruRs a OP mi_tarch 15 | No está ospoolicado quí hacer si onablo= 0" BEGIN - orlo que al valor provio se consema PROCESS (enable, data) -> 50 crea unan : datos rt “* Osa ssetrissgo de mar LATCHES al RETA Fuente: ALTERA MAX: pla HELP. Uso de señales y de variables Variables en procesos Combinatorios 208! seee; deseo este leee.std logic 1164-ALt7 alrcuito... pero ab var 15 funciona desea7772 Si val es una señal...cuando se actualiza? Ri al fin del proceso Aaa ge do Como logro que la AMEN 1 => q e= 417 actualización sea MN inmediata? EA Rs usando una VARIABLE uno square 2001 Fuente: ALTERA LIBRRY deeey USE 1eee.std Logic 1164.ALLy TE cave PORTIAO, AL, q our END ENDicY emp ve ArcurrecruRe 13g1c OP cub var 18 END ARCHITECTURE logic; deseo este elrculto.. pero. funciona desea?722 ahora se ha logrado que val se actualice en el momento en quees le asignado un valor, pero....funciona???- Fuente: ALTERA Guillermo Jaquenod, 2001 22 VHDL: Lenguaje de descripción de hardware Inferencia de latches en IFs anidados Flipflop con SET/RESET asíncrono y ENABLE LIBRY deee; USE eee ENTITY Af wmmg de Sólo esto ¡Fino ELSE port (sel: IN std logic vector (3 Domo 0); | Ssal3)=1 los demas y: our ard_logiz); o dicon qué hacer END ENTITY df erngr cuando salí?) 0sal(1)o sol) valo 0->s0crea ARCHITECTURE behavior OP 4£ wmng 15 an aten Process (sel) ST 10 sel) Fuente: ALTERA LIBRARY deco; USE deee.std Logic 1164-ALLy ENTITE E cl ema 13 Por A, clk clm, ena : IN STD_ LOGO; ql BuPPER StD.1OS10); END ENTITY Éf_c2 ema, uno square 2001 Evente: ALTEA Errores de inferencia de flipflops Inferencia de registros: cuántos flipflops? Lana de a ad iia ProcESS(elr, cue) ELSE rising coa me Ae IOO ml 0 a, ED ARRE TEETORE logic, 3 ENTIDY regl 15 PORT (8,clk: in BIT; a: out BIZ); END ENTITY regl; ARCHITECTURE regl OF regl 1 SIGNAL a, b: BIT; BEGIN PROCESS (clk) BEGIN IF rising_edge(clk) THEN ad; b <= aj q <= b; END IF; uno square 2001 Fuente: ALTERA uno queno 2001 Evento: ALTERA Inferencia de registros: cuántos flipflops? Inferencia de registros: cuántos flipflops? ENTIDY regl 15 PORT (d,clk: in BIT; a: out BIT; END ENTITY regl; ARCHITECTURE regl OF regl 15 SIGNAL a, b : BIT; EGIA, PROCESS (e1k) BEGIN IF rising_edge (clk) THBN a <= 3; END ARCHITECTURE reg, uno square 2001 Fuente: ALTERA En >? PORT (3,C2ic:1N 817, 1 Ou Bm; END ENTITY regi; ARCHITECTURE regl OF regl 15 BEGIN PROCESS (ek) VARIABLE a, b : BIT; BEGIN IF rising_edge (clk) THEN a= a; q <= b; END 1F; END PROCESS; END ARCHITECTURE regi; uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 25 VHDL: Lenguaje de descripción de hardware Inferencia de registros: cuántos flipflops? Inferencia de registros: cuántos flipflops? ENTIDY rel 15 PORT (3,clk:IN B17, q:0UL BIT); END ENTITY regl; ARCHITECTURE regl OF regl 15 BEGIN. PROCESS [e1k) VARIABLE a, b BEGIN : 817; sing_edge (clk) THEN a; “ase cups ena, ya ent, en foma ¡Secuencia y sólo as copíado en “9 recién alfin del PROCESS. Fuente: ALTERA ENTIDY regl 15 : q:0UL BIT); END ENTITY regl; SIGNAL a,b:BIT; BEGIN PROCESS (clk) BEGIN ? ORT (8, el s1n Br, ARCHITECTURE regl OF regl 1 IF rising_edge(clk) Fuente: ALTERA Inferencia de registros: cuántos flipflops? Inferencia de registros: cuántos flipflops? ENTIDY regl 15 PORT (8, clk: IN BIT; q:QU BIT); END ENTITY reg; ARCHITECTURE regl OF regl 1 SIGNAL a,b:BIT; BEGIN, Process (eik) BEGIN IF rising_edge(clk) a cd; b <= aj END IF; THEN END ARCHITECTURE reg; Fuente: ALTERA Process (rela3) PORT (seloj:1M STD_LOOIC; s:0Ur STD, 10010) da pomo 0) Fuente: ALTERA Inferencia de registros: cuántos flipflops? Ejemplos: contador con ENABLE (reLoj:TN STD, LOC; s:00T STD_10010) Process (elas) VARIABLE Cs STD_LOSIS_ VECTOR (1 DOMNTO 0) ACRITRCTINE, ESPE. ESRE 18. BEGEN, Fuente: ALTERA sa UIHELO Fuente: ALTERA MAX Guillermo Jaquenod, 2001 26 VHDL: Lenguaje de descripción de hardware Ejemplos: contador con SLOAD Ejemplos: contador con SCLR A 10% TEN ent 2d, IE AITANA ELO. 1 clear | E : INTBGER RANGE O 70 255 IN EventeALTERA MAX: pa HELP. Ejemplos: contador UpDown Síntesis altemativas del contador UpDown Fuente: ALTERA MAX: pla HELP. Ejemplos: contador con UpDown y LOAD Ejemplos: contador con SCLR y UpDown 1; ELSE sentido :=-1; END 1, - ent + sentido ; END IP, EventeALTERA MAX: pa HELP. Fuente: ALTERA MAX: pla HELP. Guillerm: o Jaquenod, 2001 27 VHDL: Lenguaje de descripción de hardware Asignaciones a arreglos: uso de aggregates + Siseostá trabajando con vectores de muchosbts, o do largo paramotrzabie, pueda asignarse un mismo var 210008 ls olementos do un vector usando (olhers > <valor>) + Do igual modo, luego da habor dofinido al valor de ceros usarse olhers para completar los restantes: mentos de un vector, pueda A (arar, a mo 1, OTE => 00%)7 + Donde ias asgnacones no necosariamenta deben sor conslans: PST aa + Asicomo a dlamortos de un ray pueden Saro asignados olamentos de atro array, las valores do todo un array pueden ser asignadas a ato array de ¡qual mansión on una. única asignación TYPE mibble 15 ARRAY (0 70 3) OP BIx VARIABLE a,b + míbblez El valor de todo el array! copiado en todo alarray a Arreglos multidimensionales. El tipo STRING Un array puede ser multidimensional, tal como: Ens Go e | + En un amay 2D los datos son almacenados fila por fla. Como en C, el primer índice es el que cambia más lento. + La inicialización de un array se hace como un vector unidimensional de objetos (un “aggregate”), donde estos son a su vez vectores (también aggregates) de menor dimensionalidad. CONSTANT dat2dwword_2d 2= ((7,4,5),(1,2,2),(2,2,2),(8,8,9))5| +_Eltipo STRINGes un array de caracteres predefinido como: TYPE STRING IS ARRAY (POSITIVE RANGE <>) OF CHARACTER; Concatenado de arreglos (operador “8”) Dos arrays, o un array y un elemento aislado del mismo tipo que los elementos del array pueden ser concatenados usando el operador "8" (en cuyo caso el Objeto al que se asigna el resultado debe tener el largo correcto!) Es posible agregar un carácter a un objeto tipo STRING o unir dos STRINGS De igual modo, es posible concatenar os vectores BIT_ VECTOR. dos vectores STD_LOGIC_ VECTOR un vector BIT_VECTOR y un cbjato tpo BIT un vector STD_LOGIO_ VECTOR y un objot tpo STD_LOGIO. os bjetos tpo BIT os cbjetostpo STD_LOGIC Existen limitaciones al concatenado de dos objetos tipo STD_LOGIC/BIT, por ¡cuanto el rango (creciente o decreciente) del vector formado es ambiguo. Por ejemplo, dados tres objetos a,,c de tipo STD_LOGIC: S <= '1* WHEN a8b8c = "110" ELSE 0% El programa Synpliy da Error: Expression has ambiguious type Concatenado de arrays y subarrays Para sumar dos vectores de 8 bis y no perder el Cary de salida: insignes a Ss > moerrr sunador 18 por (cin y mu omo some | insano E a 1 mer e eds a RCNITICTIRE uso_concat OP sunador 28 nz a sones SD loa uacioR le noo 0) | Co BEGIN — 9! A Ejemplo con arrays, subarrays, concatenado, others, generics, overload de suma, ..,etc. Ports tipo array, de rango indefinido A | mo (enlaces cia 1 ma toros - La amo 2o0xe COR ha. 20RO 0) o amos OIT Lone von incio. 200 0): 0 outs OU STD 10010) SIAM murtap : STD_LOSIS VECTOR (ancho DOmErO 0) prom PROCESS (reloj,nreset) Be0m Da me e (amare 100) musIE rising edge (reloj) Tam momo er step, (encho-1 DOMO 0) y cos cr mea (aneño) + En STANDARD.VHD el tipo BIT_VECTOR está definido como ty; BIT_VECTOR ¡s array (NATURAL range <>) of BIT;, sin rango definido, + Deigual modo se pueden definir entidades con ports de rango indefinido, cuyo rango se define al instanciarias como componentes de una jerarquía superior Por “Sál se dice que anta es BT VECTOR, sn Indicar su rango! tempo 3=%0 Guillermo Jaquenod, 2001 30 VHDL: Lenguaje de descripción de hardware La sentencia GENERATE Ejemplo de GENERATE: sumador + “Una sentencia GENERATE provee un mecanismo para la elaboración condicional o iterativa de una porción de una descripción”. Puede ser usada de dos modos distintos: —erativa label: FOR [decz vaciones. ...; BEGIN END GENSRATS; <índice> IN <rango> GENSRATE - Condicional [decz label: IF <expresión hooleana> END GENSRATS; VECTOR(A dounto 1) sum: OUT BIT_VECTOR(A downto 1)) or sun Acme END usogenerate, Diferencias entre FOR..GENERATE y LOOP ASSERT y REPORT LOOP es una sentencia secuencial, válida sólo dentro de procesos. A los fines de síntesis, LOOP sólo sim pi describir algorítmicamente una secuencia de operaciones, que luego son minimizadas por el ¡compilador al ser trasladadas a hardware. Al sólo poder ser usada dentro de un proceso, no es posible instanciar ¡componentes usando una sentencia LOOP. FOR..GENERATE es un modo eficiente de especificar múltiples sentencias concurrentes, en número parametrizable, incluyendo sentencias de instanciación de componentes, con sus correspondientes PORT MAP y GENERIC MAP. + Las sentencias ASSERT/REPORT son de utilidad para el chequeo de errores y el debug. Su sintaxis es: [assser <condición booleana>] REPORT <mensaje> SEVERITY <nivel de gravedad>; + Donde los posibles niveles de gravedad son definidos por enumeración en el package STANDARD, de la forma: E rm 15 (m WARNING, ERROR FAILURE! Fuente: DUECK] + Entareasde síntesis, ASSERT puede emplearse para chequear que un determinado objeto tenga un valor adecuado (junto a RANGE. + En una simulación, ASSERT puede ser usada para definir TestPoints ¡que ante una dada condición generen un mensaje (SEVERITY NOTE) o aborten la simulación (SEVERITY ERROR) + REPORTEs equivalente a ASSERT FALSE. Ejemplo: test de salidas usando ASSERT La sentencia NULL roto, violacion voltea) ET 2032) seo rola E o e retar | ts + En VHDL existe la sentencia NULL para ARCHITECTURE mullex OF uso NULL 18 indicar que "nose hace — | BscIm nada", y sine para ejemplo: PROCESS (a) BEGIN realizar una especificación más completa CASE (a) 18 + Porejemplo, para indicar aan 29007 ¿que una de las Seo atemativas de un CASE Waz Bro1" no debe hacerse nada. 521 + Es como la sentencia 53 1 WHEN OTHERS => NULL; END CASI END PROCESS ejemplo; END ARCHITECTURE nullex; vacía (1) del C Guillermo Jaquenod, 2001 31 VHDL: Lenguaje de descripción de hardware Las instrucciones de SHIFT Las instrucciones de SHIFT lógico VHDL93dofino 5 cporandos do shit, lamados SLL, SAL, SLA, SRA, ROL, ROR, dendo dl oparando izquierdo dot sor un array do BIT o BOOLEAN, yal dorecho un INTEGER. uo indica la cantidad do dosplazamientos a realizar. Notoso que los desplazamientos so rofirana izquierda O derecha y o al valordal Índco de rango, porlo quo no importa sal lamanto a dosplazar es de rango (o: TO y) ho: DOWNTO yy) 'VHDL93 define 2 operandos de shift lógico llamados SLL y SAL, que usan dos operandos: —ol oporando izquierdo os un array de BITo BOOLEAN cuyo valor sorá desplazado ol oporando deracno os un INTEGER ue indica la cantidad de desplazamientos a realizar Siso indica un valor negatwo e asumo un dosplazamianto on l santido opuesto Enel SHIFT LOGICO se ingresa un '0' on valor FALSE enel sitio que queda vacante sii Ls 0OrO1O" SLI 0001000" SUL A Las instrucciones de SHIFT aritmético Las instrucciones de rotación 'VHDL93 define 2 operandos de shift aritmético llamados SLA y SRA, que usan dos operandos — ol operando izquierdo os un array de BITo BOOLEAN cuyo valor sorá desplazado 1 oporando doracho as un INTEGER ue indica la cantad de. desplazamientos a realizar Siso indica un valor negatwo so asumo un dosplazamianto on ol santido opuesto Enel SHIFT ARITMÉTICO se conserva el valor del sitio que queda vacante (LEFT en SRA y 'RIGHT en SLA) "B"1o0wi010" SRAS = B"rrro0ri" "00001000" SRA=1 = 8"00010000". 'VHDL93 define 2 operandos de rotación llamados ROL y ROR, que usan dos operando — ol operando izquierdo os un array de BITo BOOLEAN cuyo valor sorá desplazado —ol oporando derecho os un INTEGER jo indica la cantidad de rotaciones a realzar. Si so indica un valor nogatwo se asumo un desplazamiento enel sentido apuesto Enlas rotaciones el valor que sale por un extremo es cargado en el sito que queda vacante f00r1010" ROL 3 =B"1101o100" "00001001" ROL == 810000100" "B"10011010" ROR 3 =8"w1o100w". 00 100Y Maneras de definir buffers TriState Buses TriState: modelo de un 74374 LIBRARY doce; USE deee.std logic 1164-ALLy OP eri state butfa 18 ELSE *z — Laorma de crear un buffer TRISTATE es definir una señal to STD_LOGIC y asignarle elvalor 2, En el MAX+plus ll hay un modo preferencial, definiendo primero los. casos en que vale Z y bz =ARY dese; USE deee.ard Logic 1164.AL05 ata 1ogic vector (7 mono 17 E sra logic dl EXD ENTITY mi7427 RE bra 0 má74374 Sra logic vector (7 DOMINIO 0 Eros: PROCESS (ele Fomarápia de Clk=r11 THEN a S= datos; end 4fy | asgnaralmemovator Process registros, ndo elvecor EXD ARCHITECTURE Proy uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 32 VHDL: Lenguaje de descripción de hardware Qué incluyen std_logic_signed y .._unsigned? Tipos SIGNED y UNSIGNED Usan los tipos y funciones definidos en std logic_arih.al, y agregan nuevas unciones de Overload para operaciones aritméticas sobre objetos de tipo 'STD_LOGIC_VECTOR: — Funciones do Ovaroad de + yde -(5funcionos an cada caso) para oporandos 'STD_LOGIC_ VECTOR, STD_LOGIC, e INTEGER, con retorno 'STD_LOGIC_ VECTOR = Funciones de Overioad de + y -unario y de ABS (1 funciones en cada caso) para parando STD, LOGIC_ VECTOR, con retomo STD_LOGIC, VECTOR = Funcion de Overioad de * (1 funcion) para oporandos STD, LOGIC, VECTOR, con retomo STD_ LOGIC_ VECTOR. = Funciones do Ovaroad de <, >, <=,>=,=, /=, (2 luncionos an cada caso) para úporandos STD, LOGIC_ VECTOR o INTEGER, con retomo BOOLEAN — funcion CONV INTEGER (STD_ LOGIC. VECTOR) return INTEGER; ¡AXPLUSAIVHDLO3UEEEvigned.vhd y signedb.vhd, asícamo unsigned. vhd y unsignb.uhd 1 uno square 2001 Fuente: ALTERA + Los tipos SIGNED y UNSIGNED están definidos dentro de la IEEE library, en el package STD_LOGIC_ARITH como array (NATURAL range <>) of STO_LOGIC - Untipo UNSIGNED representa un valor numérico que sólo puede ser positivo o cer. En el MAX+plus Ilse codílica con un número binario puro. Porejemplo: — mmm SIGNED!(0110') representa +6 — Untipo SIGNED representa un valor numérico que puede ser positivo, cero o negativo. En el MAX+PLUS Il se codifica en complemento a dos, donde el MSB está asociado al signo Porejemplo: — mmmm|_SIGNED("1010-) representa -6. Conversión de tipos aritméticos Ejemplo de conversión aritmética + En el package STD_LOGIC_ 1164 se incluyen funciones para convertir valores de los tipos BIT y BIT_VECTOR a STD_LOGIC y STD_LOGIC_VECTOR, + En el package STD_ LOGIC_ARITH se agregan funciones para convertir valores a los tipos SIGNED, UNSIGNED e INTEGER, De cada función hay cuatro versiones, seleccionadas según el tipo de sus operandos — CONV INTEGER: conveno un INTEGER, UNSIGNED, SIGNED, o STD_ULOGIC nun INTEGER, — CONV UNSIGNED. convierto un INTEGER, UNSIGNED, SIGNED, o STD, ULOGIC ¡on un UNSIGNED. — CONV SIGNED. convino un INTEGER, UNSIGNED, SIGNED, o STD_ULOGIC On un SIGNED, — CONV.STD_LOGK_ VECTOR: convino un INTEGER, UNSIGNED, SIGNED, o 'STD_LOGIC on un STD_LOGIC_ VECTOR. + Para CONV_STD_LOGIC_VECTOR, CONV_UNSIGNED, y CONV_SIGNED, es necesario además del dato a convertir el lamaño del resultado. MAX+PLUS ll agrega ceros en UNSIGNEDS, y extiende el signo en SIGNEDS «Ejemplo: un sumador con entradas UNSIGNED y salida INTEGER LIBRARY dese; USE ieee.std logic 1164.11; USE ieee.std logic arith.all; ENTITY adder IS PORT ( Opl,0p2:IN UNSIGNED(7 DOMITO 0); result:OUT INTEG8R) 7 END adder; ARCHITECTURE maxpld OF adder 15 BEGIN result END maxpla; CONV_INTEGBR(Op1 + 0p2); uno square 2001 Fuente: ALTERA _LOGIC_ARITH, _SIGNED y _UNSIGNED Agregado de bits en una conversión + La ¡EEE ibrary tiene dos packages adicionales para faciitar operaciones aritméticas sobre objetos to STD_LOGIC_VECTOR los packages STO_LOGIC_UNSIGNEDy STD_LOGIC_SIGNED. + Según cuál de estos packages haya sido incluído los objetos serán convertidos a valores sino con signo + Sise requiere de ambos tipos de objetos deben usarse funciones declaradas en el package STD_LOGIC_ARITH que realizan la conversión USE Less, std Logío 1164.ALL7 a Logio arten.aLL ARCHITECTURE míxta OP ejemplo 18 9 <u CONV UNSIGNED(a) + CONV_UNSIGMED(») 7 <a <u CONV_SIONED(a) + CONV_SIOMED(») y - sín sígno - con signo + Es importante tener qué sucede cuando una operación aritmética devuelve un objeto tipo STD_LOGIC_VECTOR.Por ejemplo si se consideran los casos de overload de suma siguientes (tomados de std_logic_arith) “uncion "+" (L UNSIGNED; A SIGNED) return STD_LOGIC_ VECTOR. “uncton +" (SIGNED; A UNSIGNED) retum STD, LOGIC. VECTOR. + Y se suman dos operandos, uno SIGNED y otro UNSIGNED: SISNAL 5: STD_LOGIC_ VECTOR (4DOMMIOO) casot <=CONY_ UNSIGNED (a) + CONV. UNSIGNED (pJ:0= + Tanto caso1 como caso2 serán STD_LOGIC_VECTOR (4 DOWNTO 0), pero caso3 y casod serán STD_LOGIC_VECTOR (5 DOWNTO 0), porque para poder resolver estos casos (SIGNED mezclado con UNSIGNED) no hay tra solución que realizar la suma en modo SIGNED, y por elo extender ambos operandos en 1 bil Fuente: SIOHOLA Guillermo Jaquenod, 2001 35 VHDL: Lenguaje de descripción de hardware Ejemplo de Overload de un operador aritmético + Los operadores están definidos sólo para ciertos tipos de operandos (por ejemplo, la suma está definida para tipos numéricos) + Sise desea ampliar el significado del operador para otros tipos se debe definir una función “+” para esos tipos: = CONV_INTESER (L) + CONV_INTRGER (2) CONY_STD_10GIC_VECTOR (Fesult, lengeh) Una ao vezes + CON INTEGER (st oo vecto) RETUAN (ner) pra pasar de STD_LOGIO. VECTOR e UNSIGNED. Definida en STD_LOGIC_ARITH + CON_STD. LOGIO_ VECTOR (ge nege) RETURN (sale ec) paraa fncion puesta. Denda en STD_LOGIC_ARITA MAXDAUM (neger segs) RETURN (reg) Delia por el dador Uso eficiente de operadores aritméticos + Los operadores ariméticos de suma y resta (4) y () permiten un alto nivel de abstracción en funciones aritméticas, pues el diseñador sólo describe qué es lo que desea (behavion y el complador resuelve cómo hacerio (estructura) b som sum <= +1; [GONBLADOR> . Sin bien elnivel de abstracción mayor ibera” al diseñador de pensar en detalles de arquitectura, éste no debe perder la idea que cada vez que pone un operador "a" o *” está instanciando un sumador en silicio, y que el grado de optimización o minimización depende fuertemente del estilo en que se describa el diseño. Y no engañarse: para el mismo programa fuente en VHD, distintas herramientas EDA ofrecen muy diferentes niveles de optimización Uso eficiente de operadores aritméticos Uso eficiente de operadores aritméticos oa e Ro momria.b,2,0: mm ma togie vector(1s noO 0) += sum moria ari ata logie vector nom 0) PS d:18 sta logie vector(15 DONNTO 0) :01 xo oro. >” AE : E * ara ma logo nectortas memo 0) input - A . renarior or sas po a nom Ana daa: ea Aoi tartas nom 0) ARCEITECTURE behavior OF add ex1 18 A 'BEaIM PROCESS(a,b,c,d, input) = 1 sumador rocrasta,2,0,0, tp 1 multplexer: AN 2» lo mo > Iplexer E aio cr 2muhipiexer: o a] 48 Los A op ar E món o Le peo mer A e aces ado Boga de i6Lés E A A aora Fuente ALTERA eusemo oquenos 20 Event ALTERA Uso aritmético de las familias FLEX, ACEX y APEX: los “modos de operación” NORMAL ARITM LE HE! 7 un COUNTER COUNTER |cioLEAR: + Los modos de operación de los elementos lógicos, en las familas FLEX, ACEX y APEX, redefinen las conexiones de los recursos internos de cada macrocelda, de modo de hacer más eficiente la realización de ciertas aplicaciones típicas. uno square 2001 Fuente: ALTERA El “modo de operación” NORMAL en FLEX/ACEX/APEX Carr Cascada In Data1 Dataz Data Datas Casdado OM + En sto modo cada LE puedo rosolvarfuncionas do Fan-ina, registradas. no. + Aldisponer una entrada atemativa a Data 3 desde la cadana de Carry (señal Camy. In) io para tominar una suma cuando os nocosario tener acceso ala señal Coutdola tapa más signfcatwa para su uso porotos crcutos. + Pam uso plano do las cadenas de Cascada y do funcionas adicionales como register packing + El uso de register packing, o do filps con anabo so haco a costa do pordorfanán (Data 40Dak 1, respectivamente) + Siuna función se requiero a la vez en forma combinatora y registrada la cola so aprovecha al máxmo (recordar para el ejemplo de comput paralelo de CRO-16) uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 36 VHDL: Lenguaje de descripción de hardware El “modo de operación” ARITMÉTICO en FLEX/ACEX/APEX nen AE MODO On Cascade ln Canyin Datai Data2 CamyOut — Cáscado Out + Esto modo sólo o emplea silascadenas de Cany están habitadas. En d cada LE puede resower dos funciones simultanoas de Fan-In , donde una de las entradas debe venir de la cadena de Cany, y una de las funcionas do salda dobo salr acia la cadona do Carry. + E rosultado do la oporación (suma o rosta) puedo sali on forma combinatoria, o sor rogistrado (ACUMULADOR) + En unsumador do h'bits con Camy do ontada y do salda so hace nacosaro un LE adiconalen modo artmétco para ingresar el Cary. In alacadena de camy yotro LE on modo normal para sacar Cary. Ou al rsto dol creuito + La cadena de Cany impone restricciones de fting uno square 2001 Fuente: ALTERA El “modo de operación” U/D Counter en FLEX/ACEX/APEX ¡Cascada ln 1F string coge (ou) me + Enasto modo cada LE puedo rosolveruna otapa de bi do un contador con controles da LOAD sincrónico, ENABLE y Up/Down. + Silas prioridados so respotan y el uso de Cany.Chains ostá habitado, ol MAX+ptusll “emplea automáticamente esto modo de operación + Elusode la cadona de Cany impone restrciones de fting + Es importante notar que las prioridades ortro ENABLE yLOAD pueden sor conmutadas (analizar ol ciuto para vor cómo so haca), poro asu voz tenon prioridad sobro UpiDown, Sila ospacifcación de VHDL no respeta osta proridad puedan logar a sor necesarios dos LEs por elapa uno square 2001 Fuente: ALTERA El “modo de operación” CLEARABLE COUNTER en FLEX/ACEX/APEX Uso óptimo de los “modos” COUNTER Cany hn 11 rising cage (cu) tem Enable on ear Load Canyost Lom + Eneste modo cada LE puede resoler una etapa de bi de un contador con contrles do LOAD y CLEAR encrónico, y ENABLE. + Silas prioridados se respatan y el uso de Cany.Chains está habitado, ol MAX+plusll “emplea automáticamente esto modo de operación + Elusode la cadona de Cany impone restrcciones de fting + CLEAR siempre tenopriordad sobre LOAD, en tato que ENABLE puedo tenerla máxima. la mínima porkdad. Sila ospaciicación de VHDL no raspota ost prioridad puedan logar sor necesarios dos LEs por etapa uno square 2001 Fuente: ALTERA Uso óptimo de los “modos” COUNTER rama deco; men Lo .etd logic 1160.30 Commnio (Eu alos. aorearr + 3) aL DR tai mar 0 70 e vale A Saar count signal ¡ENTRGER RADOE 0 TO Count valas, PROCESS (clk, clon) peor q Delon 00 mur count signal L ELsir rising se (e) Teen "Tama count cignsl <- data, a A Uso óptimo de los “modos” COUNTER Process (clk, ler) aroma Cae clon — 101 TEEN cow aten < 0 k Fuste Ca 010 TEEN eson ignal <- cont cional e Process (clk, clon) peor vemo LE en modo counter Y ne outpu e counters, Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware Diseño de máquinas de estado con VHDL Las máquinas de estado finito (FSM) son herramientas FUNDAMENTALES de cualquier diseño digital modero. Para su diseño conviene seguir ciertas reglas generales - Definilos estados usando un nuevo tipo, creado por enumeración: TYPE tipo_de_estado IS (dle, tap, 1ap2, 1ap3, taps ) — Definir dos objetos que almacenan los estado actual y futuro como señales de ese tipo predefinido: SIGNAL fiter: tipo_de estado; - Crearla tabla de transición de estados aciada por el clock: + Usando un CASE activado por el estado actual, y dentro de él un IF- THEN que define el estado futuro en función de las entradas — Para definir el comportamiento de las salidas: + Usar asignaciones Conditional y/o Selected + O un segundo CASE (P.Ej: para máquinas de MOORE) Ejemplos: FSMs Fuente: ALTERA MAX: pla HELP. Diseño de máquinas de estado con VHDL usando señales ENTITY semaforo 18 TORT(CIK, fotacalda:18 BT; sajo, amarillo verdo:00r BT) o 0 e Otra forma de definir FSMs, usando una variable registrada next_state TA LO LLO (00 00 OPI DN GI EMT 009507 FSMs en VHDL/MAX+plus Il: forzando el valor de los estados con enum_encoding FSMs en VHDL/MAX+plus Il: forzando el valor de los estados con enum_encoding ENTITE semaforo 18 DONT (clk, fotocida:1M BIT, sajo,amarillo,verde:0m BrT) "Tio meo eenaforo 18 Ístop, prepare, pare, alerta, moctumno) ERA ATENCIÓN: TE atado «> preparo, | ENUM_ENCODING Ma prepare 0 Senado Co pases es unatatuto edo nas Dita | inemretadoporel z MAXplus ll VD! o [Eee ESS EDA suolo definir O Para conolaral ¡rocoso de sintesis! a a Ens Guillermo Jaquenod, 2001 vente ALTERA MAX: pla HELP. 40 VHDL: Lenguaje de descripción de hardware Máquinas de estado One-HOT” y Binarias » Para la codificación de una máquina de 'n' estados se requieren al menos CEIL(log2(n)) elementos de memoria. - Sise emplean CEIL(log2(n)) elementos de memoria, se dice que su codificacion es “binaria”. Si se emplean 'n' elementos de memoria (uno por estado), se dice que su codificacion es “One-HOT”. = Una solución que emplee más fliplops, sin embargo, puede ser más eficiente cuando se usan dispositivos FLEX10K. PORQUÉ?7272 + Entacodficacón binaria oInúmero e fpleps es minimo, peo a sgca 9) | comia us oxcta cada fio 0 una funcion complgia do TODOS /os plop usados enla mácuina, y por eo de gran fariny con muchos tóminos + Entacodiicacian One:HOT a gica combinatra qu procedo caca olop es so función los lps ascvacos os estados antenores Maquinas de estado: “One-HOT” y Binarias Caso: recuperador de reloj: «Usando codificacion binariase requieren 4 mactoceldas, tres de elas para codificar el estado actual, y una más para úcalcularla salida rxck. Este uso de macroceldas puede bajara sólo 3 silos estaados se asignan manualmente En codificación One-Hot e requieren 9 elementos lógicos, 5 para codificar los 9 estados y uno más para la salida rxck tado e osfunción do tros varables 96,05 yunacntada poro 2 (art azulos) as función do cuatro variables: 68, e1, e2 y una entrada Descripción de maquinas de estado “One-HOT” y Binarias en VHDL ¡Cuando MAX+PLUS II detecta que un circuito representa una máquina de estados, usa por “defaut* la codificación binaria sia famila elegida es MAX (7K o 9k) y la codificacion One-HOT cuando se usa FLEX (Sk, Bk y 10K) En el caso del uso de One+Hot es usual que sólo el plop activo estéen'Y”, aunque no es necesaño que así sea (incluso. es conveniente que el estado de RESET sea codificado mediante un :0) Esta asignación por default puede ser cambiada; para ell, en MAX+PLUS Il puede definirse un”atíbuto” lamado “enum_encoding? al definir los estados, para asignar un dado valor binario a cada uno delos posibles estados (este atributo sólo es interpretado por el MAX +plus 1) Fuente: ALTERA Diseño de máquinas de estado con VHDL: Maquinas tipo Mealy y tipo Moore Bloque combinatorio —_-MEALY-- 'SALO = A(E(I:ento)) E(k+1)=EF=K(entQ,EA) Diseño de máquinas de estado con VHDL: Maquinas tipo Mealy y tipo Moore e estado | siguiente Cómputo | gaia, delas salas Las salas son función combinatoria el astado y las ontradas actualos. —Es fac do codificar on VHDL. usando un simplo CASE) —Las salidas puedon presentar más. —Las ocuacionos de las salda son do chas quo on una máquina do menor anin y más fácios de rutear MOORE y sus ecuacionosson de —Suolon raquorr más estados quo una mayor fanin máquina MEALY oquvalonto —Algo más diíclos de rutear MOORE Lassalidas son función combinatoria sólo del estado actual (pueden presentar gitenos debido al show del registro de stados o a caminos de propagación) Es lacio codificar on VHDL Evitando los glitches en las salidas de maquinas tipo Moore Compro | alos Envacs, | osito deis / + Las salidas son resultado de una función combinatoria, porlo que pueden presentar gltehes + Cómo hago para evitarlos? Guillermo Jaquenod, 2001 41 VHDL: Lenguaje de descripción de hardware Evitando los glitches en las salidas de maquinas tipo Moore * Solucion 1: Rogistra las úsaldas. Requiero mínimo. E] salas + Solucion 2: computa las salidas Tuuras junto con dl astado log combnatoria de gran fan * Solución: computalas úsaldas futuras en baso al combnatarios (menor Fa) Linked State Machines y Petri Nets P + Encualquier diseño de mediana complejidad es previsible la necesidad de modelar múliples máquinas de estado ¡que operan concurrentemente, y que interactúan entre si. Aunque M máquinas de estado con N estados cada una pueden presentar NM posibles casos, en general una máquina no necesita operar conociendo los detalles internos completos de cada una de las olras máquinas, posiblitando el modelado de LSMs (Linked State Machines) as. * Desdeel punto de vista de su interacción, los estados internos de una FSM pueden ser agrupados en clases de equivalencia, simplificado el modelado. + Sien una entidad so desert una máquina de estados, aquolos detales públicos” do osa máquina puedan sar "publicados" on forma do portsdo un nuovo tpo, dafínido an un package apropiado, Linked State Machines y Petri Nets Linked State Machines y Petri Nets + Las Redes de Petri (Petri Nets o PN) son un formalismo apto para la. descripción de Linked State Machines, pues permiten describir procesos que interactúan y se sincronizan, al modo “data flow. - Son grafos drgidos, enos que los véricos son lamados “lugares” (y están asociados al.estado de lar) y las aristas son amadas “transiciones” (y están asociadas alos posible eventos ena red). En una PN"marcadg" oxisten uno o más símbolos llamados "tokens" cuya cantidad puede ser variable) que se estacionan en Jugares, y se mueven de lugar lugar siguiendo las transiciones que se "disparan". — Una transición suelo llene asociada una condición de disparo, ciertas lechas que vienen desde lugarso de origen y ciertas flechas que van hacia lugares de destino - El disparo de esta transición requiere que en todos los lugares de origen haya al menos un token, y que la condición se cumpla. + Ejemplo que muestra dos FSM sincronizadas entr sí. + Alos fines 'públicos” útles para la sincronización, el PROCESO 2 puede modelizarse como si tuviera sólo dos estados (similar al PROCESO 1) + Se observan transiciones donde el número de tokens aumenta (C3), y otras ¡donde ese número disminuye (C3). uno square 2001 Fuente: BAKER Diseño Jerárquico FLAT Bases de VHDL + Unaarquitectura de jerarquía plana (lat) Eu compra nascras aaron) sic Herramientas para IS es a el diseño jerárquico ¡Sontecnnos | [Saeta cs amo tó 20 amo tó 20 Frans ALTEA Guillermo Jaquenod, 2001 42 VHDL: Lenguaje de descripción de hardware Invocación de Componentes: mapeo de la instancia por asociación posicional Componentes con salidas sin conectar ARCHITECTURE tolleab_arch OF tolleab 15 ul; tollv PORT MAP ( tclk, teross, tnickel, tdime, 1 tquarter, tgreen, tred, Invocación del Componente Esout, tstate); Nombre de uno square 2001 Fuente: ALTERA la Instancia | [Nombre del Componente Alusar un componente pre-existente puede no interesar el uso de ciertas salidas. Siel PORT MAP se realiza mediante asociación nominativa existen dos allemativas: — No mencionar el port no usado - Asociar ese port ala palabra reservada OPEN. PORT MAP ( + Siel PORT MAP se realiza mediante asociación posicional la única allemativa es colocar OPEN en el lugar respectivo de la ista de puertas PORT MAP(2/b, 0, Componentes con entradas sin conectar Ejemplos: un Full-Adder estilo RTL + Al usar un componente pre-existente puede no interesar el uso de ciertas entradas (por ejemplo, al usar un sumador puede que no se desee utilizar el any de entrada a la primer etapa). Para elo las alternativas son: — Sial diseñar oso componorto osa ontrada tonía un valor do"dafaui, y sil PORT MAP se realiza mediante asociacón nominstiva existan dos atomatias. úroctamonto no mencionar l portno usado, o asocia a la palatra rosonaada "OPEN. SI a asociación es posicional será necesario usar OPEN. — Sian al dsoño del compononto osa ontrada no tanía valor do dofaul, la única solución s asignarto un valor estático (0 '1) an el PORT MAP al instanciaral componento, ya sea an modo nominatwo o posicional — En VHDLB7 no osposbio asignar drectamonte O local ala quo so asigna 01” y usar osta sonal y dobo crearso una señal ¡el PORT MAP ENTITY £ull_add IS PORT( an asb,cio + 2 art; l Sut, sum + CU BE; N exo £u11_ ada; 21+ ARGHTECTURE ecuaciones Or fula_eéa 18 La, Pe. mm <= a xD xOR cin out <= (a AD E) OR la AND cin) OR (b AND cin); sao ecuaciones; Ejemplo: 4bit adder instanciando componentes Ejemplos: sumador/restador adders: FOR í IN 1 to 4 GENER adder: full ada roRT maz (a (1) ,DIST/0(1-1),0(8),0um(t))7 Fuente: DUECK] vECTORÍA downto 1) CTORÍA dommto 1)) OP aubadaa 15 ada sorría, IN BI) _0Ut, aun our 2 (4 domeo 0) LE nn A) b_complá) <= DÍA) xor sub; adder: full_ada SORT MP (a(1),b_compíi) ,cli-2),C(4),0um (19) uno square 2001 Fuente: DUECK] Guillermo Jaquenod, 2001 45 VHDL: Lenguaje de descripción de hardware Declaración recursiva de componentes Uso recursivo de componentes: ejemplo + Muchas aplicaciones pueden ser definidas en forma recursiva, donde una instancia de un objeto es definido en función de instancias más simples del mismo objeto, hasta llegar a un tope mínimo + Un ejemplo clásico es el cómputo del Factoñal de un número, que puede ser definido por una función: PUNCIION factorial (Ms IN integer) RETURN integer 15 VARIABLE temp 3 INTEGER £= 17 IP (N > 1) THEN temp 12 N * factorial (M1); RETURN tempr + Así como sucede en la función, también un componente puede definirse en loma recursiva a partir de sí mismo, y lo mismo vale, por ejemplo, para definir procedimientos recursivos en un PACKAGE + Para ello una entidad X debe declarar en su arquitectura al componente X, y crear condidonalmente (usando IF..GENERATE) una instancia de X con algún valor (usualmente un GENERIC) de menor valor. + BarelShiters, árboles de bulers, así como otros circuitos pueden ser descriptos en forma recursiva. + Por ejemplo, suponiendo que un buffer pudiera tener sólo un fanout de 2 y que se deseara un fanout de 2N=16, se hace necesario detinir un “árbol de N=4 niveles de buffers, como la figura. Gs FANOUr= HE ep Uso recursivo de componentes: ejemplo Bases de VHDL Uso de primitivas y LPMs de ALTERA Libraries ofrecidas por ALTERA MAX+plus ll: primitivas y macrofunciones + ALTERA provee en el MAX+plus Il dos grandes ibraries con macrofunciones y Piimitvas. — LIBRARY ALTERA + Contieno dos packagos: — maxplus2: declaración como Componortos de todas las primas y las megafunciones de acceso Ire propias de ALTERA — megacore: dectaracón de Componantas de mogafuncienos de accoso pago de ALTERA: los Megacores — LIBRARY LP + Contieno ol packago /pm_components, con'a dectaración de Componantos delas LPMs rosuolas por ALTERA. + Elhecho que estas braries describan diseños optimizados por ALTERA para sus distintos PLDs, permite optimizar la implementación física dentro de la PLD manteniendo la portabilidad del diseño uno square 2001 Fuente: ALTERA + Para instanciar Pimilivas o Macrofunciones (Iibrary ALTERA, package MAXPLUS2), se puede instanciar un Componente, y conectar las puertas de la función con las señales o puertas de la entidad bajo diseño, + Cuando se usan Macrofunciones TTL debe tenerse en cuenta que no es válido comenzar nombres de funciones con un número, y debe agregarse un underscore (_), que es quitado por el MAX+PLUS II durante la compilacion, Ce” can OR Y alvcrons dit : DFF PORT MAP (d=>ent, q => sal, ck => reloj, clm =>nrst, pm => nset); e als ueno Tganoa a TN Guillermo Jaquenod, 2001 46 VHDL: Lenguaje de descripción de hardware Ejemplos: uso de primitivas de MAX+plus 11 Uso de LPMs en VHDL ¡Cuando se usa el MAX+plus Il el uso de primitivas de ALTERA, definidas en c:imaxplus 2lvhdlXMalteralmaxplus2.vhd permite un control más fino sobre la arquitectura. Estas primitivas no son portables. srd_logic_1164.A1, LIBRARY altera; USE altera-mexplus2.ALLy our: OYE STD_LoS: Fuente: ALTERA MAX: pla HELP. LPM significa Library of Parameterized Modules Las LPMs describen bloques funcionales importantes, que son paramelrizados través del uso de sus PORTs y de valores asignados a sus GENERICS. Su formato ha sido consensuado por múliples fabricantes de dispositivos y de soflware de diseño, asegurando un importante grado de portablidad, Han sido einidas como estándar por la Electonies Industry Associaion (EIA), "Library al Parametized Modules”, ElA/S-103, 1993 Suuso aumenta la productividad de diseño (menor TTM:ime-lo-market) y provee consistentes resulados de síntesis Cada fabricante resuelve intemamente cada LPM de modo de sacar máximo provecho de las hablidades de sus componentes Las LPMS de Allera están declaradas en la LIBRARY lpm; en el package Ipm_components.all En VHDL su uso requiere laínea: LIBRARY Ipm; USE lpm.Ipm_components.all; uno square 2001 Fuente: ALTERA Ejemplo de uso de LPMs Ejemplos de LPMs: LPM_MUX VECTORÍS downto 0) VECTORÍS downto 0)) OP 1rchtlpa 18 Beer uno square 2001 Evento: ALTERA MAX: plo IMELP. oa ome: rosIrzvE; com prrecross mames os | PAY IpacaDR var EULER: DOSITIVE, ADM TIDES SIRIA: sn 0 brad wm - ¡em comparen LM MU permita mutpenar “que das es 20) ya sea n foma conato [acoón por Def) o regatas uno square 2001 Evento: ALTERA MAX: plo IMELP. Ejemplo de LPMs: instanciación de lpm_mux Ejemplos de LPMs: LPM_DECODE = Dancian de ZAC ss 2 apa Componente coucoraa sen ns eo 2 dal 2] foso [ Epi DECODE peris codificar números de envada avaloes éicos | — ona navizuales de salda ya a en forra Conoinatora (aoaón por Det) o En agregando reistos de peine a uno square 2001 Evento: ALTERA MAX: plo IMELP. Guillermo Jaquenod, 2001 47 VHDL: Lenguaje de descripción de hardware MAX+plus I/VHDL: diseño de megafunciones Libraries definidas por el usuario mr segrar 18 al pa a » > Ir al menu Options Elegir User Libraries Enel campo Directory Name; definirel directorio donde buscar los subdiseños de O Declaración del currar a de cagat 18 componente menor jerarquía E MO: Y ro ca moto Dos mstancas del O SE 2 on Agregarlo (ADD y luego (cada wa coupa oK) TESIS - cagar OmMRRIO 109 (CD: 12) una región de a a A io po a 5] da O IDE E 0 ac oa | | vn emo unos 201 Fuente ALTERA emo tros 201 sente: ALTERA Packages definidos por el usuario MAX+plus II: cómo definir un package Los packages tienen una extensión .VHD, al igual que cualquier módulo que defina entidades Los packages definidos por el usuario deben ser compilados antes + Lacreación y uso de funciones propias es sumamente fácil en el ambiente del MAX+plus Il de compilar diseños que usen componentes descriptos en esos — Pasta delivir una mactomegatunción propia; packages + 1. Cree la macrofunción deseada + Los packages definidos por el usuario pueden estar en el + 2. Cree un package que contenga una declaración de subdirectorio de trabajo, en cuyo caso se referencian así: PACKAGE con una declaración de ese componente LIBRARY WORK; opcional * 3. Compile ese package USE WORK.<nombre del package>.all; - Para usar una macro/megatunción propia: + 'Enotro directorio, en una USER LIBRARY * 4. Declare la library y el package + 5. Instancie los componentes en el bloque de arquitectura LIBRARY «library del usuario»; + Altemativamente, los pasos 2 y 3 pueden ser incluídos en el diseño USE «library del usuario>.<nombre del package>.all final (nivel TOP de la jerarquía) + “O “pegados” dentro del propio archivo de diseño donde son usados uno square 2001 uno square 2001 Fuente: ALTERA MAX+plus | cómo definir un package Packages definidos por el usuario + Ejemplo: creación d la función * Conlavenena a a ener a ValmenoInteiacos Eg VOL Net Reader's Settings En Liar Nano, Sino oy En Diecoy Name: Gein donde oa co paseo usos | Apretar ADD y OK FET q || ES Package debeser [ima] compilado antes de me poder ser usado Frente: ALTERA unan gunos Frente: ALTERA Guillermo Jaquenod, 2001 VHDL: Lenguaje de descripción de hardware Cómo mantener los nombres de nodos internos? Escoger Show All Node Name Synonyms en la ventana de diálogo Enter Nodes from SNF Escoger Preserve all Node Name Synonyms. en el menú Processing antes de compilar uno square 2001 Fuente: ALTERA Bases de VHDL Posibles escenarios de diseño para Síntesis + PlacegRoute + Simulación: Sólo MAX+plus II EDA => MAX+plus II => EDA MAX+plus Il => EDA Primer escenario: sólo MAX+plus ll Límitaciones de diseño en VHDL/MAX+plus II Tarnova] MAX+plus Il Todo el proceso de diseño se realiza dentro del ambiente MAXaplus Il Sóloes posible la simulación usando formas de onda E Y poes posible simular el diseño ALTERA junto con el de otros dispositivos Está atado alas limitaciones del compilador VHDL del MAX:+plus 11 Los archivos en juego en este tipo de escenario de diseño son de extensión vhd (código fuente en VHDL), acf (asignaciones), pol/sof (código de programación), snf(netist para simulación), sc? (estimulos para simulación) ES EL CASO DE DISEÑOS SIMPLES [umrmo tquenos 2001 Fuente ALTERA MAX+plus Il VHDL sólo soporta construcciones orientadas a la síntesis, y ciertas construcciones son aceptadas sólo parcialmente: —Espostlo declarar varias ENTIT Yon un unico archivo. «Elnombro del archivo debo coincidir con la antidad de jorarquí topo, que no úacosariamento debo sar'a prímora de las definidas an aso archivo. «Las Libraries y Packages dotan sor declaradas para cada entidad —Espostla ofi varias arquicturas para una ontidad, poro sólo la última os usada -Sólo pueden dofinitso GENERICSon una entidad sio defina una ontidad por archivo. —Los gonéricos sólo son usados para transportar parámatros, y no as posible pasarso información do parámetros entro otdados descriptas an al mismo archivo. —Constantos: sólo puedon sordo tpo INTEGER, onumoradas, STD, LOGIC_ VECTOR o. STRING, —Arrays do Soñalos y variblos: sólo so acoptan arrays con olementos que sean arrays. "unidmonsionalos 0 bs simples —Mukiplicación y división solo cuando ol operador de la dorecha os potoncia do dos -El uso de GENERATE debo tonorlímitos stáicos locales unn paa EIEADIERA Límites de diseños en VHDL con MAX+plus ll Flujo de diseño usando sólo MAX+plus ll Ciertas otras construcciones NO son soportadas en MAX+plus II: - funciones de resolución - dectaración de señales globales en packages - bloques de configuración - señales físicas, objetos tipo file o de punto lotante, ports tipo LINKAGE - objetos tipo access, y alocación o dealocación de objetos. — dectaración de grupos (objetos con el mismo atributo, definidos en VHDL'93) - sentencias DISCONNECT o EXIT - operadores de shit (definidos en VHDL93) - record aggregates. (Q Becomendado:Pímero compas y simular an medo Ancora. y ecióntuego enmodo Probar atras, - retardos AFTER o TRANSPORT 1 yreción uego. Probar tempo ogle Opine - identificadores extendidos - sentencias RETURN dentro de PROCEDURES o LOOPS uno square 2001 Esente: ALTERA uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 51 VHDL: Lenguaje de descripción de hardware Editor de textos VHDL del MAX+plus ll MAX+plus Il: Plantillas (Templates) de VHDL AAA PUT Leds 1 SL oe ear ROCES Coord hat + File -> Now-> Text Editor + File-> Save As + Filename = nombre de la entidad con extensión .vhd + File -> Project > Set Project To Current File uno square 2001 Fuente: ALTERA Enel editor de texto del MAX+plus Il es posible el uso de plantilas con la estructura sintáctica de cualquier construcción VHDL; esta facilidad está activa sólo mientras se está editando un archivo. = Posivionar el cursor, en el archivo en adición, an al lugar donde se desaa insertar ol Tempiato — Dosplogar ol monu Templates — Saleccionar VMDL Template - Elogironlaventanala construcción a insonar — AproarOK. Una vez insertado, sólo es necesario reemplazarlas. variables “generalizadas” del Template, que ¡comienzan con dos underscores (_ .), conlos "nombres de las variables propias. ains ga Fuente: ALTERA EJ Compiladores VHDL'87 y '93 en MAX+plus II MAX+plus Il: modificaciones en VHDL 93 Mantener abierta la ventana del Compiler Enel menú Interfaces elegir VHDL Netlist Reader's Settings Y dentro de esa ventana, enla zona VHDL Version, elegir VHDL 1987 0 VHDL. 1993 - Por defecto, MAX+plus Il elige VHDL 1987 uno square 2001 Fuente: ALTERA +La sintaxis de apertura y cierre de entidades, arquitecturas, componentes, 1ocesos, ele, ahora es consistente entity Nombres a. .end entity NombreBr component Nombrec £s..end component Nombrec; +La sintaxis de VHDL87 es aceptada por VHDL 93 *Sobre los nuevos operadores definidos en VHDL'93. mor: acoplado por MAX+PLUS Il, si es usado sobre cbjetos de tpo Boolean, BA, Bi voctor, S_logío, Sd,logi_vector sia, ll sra, srl, ror o son aceptados por el MAX+pluS 1 +Bi String Literal: —Los valores a asgnar a objetos tipo std_log_vactor ahora puedon sor ascrtos an hexadecimal octal, así como stingsbinaros do Os y Y's O on Ta umrmo square 2001 TRI ALTERA Segundo escenario Segundo escenario: archivos en juego En] pay 7 EDA EDA -Lasíntesis es realizada mediante otra herramienta EDA (Leonardo, Synpliy, FPGA Express etc.) — MAXAplus ll realiza el Place and route -La simulación es realizada usando olra herramienta EDA (Mode/S/M..) CASO TIPICO: DISEÑOS MUY COMPLEJOS uno square 2001 Fuente: ALTERA 3d E party Es EDA E — EDA; Electronic Design Automation — LME: Lbrary Mapping Flo. Son usadas por ol complador para sabor cómo reomplazar Celdas EDF no estándar por funciones gicas propas del MAX+PLUS ll Esectronic Data Intorchango Format. Formato ostándar para doscrtir circus, En ¡anoral las horramientas EDA intoracióan ontr síusando archivos EDIF 2.00 0 EDIF 30.0 — EDO; archivo craado parl EDIF Natist Wetor para sor usado por un simulador ostándar — YHO; idom EDO, poro con formato VHDL. — SDO; os un arctivo VHDL con ormato SDF (Standard Delay Format). Esto archivo tono información delos reardos del dispositwo usada para smulación en VHDL con baxotecas do smulación compatblos con VITAL (VHDL Intatwa Toward ASIO Lbrarios) uno square 2001 Fuente: ALTERA Guillermo Jaquenod, 2001 52 VHDL: Lenguaje de descripción de hardware Técnicas de diseño eficaz usando HDLs + Especificar completamente los módulos a sintetizar antes de inicar el proceso de síntesis, evitando estados desconocidos u operaciones “presumidas”. + Tratar unficarel diseño y no mezclar B/Ts con STD. LOGIC. En general conviene el uso de package std. logic_1164 y el package numérico " numeric. std (IEEE 10763) + Agregarla cláusula de RANGE a las variables INTEGER, para minimizar el uso de recursos + Enel caso de lógica combinatoria, ser cuidadoso para evitar la inferencia de elementos de memoria -si a las señales se les asigna valores mediante asignaciones condicionales, todas las señales deben tener un valor asignado en cada rama de esa asignación condicional silla operación combinatoria es descripta dentro de un proceso, todas las señales de entrada deben estar presentes en lalista de sensibilidad Técnicas de diseño eficaz usando HDLs Para elcaso de CASE: — usar CASE en vez de /F..THEN.ELSIF siempre que sea posble, evita la ¡generación de codificadores de prioridad - si se usan valores de defaull, conviene hacerlo inmediatamente antes de comenzar un CASE, evitando la inferencia de elementos de memoria, — no olvidar el uso de OTHERS - asignar valores de default a todos los objetos inmediatamente antes de comenzar un FOR. - tratar de realizar asignaciones a variables en lugar de a señales Tratar de usar procesos con las señales de controlen la sta de sensibilidad más sentencias tipo /F para la especificación de fiilops, en lugar de hacerlo mediante sentencias WAIT UNTIL. S Par elcaso de FOR: Técnicas de diseño eficaz usando HDLs Evaluar postsíntess las posibles inferencias indeseadas de memoria Evaluar cuantos iplps so han ospaciado como sonas alas que se asigna valoreson procesos sonsbies a una señal do reloj - Voran os arcos do report cuánts ilzps ha colocado. complador — Analizar do déndo surgen esos nuevos regias + Asignación de estos y valores a FSMs — En vez de detinr estados por enumeración alos que el complador asis un valor úualquera, analizar silos mismos registros que sirvan como momaría de ostado no puedon a su voz sora salda sncrónica de la FSM. Eso produco crcutos más. smplas, másrápidos, ycon menos gitchos. MOORE de salda decodiicada MOORE de salda registrada Técnicas de diseño eficaz usando HDLs tm guopimición Day + En un proceso de síntesis que respete la estructura jerárquica, la optimización del diseño se detiene en dos fronteras: las puertas de los bloques jerárquicos y los registros. - Por eso conviene ubicar los registros en las fronteras de los bloques jerárquicos (aa entrada o ala salida) + En un proceso de síntesis FLAT la optimización sólo se detiene en los registros. Técnicas de diseño eficaz usando HDLs ER DER) + Balancear la complejidad combinatoria entre registros — Cómo? Analizando la ita de worst paths!! Y cuando las fronteras de los bloques jerárquicos dividan lógica combinatoria repartir los retardos imponiendo “constrainis” de Output Required Time(T1) y de Input Arrival Time (T2). Técnicas de diseño eficaz usando HDLs + Siso usan iplops con Enable y se sebo que (por ejemplo) FF1 y FFZ edo se habitan on los ciclos paros do la soñal do rola), ol tompo Ti puedo sor l dable d lento qua TO o T2 + Para sncorar las ovaluación de Clock Performance debe notificarse est hecho al complador usando "constr" do MuNIiCycle path + Lomismo.n relación los "Falso Path" que suelen aparocor cuando se usan puertas bidieccionalos: FFxX Guillermo Jaquenod, 2001 55 VHDL: Lenguaje de descripción de hardware Manejo de archivos en VHDL Bases de VHDL Manejo de archivos en VHDL + leer constantes almacenadas en un archivo separado es el método más conveniente para generar estímulos (vectores de test) complejos = ostos vectoras pueden habor sido gonarados automálicamanto,habor sido par dela úspacificación a cumplir an ol procaso do aceptación do un producto, o ostardofinidas medante asgún estándar + asu vez, almacenar las salidas del diseño bajo test en un archivo permite su uso posterior para comparar respuestas de arquitecturas alternativas + Para el manejo de archivos, VHDL cuenta con el package TEXTIO (no úsintelizable), para operar sobre objetos de clase FILE. + Alcrearse un objeto FILE se define el modo de acceso (IN.o OUT) y el nombre del archivo, y esta acción liene como resultado implícito el OPEN del archivo. + Los cinco subprogramas a utilizar son: -MRITEO y WRETELIME ), READ(), READLIME(), EMPLEO) + y operan con objetos de los tipos definidos en STANDARD/STD: Tipos definidos en TEXTIO Subprogramas definidos en TEXTIO TEXTIO define 4 nuevos tipos a usar: Eype LINE Ls access STRINO; una LINE es un puntero a un objeto de tipo STRING Eype TEXT Ls file of STRING, un TEXT es un archivo formado por una sucesión de strings ASCII Eype SIDE Ls (RIGHT, LEI) por enumeración, define la forma de justificar los datos de salida en los ¡campos de salida, y es usada en el procedure WRITE () Subtype MIDTE Lo NATURAL) ancho de los campos de datos de salida, usado en el procedure WRITE () PILE ímputs TEXT OPEN read mode 18 PILE cuEputs TEXT OPEN Wríte mode 18 24 £mpueso Coupe hay dos objetos clase FILE predefinidos (INPUT y OUTPUT) asociados a *STD_INPUT y *STD_OUTPUT; FUNCION endlíme (1 + IN LIME ) RETURN BOOLEAN 7 FOMCIION endfíle ( £ : IN TEXT ) RETURN BOOLEAN 7 PROCEDURE weitelíne (£íle Ps TXT Ls INOUE LIME)7 PROCEDURE Write (ls INOUT LINE; value: IN <E£po>7 Juets£iea: IN SIDEG=RIGHD) field: IN WEDIM:=0)1 PROCEDURE readiíne (PELE £s TEXT) Le INOUT LINE) y PROCEDURE read (1; INOUT LIME) value: OUT <E£po> Logood: OUT BOOLEAN) 7 métodos para leer y escribir, así como para detectar elfinal de un archivo, Notar que WRITE escribe en un objeto LINE, y es sólo WAITELINE quien escribe en el FILE Ejemplo de escritura Ejemplo de escritura ¡Se cuenta con una varabio lamada "ahora, do tpo TIME y ros soñales sd_logío lamadas A, B y 1ob), y se desea, cada vez que haya un flanco posto de rel), escrbir ¡nun archivo llamado "salida vt" una Iínoa quo doscrbo "ahora, A y B conol siguiente formato: — Scarateresparasl valor ds “anor en miciosegundos jsicado acerecha. — cs espacios de separación — uncarácierqueinque elvalorde A solo, — cs espacios de separación a = yuncarácerqueintque elvalorde 8 5 Proceso, “esoo” ma añora Los olementos an juego során: — Un otjeto denombre “urls, de class FILE y po TEXT, dstndo come: FILE vrs TEXT IS OUT “saiaaet: — Un ner lamado shore. que representa tiempo scualen mibrosegundos — Una varas de nombre puntero, de Spo LINE, donde prepararlos datos a escrr — Una Anción que penita over los ers postes vabres de una varabl STO_LOGIC alos ese caracas que los representan kosher (els sed logic) RETURN character 15 sen ahora, 4 > 200/1ues WRITE (puntero, añora_L,FEELD>> 9) WRrTE (puntero, * ")) WRITE (puntero, ")) WRITE (putero,eea cochera) WRrTE (puntero, * 1)) WRITE (puntero, 1); WRITE (puntero,sea to cher(8))7 rrECIa br ble, puntero) y Guillermo Jaquenod, 2001 56 VHDL: Lenguaje de descripción de hardware Manejo de archivos y textos: txt_util.vhd Conversión de tipos en txt_util.vhd + VHDL es pobre en procedimientos para el manejo de archivos, y muchos usuarios han desarrollado packages para faciitar esa tarea. + Porejemplo, en http.//www.i2,-2000.com/-stetan/vcourse/htm se "encuentra un package llamado txt_utilLvhd, que ofrece distintos procedimientos. + Porejemplo, para salida a consola: procedure prime (zexes strtog); - sacarunmenseje a consola (STD_ OUTPUT) comba un WAITE ) comun WANELINE Y procedure print (sctiva: boolasny coxe: sertng); — saca unmensajo por Gonsola a 3 <ct 1 vale TRUE, es uN para debo + Para lectura o escritura desde archivos: procedera ser ressifile in fla: TRE, ves string: out sertno), pa leer unsting e argo variaba desde armo de entrada procedure prime (fila out files TEXT) mem strings tn orto) pora escri un tng enun FILE y paar auna nueva nea. procedsre prime (fla cut file: TEXT) char: £n Character), — parelmpnir un crac enun FILE y pasar auna nueva nea. + Para conversión entre otros tipos y los tipos STRING o character: FUNCTION chr (8l: sta togio stdlogio on un cará on ) nEzuaN enaractex; - convento un entero de úvalor0.35 on los caratoras 0.9 y 'A”.Z.Los demás son convortidos an'7. ON str (al: sed RETURN string, --converte un s_logican un STRING de tamaño 1 (RANGO 1101) ON str (ely: std logic vector) RETURN string, —convena un ústd_logk,vectoran un STRING de unos y coros :zoN str lb: boolean) RETURN string; =Conveno un Boolean on los ústrgs constanos TRUE o FALSE ON str lánes án base: integer) RETURN stráng;= úonvieta un antoro an un string de caractras de una dada baso ) RETURN string; comerte unontero an un RETURN character, comente un ústng suponiendo baso=10 ON heeríslv: ard logic vector) RETURN string, — conviene un úntoro on un string hoxadocimal (supone baso=16) Conversión de tipos en txt_util.vhd + Para conversión entre otros ipos y los tipos STRING o character — Comersiónde -- Conversión de upper case alawer caso funceion to upper(s:scring) recur string; — Trasiada un STRING compota upercase £o_lower(s:sering) return string; -- Trastada un STRING completo a lowor caso 0 5 aractorlo convert on std_logi.Sias inváido lo comiertoa X' tuncrion to_srd log! - Convierte un STRING de caracteres an un STD-LOGIC. VECTOR, ondo los caracteres inváldos del STRING son reemplazados por'X' Bases de VHDL Modelado del tiempo en VHDL VHDL: el mundo real El tiempo en la asignación simple a señales Además de las aplicaciones que operan procesando sentencias simultáneas (concurrentes) a la máxima velocidad posible, y los procesos o bloques donde se resuelven sentencias secuenciales, todos los eventos que se inter relacionan con el mundo real deben sincronizarse con EVENTOS FÍSICOS (soñales que cambian de estado) y con la variable TIEMPO — Un evento físico: importante en a sección de hardware y en el monitor de salidas — Un evento temporal: lundamental para crear los estímulos, así como para modeizar los retardos propios del hardware Además del subconjunto de estructuras snteizables, VHDL ofrece sentencias ue pueden ser usadas para las lareas de especificación, modelado, y Simulación. Este tipo de sentencias incluye el modelado del tiempo, y oras unciones úties para el ingreso de vectores de test y salida do resultados Las sentencias de asignación a ser ales son de a ama [abel «nombre de señal < (REJECT <expresión == , [TRANSPORT] <expresión> [AFTER <expresión temporal>]; Estas asignaciones se efectvizan al final de cada ciclo de simulación, cuando TODAS las asignaciones han sido resuetas, y estos valores futuros pueden ser condicionados mediante ciertos campos que no son sinttizables, pero que i » [AFTER] xiotno ol tempo de propagación do una seña. + [TRANSPORT indica que laseñal es propagada con idéntica forma, luego de un rolardo dofinido por AFTER. Do no ponarso TRANSPORT So asumo el modo. INERTIAL donde un pulso de retardo menor al tiempo de propagación es ignorado. + [REJECT]: dot ol pulso minimo a propagar y sólo puedo sar usado para refinar modal de una saña INERTIAL. Siunpulso de monor duración al dado por 'EJECT atravesa un objeto, as "rado" y no aparoca an la salia. Guillermo Jaquenod, 2001 57 VHDL: Lenguaje de descripción de hardware Cómo se usa un HDL en el “test bench”? Event-Driven Simulation HE benadoral con modelo de comportamiento temporaldeldeposiworeal_Y| TEST BENCH E Módulo del diseño de nivel tope (DuT) HE antetzabia con laleno tasas, veces con Ancionee de "embedded es "HOLno sntezabis con manejo de archivos, locación —Í “Anánica de memoria entrada sala por consola, reerenis temporales TEST BENCH Módulo del diseño de nivel tope o DUT (Design Under Tes, Generación de vectores de Test Asignaciones simples y WAIT FOR + La generación de estímulos (vectores de tes!) puede ser hecha de tres grandes maneras: — mediante un algoritmo: + medianto una secuencia do asignacionos simples * mediante procesos explíctos que produzcan la repaticón de señales, yla. úconsiguienta (gonoración do soñalos poródicas + mediante patrones complejos generados algortmicamente — leyendo tablas de constantes almacenadas en foma de tablas (arrays) + aquivalato a una sacuoncia do asignacionos simplos, os una forma más compacta. de ganoración do vectores pues las taraas do asignación y los valoras a asignar ústán on ostructuras soparadas (un procadimiento y un array, rospoctivamante) - leyendo constantes almacenadas en un archivo separado método más convaniento para vectras complejos, que a su voz pued también sor gonorados autom odofinidos medanto un ostándar a aso de quo ltostformo parts dl rocoso de acoptación de un product. PBrrremery TI ASHeNDEH) Asignaciones simples y WAIT FOR (simulación) AAA” Fuente delos gráficos: VERIBEST 990 VHDL Simulator Vectores repetitivos y simétricos + Generación de relojes simétricos con una secuencia de asignaciones simples Guillermo Jaquenod, 2001 60 VHDL: Lenguaje de descripción de hardware Vectores repetitivos y simétricos (simulación) Vectores repetitivos y asimétricos uno square 2001 Fuente delos gráficos: VERIBEST 990 VHDL Simulator + Generación de relojes asimétricos con procesos explícitos y asignaciones simples. Dos modos de generar la misma señal! Vectores repetitivos y asimétricos (simulación) Vectores complejos usando algoritmos Fuente delos gráficos: VERIBEST 990 VHDL Simulator + Es posible generar palrones de test más complejos que una señal de reloj por ejemplo, secuencias GRAY) a travós deluso de algoritmos: ran o “acá no importa hacer un ARCENTECTORE a OP gray 1S “contador bario y ego, Cen pactado done casada pira 33: Process 1s FESTy no para altea. Vectores complejos usando algoritmos (simulación) Vectores complejos usando algoritmos Je Bla E rial leia uno square 2001 Fuente delos gráficos. VERIBEST 990 VHL Simulator + Es posible generar patrones de test más complejos que una señal de relo (por ejemplo, secuencias pseudo-random) a través del uso de algoritmos similares a los usados para el diseño de LFSAs: Guillermo Jaquenod, 2001 61 VHDL: Lenguaje de descripción de hardware Vectores complejos usando algoritmos (simulación) Generación de vectores mediante arrays AAA |Cjajeal el ele á Ac A A Fuente delos gráficos: VERIBEST 990 VHDL Simulator + el uso de vectores de test almacenados en forma de arrays permite separar los procesos de asignación de los valores a asignar LIBRARY deeejUSE leee.ard_1og USE dese -mumeric_9td. ALL; 7 (bus: OUT UNSIGNED (7 DOMO 09); pe FOR 4 IN 0 TO 7 LOOP bue <= to unsigned (ciu table(s) ,8)7 Vectores complejos usando algoritmos (simulación) Leyendo estímulos desde un archivo EA ¡Se simula el bus de un microprocesador, compuesto por datos, direcciones, nWR, AD, y duración de esas muestras, y que con WRITE y WRITELINE se generaron la generación de estímulos basados en ese archivo podía ser de la forma: líneas de forma bit_wector(7 DOWNTO 0); bit vector(15 DOWNTO 0); bt, bh time, Fuente delos gráficos: VERIBEST 990 VHDL Simulator Ejemplo: test de salidas usando ASSERT Modelos de otros módulos anexos y TEST BENCH Otros módulos ya operativos E3 módulo del diseño. nerador de de nivel tope o DUT estímulos (Design Under Test, "Monitor salidas Guillermo Jaquenod, 2001 62 VHDL: Lenguaje de descripción de hardware Barrel Shifter solo hacia el LSB (a derecha) Barrel Rotator hacia la derecha Operación de un Barrel Shifter Signed Operación de un Barrel Shifter Signed Ejemplos (Shift +, Shift-) de Barrel Shift signed sobre datos de 16 bits Pe ena O dor oo 000 0o O dar poooo ooo? ATT cias A pa a como ES EL bd E >< mojeo nono os cepo CIO A A A e AA A E Ñ Sono elenttr de sua eeacamenol (62 LES y 23208 de Falco bando una cror (23 pomo 017 | Eerrecacara ELSE dán á Barrel Shifter usando LPM_CLSHIFT Recreando instrucciones de SHIFT: SLL uno square 2001 Evento: ALTERA MAX: plo IMELP. Los 6 operandos de shift definidos en VHDL9S no son reconocidos por el MAX+plus Il, aunque puede definirse una función que realice esa tarea Guillermo Jaquenod, 2001 65 VHDL: Lenguaje de descripción de hardware Uso de recursos de mi_SLL Recreando instrucciones de SHIFT: SRL Cuántos recursos requiere la implementación de una operación de shift una cantidad CONSTANTE de veces? ES iaa Los 6 operandos de shit definidos en VHDL'93 no son reconocidos por el MAX+plus Il, aunque puede definirse una función que realice esa tarea Recreando instrucciones de SHIFT: SLA Recreando instrucciones de SHIFT: SRA Los 6 operandos de shit definidos en VHDL'93 no son reconocidos por el MAX+plus Il, aunque puede definirse una función que realice esa tarea Los 6 operandos de shit definidos en VHDL'93 no son reconocidos por el MAX+plus Il, aunque puede definirse una función que realice esa tarea Recreando instrucciones de SHIFT: ROL Recreando instrucciones de SHIFT: ROR Los 6 operandos de shift definidos en VHDL'93 no son reconocidos por el MAX4plus Il, aunque puede definirse una función que realice esa tarea Los 6 operandos de shit definidos en VHDL'93 no son reconocidos por el MAX+plus Il, aunque puede definirse una función que realice esa tarea Guillermo Jaquenod, 2001 66 VHDL: Lenguaje de descripción de hardware Bases de VHDL Ejemplos con MAX+plus Il VHDL Uso de elementos de memoria Interfase a Shaft Encoder Incremental A A ¡Giro Antihorario + Es un dispositivo muy usado an aplcacionas industralas para ol sonado de ángulos, y ganara tros soñalos: — dosseñalos Ay B doslasadas onto sí1/4 do poríado, arazón do 360 pulsos por vuelta — unasoñal Z, de duración menor a 1/300, a razóndo una por vuoña. + La interfase más smple usa A como rely B como control para defi siun contador de angulo dobo sar incramontado o decrementado Interfase a Shaft Encoder usando LPMs Shaft Encoder: aumento 4x de la resolución E “Giro Antihorario + E uso do Les tano y ma (y sms sana es sa Es shafeent: Ipm counter GENERIC MAP ( LEM_NIDIH => 9, LEA MODULUS =>360) PORT MAP [clock => a, updom =>b, “Giro Horario [Agp Bro efe erro “Giro Antihorario aa Una altomatica que aumenta la rosolución y part un disaño, úincronico con un rel) interno es úobsorar que en sento horario la secuencia AD es 00/10/11/01/00. an sentido antíorari la secuencia AB esO0/01/11/10/00. Contadores Código GRAY + Sibion un contador GRAY do N bas puedo hacerso usando un cortador binario y un traseodificador, con esa solución so pierdan todas las vontjas do ausancias do “gitcnas” y so usan 2N macrocaldas. + Un algortmo más eiiente una sólo N+1 macrocelas, que en base al bt actual “G7, al prado Gi-1y a una función Di-1 que vieno dosdo a etapa pravia calcula el siguiento Gi y la función Di + Excoptola primar otapa (gonoración de D-1) yla última olapa, las demás ctapas tonon una arqutctura como sigue per + En baso asta "módulo" un cortador GRAY de N bits so configura m0] Dr a En] lao ton! ¡ on ER Contador Código GRAY genérico Guillermo Jaquenod, 2001 67 VHDL: Lenguaje de descripción de hardware Cómputo paralelo de CRC-32 Shift Register Parallel Input, Serial Output + Conidéntico andiisis, luego de 16 shifts el CRC-32 queda como sigue, y puede calcularse en sólo dos ciclos de reloj: + En CRO-32 el número inicial del registro CRC es C704DD7B uno square 2001 pres Agea Ham 190410 Parto 000 ta MOTA Shift 8, Store (tipo CMOS 4094) Recuperador de reloj “behavioral” "dal Esto disoño, compllado ¡con MAX+Pls requiero 32LES Recuperador de reloj pensando en la síntesis Registro de aproximaciones sucesivas Guillermo Jaquenod, 2001 70 VHDL: Lenguaje de descripción de hardware Ejemplos: una UART, etapa TX Ejemplos: una UART, etapa TX, lado usuario a e La olapa transmisora do una UART puedo vorso como compuesta por dos máquinas cronicas, cada una do 4 estados: = Una máquina activada por Ck, responsable de la intrtaso al bus dol usuario — Otra máquina activada por TxCk rosponsablo del procaso de transmisión Ambas mágunas se sinoronizan medante Handshako usando THRF (Tafteg Ful) y Ack Ambas máquinas poseen además registros cperatwos (Holding, Shit y Contador de bis) y pueden complearso medante ol agregado de gonerador de pardad, control de flujo, at Ejemplos: una UART, etapa TX, lado canal Ejemplos: etapa TX completa de una UART E Amoel A as Simulación de la etapa TX de la UART + Se muestra la simulación funcional usando MAX: plus + Y vale notar un punto importante: mientras la compilación con MAX +plus Il ¡consume 54 LES, el mismo archivo compilado con Synpily sólo usa 31 LES! 1 JJ Mejora de UART_TX, lado usuario Dos llenen THAF.en 1 Puedo usar THRF como DR de estado!! Guillermo Jaquenod, 2001 71 VHDL: Lenguaje de descripción de hardware Mejora de UART_TXB: bajo de 20 a 17 LEs Ejemplos: multiplicador iterativo por shift/suma Dos estados tienen Ack en 1 o P a mt Ejemplos: sumador “Carry-select” Ejemplos: Sumador serial “Carry Save Adder” a y 0% a La idea de Carnyaelect es ampl. AN Use: aumadores (slo, a, y sh) de 2 Ets id o uno parala mid ini eos sumando Zo . —dos paa la ante peror, dnde enuno de Enolcaso do dos oporandos a y b que ingresen simultáncamento, ompozando porel LSB hasta 1 MSB, es postie usar un ciu simple, que sólo requiero 2 LES. y cuya Istoncia es de sólo 1 celo dore; + Entuncón dela ala de cary d aloe opta . ene os postes sesutados shi0y Shi + Consume e doble de recursos (132 vs 66 LES) perotartién csi dupla la velocidad Enosto orcuto un LE calcula la suma de los datosde entrada más el acarso generado nla otapa prova (salidas), y dl otro LE calcula el acaroo generado an esa otapa y lo almacona (Cary Saved") para su postorioruso al calcular lt siguiente Ejemplos: Sumador/restador Serial Ejemplos: Complementador serial BTS our sr + Dado que cada LE tono una taba LUT de 4 entradas, amplar el sumador serial El complementador serial implementa el algoritmo tradicional para calcular el complementar a dos de un número: sumador/rostador sera se hace + Dosdo ol LSB hacia adolanto, hasta oncontar ol primor'1' (nclusvo), la ontrada os in consumir más recursos, pues copiada en fonte en e ali también sólo requiere 2 LES, y su latencia esde 1 ico de ral, + Apart de alílos bis rostantos so invartan Guillermo Jaquenod, 2001 72 VHDL: Lenguaje de descripción de hardware Un FIFO basado en registros Un FIFO 8x8 basado en registros + La simulación muestra la propagación de cada dato a medida que es escrito, ¡cómo los dos datos llegan a las dos últimas etapas, y los procesos de lectura eye == ro Tm Mr ¡AAN a : l= 9 1 Es em 1 AAA Ejemplos: Switch Fabric con Multiplexores Switch Fabric MIN (Multipath Interconnect Net) + Ladilusón do redos de datos de aa velocidad en canales de báatasa de orrorha dado orgona nuevas normas do transmisión. Tal os l caso dol ATM (Asynehronous Transtor Mod), que requra mínimo procasamiento an nodos, routors,ropotidoros, brigdos. + ATMes unsistema basado en el estabiecmiento de una úconexón temporaria punto punto, quo transporta a aña velocidad caidas de información entre interlocutores, y un elemento clavo en la creación de este camino son los sistamas do rutoado, y dentro de aos las matrcos do rutoado (switeh fabrics). + Un switch fabric puedo ser homologado a un conjunto de tantos muliplazoros como canalos de salida, dondo cada mulplosor tono tantas ontradas como canalos de entrada haya. Esta solución os rápida (monos de 3 LE 1 swten 16:16 y ¿do conta, y solo parmt un camino anto una. ada entada y una dada salida salidas entadas A 50 O] sf Fra. 16 salidas 160ntadas EAS AH a ps AA Sn A 10d Banyan 16:16 od Baryan invertida Ss + Unared Banyan NN proves un único camino entre cualquier entrada y cuasquier sida, paro ala voz bloquea oros caminos ontro otras entradas y salas «+ En un switch fabio MIN (Mutpath Inercomect Network) se usan dos redes Banyan NN, que proveen N posbles caminos desdo cualquier entrada a cuasquier salda. + Elolomento básico de un MIN es un multpiazor2:2, que usa 2 LES, y que puedo operar do mado combinatario o usar registros (on l caso do desear una swich con pipalinas) + Una MIN 16:16toncrá 8 LE do rotardo, requerirá 8:8,2=128 LEs y 4 línoas do contral CORDIC: COordinate Rotation Digital Computer Uso de CORDIC en vez de Pitágoras + Lada dol algortmo CORDIC as muy ingoniosa: + Dado un punto con coordenadas (xy) que es y) rotado un ángulo Arespocto al organ, las novas. = oordenadas del punt során: X=X£0SA- YSONA y=X.50NA + yLOSA y + Sacando cosa como factor común tengo X=cOSALK- YAA) y'=c0SALy + tana) + Siol ángulo A os aproximado modanto la suma o rosta do sucesos A-artan(2") Para dosdo 0 hasta un máximo, so tono quo tanA=(+/2', yal producto do xo yportanA, so transforma on un ÍZ 2 Smplo sit. + Comocos(AJ=cos(-4) os electos delos sucesivos productos por cos (A) se transforman en un único coofiinto final, que tando a 0,6073 a medida que la cantidad de teraciones (1) rece. + Dado untriángulo con catots do dmonsión xo y, al algorimo CORDIC puedo sor usado para calcularla potonusa y l ángulo A, formado entro xyh 07 + La dea os rotar ol punto (Xy) hacia al jo X, para úcomvartro anun nuevo puto (0), cono que y' será al a valor el de la hpotenusa y el ángulo rotado coincidirá con RS A Analizando las ecuaciones vistas: or zc0sALC IO Y=c0sA > Xan) a nadas 1 y 0 poto pa ón y a sam nera dc ces aa de gora noto a ah Fra Anda “A mery o! OROC alortma or EPGA bass computers Fanta Boda “A mery o! ORAL aorta or EPGA bass computer Guillermo Jaquenod, 2001 75 VHDL: Lenguaje de descripción de hardware Otros usos de CORDIC Hardware iterativo para CORDIC en paralelo - Caleta de SENO y COSENO:sisopañe de (1.5400) ser unáaguoa, ny o nose) y co), Doigual mao, on ("1546 0) gar an rg 450 cor (>) de oontenadas polares cafosanas - Cátelo dea unión ARCOTANGEMTECT: soparo des, Jan) y 4-0, y sor elvrtueraci a joX var relatos ar. - Cálelo de ARCOSENVS) y ARCOSÍXO: 5 paro dese y y A=0 y 90 ro tvecoran tao adacisons maca comparando y con Y, sovenda NI Sn Aalaron (Y) equal ma, manto deciros en bso compar con o puedo calar ao Ko) + Botacionea fla: en gunos caso snecesarirotarunvcorun dul prado. En eto aso la rprosmntacin de dio dnguscomosuma do arcoangentes(2) pued sor calcuada de antemano y quaradonfba, bando lcwvuto de tora d gue. - Dres: ura stuctua COROS mofcada puedo se empiada tambn pra la alzacn de mutaciones, y para cl o frcnes pad Fanta Boda “A mery o! ORAL aorta or EPGA bass computer + Analizando las acuacionos. la oración queda desorpla por % ya,2 Mar = Y 9x9, 2 A1=A-0.artan(2) Seo desea aplicar una rotación, en función de bado. signo de RA asta registro as incromantado o dacrementado (controlado por ci) en un valor obtenido do tabla, que corespondo a A= artan(-2"); sta decisión ds usada también para controlarlos sumadoros/ rostadoros que gonoran los nuevos x.y. —Siso desea calcula la hpotonusalanquio,olrogistro RA y ús inicialmanto borrado y las decisiones so toman an unción ol bdo signo dol ragisto Ry dl + Esta solución amploa bloques constructivos ostándar, como sumadores/estadores, barelshilers, tablas do looKup y una máquina do estados. EVALUAR LA COMPLEJIDAD CIRCUITAL APROXIMADA a RC POOA teca Hardware iterativo para CORDIC en serie Hardware iterativo para CORDIC en serie + Es poste resowor CORDIC an forma sora, usando rogistos de desplazamiento, sumadorostrostadoras. CarrySavo, muliploxoros y bloques do extensión de signo. Si bien asta cicuño soría N secos más lao, la 'smplicdad del conoxionado pormito quo asta penalidad bloques + Ellanális do la argulectura muostra quo ol regsto Xnocesta 18 LES para ol shit register (ncluido el MUX de entrada), 10 LES para un multplxor 16:1, 2 LES para al útcuño de oxtonsón do signo y aros 2 LES para ol sumador Carry Savo, btalzando 30 LEs para X, y porlo mismo otros 30 LES para el registro Y, + Elrogisro Anacosta 16 LEs para al shitrogistor, 16 LES para la abla do ángulos, 10 LES para wn mux6:1, y 2 LES para ol cteuito Cay Savo, totalzando otros 44 LES ALU serial Bases de VHDL Ejercicios complejos conVHDL + Una unidad artiméicoógica señal puede ser muy útil para elaborar microcontroladores empotrados de baja perlormance pero ala vez muy limitado uso de recursos El bloque de procesamiento cuenta con dos unidades separadas, una para las funciones lógicas y otra para las funciones aritméticas Los operandos pueden ser datos variables provenientes de alguno de los mapas de memoia (datos o instrucciones), de la VO o ciertas constantes tales como 0, 1, uotras (P.Ej: valores para ajuste decimal. Guillermo Jaquenod, 2001 76 VHDL: Lenguaje de descripción de hardware Ejercicio: multiplicador de punto flotante Ejercicio: DRAM controller Pollará 87 uno square 2001 vente: POLLARO + Es posible conseguir a muy bajo costo módulos de alta densidad y bajo tiempo — 7 de acceso, á < Tener una interaso resuelia laca su uso ensisiomas de cómputo pero j 3 también en tareas de instrumentación E É (ej:datatoggng) 3 EE + Lainteriase debe poder Y SE — ganerarios cios de lectura, de csortura — BEN ás Ys mos pel j —cperaren modo cuasiasncrónco ma 3i LA ; 3 — permitir el control de acceso a nivel de 3 =e jo (BE) — multpioxar ol bus de direccionas — alar olbus de datos = gonorarlas soñalos do control /RASI) CASI) /OE y WE Evento: MICRON 49MEG x 32 DRAM DIN DMOS psS-ñ/0] Ejercicio: una UART, etapa RX DRAM controller: la memoria a controlar La etapa RXde una UART pued verse como compuesta por dos máquinas sinconicas: = Una máquina activada por Rek16x responsable de sincronizarse con los datos úrtrantos, reci los bdo datos, y avisar cuando hay un nuovo dato dispontia — Otra máquina actvada por Ck, responsablo dela intrfaso al bus del usuario AL igual que on ol transmisor el ciculo puedo compicarso, para dotectar Overrun, Break, Nose, eto + En este caso el módulo está basado en 4 dispositivos MT4LC4MI6 de 4Mx 16 conectados ¡como en la figura. + Cada dispositivo tiene una línea /RAS dedicada pero dos líneas JCAS, las que permiten el control de lectura y escritura a nivel de byte + Tienen múltiples modos de operación, de los que sólo se desea implementar “single read, “early Write" y “CBR refresh". Evento: MICRON 48MEG 32 DRAM DIS DMOS psS-ñe:/0] Ejercicio: DRAM controller. Ciclo de lectura Ejercicio: DRAM controller. Ciclo de escritura + El ciclo de lectura se compone de varios BASTA NA pasos 1.se pone una part (flas) de la dirección a — CASE NAME pe ADOR 200 tAJMAS par captura ves E 3.50 pono la ra paro (Columnas) do la dirección a leer DO M0 4.50 baja/CAS para captura OE4 5.50 baja/OE para sacarlas Ilnoas DO de YT] wr ala impedancia 1233155730 6.losdatos quedan dispontios para su uso 7.50 termina ol ico subiendo (RAS y IDAS 8.50 sube /OE para pasar DO|.Ja Te+Stato 9.losdatos DOL.] quedan on Th-Siato + En simultáneo con!a lectura, este ciclo refresca todas las columnas de esta fi. + El ciclo de escritura (early white) se ¡compone de varios pasos: 1. se pone una parto (llas) de la dirección a — CASH TZ 22 NO los 0 b3a/MAS paracopurra Se aciva WE ancaro separo la repara (comas) dela Do docóna a oe» se penentosdatos a oorbs 0 b3a/CAS para ptr se desacira ME == se puedansacariós datos a Se lormina loco siendo /RAS y IDAS 030 espera un tempo de precerga hasta mpazarom oso + En simultáneo con la escritura, este cido Ba relresca todas las columas de esta la Guillermo Jaquenod, 2001 77 VHDL: Lenguaje de descripción de hardware Uso de BST para verificar el PCB Uso de BST para verificar el PCB La interfase BST permite: + el chequeo pleno de conexiones entre dispositivos BST (flecha A) + y el chequeo parcial (mediante estímulos y respuestas) cuando algún dispositivo no tiene BST (flecha B) + si hay caminos no medibles (entre dispositivos sin BST, caso C) conviene rehacerlos a través de dispositivos con BST (C1 y C2) La verificación del PCB puede ser realizada forzando valores en las patas de salida y capturando el valor de las patas de entrada: — Para forzar valores de salida se usa la Instrucción EXTEST. — En la fase “CAPTURE” los valores presentes en las entradas son almacenados. — En la siguiente fase “SHIFT” los datos capturados son leídos en forma serial a la salida del registro BST; a la vez se carga el shift register BST. — En la fase “UPDATE” las lineas de control son reemplazadas por los valores de este shift register. Uso de BST para verificar el PCB Monitoreo en operación Usando BST para el test del conexionado (EXTEST), la cadena posible de testear es: - celda BST, interconexión interna, pata del chip, soldadura, pista de PCB, PTHs, soldadura, pata del chip, interconexión interna, celda BST Este modo es útil para detectar problemas de manufactura + Usando BST para la captura de las entradas y/o salidas del chip permite usar la cadena BST como un sistema de test funcional del sistema, sin afectar su funcionamiento + Las celdas BST toman una muestra “snapshot en forma independiente de la operación La celda básica BST La celda básica BST Pl PO Las tareas básicas de una celda BST son: - capturar datos presentes en su entrada paralela (PI) — forzar datos en su salida paralela (PO) — transferir datos en forma serial desde SI a SO — comportarse en modo transparente (Pl aparece en PO) so Una celda básica BST ofrece Scan 4 modos de operación: Shion Ouput Mode —capturar datos presentes "++ en su entrada paralela sin afectar la salida: ShiftDR = Po Mode = 0, ClockDRA al p apo a —torzar un dato en la salida paralela: Mode = 1 ck | ek —aotualizar los registros de Update: UpdateDA» —recargar el shiftregister y — ¿SI ClockDR UpdatepR sacarlos datos capturados F£9n. en modoserial: ShiflDR=1 y CkDR» Guillermo Jaquenod, 2001 80 VHDL: Lenguaje de descripción de hardware Registros asociados a BST Registros asociados a BST A sol 100, A ones 1oK ¿ ó Mantenimiento 2 Z + Registro de Instrucción: este registro, de largo variable (aunque ¡como mínimo de 2 bis) puede ser intercalado entre TDI y TDO. En él puede “caplurarse” un valor cableado dentro del chip (Capture_IR), ingresarse una instrucción (Shift_IR) en modo serial, atasT y decodilicar dicha instrucción cuando está lista (Update_IA). En modo Capture_IR los dos bits LSB deben copiar el patrón “01”. Registros asociados a BST Registros asociados a BST + Registro de ByPass; este shinon bitegt 2827 121 10 registro, de sólo un bi, provee el camino más corto entre TDIy — geror_ [o ShiftDR| egister de 32 bt TDO. Es habilitado cuando se rn D QpetDo se Tol sa 150 decodifica la instrucción ByPass ck + Begistro de identificación (DCODE): este registo opcional de 32 bis todo codigo de instrucción permito identiicar mediato la cadena BST alabricant, tipo de dispositivo y desconocido (default). Al versión de cada chip. ejecutarse sobre él la acción Capture_DR (ShilDA=1) debe capturar un“. + Al salirde Power Up se especifica que aquellos dispositivos que tengan 1DCODE lo deben intercalar en la cadena DA, y los que no, deben intercalar el registro de ByPass. Ello permite, mediante la acción ShiDA, saber si un chip tiene IDCODE (si viene un “Y los siguientes 31 bits son esa identificación) o no, caso en que va por default a ByPass y captura un'0" Registro de test periférico: tipos de celda BST Otros registros en BST Según el tipo de pin, las celdas BSTagregan 1 a 3 fliplops ala cadena de Test. Nótese que en todos los casos se usan 4 líneas de control: + 1:Mode, 2UpdateDR, 3:ShiRDR, 4:ClockDR La arquitectura IEEE 1149.1 permite a cada fabricante definir instrucciones y registros propios - Ello permite ampliar la cadena BST para realizar el test de no sólo elementos perifericos sino también intemos (InScan), o usarla instrucción RunBist (definida en la norma, aunque opcional) para activar un Auto-Test del chip, y capturar el resultado en un registro dedicado - Los chips de ALTERA ofrecen un registro Registro del usuario (UESCODE), y para que el usuario pueda programar informacion propia, y en las líneas MAX7000s y MAX9000, registros para la programación en circuito (ISP) Guillermo Jaquenod, 2001 81 VHDL: Lenguaje de descripción de hardware Líneas de control del TAP Controller Máquina de estados BST TOL(TEST DATA INPUT) entrada serie para instrucciones, asi como para alos de test y programación. Los datos son capturados en el flanco creciente de TK + IDO(TEST DATA OUTPUT) salida serie de instrucciones, asi como datos ¿e test y programación, actualizados en el flanco de bajada de TCK; va a Tí-state cuando no se está sacando datos del dispositivo + IMS (TEST MODE SELECT): señal de control de las transiciones de la máquina de estado del TAP CONTROLLER; su valor es capturado en el flanco creciente de TCK + TCK (TEST CLOCK: entrada de reloj para el control de BST JAST(TEST RESET): señal asincrónica activa baja para reiniciaizar los ¿ircuitos de test. La norma IEEE1149. 1 la define como señal opcional, y está disponible sólo en ciertos dispositivos de ALTERA Toda la operación del TAP controller está definida por las líneas de control TMS y el reloj TCK. El JTAG TAP Controller está descripto en base a una máquina sincrónica de estados, con 16 estados distintos, donde las transiciones entre estados son función exclusiva del valor de TMS. En el encendido el TAP Controller queda en el estado TEST_LOGIC/RESET, donde toda la lógica de BST está deshabilitada, y permanece alí mientras TMS=1 (MAX) o NTRST=0 (FLEX) Desde cualquier estado, se vuelve a TEST_LOGIC/RESET si TMS permanece en “1* durante al menos 5 ciclos de TCK (MAX) o nTRST vaa “0 (FLEX) Máquina de estados BST Máquina de estados BST ve + Los cuatro estados básicos son + TEST_LOGIC/RESET + RUN_TEST/DLE + SELECT_DR_SCAN + SELECT_IR_SCAN. + Se sale del primero con TMS=0 y se recirula ¡con TMS=1 hasta el estado inicial + SELECT_DA_SCAN permite hacer el shift de los registros de datos + SELECT_IR_SCAN permite hacer el shit del regísiro de instrucciones. Máquina de estados BST: ejemplo Instrucciones BST Obligatorias: — BYPASS; intercala un registro de 1 bitentre TDI y TDO, lo que permite que la cadena BST ignore la existencia del dispositivo (excepto por el agregado de un retardo de clock). Su valor está definido como un código con todos los bits en *1. - SAMPLE/PRELOAD: caplura una muestra del estado de las señales de entrada, y prepara la cadena DA para forzar un valor de precarga para dichos pines. Su valor no está definido por la norma - EXTEST: permite el test de las interconexiones en el PCB forzando un dado patrón precargado en las patas de salida. Su valor no está más definido por la norma (inicialmente era todos ceros) Guillermo Jaquenod, 2001 82 VHDL: Lenguaje de descripción de hardware Bloque de l/O con BST en MAX9000, FLEX10K y FLEX8K Patas de entrada dedicadas en FLEX OPERACION NORMAL + Asociado a las patas globales de reloj, Output Enable y Clear Es posible capturar el valor lógico de la entrada, y también intercalarse en dicha línea (la cadena de UPDATE tiene un plop) Para mantener compatibilidad con los pines no dedicados, la cadena de CAPTURE tiene tres flipllops, de los cuales dos tienen valores fijos Otros lenguajes de Test usando la interfase JTAG El lenguaje estandar de test BSDL Boundary Scan Description Languaje BSDL: Boundary Scan Description Language Componentes de un archivo de descripción BSDL + BSDL es un lenguaje de descripción de hardware subset de 'VHDL, definido en la norma IEEE 1149.1b, que permite describir en forma estándar las características de un dispositivo capaz de sertesteado mediante BST Esta definición de cada disposttivo, junto con la descripción circuital (netisi) de cómo los distintos dispositivos están interconectados en una plaqueta, puede ser usada tanto por programas de generación automática de vectores de test (ATPG: Automatic Test Pattern Generator) como por equipamiento de test automático (ATE) » Entiys: define cosas tales como el nombre del chip, eto. + Generic parameters: parámetro que pueden venir desde fuera de una entidad, o tener un valor por defecto, tal como el po de encapsulado » Logical port description: asigna nombres a las patas de entrada/salida, e indica sutipo: »- Use: referencias a definiciones dadas por packages predefinidos » Pin mapoing(s): asociación entre nombres lógicos y número de pata » Scanpori identification: niveles activos de las líneas JTAG, y fmax de TCK +». Instruction Register description: valor y longitud de cada instrucción + Register access description: qué registro es ubicado entre TDIy TDO para cada diferente instrucción. » Egundary Register description: identificación de cada celda de test, a que pata está asociada, y su modo de control Guillermo Jaquenod, 2001 85 VHDL: Lenguaje de descripción de hardware BSDL: Entidades, parámetros genéricos, y sentencias USE BSDL: definición de las puertas de la entidad La descripción de entidades es tipo VHDL, y define cosas tales como el nombre del chip, etc. Su sintaxis es: entiy XYZis sentencias de descripción de la entidad); end XYZ Un parámetro genérico puede venir desde fuera de una entidad, o tener un valor pordefecto, talcomo el tipo de encapsulado. Su forma es: generic (PHYSICAL_PIN_MAP : tin := "encapsulado" La sentencia USE hace referencia a definiciones dadas por packages predefinidos La descripción BSDL de la EPM71288LC84 dice: entity EPM7128SL84 is ¡generic (PHYSICAL_PIN_MAP : string := "PLCC84); use STO_1149_ 1.1994all; end EPM7I288L84; Esta descripción da nombres a las patas de entrada/salida (normales y de manejo del TAP Controller) e indica su tipo: entrada, salida, bidireccionales, La sintaxis es: port(_ <NOMBRE SIMBÓLICO : modo tipo >; <NOMBRE SIMBÓLICO : modo tipo >; <NOMBRE SIMBÓLICO : modo tipo >); BSDL: definición de las puertas de la entidad BSDL: Mapeo de las señales lógicas en el encapsulado En la descripción BSDL de la EM7128SLC84: l- 1047105108, 108, 109.910.011, 1012,1018, 1018, 1017, 1061, 1063, 1064, 1065, 1067, 1077.1073,1080./081: nout bit; 1008 ORO NOTO IOIOTSIO7a, INT, INZ, INGS , INB4 in bit; Dedicated Input Pins TCK, TMS., TDI: in bi; TDO: out bi; -JTAG Ports VCC: Inkage bit_vector (1 t0 8); 'GND : Inkage biL vector (1 to 8) Ground Pins » Esta sentencia permite asociar los nombres lógicos definidos al número de pata que corresponde a cada encapsulado Su sintads es: attribute PIN_MAP of XYZ: entity ls PHYSICAL_PIN_MAP; constant <encapsulado>:PIN_MAP_STRING: “OE:1, Y(2,3,4), A(5,6,7), GND8, VCC, "8 *TDO:10, TDl:11, TMS:12, TCK:13, NC:14' donde PIN_MAP_STRING es un sublipo string definido en el package STD_1149_1_1994 BSDL: Mapeo de las señales lógicas en el encapsulado BSDL: Líneas JTAG En la descripción BSDL de la EMP7128SLC84: attribute PIN_MAP. Of EPM7I28SL84:entiy is PHYSICAL, PIN_MAP; constant PLCC84:: PIN_MAP_STRING := O Pins- 1104:4, 105:5, 106:6, 1088, 1099, 1010:10,1011:11, 1012:12, "8 *... , 1077:77,,1079:79, 1080: 80, 1081: 81 Dedicated Input Púns: "INT :1, IN2-2, (NB3 83, INB4: 84," "TCK:62, TMS:23, TDI: 14, TDO:71, '£-JTAG ports "VCC: (3, 13,26, 38,43, 53, 66,78), "8-Power Pins "OND: (7, 19, 32, 42,47, 59,72, 82); De este modo se definen los niveles activos, así como la frecuencia de clock máxima posible en la línea TCK para el manejo del TAP Controller. Como ejemplo, en el archivo BSDL de la 712881084 se define una frecuencia máxima para TCK de 10 MHz: attrbuie TAP_SCAN_IN of TI ¿signal is true; attribute TAP.SCAN_MODE of TMS : signal s true; attribute TAP_SCAN_OUT Of TDO: signal is true; ttbute TAP_SCAN_CLOCK of TCK: signal s (10.086 BOTH); Guillermo Jaquenod, 2001 86 VHDL: Lenguaje de descripción de hardware BSDL: códigos de las instrucciones ¡Como estos códigos no están definidos en la norma, este campo indica valor y longitud de cada instrucción. En la EPM? 128SL.C84: attribute INSTRUCTION LENGTH o! EPM71285L84 : ently ls 10; attribute INSTRUCTION_OPCODE ol EPI71285L84 : entAy ls "BYPASS (1111111111), EXTEST (0000000000)," 8 "SAMPLE (0001010101), IDCODE (0001011001)"; attribute INSTRUCTION CAPTURE ol EPM71285L84 : ently is "0101010101"; attribute IDCODE. REGISTER of EPM71285L84: entityis "0000'%. --4-bIt Version 0111000100101000"8 --15-bit Part Number (hex 7128) "000011011108 --11-bA Manufecturer' identiy "1%; Mandatory LSB BSDL: relación entre registros e instrucciones La descripción del modo de acceso a cada registro indica qué registro es ubicado entre TDI y TDO para cada diferente instrucción attribute REGISTER_ACCESS of XYZ : entity is "<registro»(<instruccion>|,<instruccion»), "8. *<registro»(<instruccion»[ <istruccion») *; En la EMP71288L084 attribute REGISTER_ACCESS of EPM71288L84 : entity 5 "DEVICE 1D (IDCODE)'; BSDL: descripción del registro de TEST periférico La descripción del registro de test, finalmente, contiene una identificación de cada celda de test a que pala está asociada, y su modo de control. En la EPM7128SLC84: attribute BOUNDARY_LENGTH of EPM7128SLB4 : entiy is 288; atribute BOUNDARY_REGISTER of EPM71288L84 : entiy is -BSC group 0 lor dedicated input pin 84 0 (8C_4,1N84, input, X)1 (8C_4, ntemal, X),2(8C_4,ntemal, X).*8 -BSC group 2or VO pin 81 *5 (8C_4,1081,input,X),7 (8C..1,*control,0), 8 (8C_1,1081,0utput3X,7.0.2),"8 asi sigue hasta completarlas 96 celdas triples de la 7128 --BSC group 35 for dedicated input pin 1 1285 (BC_4, IN, input, X),286 (BC_4, *, internal, X),287 (B8C_4, *, intemal, X)"; Descripcion de una pata bidireccional 5 (8C_4,1081, input, X) — Celda tipo BC_4 - Asociada alport 1081 - Opera como entrada - Valor inicial desconocido 7 (8C_1,*contro, 0) - Celda tipo BC_1 = Opera en areas de control 7 - Valor inicial cero 8(8C_1,/081,output3.X.7.0,2) - Celda tipo BC_1 8l - Asociada alpin 1081 - Opera como salda Tristate coa Toa Tae Valoriiial desconocido - La celda 7, en '0, la pone en TrState ca soe, 6 dela celda apra”! "Lo [ Descripcion de la pata de entrada dedicada IN1 285 (BC_4, IN1, input, X): — Celda ipo BC_4 — Asociada al port IN1 — Opera como entrada — Valor inicial desconocido 286 (BC_4, *, internal, X) 287 (BC_4, *, internal, X) — Celdas tpoB0.4 — No asociadas a ningun port — De uso intemo — Valor inicial desconocido HSDL: superset de BSDL + Creado por Texas Instruments, el Hierarchical Scan Description Language (HSDL) complementa al BSDL, usando las mismas sentencias de VHDL + HSDL permite salir del dispositivo y generar atributos adicionales de la norma IEEE 1149 indicando cómo los dispositivos IEEE 1149 están conectados a nivel de plaqueta y de sistema; para ello agrega dos nuevos “packages” Las entidades en HSDL permiten describir tanto modulos como dispositivos. HSDL cubre tres area no incluidas en BSDL + Descripción de las redes de interconexión a tesiear, a nivel de plaqueta o de módulo + Descripción de plaquetas con arquitecturas dinámicas y/o reconfigurables. + Facilidad de uso y mejoras en el proceso de diseño interactivo, debug, y verificación BSDL y HSDL pueden ser usados conjuntamente para generar una descripcion completa del dispositivo en tes! ('unit under test”, o UUT) Guillermo Jaquenod, 2001
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved