introduccion de lenguajes vhdl

33
UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERÍA Y ARQUITECTURA ESCUELA DE INGENIERÍA ELÉCTRICA GUÍA 1 DE SISTEMAS DIGITALES “INTRODUCCIÓN A LOS LENGUAJES HDL”

Upload: cez-martinez

Post on 23-Sep-2015

260 views

Category:

Documents


7 download

DESCRIPTION

Electrica digitalEjercicios con compuertas basicasLenguaje VHDL

TRANSCRIPT

UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERA Y ARQUITECTURAESCUELA DE INGENIERA ELCTRICA

GUA 1 DE SISTEMAS DIGITALESINTRODUCCIN A LOS LENGUAJES HDL

INDICE:

INTRODUCCION:Hoy en da, la demanda tecnolgica crece aceleradamente en todas las reas de la vida y ramas de la ciencia e incluso en la vida cotidiana. Debido a este crecimiento los diseos de los sistemas tecnolgicos electrnicos digitales que satisfacen dicha demanda cada vez se hacen mucho ms grandes y complejos, por tanto necesario optimizar y agilizar el proceso de creacin y simulacin de dichos sistemas digitales. En este documento se muestra un mtodo muy conocido y bastante eficiente orientado a agilizar el diseo (primeras etapas) de los sistemas digitales, un mtodo que permite la simplificacin rpida y optima de expresiones booleanas, as como tambin se introducen aspectos bsicos de herramientas productivas y tiles en la simulacin de circuitos electrnicos digitales. Se aplicaran dichos mtodos a dos circuitos electrnicos especficos (convertidores), y finalmente se tratara el tema de las libreras que existen en el lenguaje VHDL y como pueden ser utilizadas en los programas para reutilizar cdigo VHDL y facilitar la programacin haciendo uso de ciertas funciones que se incluyen en dichas libreras e incluso facilitar la lectura del cdigo al hacer de estos cdigos mucho ms ligeros.

OBJETIVOS:

Generales: Conocer y/o recordar la sintaxis bsica del lenguaje VHDL. Conocer el mtodo de simplificacin de mapas de Karnaugh para expresiones lgicas de los circuitos digitales. Conocer y utilizar aspectos bsicos y generales de la herramienta TINA para la creacin y simulacin de circuitos digitales.

Especficos: Aplicar el mtodo de simplificacin de los mapas de Karnaugh para la creacin de convertidores de cdigos BCD Utilizar la herramienta TINA para la creacin de componentes (macros con extensin .TSM) conversores de cdigos BCD . Utilizar la herramienta TINA para la creacin de circuitos (con extensin .TSC), usando componentes (.TSM) propios programados en el lenguaje VHDL.

MARCO TEORICO:Mtodo de Simplificacin de Karnaugh.

El mtodo de Karnaugh proporciona una forma sistemtica para simplificar funciones booleanas.La clave para realizar este proceso consiste en representar la funcin que se desea simplificar usando lo que se conoce como mapa de Karnaugh.

Si se aplica adecuadamente, este mtodo genera las expresiones ms simples posibles, tanto en forma de suma de productos como de producto de sumas.Un mapa de Karnaugh es similar a una tabla de verdad ya que muestra los posibles valores de la salida para cada combinacin posible de las entradas.

En lugar de organizarse en filas y columnas, un mapa de Karnaugh es un conjunto de celdas en el que cada celda representa un valor binario de las entradas.Las celdas se distribuyen de manera que simplificar una determinada expresin consiste en agrupar adecuadamente algunas de las celdas.

El nmero de celdas de un mapa de Karnaugh es igual al nmero total de posibles combinaciones de los valores de las variables de entrada.

Por ejemplo, un mapa de Karnaugh de 2 variables tendra un total de 2^2=4, uno de 3 tendra 2^3=8 y uno de 4 variables tendra 2^4=16 celdas:

Cuadriculas en un mapa de Karnaugh

Adyacencia de celdas:Las celdas de un mapa de Karnaugh se disponen de manera que entre dos celdas adyacentes solo cambie el valor de una nica variable (solo cambia 1 bit).Fsicamente, cada celda es adyacente a las que estn situadas inmediatamente junto a cualquiera de sus cuatro lados.Una celda no es adyacente a aquellas que tocan diagonalmente alguna de sus esquinas.Se dice que existe adyacencia cclica cuando las celdas de la fila inferior son adyacentes a la superior o tambin cuando las celdas de la columna izquierda son adyacentes a la derecha. Podemos pensar que el mapa de Karnaugh se dobla como si fuera un cilindro, de manera que se toquen los extremos inferior-superior o izquierda-derecha.Herramientas de simulacin TINA: TINA tiene a su disposicin varias ediciones, cada una se ajusta de acuerdo a las necesidades de cada individuo, segn el fin que se le desee dar al software. TINA, puede ser usado fcilmente en reas de diseo de circuitos lineales, Microelectrnica, Electrnica de Potencia, Microprocesadores y Micro controladores, Circuitos digitales, y otros. Tiene un editor y depurador de cdigo VHDL Trabaja con circuitos anlogos, digitales e incluso mezclas de ambos.

Permite usar Sub Circuitos, para manejar de forma ms fcil y compacta, grandes circuitos. Tiene a su disposicin un gran repertorio de circuitos integrados disponibles en el mercado, as como otros de propsito ilustrativo.

No necesita la compilacin previa de cdigo VHDL, ya que lo interpreta automticamente.

DESARROLLO DE LOS CIRCUITOS

CONVERTIDOR DE CODIGOS BCD (7421, Exceso 3, 2421 y 5421) A CODIGO 8421:

Se desea realizar un convertidor cuyas entradas sean combinaciones validas de los cdigos 7421, Exceso 3, 2421 y 5421 y cuya salida sea el correspondiente cdigo 8421 para la combinacin introducida.

Se sabe que si un circuito realiza 2^n operaciones entonces se necesitan n variables de control (que tambin son variables de entrada). En el caso del convertidor a construir en este apartado se realizaran 2^2=4 operaciones, es decir que se usaran 2 variables de control. Cada combinacin de cdigos de entrada posee cuatro bits, por tanto se suman 4 variables de entrada; por lo tanto en total se tienen 6 variables de entradas las cuales sern llamadas A, B, C, D, E, F. En la salida se tendr una combinacin valida del cdigo 8421 que al igual que los dems cdigos consta de cuatro bits, y por lo tanto se tendrn 4 variables de salida las cuales sern llamadas w, x, y, z. Si en la entrada se obtiene una combinacin no valida cualquiera de los cdigos de entrada entonces en la salida se colocaran ceros en las 4 variables.

El convertidor ser programado en el lenguaje VHDL (VHSIC Hardware Description Language), y en el cdigo se usaran nicamente compuertas bsicas ( AND, OR, y NOT).

Se usara TINA para crear el componente que realiza la conversin de los cdigos, y adems para hacer la simulacin de este convertidor y verificar si este funciona correctamente.

Con lo que se ha dicho hasta este momento se puede ya construir la tabla de verdad correspondiente al circuito en cuestin. A continuacin se presenta la tabla de verdad que corresponde a este circuito adems de las ecuaciones con minterminos que describen al circuito.

#ABCDEFwxyz

00000000000

10000010001

20000100010

30000110011

40001000100

50001010101

60001100110

70001110000

80010000111

90010011000

100010101001

110010110000

120011000000

130011010000

140011100000

150011110000

160100000000

170100010000

180100100000

190100110000

200101000001

210101010010

220101100011

230101110100

240110000101

250110010110

260110100111

270110111000

280111001001

290111010000

300111100000

310111110000

#ABCDEFwxyz

321000000000

331000010001

341000100010

351000110011

361001000100

371001010000

381001100000

391001110000

401010000000

411010010000

421010100000

431010110101

441011000110

451011010111

461011101000

471011111001

481100000000

491100010001

501100100010

511100110011

521101000100

531101010000

541101100000

551101110000

561110000101

571110010110

581110100111

591110111000

601111001001

611111010000

62111100000

631111110000

w = ( 9,10,27,28,46,47,59,60 )x = ( 4-6,8,23-26,36,43-45,52,56-58 )y = ( 2,3,6,8,21,22,25,26,34,35,44,45,50,51,57,58 )z = ( 1,3,5,8,10,20,22,24,26,28,33,35,43,45,47,49,51,56,58,60 )Para la obtencin de las expresiones correspondientes a cada una de las variables de salida se usara el mtodo de Mapas de Karnaugh. Se tienen 6 variables de entrada por lo tanto el mapa usado ser un mapa de 6 variables (64 cuadros). En este caso no se est utilizando dont care conditions. A continuacin se muestran los mapas K para cada uno de las variables, se incluyen las agrupaciones, se ha utilizado un color diferente para cada agrupacin: Ecuacin resultante:

Ecuacin resultante:

Ecuacin resultante:

Ecuacin resultante:

Una vez conocemos las expresiones de las variables de salida podemos pasar a la codificacin en el lenguaje VHDL. Es de recordar que solamente se usaran las compuertas AND, OR y NOT. Para la codificacin se debe abrir un editor de texto plano en este caso se est usando un bloc de notas y se debe escribir el cdigo que se muestra a continuacin:

En el cdigo mostrado se han definidos las salidas w, x, y, z con las ecuaciones obtenidas mediante el anlisis de los mapas K.El archivo debe ser guardado con la extensin .vhd, en este caso se le ha colocado el nombre de convertidor_codigos.vhd.Una vez se tiene el cdigo listo se procede a la realizacin del componente y el circuito (esquema del circuito) en TINA. TINA usa la extensin .TSM para los componentes y la extensin .TSC para los esquemas o circuitos que se crean.Primero se realiza el componente, el componente es el dispositivo que permitir realizar la conversin de cdigos, el componente usara el cdigo vhdl que se escribi anteriormente. Para iniciar la creacin del componente se debe abrir TINA y dirigirse a la opcin mostrada en la figura a continuacin (paso 1):Aparecera el siguiente cuadro de dialogo que se muestra en la figura (paso 2): Figura paso 1

Figura Paso 2En la figura del paso 2 se debe digitar lo que est enmarcado con amarillo, luego desmarcar la casilla indicada con el color verde, y finalmente pulsar el botn enmarcado con el color rojo.

Al presionar el botn debemos navegar hasta encontrar el archivo .vhd donde se encontraba el cdigo que se escribi anteriormente, cabe destacar que se deben filtrar los archivos mostrados para que se muestren los archivos .vhd: Se selecciona el archivo .vhd y finalmente pulsar Abrir y luego Ok.

A continuacin se debe guardar el componente (extensin .TSM) Una vez hecho lo anterior se puede usar el componente que se acaba de crear. El componente ser usado en el esquema o circuito final. Para realizar el esquema primero se agrega el componente recin creado para ello se debe ir a la siguiente opcin: En la ventana que aparece se busca el archivo .TSM recin creado y se pulsa el botn Abrir. Se tendr una imagen como la siguiente figura A:Se debe dar click en cualquier parte del rea de trabajo de TINA para poder introducir el componente como en la siguiente figura B: Figura BFigura A

Las seales de entrada sern controladas mediante switches high-low para introducirlos en el esquema en la barra de componentes de Tina se pulsa switches y luego se selecciona el switch marcado con verde como en la siguiente figura:

Al introducirlo al rea esquema se tendr lo siguiente: Cada switch le corresponde a una variable de entrada, por tanto se le cambiara el nombre de cada switch dndole doble click y luego cambiando el parmetro que se encuentra marcado en la siguiente figura (el switch mostrado corresponde a la variable de entrada A): Se realiza el mismo proceso para los otros switches y se realiza la conexin quedando el esquema como se muestra en la siguiente imagen: Para visualizar las salidas se agregaran leds indicadores, estos se muestran en la imagen siguiente:

Finalmente el circuito queda como se muestra en la siguiente imagen:

Despus de haberlo creado procedemos a guardarlo (con extensin .TSC).Para realizar la simulacin y prueba del correcto funcionamiento del componente y en general del circuito se pulsa el botn que se muestra a continuacin: Algunos resultados de la simulacin se muestran a continuacin (los resultados pueden verificarse viendo la tabla de verdad):

CONVERTIDOR DE 8421 A SIETE SEGMENTOS (DISPLAY)

Desarrollar y simular un convertidor de cdigo 8421 a 7 segmentos utilizando TINA como simulador y un display de 7 segmentos de la siguiente forma:

El convertidor tendr en la entrada slo cdigos vlidos del 8421 y deber ser creado utilizando el cdigo VHDL para crear el elemento en TINA, no se podr utilizar un decodificador ya existente en TINA, estrictamente utilizar solo compuertas bsicas. El display 7 segmentos ser el que se encuentra disponible en TINA. Las entradas A, B, C y D sern generadas con switches que ya se encuentran en TINA e irn conectados a tierra o Vcc (5V).La tabla de verdad que se ha creado para resolver el problema se muestra a continuacin:#ABCDtuvwxyz

000000000001

100011001111

200100010010

300110000110

401001001100

501010100100

601100100000

701110001111

810000000000

910010000100

1010101111111

1110111111111

1211001111111

1311011111111

1411101111111

1511111111111

Nuevamente se usa el mtodo SOP para el planteamiento de las ecuaciones con los minterminos:t = m(1,4,10-15)u = m(5,6,10-15)v = m(2,10-15)w = m(1,4,7,10-15)x = m(1,3-5,7,9-15)y = m(1-3,7,10-15)z = m(0,1,7,10-15)Una vez planteadas las ecuaciones se procede a obtener las expresiones correspondientes para las variables de salida mediante los Mapas de Karnaugh. Los mapas y expresiones correspondientes al problema del convertidor 8421-7 Segmentos se muestran a continuacin:

Debido a que son 8 variables de salida entonces tenemos 8 mapas, adems debido a que las variables de entrada son cuatro cada mapa contiene 16 cuadros.Una vez tenemos las expresiones correspondientes a las variables de salida se puede seguir con la creacin del cdigo para el componente en lenguaje VHDL. En la siguiente imagen se muestra el cdigo: Este cdigo debe ser guardado con la extensin .vhd.Para el siguiente paso (creacin del componente) abrimos TINA y creamos el componente o macro tal y como se explic en el ejercicio anterior (convertidor de 7421, exceso3,5421 y 2421 a 8421). Y finalmente construimos el circuito tal como se muestra a continuacin: El Display que se ha agregado al circuito se encuentra en la barra de componentes en la categora Meters. Para simularlo basta con presionar nuevamente el botn de simulacin: Algunas capturas del funcionamiento del circuito se muestran en las siguientes imgenes: INVESTIGACION:LIBRERIAS EXISTENTES EN EL LENGUAJE VHDL:Un modelo VHDL se compone de un conjunto de unidades de diseo. Una unidad de diseo es la mnima seccin de cdigo compilable separadamente. Es un concepto muy simple, puede entenderse recurriendo a conocimientos bsicos sobre lenguajes de programacin: no se puede editar un fichero, escribir nicamente una sentencia IF o CASE y compilar el fichero, porque una sentencia no es una unidad de cdigo compilable. Podr compilarse un programa, una funcin o un conjunto de declaraciones, o cualquier cosa que el lenguaje especifique.Las unidades de diseo VHDL se construyen combinando construcciones del lenguaje (sentencias, declaraciones, etc.). En VHDL existen cinco tipos distintos de unidades de diseo, cada una de las cuales est pensada para el desempeo de una determinada funcin en el modelado del hardware. Las unidades se clasifican en primarias y secundarias (de acuerdocon las relaciones de dependencia jerrquica que mantienen entre s: una unidad secundara est asociada siempre a una unidad primara). Algunas entidades son: la entidad, la arquitectura, los paquetes y el cuerpo de los paquetes. Una pieza de VHDL est compuesta por lo menos de tres componentes bsicos: Libreras, la entidad y la arquitectura.

Una librera es un conjunto de piezas de cdigo que son utilizadas a menudo. Agregar estas piezas a las libreras permite ser rehusadas y compartidas por otros diseos. El cdigo dentro de una librera es usualmente escrito en forma de funciones, procedimientos o componentes que estn ubicadas dentro de paquetes.

Los paquetes desempean en VHDL funciones similares a las de las libreras en lenguajes de programacin de alto nivel. La Declaracin de Paquete es una unidad primaria que contiene la vista pblica de los paquetes. El cuerpo de los paquetes es una unidad secundaria asociada a una declaracin de Paquete. Se utiliza, si resulta necesario, para definir los elementos declarados en este.Las bibliotecas (libraras) y los paquetes (packages) contenidos en ellas (en las libreras) son elementos fundamentales en VHDL. En cualquier descripcin es habitual hacer uso de una serie tipos, operadores, objetos, atributos, subprogramas, componentes, etc. definidos en determinados paquetes, estndar o definidos por el propio usuario. Para ello es necesario hacer dichos paquetes visibles.Para organizar ciertos diseos conviene definir ciertos elementos en una biblioteca, que luego se usar en el programa principal. En la biblioteca se pueden incluir los ficheros de algunos elementos, que incluyan las entidades y arquitecturas. Se incluyen tambin los paquetes ("packages"). Los paquetes permiten introducir componentes (cuya definicin de entidad y arquitectura puede estar en otro fichero), tipos, funciones y procedimientos. Tienen una parte declarativa y otra descriptiva. Por ejemplo, las sentencias que estn casi siempre a principio de todo programa son:1. library ieee;2. use ieee.std_logic_1164.all;Esto indica el uso de la librera "ieee"; dentro de ella se usa el paquete "std_logic_1164" (sentencia use); y dentro del paquete se usan todos los elementos (".all"). Si se necesitase slo uno, bastara poner el nombre del elemento.Por defecto, todas los modelos en VHDL contienen las siguientes sentencias: 1. library std, work;2. use std.standard.all; La primera declaracin hace que para la entidad de diseo (entidad + arquitectura(s)) que sigue sean encuentren visibles dos bibliotecas: la estndar (std) y la de trabajo (work). La biblioteca std de VHDL contiene dos paquetes (standard y textio), en los que se encuentran definidos los tipos bsicos necesarios para la descripcin de circuitos, tales como bit, integer, character, etc., as como algunas funciones y rutinas bsicas. Por defecto el paquete standard es siempre visible gracias a la segunda sentencia, que incluye dicho paquete en su totalidad. Por otro lado, la biblioteca work tambin resulta visible en todo momento. Esta biblioteca es la de trabajo, en la que se almacenan compiladas todas las unidades de diseo, es decir, todas las entidades, arquitecturas, configuraciones y paquetes que forman parte del diseo. La denominacin "work" es la que se usa por defecto, pero en general las herramientas de diseo con VHDL permiten cambiar el nombre. Para incluir una librera a un diseo basta con utilizar la palabra reservada LIBRARY seguida del nombre de la biblioteca a utilizar. Adems, tambin es posible hacer visibles elementos internos de estas bibliotecas con el uso de la sentencia USE, como se explic en el apartado anterior. En el caso de querer hacer visible todos los elementos de un paquete se puede utilizar la palabra reservada ALL. Al menos tres paquetes son necesarios: Ieee.std_logic_1164 de la librera IEEE. Standard de la librera std. Work de la librera work. Como la librera std y work mencionadas anteriormente son siempre visibles no hacen falta invocarlas. Por un lado est la librera work, que contiene las unidades que se estn compilando y es donde salvamos nuestro diceo, y por otro lado, la librera std que contiene los paquetes standard y textio, las cuales contienen definiciones de tipos y funciones para el acceso a ficheros de texto. La librera ieee es necesario agregarla si se van a usar tipos de datos std_logic (o std_ulogic) que son tipos de datos multi-evaluados.Dentro de la IEEE hay varios paquetes, incluyendo: std_logic_1164: tipo de datos multi-evaluados (8 niveles). std_logic_arith: especifica tipos de datos con y sin signo utilizados en operaciones aritmticas y de comparacin. Contiene tambin funciones para realizar conversiones entre tipos de datos conv_integer(p), conv_unsigned(p,b), conv_signed(p,b), conv_std_logic_vector(p,b). std_logic_signed: Contiene funciones que permiten realizar operaciones con tipos std_logic_vector como si fueran datos con signo. std_logic_unsigned: Contiene funciones que permiten realizar operaciones con tipos std_logic_vector como si fueran datos sin signo.La forma concreta de organizar los directorios y ficheros depende de la herramienta informtica concreta que se utilice.

OBSERVACIONES:Es necesario hacer algunas observaciones con respecto a la creacin y/o simulacin de los circuitos que se han descrito en este documento.-En la creacin del cdigo para ambos circuitos se debe evitar colocar la formula correspondiente a una de las variables de salida en una nica lnea, ya que si la expresin es demasiada larga producir error a la hora de crear el componente en TINA. Se recomienda colocar la formula en trozos y en diferentes lneas.-En la simulacin con TINA del circuito conversor de mltiples cdigos a cdigo 8421 los leds inician en el estado ON por lo que es necesario introducir ciertas combinaciones para hacer que todos los leds queden en el estado OFF, despus de esto si es posible ver el correcto funcionamiento del circuito probando con cada una de las combinaciones de entrada.

CONCLUSIONES:-Los resultados de la simulacin de los dos circuitos creados son correctos y corresponden con los datos mostrados en las tablas de verdad.-Es evidente, y se ha demostrado en este documento que el mtodo de simplificacin de los mapas de Karnaugh es una gran herramienta que permite obtener resultados correctos y ptimos si se utiliza de la manera adecuada.-Al hacer uso de una herramienta de creacin y simulacin de circuitos electrnicos digitales como TINA se pueden crear circuitos electrnicos grandes sin mayores complicaciones, adems es mucho ms confortable usar herramientas interactivas para la simulacin de estos sistemas.

BIBLIOGRAFIA:http://serdis.dis.ulpgc.es/~itis-dl/Teoria%20VHDL/Lenguaje%20VHDL%20EUP%20Teruel.pdfhttp://microe.udea.edu.co/download/materias/circuitos-digitales-1/Tutoriales/Tutoriales%20VHDL/Clase%2010.pdfhttp://www.dte.uvigo.es/vhdl/c7.htmlhttp://opencores.org/uploads/1361909682_4_Simulacion_Funcional_AECID.pdfhttp://es.wikibooks.org/wiki/Programaci%C3%B3n_en_VHDL/Organizaci%C3%B3n_del_c%C3%B3digo#Librer.C3.ADas