manual de vhdl: síntesis lógica para plds / javier garcía...

24
Javier García Zubía Manual de VHDL: Síntesis lógica para PLDs 2.ª edición revisada y ampliada Universidad de Deusto Ingeniería

Upload: trinhquynh

Post on 04-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Javier García Zubía

Manual de VHDL:Síntesis lógica para PLDs2.ª edición revisada y ampliada

Universidad deDeusto

• • • • • • • •

Universidad deDeusto

• • • • • • • •

Man

ual d

e V

HD

L: S

ínte

sis l

ógic

a pa

ra P

LD

s / J

avie

r G

arcí

a Z

ubía

Inge

nier

ía

Cub Manual VHDL 2ed (21mm) 11/1/06 12:29 Página 1

Page 2: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Manual de VHDL:síntesis lógica para PLDs

Page 3: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Javier García Zubía

Manual de VHDL:síntesis lógica para PLDs

2005Universidad de Deusto

Bilbao

2.ª edición revisada y ampliada

Page 4: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Ninguna parte de esta publicación, incluido el diseño de la cubierta, puede ser reproducida, almacenada o transmitida en manera alguna o por ningún medio, ya sea eléctrico, químico, mecánico, óptico, de grabación o de fotocopia, sin permiso previo del editor.

Compuesto según diseño de JosuKa Díaz Labrador

Publicaciones de la Universidad de DeustoApartado 1 – E-48080 Bilbao e-mail: [email protected]

ISBN: 978-84-9830-716-0

Page 5: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

A Josuka Sanz Ruiz de Calvo

Page 6: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas
Page 7: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

vii

Índice

PRÓLOGO...................................................................................................XI

1. PRIMER CONTACTO CON VHDL .......................................................... 11.1 Objetivos ............................................................................................................ 11.2 Introducción ...................................................................................................... 1

1.2.1 Poniendo en marcha el ISE (Integrated SynthesisEnvironment) de Xilinx ........................................................................ 1

1.3 Un enunciado más complicado..................................................................... 121.4 Estilos de programación en VHDL .............................................................. 151.5 Otros enunciados ............................................................................................ 181.6 Un aviso ........................................................................................................... 21

2. SISTEMAS COMBINACIONALES BÁSICOS ............................................ 232.1 Objetivos .......................................................................................................... 232.2 Enunciados combinacionales ........................................................................ 23

2.2.1 Señales auxiliares................................................................................. 242.2.2 Codificador........................................................................................... 242.2.3 Decodificador....................................................................................... 282.2.4 Multiplexor........................................................................................... 322.2.5 Demultiplexor ...................................................................................... 342.2.6 Comparador ......................................................................................... 372.2.7 Conversores de código........................................................................ 39

2.3 Ejercicios .......................................................................................................... 422.3.1 Ejercicio 1 .............................................................................................. 422.3.2 Ejercicio 2 .............................................................................................. 432.3.3 Ejercicio 3 .............................................................................................. 452.3.4 Ejercicio 4 .............................................................................................. 462.3.5 Ejercicio ................................................................................................. 482.3.6 Ejercicio 6 .............................................................................................. 49

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 8: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Índice

viii

2.3.7 Ejercicio 7 ..............................................................................................512.4 Conclusiones ....................................................................................................53

3. SISTEMAS SECUENCIALES BÁSICOS..................................................... 553.1 Objetivos...........................................................................................................553.2 Conceptos de sistemas secuenciales .............................................................553.3 Registros ...........................................................................................................57

3.3.1 Registro paralelo-paralelo...................................................................583.3.2 Registro paralelo-paralelo con enable ...............................................593.3.3 Registro de desplazamiento ...............................................................613.3.4 Registro de desplazamiento derecha/izquierda .............................633.3.5 Registros universales ...........................................................................65

3.4 Contadores .......................................................................................................673.4.1 Contadores básicos ..............................................................................683.4.2 Contadores no básicos.........................................................................743.4.3 Contadores en cascada ........................................................................763.4.4 Divisores de frecuencia .......................................................................86

3.5 Ejercicios ...........................................................................................................903.5.1 Ejercicio 1 ..............................................................................................903.5.2 Ejercicio 2 ..............................................................................................903.5.3 Ejercicio 2 ..............................................................................................933.5.4 Ejercicio 3 ..............................................................................................973.5.5 Ejercicio 4 ..............................................................................................98

4. UN PRIMER SISTEMA COMPLEJO........................................................ 1034.1 Introducción...................................................................................................1034.2 Descripción funcional ...................................................................................103

4.2.1 Uso de los 7 segmentos multiplexados ...........................................1044.3 Descripción en bloques.................................................................................104

4.3.1 Generador del reloj de 200 hz...........................................................1054.3.2 Generador del reloj de 1 hz...............................................................1054.3.3 Contador..............................................................................................1064.3.4 Decodificador hexadecimal-7 segmentos .......................................1094.3.5 Visualizador........................................................................................1114.3.6 Programa completo............................................................................112

4.4 Simulación......................................................................................................1164.5 Implementar en FPGA..................................................................................116

4.5.1 Restricciones .......................................................................................1174.5.2 Grabar y probar..................................................................................123

4.6 Implementación en un CPLD ......................................................................1284.7 Ejercicios .........................................................................................................133

5. AUTÓMATAS....................................................................................... 1355.1 Introducción...................................................................................................1355.2 Autómatas de Moore y Mealy .....................................................................1355.3 Autómatas o FSM’s en VHDL .....................................................................136

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 9: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Índice

ix

5.3.1 Descripción VHDL de máquinas de estado................................... 1375.4 Ejemplos básicos ........................................................................................... 139

5.4.1 Detector de secuencia........................................................................ 1395.4.2 Contador de pulsos ........................................................................... 1455.4.3 Un pulso por nivel............................................................................. 149

5.5 Captura de una entrada asíncrona ............................................................. 1515.6 Ejercicio .......................................................................................................... 158

6. SISTEMA SECUENCIAL COMPLEJO ..................................................... 1596.1 Objetivo .......................................................................................................... 1596.2 Enunciado ...................................................................................................... 159

6.2.1 Primera solución................................................................................ 1596.2.2 Segunda solución............................................................................... 161

6.3 Proyecto Divisor ........................................................................................... 1696.3.1 Proceso de captura del dividendo y divisor. ................................. 1706.3.2 Proceso de división............................................................................ 1746.3.3 Visualización ...................................................................................... 1826.3.4 Filtrado de las señales de entrada ................................................... 1876.3.5 Implementación ................................................................................. 189

6.4 Proyectos opcionales .................................................................................... 2016.4.1 Proyecto opcional 1 ........................................................................... 2016.4.2 Proyecto opcional 2 ........................................................................... 2016.4.3 Proyecto opcional 3 ........................................................................... 201

7. LENGUAJE VHDL .............................................................................. 2037.1 Objetivos ........................................................................................................ 2037.2 Introducción .................................................................................................. 2037.3 Estilos en VHDL............................................................................................ 2057.4 Aspectos e instrucciones genéricas del VHDL ......................................... 206

7.4.1 Esquema general de un programa en VHDL ................................ 2067.4.2 Entidad, entradas, salidas y señales................................................ 2077.4.3 Tipos de datos .................................................................................... 2087.4.4 Operadores ......................................................................................... 209

7.5 Instrucciones de VHDL................................................................................ 2107.5.1 Instrucciones secuenciales................................................................ 2107.5.2 Instrucciones concurrentes............................................................... 212

7.6 Consejos de codificación.............................................................................. 213

BIBLIOGRAFÍA ........................................................................................ 217

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 10: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 11: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

xi

Prólogo

Desde la aparición de la electrónica digital en los años cincuenta se pensó endiseñar un circuito cuyas conexiones y lógica se adaptaran a las necesidades decada aplicación, pasando de los dispositivos fijos a los programables. No fuehasta muy avanzada la década de los años setenta cuando la Lógica Programablese hizo realidad. El primer paso estaba dado.

El siguiente paso fue facilitar su uso y programación. Así se pasó de romperfusibles mecanicamente (con un punzón) a romperlos eléctricamente consoftware. Ahora sabemos que para popularizar una tecnología no basta con queésta sea buena, es necesario que sea accesible.

El segundo paso fue dotar a la tecnología de los PLDs básicos (GAL, PAL,16L8, 16V8, 22V10, etc) de una programación cómoda y potente mediantesoftware. Aparecieron los primeros lenguajes de lógica programable: OrCAD-PLD, CUPL, ABEL, PALASM, etc. Como siempre, si hay muchos medios parahacer la misma cosa es que ninguno de ellos es el mejor, porque la buena monedadesplaza a la mala, pero ¿por qué hay tantos lenguajes? Pues porque cada uno deellos era avalado (no todos) por un fabricante de silicio, así éstos aseguraban quesu sw se adaptaba perfectamente a las posibilidades hw del PLD comprado. Deesta forma el diseñador quedaba ligado a este fabricante por el hw y el sw. Lanueva situación potenciaba a la lógica programable, pero la mostraba confusa.

El tercer paso lo impulsó el Departamento de Defensa de EE.UU en los añosochenta. Este departamento observó en sus sistemas microelectrónicos el mismocaos que había observado en sus aplicaciones informáticas, y así como impulsó ellenguaje ADA (¿alguien lo usa?) hizo lo propio con el VHDL. El objetivo eradesarrollar un lenguaje estructurado (los anteriores eran no estructurados) capazde describir cualquier sistema digital. Este lenguaje no nacería auspiciado por unfabricante y adecuado a un tipo de dispositivo, no tendría objetivos harware sinosoftware. Si ABEL y los otros lenguajes sólo miraban al dispositivo final, VHDLmiraría desde un principio al sistema, a describirlo, más que a implementarlo. ElVHDL no estaría solo, pues antes, y con parecidos objetivos, ya había nacido elVerilog desarrollado por un fabricante. El tercer paso estaba dado: primerodescribir y simular, y luego implementar.

En un principio el VHDL se utilizó sólo para describir y simular sistemaselectrónicos, es decir, VHDL era una herramienta de análisis más que de diseño.

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 12: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Prólogo

xii

Solo pasados unos años, los fabricantes entendieron que el VHDL bien podíaconvertirse en una herramienta de diseño, es decir, pasar de lo descrito a loimplementado, a lo real y vendible. En este punto VHDL ya estaba bienconfigurado como lenguaje (algo que no les pasó a los anteriores) y además seincorporó un tercer personaje. Al VHDL ya establecido y al interés de losfabricantes se unió el IEEE, que tomó el control del VHDL desarrollando elestándard 1076 en el año 1987, que quedaría fijado en 1993. Total, que paracuando los fabricantes llegaron al VHDL, éste ya estaba configurado ydefendido. Así pues, aquellos que quisieran usar el VHDL tendrían queadaptarse al estándard. En mi opinión, es esta tardía incorporación de losfabricantes al VHDL lo que le ha permitido mantenerse estable y no sermodificado a capricho de los fabricantes. El cuarto paso está dado: los fabricantesutilizan VHDL.

Xilinx, Altera, Lattice, etc. desarrollan compiladores (sintetizadores), por símismos o con terceras compañías, que son capaces de partiendo de ladescripción VHDL generar el mapa de fusibles a grabar en el PLD seleccionado.Es cierto que estas empresas no compilan todo el VHDL, sólo un subconjunto deéste, pero éste es suficiente para describir sistemas digitales con mayor precisióny elegancia que con los no estructurados. ¿Ha cambiado mucho el VHDL al serutilizado por la empresas?, la respuesta es que no mucho. Primero porque no leshace falta y segundo porque el IEEE vela por su integridad, en cualquier caso síhay diferencias entre el VHDL de Xilinx y el de Altera, pero son pocas, y undiseñador que utilice Xilinx puede pasarse a Altera con facilidad, y viceversa,cosa que no ocurría con los anteriores lenguajes (excepto con el honroso OrCAD-PLD).

Actualmente, el VHDL se utiliza cada vez más, y su desarrollo va en ladirección de hacerlo cada vez más potente y cómodo. Esto es, que el diseñador sedespreocupe cada vez más de los aspectos tecnológicos y electrónicos,centrándose en describir el comportamiento del sistema, que cada vez es máscomplejo. Esta potencia también conlleva cierta complejidad, de forma que eldiseñador debe tener conocimientos teóricos sólidos en programación orientadaa objetos y en concurrencia. Ya se empieza a oír ¿es mejor un informático conformación electrónica o un electrónico con formación informática? Cualquiera delas dos vale, pero no vale la una sin la otra. El diseño electrónico con VHDL exigeconocimientos informáticos. Hoy por hoy, es esta exigencia lo que hace queVHDL no se extienda por todas las empresas de microelectrónica: el miedo aaprender algo que parece complicado.

Para vencer el miedo, un arma importante son los libros; otra son los cursosde formación de las empresas. Bueno, pues en mi opinión muchos librospublicados sobre VHDL han alejado de manera definitiva de este nuevo lenguajea no pocos diseñadores. Estos libros tienen un gran afán teórico, y a losinvestigadores nos interesan por su profundidad, pero deberían evitarlos losdiseñadores. En estos últimos años, cuando ya se ha practicado bastante con elVHDL, es cuando empiezan a aparecer libros útiles de VHDL. Libros que enmanos de un diseñador pueden hacer que éste obtenga resultados visibles enpoco tiempo, de modo que él se anime a utilizar VHDL.

Este libro publicado por la Universidad de Deusto ya declara desde elprincipio sus intenciones: Manual de VHDL. El objetivo no es describir el VHDLcomo lenguaje, con sus especificidades y trucos, sino describir el VHDL como

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 13: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Prólogo

xiii

herramienta. Para ello el libro aborda el diseño de sistemas de complejidadcreciente, y de hecho el VHDL como tal se describe brevemente en un apéndice.

Para que el libro cubra su objetivo es necesario que el VHDL utilizado sea elde una empresa. En mi caso he elegido Xilinx (junto con Altera los más activos enEspaña) no por ninguna razón en especial, sino porque siempre he tenidofacilidades para acceder a su software (el VHDL es gratuito en la WEB: WebPackISE 7.0 y superiores) y porque disponen de un buen servicio técnico de ayuda aldiseñador. Desde aquí quiero dar las gracias a Gabriel Cutillas, Ignacio Espinel yJavier que desde Xilinx siempre me han ayudado, sobre todo en los primerospasos, tan torpes como definitivos.

Resumiendo, el lector tiene un libro que le enseñará de una forma práctica autilizar el VHDL y a implementar estos diseños en CPLDs y FPGAs de laempresa Xilinx. El desrrollo del libro tiene como hilo conductor a los ejercicios,cuyos planteamientos dan pie a un uso cada vez más potente del VHDL. Sólodos consejos a la hora de utilizar el libro: no pasar a una lección sin haberentendido la anterior, y estudiar con mucha atención las gráficascorrespondientes a simulaciones. Todos los comentarios, y sobre todo ladetección de fallos serán de agradecer en la dirección electrónica:[email protected].

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 14: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 15: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Lección 1

1

1. Primer contacto con

VHDL

1.1 Objetivos

El objetivo de esta primera lección es que el alumno tome contacto con ellenguaje VHDL y con el entorno de desarrollo ISE 7.1 de la compañía XILINX.

Es un objetivo que desde un principio el alumno complete ejercicios, aunqueéstos sean muy básicos. En las siguientes lecciones iremos profundizando en lasposibilidades y peculiaridades del VHDL complicando los enunciados.

1.2 Introducción

Esta lección no se estructurará de una forma clara, simplemente iremos dandopasos para familiarizarnos con el entorno.

1.2.1 Poniendo en marcha el ISE (Integrated SynthesisEnvironment) de XilinxEl entorno ISE es muy complicado en su estructura y organización, ya que ofrecegran cantidad de servicios al diseñador electrónico. En una primeraaproximación el ISE tiene cuatro módulos principales:

Captura del circuito a diseñar. Design Entry

Simulación del circuito a diseñar. HDL Bencher y ModelSim

Síntesis del circuito a implementar. Synthesis de Synopsis

Grabación del dispositivo programable con el circuito diseñado.Programmer

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 16: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Manual de VHDL: síntesis lógica para PLDs

2

Externamente, en la mesa de trabajo de nuestra computadora veremos dosiconos: el Project Navigator (el ISE) y el ModelSim.

Figura 1.1 Iconos de ISE y ModelSim

Empecemos a dar pasos concretos. Arranquemos el ISE haciendo doble clic sobreel icono del Project Manager .

Figura 1.2 Pantalla principal vacía del ISE

Puede que en la imagen anterior aparezca algún proyecto cargado (el último conel que se ha trabajado), en nuestro caso no hay ninguno.Despleguemos ahora el menú File y activemos la opción New Project (u OpenProject, si quisiéramos cargar un proyecto existente). Hecho esto nos aparecerá lafigura 1.3.

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 17: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Lección 1

3

Figura 1.3 Descripción del nuevo proyecto

En esta pantalla debemos indicarle al ISE:

nombre del proyecto: practica1_1

nombre del directorio: c:\fpga (el solo añade el \practica_1)

en qué dispositivo vamos a implementar el circuito.

Como en principio nos conformaremos con simular podríamos poner cualquiercosa en este último apartado. En la figura 1.3 elegimos una FPGA Spartan II.

Al pulsar OK el proyecto queda creado y ya aparecen en el entorno losprimeros síntomas de vida.

Figura 1.4 Cambios en la pantalla de ISE al cargar un proyecto

Es importante que en este punto hagas clic con el ratón sobre 2S100 PQ208-5-XST VHDL para que se active la parte inferior de la pantalla (si quieres, prueba ahacer clic en el + del Design Entry Utilities).

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 18: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Manual de VHDL: síntesis lógica para PLDs

4

Ahora que tenemos creado el proyecto hay que darle contenido añadiendo elcódigo fuente del sistema a diseñar. Para ello activamos la opción New Source enel menú Project. Antes de seguir cabe decir que un proyecto puede tener muchosficheros fuente, etc., pero para empezar baste con un fichero por proyecto.

Figura 1.5 Pantalla para añadir el código fuente VHDL del proyecto

Elijamos necesariamente la opción VHDL Module, démosle el mismo nombre alfichero que al proyecto (aunque no es obligado) y comprobemos que estámarcada la opción Add to Project. Pulsemos Siguiente.

Figura 1.6 Pantalla para declarar la entidad y arquitectura

En esta pantalla debemos dar nombre a la entidad del programa y a laarquitectura asociada a dicha entidad. Podríamos cambiar los nombres, pero demomento dejemos los que están. También podríamos dar los nombres, tamaño

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 19: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Lección 1

5

en bits y tipo de variable: entrada o salida, pero no pongamos nada aquí ypulsemos Siguiente y luego Finalizar en la nueva pantalla. El resultado apareceen la figura 1.7, y ya podemos ver que el entorno se está llenando.

Figura 1.7 Pantalla de ISE con el código fuente sin completar

Si ahora hiciéramos clic en cada uno de los “+” de la zona de herramientas (zonainferior izquierda) veríamos la versatilidad de ISE. Más interés tiene la zona decódigo VHDL con una cabecera de inclusión de librerías, una declaración de laentidad del sistema y su arquitectura; estas dos últimas vacías.

Para completar lo vacío hace falta un enunciado práctico. Empecemos poralgo tan sencillo como que el sistema tiene una entrada A y una salida B, y queB=A.

Para escribir en el código fuente basta con llevar el ratón a la zona, hacer clicsobre el texto y empezar a editar sin más hasta escribir el código 1.1, fijándosebien en los signos de “;”.

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity practica1_1 is Port (

a: in std_logic; b: out std_logic );

end practica1_1;architecture behavioral of practica1_1 is

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 20: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Manual de VHDL: síntesis lógica para PLDs

6

beginb<=a;end behavioral;

Código 1.1 Código VHDL del enunciado planteado

Acabada la edición del código VHDL salvemos el fichero con Save en el menúFile (si no lo hacemos el sistema nos lo recordará). Bien, pues ya está capturado elsistema, pasemos a su síntesis.

Para sintetizar lo descrito en VHDL (traducir VHDL a recursos de la FPGAelegida) basta con hacer doble clic sobre las flechas en forma de rueda de laherramienta Synthesis. Al hacerlo vemos que empiezan a salir mensajes en laparte inferior de la pantalla, acabando con un Done: completed successfully.Quiere decir que ya podríamos pasar a implementar lo descrito en un circuitoreal, pero estamos yendo demasiado deprisa. Falta simular.

Al simular simplemente comprobamos qué hace el sistema descrito, o mejoraun, comprobamos si el sistema hace lo que debía. En nuestro caso, aunqueparece muy fácil haber acertado no vamos obviar la simulación.

Antes de pasar a la simulación estropeemos un poco el código para ver quépasa. Vayamos a la zona de código y pongamos (por ejemplo) un “;” al final de lalínea de out b: out std_logic;. Hagamos doble clic en Synthesis y veamos que enlos mensajes aparece un error en la línea 10 (en mi caso). Curiosamente el error loda en la línea 10, pero está en la línea 9; digamos que el compilador traga mucho.Bueno, dejemos el código como estaba y en vez de sisntetizar vayamos a simular.

Figura 1.8 Error de compilación

Para simular en ISE se pueden tomar varios caminos, nosotros de momentovamos a aprender uno e ellos. Antes de empezar a simular recordemos que haydos técnicas:

Simular el sistema, ver qué hace y aceptar o refutar lo diseñado en base a loobtenido en la simulación.

Indicar para cada entrada la salida esperada, simular y leer el informe queindica si lo obtenido por simulación coincide con lo indicado por nosotros.

Ambas técnicas pueden parecer iguales, pero no lo son. La segunda es muchomás estricta y completa. Empecemos por la primera.

Simular tiene dos fases: el diseñador genera una entrada y el simulador laprocesa. En el entorno ISE ambas fases están mecanizadas, la primera con el HDLBencher y la segunda con ModelSim.

Para generar el estímulo de entrada hay que activar la opción Create NewSource, una vez hecho esto marquemos Test Bench Waveform en la parteizquierda y pongamos el nombe en la derecha. En la pantalla inicial marcaremos

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 21: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Lección 1

7

Combinatorial Design (a la derecha) y aceptaremos los valores de 50 ns queaparecen.

Figura 1.9 Pantalla ISE para crear un estímulo de entrada

Figura 1.10 Pantalla del Test Bencher

En la figura 1.10 vemos que ha aparecido un cronograma, para generar estímulosde entrada basta con que hagamos clic sobre la señal. Al hacerlo veremos cómo laseñal toma los valores 1 y 0. No hagamos lo mismo con la salida, ya que hemosdicho que en principio nuestra simulación va a consistir en excitar al sistema conuna entrada y observar la salida. Para ver el estímulo aislado debemos hacer clicen el símbolo >> de la parte superior derecha de la pantalla, con ello la imagenocupa toda la pantalla. Lo mismo se puede hacer con el código VHDL. Para

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 22: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Manual de VHDL: síntesis lógica para PLDs

8

añadir más tiempo basta con hacer doble clic sobre End Time y cambiar el valor.Lo mismo se puede decir para los pocos pero potentes controles del creador deestímulos.

Figura 1.11 Estímulo de entrada creado en el Test Bencher

Después de salvar el estímulo haciendo clic en la imagen del disquete oaccediendo al menú de File ya podemos simular. Pero antes hay que mostrar unasituación incómoda: han desaparecido los iconos de procesos de abajo a laizquierda. Quizá después de añadir el estímulo se ha quedado activada la opciónde Hierarchy, bien esto no es problema, basta con hacer clic en la pestaña deProcess y ya tenemos de nuevo los procesos típicos de simulación. La figura 1.12muestra estas dos situaciones.

Figura 1.12 Pantallas de simulación

Hecho esto podemos ver que hay un nuevo fichero en la pantalla principal de ISEson sus process asociados debajo.

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 23: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Lección 1

9

Figura 1.13 Pantalla ISE al seleccionar el fichero de simulación

ISE nos indica que reconoce el fichero como de simulación y que lo puedesimular, tanto funcional como después de la implementación. Hagamos dobleclic en la primera. La pantalla que veremos es la de la figura 1.14.

.

Figura 1.14 Pantalla inicial del ModelSim

© Universidad de Deusto - ISBN 978-84-9830-716-0

Page 24: Manual de VHDL: Síntesis lógica para PLDs / Javier García ...download.e-bookshelf.de/download/0003/7719/45/L-G-0003771945... · 2.2.2 Codificador ... VHDL no se extienda por todas

Manual de VHDL: síntesis lógica para PLDs

10

Figura 1.15 Pantalla de ejecución del ModelSim

En este momento ISE cede el control al entorno ModelSim, que es de otrofabricante. Vemos que el entorno es también muy complicado en apariencia, peronuestro uso va a ser muy básico, y por lo tanto sin problemas. Poco a poco te irásacostumbrando a la pantalla, pero de momento te basta con saber que para ver lasimulación hay que hacer clic en la pestaña de Wave. Una vez hecho esto, puedessacarla con algo que parece una flecha o el signo masculino. Total, hecho estotienes a la vista el resultado de la simulación. Puede parecer que no vemos nada,pero no es verdad. Fíjate en la escala, que seguramente estará en picosegundoscuando hemos trabajado en el HDL TestBench con nanosegundos. Parasolucionar esto bastará con pulsar en Zoom repetidamente hasta que nos guste lavisión de la simulación o pulsar la cuarta lupa (la de color rojo) y así vercompleta la simulación en una sola pantalla. La figura 1.16 muestra lasimulación.

Figura 1.16 Simulación del sistema en la pantalla Wave del ModelSim

© Universidad de Deusto - ISBN 978-84-9830-716-0