Práctica del 23 de Noviembre

Anuncio
INSTITUTO DE ELECTRÓNICA Y
COMPUTACIÓN
“SISTEMAS DIGITALES”
Tutorial para el Diseño y Simulación de un circuito digital con VHDL,
Síntesis e Implementación en un FPGA
Profesor:
M. C. Felipe Santiago Espinosa – MC Jacob J. Vásquez Sanjuan
Septiembre de 2009
Sistemas Digitales
UTM/2010-1
Introducción
En este documento se presentan de manera detallada los pasos a seguir desde
el planteamiento de un circuito digital hasta su puesta en marcha y verificación
en una tarjeta de desarrollo Nexys 2 de Digilent, la cual contiene un FPGA
Spartan 3E XC3S500E de Xilinx. El ejemplo que se desarrolla es bastante
simple porque el objetivo del tutorial es ilustrar el proceso y no resolver un
problema complejo.
Las herramientas de Software que se utilizan durante el tutorial son:
ISE 8.2i de Xilinx: En realidad es un ambiente integrado de desarrollo desde
el que se invocan diferentes herramientas, conforme se van requiriendo. Se
utilizará para la síntesis, implementación y creación del archivo de descarga.
También puede utilizarse para programar al FPGA si se emplea una interfaz
conocida como JTAG.
Adept de Digilent: Es una utilería que permite programar a los FPGAs en
algunas tarjetas desarrolladas por Digilent, a través del puerto USB.
1. Planteamiento del problema
Se desea diseñar e implementar un comparador de 4 bits. Se tienen las
entradas A y B, y tres salidas: mayor, igual y menor. Ejercicio: Diseñe
empleando VHDL, el circuito indicado.
4 bits
A> B
A
A= B
4 bits
Después de
implementación.
realizar
B
el
A< B
código
y
simularlo,
se
procede
a
la
2. Síntesis
La síntesis se va a realizar con las herramientas de Xilinx desde un Ambiente
Integrado de Software (Integrated Software Environment – ISE) el cual se
inicia con un doble click en el ícono siguiente:
2
Sistemas Digitales
UTM/2010-1
Al iniciar este programa se mostrará el Tip del Día y luego se abrirá el último
proyecto en el que se haya trabajado (excepto cuando es la primera vez que se
ejecuta al software). Para este tutorial se iniciará con un nuevo proyecto,
seleccionando la opción New Project en el menú File, con esto se obtendrá el
cuadro de diálogo similar al siguiente:
Primero debe seleccionarse la ubicación del proyecto en disco y luego
asignársele un nombre. Esto para que el proyecto quede ubicado en una
carpeta con el mismo nombre.
En este caso, el proyecto se ubicará en la carpeta D:\Practicas y llevará por
nombre comparador. Para el tipo de módulo superior (Top-Level Source) se
mantiene HDL por que se desarrollará un archivo en VHDL para el comparador.
Una vez que se introduzcan estos datos se procede con el paso siguiente. En el
cual se definen las propiedades del proyecto relacionadas con el FPGA en el
3
Sistemas Digitales
UTM/2010-1
que se va a realizar la descarga, por lo que es necesario seleccionar los valores
correctos.
Los valores seleccionados corresponden al FPGA que está integrado en las
tarjetas de desarrollo Nexys 2. En el paso siguiente es posible iniciar con
nuevos archivos.
En este caso se avanza al siguiente paso, dado que el archivo a sintetizar ya
fue creado con el Active-HDL. Precisamente el siguiente paso es para agregar
archivos existentes:
4
Sistemas Digitales
UTM/2010-1
Presionando el botón Add_Source se abrirá una ventana de navegación en la
que deberá buscarse al archivo comp4b.vhd, el cual se encuentra en la ruta:
my_designs -> tutorial -> comparador -> src, esto porque el Active-HDL trabaja
en la carpeta denominada my_designs, el espacio de trabajo se denominó
tutorial, en el cual se inició con un diseño denominado comparador, y todos los
diseños dejan los archivos del código fuente en una carpeta denominada src.
Dado que solo se agregará un módulo al proyecto, se continúa con el paso
siguiente. Es conveniente dejar marcada la casilla que crea una copia del
archivo en el proyecto, para conservar el archivo original sin modificaciones.
En el paso siguiente se muestra un resumen con la información del proyecto: el
nombre, el dispositivo y los archivos incluidos. Si todo está bien se finaliza con
la creación del proyecto (Botón Finalizar).
5
Sistemas Digitales
UTM/2010-1
Aparecerá un cuadro de diálogo en el que se define el uso que se le dará al
archivo agregado, en este caso se conservan los parámetros de default que
indican que el archivo puede ser usado para síntesis, implementación y
simulación.
Al presionar OK se presenta el entorno de desarrollo de Xilinx, en el que se
distinguen cuatro áreas, el área 1 es el área de archivos, se muestran los
diferentes archivos fuente que integran al proyecto, a manera de un árbol. Si el
proyecto estuviera formado por varios módulos, en este árbol los módulos se
ubicarían de acuerdo a sus niveles jerárquicos.
6
Sistemas Digitales
1
UTM/2010-1
2
3
4
El área 2 es el espacio de trabajo, acá serán abiertos los diferentes archivos
fuente o reportes que se generen. Inicialmente se muestra un resumen del
diseño. Para abrir un archivo basta con darle un doble click a su nombre en el
área 1, al hacerlo sobre Comp4b.vhd se obtiene:
7
Sistemas Digitales
UTM/2010-1
El área 3 es el área de procesos, acá aparecerá una lista de los procesos
aplicables al archivo seleccionado, esta lista puede cambiar, de acuerdo con el
tipo de archivo.
El área 4 muestra una consola con mensajes indicando las diferentes
actividades que se están realizando. Además, existen otras cejas para mostrar
errores o precauciones.
Con el archivo comp4b.vhd seleccionado se realiza su síntesis. Para ello, en el
área de procesos se da un doble click al proceso de síntesis, si no hay errores
de sintaxis, en el proceso de síntesis aparecerá la indicación de que se realizó
con éxito y la consola reflejará el mismo hecho.
En caso de que hubiera errores, el proceso de síntesis no será superado:
Y el posible error se mostrará en el espacio de la consola, específicamente en
la ceja de errores, también se observa la posición del error.
8
Sistemas Digitales
UTM/2010-1
Se esperaría que no ocurrieran errores, dado que el módulo fue evaluado con
el Active-HDL, sin embargo, si se realizó algún ajuste en el código VHDL que
generó errores, éstos deben resolverse considerando la sintaxis del lenguaje.
3. Acondicionamiento para la implementación.
Como pudo observarse en los diagramas anteriores, el código VHDL ha sido
sintetizado satisfactoriamente en hardware, ahora habrá que tomar algunas
consideraciones para poder llevar a cabo su implementación.
El circuito será descargado en un FPGA XC3S500 de Xilinx, el cual está en una
tarjeta Nexys 2 de Digilent, que se muestra a continuación:
Digilent es la empresa que manufactura estas tarjetas de desarrollo y su
manual de referencia puede obtenerse de su sitio web: www.digilentinc.com.
Se observa que la tarjeta tiene diferentes elementos para entrada/salida o
almacenamiento de datos.
Para la implementación del comparador, es de esperarse que las entradas A y
B se obtengan de los interruptores, y las salidas: Mayor, Menor e Igual, se
muestren en los LEDs. Por lo tanto, se requiere conocer a que terminales del
FPGA están conectados estos elementos.
En la figura siguiente se muestra la organización de las terminales en el FPGA,
se observa una disposición matricial organizada en 4 bancos. Para referirse a
una terminal, debe indicarse el renglón (A-V) y la columna (1-18).
9
Sistemas Digitales
UTM/2010-1
En la figura siguiente se muestra a que terminales del FPGA están conectados
los dispositivos básicos de entrada/salida.
Para la asignación de terminales, es necesario agregar un archivo de
restricciones (archivo con extensión UCF), para ello, en cualquier parte del área
de archivos se debe dar un click derecho y en el menú contextual seleccionar
la opción New Source.
10
Sistemas Digitales
UTM/2010-1
Dentro de los diferentes tipos de archivo que pueden insertarse seleccionar
Implementation Constraints File y asignarle un nombre.
Al avanzar se debe seleccionar el módulo con el cual se asignarán las
restricciones, en este caso sólo se tiene un módulo en el diseño, si hubiera más
módulos habría que seleccionar al de mayor jerarquía.
Luego solo se muestra información sobre este nuevo archivo y se finaliza.
11
Sistemas Digitales
UTM/2010-1
Con esto aparece el archivo de restricciones, en el área de archivos.
Para modificarlo, habrá que seleccionarlo en el área de archivos y con ello, en
el área de procesos se mostrarán aquellos que sean aplicables al archivo.
Se debe dar un doble click al proceso Assing Pakage Pins, con lo cual se abre
una ventana con la aplicación Xilinx PACE en la cual se desarrollará la
asignación de terminales.
12
Sistemas Digitales
UTM/2010-1
En esta aplicación, en su navegador se debe seleccionar la opción I/O Pins, con
esto en la lista de objetos del diseño se mostrará la lista de las terminales de
entrada/salida, en la columna Loc se escriben las terminales correspondientes
al FPGA, buscando relacionar las entradas A y B con los interruptores y las
salidas con 3 de los 8 LEDs disponibles.
Se salva el archivo con los parámetros propuestos y se cierra la aplicación.
Regresando al entorno del ISE, si en los procesos aplicables al archivo de
restricciones se da un doble click a Edit Constrains (text), en el área de trabajo
se mostrará el contenido del archivo en simple texto, en donde se notará que
para cada terminal se tiene el siguiente enunciado:
NET “nombre de la señal” LOC = “terminal” ;
donde NET y LOC son palabras reservadas. El contenido del archivo es:
13
Sistemas Digitales
UTM/2010-1
Se observa que el símbolo # es para insertar comentarios en los archivos de
restricciones.
Notas:
1. El archivo con restricciones (UCF) puede realizarse editando la versión
de texto en la herramienta de Xilinx o con cualquier otro editor de textos. Si
se opta por la última alternativa, después del click derecho habría que
seleccionar la opción “Add Source”, en lugar de “New Source”, buscar al
archivo y asociarlo con el que le corresponda de los módulos VHDL.
2. Existen otros tipos de restricciones, de área o temporización, pero éstas
requieren definiciones que son mucho más complejas.
4. Implementación.
La implementación es un proceso que involucra varios pasos: Trasladar el
diseño (Traslate), mapearlo (Map) y su colocación y ruteo (Place & Route). Sin
embargo esto lo realiza la herramienta de manera automática.
Para ello es necesario seleccionar el archivo comp4b en el área de archivos,
con ello se abrirán los procesos aplicables al archivo, en ellos se debe buscar la
lista de procesos Implement Design y darle un doble click para ejecutarlos.
En la figura anterior se observa que todos los procesos de implementación se
han realizado con éxito. En el resumen del proyecto (que se muestra en el área
de trabajo) se pueden ver los recursos que está usando el diseño dentro del
FPGA:
5. Generación del archivo de configuración
Dentro de los procesos asociados al diseño (los cuales se obtienen al
seleccionarlo), se encuentra el grupo de procesos Generate Programming File
ubicado después de los procesos de implementación.
14
Sistemas Digitales
UTM/2010-1
Antes de ejecutar este proceso es necesario definir uno de sus parámetros,
para ello habrá que darle un click derecho y seleccionar la opción propiedades
en el menú contextual,
Con ello se abrirá una ventana similar a:
En las opciones que se presentan en la columna de categorías seleccionar
Startup Options y cambiar el valor de la propiedad FPGA Start-Up Clock para
que tenga: JTAG Clock.
15
Sistemas Digitales
UTM/2010-1
Después del cambio debe presionarse el botón Aceptar. Este cambio es
necesario para la programación del FPGA, la cual se hará mediante un puerto
conocido como JTAG y por lo tanto se requiere que de ahí llegue la señal de
reloj.
Una vez hecho esto es posible ejecutar el proceso Generate Programming File
aplicándole un doble click. Se abrirá un cuadro de diálogo en el que se puede
habilitar el envío de información a Xilinx, para sus estadísticas, se sugiere
declinar para evitar el flujo de información.
Si el proceso se realiza con éxito, esto se indicará en el estado del mismo:
6. Programación del dispositivo
La tarjeta puede programarse desde dos diferentes puertos, el puerto JTAG o
un puerto mini-USB, el programa puede enviarse directamente al FPGA o a una
FLAH, para que el FPGA cargue el programa automáticamente, después de que
es alimentada la tarjeta.
En la figura siguiente se observa como en realidad es sólo por el puerto JTAG
por el que se tiene acceso al FPGA y a la Flash. La salida del manejador USB va
dirigida hacia el puerto JTAG.
16
Sistemas Digitales
UTM/2010-1
El cable JTAG es similar al de la figura siguiente, si se utiliza este medio, debe
ejecutarse el proceso Configure Device (iMPACT).
En este caso se utilizará un cable USB, para ello se utilizará una suite de
descarga denominada Adept, proporcionada por Digilent.
De los diferentes programas incluidos en la suite se selecciona el programa
ExPort, al ejecutarlo se muestra la ventana:
En este momento ya se puede energizar la tarjeta y conectar el cable USB.
17
Sistemas Digitales
UTM/2010-1
En la tarjeta hay que verificar que el conector de Modo está en JTAG, en lugar
de ROM, si el conector de Modo estuviera en ROM, cargaría al FPGA desde la
memoria Flash y no permitiría su programación desde el puerto JTAG.
La ROM contiene un programa de demostración que se utilizará para verificar
la funcionalidad de la tarjeta, por lo que no debe ser modificado.
En el programa ExPort se agrega al archivo del comparador (con Add File),
navegando hasta encontrar al archivo con extensión .bit.
Con la tarjeta alimentada, conectada a la PC y encendida, se debe presionar el
botón initialize Chain, con el cual se inicializa la comunicación entre la PC y la
tarjeta mostrando los dispositivos programables detectados.
18
Sistemas Digitales
UTM/2010-1
Para el FPGA se agrega al archivo .bit y la ROM se marca para que se ignorada
en la descarga.
La programación se realiza presionando el botón Program Chain, mientras se
ejecuta se muestra una barra con el avance:
Al finalizar se muestra una ventana indicando el éxito en la programación.
Después de la programación, el programa Digilent Export puede cerrarse así
como también el ISE. El cable USB puede retirarse.
19
Sistemas Digitales
UTM/2010-1
El diseño puede evaluarse modificando las entradas desde los interruptores
para observar las salidas en los LEDs. Cabe aclarar que los recursos
programables en el FPGA están basados en tecnología RAM, por lo que si se
retira la alimentación, el programa se perderá. Para evitar esto, el programa
podría almacenarse en la memoria FLASH, pero es preferible que el programa
de demostración se conserve, para garantizar que la tarjeta funciona en el
momento en que se solicita en el laboratorio.
7. Conclusión
Se ha revisado de manera detallada el proceso a seguir para implementar
sistemas digitales en FPGAs con ayuda de VHDL, para otro tipo de tarjetas u
otro tipo de FPGAs solo debe hacerse la selección adecuada.
Se utilizaron 2 herramientas principales durante el proceso, y pudo observarse
que la simulación de un diseño con el Active-HDL es mucho más didáctica que
la simulación en el mismo entorno de Xilinx.
Si no se tiene éxito en la programación, las causas pueden ser diversas:





La tarjeta puede estar desconectada
Se seleccionó un FPGA que no corresponde con el de la tarjeta
El empaque seleccionado no es el empaque del FPGA
El puerto o el cable USB no funcionan correctamente
El FPGA no funciona correctamente
20
Descargar