INTRODUCCIÓN

Esta guía proporciona un ejercicio práctico paso a paso para la creación de un diseño hardware basado en Microblaze, utilizando el Vivado IP Integrator para la plataforma Arty FPGA.

Al final de este tutorial tiene:

  • Creado un diseño de hardware basado en Microblaze ( HW ) en Xilinx Vivado
  • Creado .C Project en Xilinx Vivado SDK (Kit de Desenvolvimiento de Software/ Software Development Kit) para visualizar el programa Hola Mundo (Hello World) por el diseño de hardware
  • Visualizado la salida final tanto en la consola SDK como en Tera Term

Microblaze es un núcleo de propiedad intelectual suave (IP core) de Xilinx que implementa un microprocesador completamente dentro de una memoria de uso general y una estructura lógica Xilinx FPGA. Para este tutorial, añadimos un bloque IP Microblaze utilizando la herramienta Vivado IP Integrator.

Además del bloque IP Microblaze, deberíamos usar también el componente DDR3 SDRAM en la Arty. Por lo tanto, un MIG ( Memory Interface Generator ) IP block será añadido a nuestro diseño.

Finalmente, al bloque IP UART (emisor/receptor asíncrono universal/ universal asynchronous receiver/transmitter) será añadido para comunicar entre el servidor PC y el núcleo del procesador suave que opera en la Arty.

Flujo general de diseño MicroBlaze

I. Vivado

  • Abra Vivado y seleccione la plataforma Arty
  • Cree un Proyecto Nuevo Vivado
  • Cree un espacio de trabajo vacío para el diseño de bloque dentro del proyecto nuevo
  • Añada los bloques IP necesarios usando la herramienta IP integrator y construya el Diseño Hardware
  • Validar y guardar el diseño de bloque
  • Cree el envolvente/wrapper HDL del sistema
  • Ejecute el diseño Síntesis e Implementación
  • Genere el Archivo Bit
  • Exporte el diseño Hardware incluyendo el archivo bit de flujo generado en la herramienta SDK
  • Lance SDK

Ahora el diseño de Hardware es exportado a la herramienta SDK. La transferencia Vivado a SDK está realizada por el programa Vivado. Utilizamos SDK para crear una aplicación Software que utilizará los datos personalizados de la interfaz de la placa/plataforma y la configuración FPGA del hardware por la importación de información del diseño de hardware de Vivado

II. SDK

  • Cree el proyecto nuevo de aplicación y seleccione la plantilla predeterminada Hola mundo/ Hello World
  • Programe FPGA
  • Ejecute la configuración seleccionando el correcto puerto UART COM Port y la Tasa de baudios

Prerrequisitos

Habilidades: 

  • Familiaridad con Vivado
  • Experiencia del diseño de bloque

Hardware:

Utilizado para la comunicación UART, programación JTAG, y alimentación

Software:

  • Xilinx Vivado 2015.4 con el paquete
    • Pueden funcionar también versiones más nuevo es de Vivado
  • Archivos de soporte de la placa Digilent
    • Siga el wiki guide  sobre cómo se instalan los Archivos de soporte de la placa para Vivado 2015.X

Tutorial

1. Crear un Proyecto Nuevo

1.1) Abra Vivado y haga clic en Crea el proyecto nuevo  para abrir el asistente Vivado para el Proyecto Nuevo.

1.2) Una nueva ventana se abrirá, haga clic en  siguiente  y verá la pantalla de abajo. Denomine su proyecto (¡sin espacios!) y elija su proyecto guardando el directorio antes de hacer clic en siguiente. Los guiones bajos pueden sustituir los espacios en blanco.

1.3) Construimos este proyecto desde el principio y agregando nuestras propias fuentes, para que podamos crear un proyecto RTL . Seleccione proyecto RTL y asegúrese que haya verificado la caja. No especificar fuentes en este momento. Haga clic en  Siguiente.

1.4) Si ha seguido la guía Wiki de Ficheros de soporte para la placa, seleccione Placas. Las opciones de filtrado pueden ser usadas para encontrar más rápido la plataforma Arty, seleccionando “digilentinc.com” para Vendor, y “Arty” para Nombre de usuario/Display Name.  Arty debe visualizarse en la lista de selección. La selección de un nombre diferente de placa causará errores más tarde. Haga clic en  Siguiente.

1.5) Se puede visualizar un resumen de las fuentes de diseño y de los dispositivos de destino para el proyecto nuevo. Haga clic en Terminar.

En este punto ha creado exitosamente un proyecto que puede comunicar adecuadamente con la plataforma Arty.

2. Crear un Diseño de bloque nuevo

Ésta es la principal ventana del proyecto donde puede crear un diseño de bloque basado en IP o añadir fuentes de diseño basadas en RTL. El panel del flujo de navegación de la izquierda ofrece varias opciones sobre las modalidades de crear un diseño de hardware, de realizar simulación, operar síntesis e implementación y generar un archivo bit. Puede también programar la placa directamente de Vivado con el archivo bit generado para un proyecto RTL usando el Hardware Manager.

Para nuestro diseño, utilizamos el IP Integrator para crear un diseño de bloque nuevo.

2.1) En la izquierda se puede ver el Flujo de navegación. Seleccione  Crear Diseño de bloque  bajo el IP Integrator. Denomine su diseño (sin espacios en blanco) y haga clic en OK.

Ha creado un diseño de bloque nuevo.

3. Agregar el componente del reloj y DDR3

3.1) Haga clic en la pestaña Placa (resaltada en color naranja abajo)

Esta lista contiene todos los componentes definidos en el archivo de placa instalado antes. Ellos están ya configurados para operar con varios IP Vivado IP.

3.2) Haga clic y arrastre el componente  Reloj del sistema  hacia el diseño de bloque vacío. Vivado conectará automáticamente este reloj del sistema a un bloque nuevo de Asistente del reloj.

3.3) Haga doble clic en el bloque  Asistente del reloj para personalizarlo. Haga clic en la pestaña  Relojes de salida y cambie  clk_out1  a “166.667”  MHz. Active  clk_out2  y póngalo en “200.0” MHz. Ajuste el  Tipo de reinicio  a  Activo bajo.

Haga clic en  OK  para cerrar esta ventana.

3.4) Haga clic y arrastre el componente  DDR3 SDRAM  hacia el diseño de bloque vacío. Vivado conectará automáticamente el DDR3 SDRAM y algunos puertos ficticios de reloj al MIG IP.

3.5)  Delete/Suprimir  los puertos  clk_ref_i  y  sys_clk_i  haciendo clic en ellos y presione la tecla  Delete/Suprimir, o haga clic derecho en ellos y seleccione  Delete/Suprimir.

3.6) Conecte  clk_out1  a  sys_clk_i  en el bloque MIG. Conecte  clk_out2  a  clk_ref_i.

3.7) Haga clic en Ejecute Automatización Conexión en el banner verde de arriba. La configuración predeterminada está en regla, así que haga clic en OK.

Vivado conecta el reinicio de su sistema a sys_rst del MIG.  Conecte este nuevo puerto de reinicio a la entrada  resetn del bloque del Asistente de reloj.

4. Agregar el Procesador & la Configuración Microblaze

4.1) Haga clic en el botón   Add IP  y busque  Microblaze.

Haga doble clic en Microblaze para agregarlo a su diseño de bloque.

4.2) Haga clic en Ejecute Automatización de bloque para abrir la automatización de bloque para el procesador Microblaze.

Ahora puede elegir cuánta memoria desea dar al procesador Microblaze.  Configure las opciones  para que correspondan a la imagen de abajo, luego haga clic en OK. Asegúrese que ha ajustado la Conexión Reloj a  /mig_7series_0/ui_clk.

4.3) La ejecución de la automatización de bloque debe auto-generar un juego de bloques IP adicionales que serán agregados automáticamente a nuestro diseño de hardware en base de las opciones seleccionadas en el paso anterior. No haga clic todavía en  Ejecute Automatización conexión.

5. Agregar los Componentes periféricos

5.1) Entre de nuevo en la pestaña Placas y encuentre el componente USB UART. Haga clic y arrastre este componente hacia el diseño de bloque para añadir el bloque Uartlite a su diseño.

5.2) Haga clic en Ejecute Automatización Conexión en el banner verde. Chequee la casilla Toda Automatización y haga clic en OK.

Se crea así una Interconexión AXI para la Memoria DDR y otra para los componentes periféricos.

Haga clic en el botón   Regenerar esquema/distribución para reorganiza su diseño de bloque.

6. Validar el Diseño y realizar un Envolvente/Wrapper HDL

6.1) Seleccione   Valide el Diseño. Así se verifican los errores de diseño y de conexión.

6.2) Después del paso de validación del diseño, seguimos con la creación de un envolvente/ Wrapper HDL del sistema. Haga clic en la pestaña Fuentes y encuentre su diseño de bloque.

Haga clic derecho en su diseño de bloque y haga clic en Crear Envolvente/ HDL. Asegúrese de que haya seleccionado Dejar que Vivado gestione el envolvente/ wrapper y actualización/auto-update  y haga clic en OK.

Así se crea un módulo máximo en Verilog y ello le permitirá generar un flujo de bits.

7. Generar Achivo Bit

7.1) En la barra de herramientas superior en Vivado, haga clic en   Generar Flujo de bits. Eso se puede también encontrar en el panel Navegador de flujo  a la izquierda, debajo de  Programe y Depure.
Si todavía no ha guardado su diseño, recibirá un indicador/ prompt para guardar el diseño de bloque.

7.2) La generación del archivo bit debe empezar. La herramienta ejecutará  Síntesis Implementación. Una vez las síntesis e implementación hayan sido exitósamente terminadas, el archivo bit será creado. Debes encontrar una barra de estado de la ejecución de Síntesis e Implementación en la esquina superior derecha de la ventana del proyecto.

Este proceso puede durar desde a 20 minutos , en función de su ordenador.

7.3) Una vez el flujo de bits haya sido generado, un indicador /una ventana emergente aparecerá en su pantalla. No necesita abrir el Diseño Implementado para esta demostración. Sólo haga clic en  Cancelar.

8. Exportar el Diseño de Hardware a SDK

8.1) En la barra principal de herramientas, haga clic en Archivo y seleccione  Exporte→Exporte Hardware. Chequee la casilla para Incluir Flujo de bits y haga clic en OK. Así se exporta el diseño de hardware design con el envolvente/wrapper del sistema para la Herramienta de Desarrollo de Software (Software Development Tool) – Vivado SDK.

Se crea un nuevo directorio de archivo bajo  Hello_World.SDK  similar al nombre del proyecto del diseño de hardware Vivado. Asimismo, se crean otros dos archivos,  .sysdef  y  .hdf . Este paso crea en esencia un espacio de trabajo SDK nuevo.

8.2) En la barra de herramienta principal, haga clic en  Archivo  y luego  Lanzar SDK. Deje ambos menúes desplegables en su estado predeterminado  Local al Proyecto  y haga clic en OK. Así se abre Xilinx SDK y se importa su hardware.

9. Dentro de Xilinx SDK

9.1) La especificación de diseño HW y los bloques IP incluidos son visualizados en el archivo  system.hdf file. Xilinx SDK es independiente de Vivado, por ejemplo desde este punto puede crear su proyecto SW en C/C++ por encima del diseño HW exportado. Si es necesario, puede también lanzar SDK directamente de la carpeta SDK creada en el principal directorio del Proyecto Vivado.

Desde este momento, si necesita regresar a Vivado y hacer modificaciones en el diseño HW, se recomienda que cierre la ventana SDK y haga las ediciones necesarias del diseño HW en Vivado. Luego debe seguir la secuencia de crear un nuevo envolvente/wrapper HDL, guardar el diseño y la generación del archivo bit. Este nuevo archivo bit y envolvente/ wrapper del sistema deben ser luego exportados a SDK.

9.2) Dentro de la pestaña  Project Explorer/Explorador del proyecto de la izquierda, puede ver su plataforma hardware.

system es el nombre de su diseño de bloque creado en Vivado. Esta plataforma hardware tiene todas las definiciones de diseño HW, interfaces IP que han sido agregadas, información externa de la señal de salida e información de dirección de la memoria.

10. Crear el nuevo Proyecto de Aplicación en SDK

10.1) Haga clic en la flecha desplegable  Nuevo y seleccione Xilinx→ Proyecto de Aplicación.

Denomine su proyecto sin espacios en blanco y haga clic en Siguiente.

10.2) Seleccione  Hello World  de la lista de plantillas y haga clic en Terminar.

Ahora puede ver dos carpetas nuevas en el panel Explorador de Proyecto.

  • Hello_world que contiene todos los binarios, los archivos .C y .H (Encabezado)
  • Hello_world_bsp que es la carpeta de soporte de la placa

Hello_world  es nuestra carpeta principal de fuentes de trabajo. Incluye también un archivo importante que es “lscript.ld”. Éste es un archivo Xilinx linker script autogenerado. Haga doble clic en este archivo para abrirlo.

10.3) Atrás en el  Explorador Proyecto, haga doble clic y abra  helloworld.c  bajo la carpeta  src.

Éste es la carpeta principal .C que imprima “Hello World”/Hola mundo en la consola una vez ejecutado.

11. Programar FPGA con el Archivo Bit

11.1) Asegúrese de que Arty esté activada y conectada al servidor PC por el puerto USB-JTAG  – este puerto tiene doble propósito como la conexión USB-UART al Microblaze.

En la barra de herramienta superior, haga clic en el botón  Programar FPGA .

11.2) Haga clic en  Programar  para programar su FPGA con su diseño de hardware.

12. Configurar el Terminal UART

12.1) Abra una aplicación Serial Terminal (Tera Term). Conecte al puerto Arty UART con una tasa de baudios de 9600. Esta tasa de baudios puede ser modificada en su diseño de bloque haciendo doble clic en el bloque Uartlite.

13. Programar el Procesador Microblaze

13.1) Atrás en SDK, seleccione su proyecto Hello_world y haga clic en el botón  Ejecute como… . Seleccione  Lanzar Hardware (depurador del sistema)  y haga clic en OK.

13.2) Su programa puede operar y verás la ventana emergente “Hello World”/Hola mundo en su Serial Terminal.