programacion hdl

Upload: alberto-cgs

Post on 07-Jan-2016

10 views

Category:

Documents


0 download

DESCRIPTION

Descripción básica de la programación HDL

TRANSCRIPT

1.6 HDL (LENGUAJE DE DESCRIPCIN DE HARDWARE) IntroduccinUn lenguaje de descripcin de hardware (HDL, Hardware Description Lenguage) es similar a un lenguaje de programacin tpico, salvo que en HDL sirve para describir hardware en lugar de un programa que la computadora ejecutar. Hay muchos HDL comerciales. Algunos son sujetos a derechos de propiedad pero en este trabajo se utiliza solo un leguaje que apoyan prcticamente todo los comercios que ofrecen tecnologa de hardware digital y oficialmente se respalda como una norma del Instituto De Ingenieros Elctricos Y Electrnicos (IEEE, Intitute of Electrical and electronics Enginners).Dos HDL son normas de IEEE: VHDL (Very High Speed Integrated Circuit Hardware Description Lenguage: Lenguaje de descripcin de hardware de circuitos integrados de muy alta velocidad) y Verilog VHDL. Ambos lenguajes tiene amplio uso en la industria.1.6.1 VERILOGVerilog es el HDL ms comnmente utilizado en el diseo, implementacin y verificacin de circuitos digitales, adems que es ms fcil de aprender, fue originalmente estandarizado en el IEEE Estndar 1364 -1995 y posteriormente revisado en el IEEE 1361 -2001.Verilog describe un sistema digital como un conjunto de mdulos. Cada uno de estos mdulos tiene una interfaz a otros mdulos.1.6.2 VHDL La primera versin de VHDL se llam VHDL-87 y fue el primer HDL en ser estandarizado por IEEE a travs del estndar IEEE 1076, el mismo que se complement posteriormente con el estndar IEEE 1164.A pesar de que VHDL se puede simular totalmente, no todas las contriciones son sintetizables EL cdigo se guarda en un archivo con el mismo nombre de la entidad (Elemento de estructura) y extensin vhd.Este cdigo puede ser concurrente (paralelo) o secuencial. Solo las instrucciones ubicadas dentro los procesos, funciones o procedimientos son ejecutadas secuencialmente. Para realizar un cdigo VHDL es necesario al menos conocer: su estructura, como utilizar cada uno de los elementos de dicha estructura (Declaracin de libreras, entidad y arquitectura), los operadores y atributos que se pueden utilizar.

1.6.2.1 Unidades Bsicas de diseo La estructura general de un programa en VHDL est formada por mdulos o unidades de diseo, cada uno de ellos compuesto por un conjunto de declaraciones e instrucciones que definen, describen, estructuran, analizan y evalan el comportamiento de un sistema digital. Existen cinco tipos de unidades de diseo en VHDL: declaracin de entidad (entity declaration), arquitectura (architecture), configuracin (configuration), declaracin del paquete (packege declaration) y cuerpo del paquete (packege body). En el desarrollo del programa del en VHDL pueden utilizarse o no tres de los cinco mdulos, pero dos de ellos (entidad y arquitectura) son indispensables en la estructuracin de un programa.1.6.2.1.1 Declaracin de libreras Es una coleccin de partes de cdigo usadas comnmente. En la declaracin se deben incluir todas las libreras que van a ser utilizadas en el diseo.La sintaxis de la librera es de la siguiente manera: LIBRARY nombre_libreria;USE nombre_libreria.nombre_paquete.parte_paquete;

1.6.2.1.2 EntidadEspecifica todos los puertos de entrada y salida. Su sintaxis se muestra a continuacin:

ENTITY nombre_entidad IS PORT( Nombre_puert:modo_seal tipo_seal );END nombre_entidad;

Todos los puertos deben tener: Nombre, Modo de la seal (la direccin en la que van los datos, entrada o salida) y tipo de seal.

Modo de la seal

Puede ser: modo in (representa seales de entrada, usado para reloj, entradas de control y datos), Modo out (representa seales de salida), Modo buffer (representa seales de realimentacin interna), Modo inout (representa seales bidireccionales, de entrada y salida).

Tipo de seal

Los tipos de seal se encuentran en diferentes paquetes y libreras, los ms usados son: Bit (Puede tomar valores lgicos de 0L y 1L), Bit vector (Vector de Bits, representa un conjunto de bits). Integer (representa un numero entero), Natural (representa enteros no negativos), Std_logic (Puede tomar 8 valores diferentes, 4 de ellos sintetizables: Desconocido, 0L, 1L y de alta impedancia), Std_logic vector (representa un vector de elementos Std_logic).

1.6.2.1.3 Arquitectura Contiene el cdigo que describe el comportamiento del circuito. Su sintaxis es la siguiente:

ARCHITECTURE nombre_arquitecture OF nombre_entidad IS [declaraciones]BEGIN (Codigo)END Nombre_arquitectura;

La arquitectura tiene dos partes: la declarativa (que se utiliza slo cuando se requiere declarar seales y constantes internas a la arquitectura) y la del cdigo. En la arquitectura se describen las operaciones que se realizan con los puertos de entrada para obtener los puertos de salida descritos en la entidad.

1.6.2.2 Operadores y atributos

Son smbolos que indican que se debe llevar a cabo operaciones especficas, de los cuales se deben conocer antes de comenzar a realizar cdigos en VHDL.

1.6.2.2.1 Operadores

Los operadores predefinidos ms utilizados son:

Operadores de asignacin Entre ellos: (asigna valores a elementos individuales de un vector).

Operadores LgicosRealizan operaciones lgicas, son: not, and or, nand, nor, xor, xnor.

Operadores aritmticosRealizan operaciones aritmticas. Los sintetizables son: + (suma),- (resta), * (multiplicacin), / (divisin) y ** (Exponenciacin).

Operadores de Comparacin Realizan comparaciones. Son: = (igual a), /= (diferente de), < (Menor que), > (mayor que), = (mayor o igual que).

1.6.2.2.2 Atributos

Los atributos se aplican a una seal para obtener informacin especfica sobre ella:

SealAtributo

Atributos de funcin:SealEvent:Devuelve TRUE si la seal cambia.SealLAST_VALUE: Devuelve el valor de la seal antes del ltimo evento.SealDRIVING_VALUE:Devuelve el valor actual de la seal.Atributos de valor:Seal_escalarLEFT/RIGHT:Devuelve el valor ms a la izquierda/derechaSeal_escalarHIGH/LOW:Seales de Rango:Seal _arrayRANGE: Devuelve el rango del array (como se haya definido).

1.6.2.3 Cdigos de Programacin en la arquitectura

La gran ventaja que presenta VHDL para definir una arquitectura, radica en la manera en qu pueden describirse los diseos; es decir, es decir mediante el algoritmo de programacin empleado se puede describir desde el nivel de compuertas hasta sistemas complejos.

De manera general, los estilos de programacin utilizados en el diseo de arquitecturas se clasifican como: Estilo funcional Estilo por flujo de datos Estilo estructural

El nombre asignado a estos estilos no es importante, ya que es tarea del diseador escribir el comportamiento de un circuito utilizando uno u otro estilo que a su juicio le sea el ms acertado.

1.6.2.3.1 Descripcin funcional

Se trata de una descripcin funcional porque expone la forma en que trabaja el sistema; es decir, las descripciones consideran la relacin que hay entre las entradas y las salidas del circuito, sin importar como est organizado en su interior, la descripcin funcional se basa principalmente en el uso de procesos y de declaraciones secuenciales, las cuales permiten modelar la funcin con rapidez.

Declaraciones Secuenciales

Son aquellas que nos permiten modelar la funcionalidad de un componente. Les podemos clasificar en sentencias de asignacin (a variable o a seal), sentencias condicionales (if, case), sentencias iterativas (loop, exit, next), otras sentencias (wait, assert, null) y llamadas a subprogramas. A continuacin se resume la sintaxis de cada una de ellas.Las sentencias wait se utiliza para suspender la ejecucin de un proceso. Su sintaxis es: [etiqueta:] wait [on seal {, ...}] [until expresin_booleana] [for expresin_tiempo]

La asignacin a seal como sentencia secuencial presenta la siguiente sintaxis:

[etiqueta:] nombre_seal sentencias_secuenciales; {when valor => sentencias_secuenciales;}end case;

Puede utilizar palabras clave others en valor para especificar todos los dems rangos no declarados especficamente. En ese caso hay que especificar, esta opcin ultima, despus de los dems casos.La sentencia loop se utiliza para ejecutar un grupo de sentencias secuenciales de forma repetida. El nmero de repeticiones puede controlarse en la misma sentencia, usando algunas de las opciones que esta ofrece. Su sintaxis es:[etiqueta:] [while condicin_booleana | for control_repeticin] loop sentencias_secuenciales;end loop [etiqueta];

Podemos usar la sentencia loop si ningn tipo de control sobre el nmero de repeticiones del bucle, de forma que se provoque la ejecucin infinita del grupo de sentencias secuenciales especificadas. La sentencia exit est relacionada con la sentencia loop, y ofrece una forma de terminar la ejecucin del bucle. Su sintaxis es:[etiqueta:] exit [etiqueta_loop] [when condicin_booleana];

1.6.2.3.2 Descripcin por flujo de datos

La descripcin por flujo de datos indica la forma en que los datos se pueden transferir de una seal a otra sin necesidad de declaraciones secuenciales (if-then-else). Este tipo de descripcin permite definir el flujo que tomaran los datos entre mdulos encargados de realizar operaciones. En esta tipo de descripcin se pueden utilizar dos formato: mediante instrucciones, when else o por medio de ecuaciones booleanas.

Declaraciones concurrentesLas declaraciones concurrentes son aquellas que se ejecutan en paralelo por lo que no estn incluidas en ningn proceso, si no que aparecen en la arquitectura del modelo.Un proceso es una sentencia concurrente que define un comportamiento a travs de sentencias secuenciales. Cualquier sentencia concurrente o secuencial en VHDL tiene su proceso equivalente. La sintaxis general de un proceso es:[etiqueta:] process [(nombre_seal {, ...})] [is]declaraciones;begin sentencias_secuenciales;end process [etiqueta];

Las asignaciones a seal pueden darse en el mundo concurrente. Su sintaxis es muy similar a la asignacin secuencial:[etiqueta:] nombre_seal