Introducción al LED de control MicroBlaze

Construcción del sistema Microblaze bajo VIVADO: Forever Hello World-Fallen Knight-Blog Park
https://www.cnblogs.com/moluoqishi/p/8177496.html

Este tutorial está escrito para principiantes que usan la placa de desarrollo oficial de Xilinx como plataforma.

El entorno de desarrollo en este ejemplo:

  • Plataforma de software: Win10 Professional 64bit + versión Vivado2017.4
  • Plataforma de hardware: Xilinx-KC705

La descarga completa del proyecto de este ejemplo: haga clic aquí

Los siguientes son dos proyectos avanzados. El proceso de diseño es casi el mismo que el de los LED que se analizan en este artículo, por lo que no los repetiré aquí.

Descarga de MicroBlaze control 1602_LCD: haga clic aquí

Control MicroBlaze 1602_LCD + LED + Descarga UART: haga clic aquí

Nota: Todos los proyectos funcionan perfectamente con Vivado2017.4. Si está usando una versión posterior a 2017.4, simplemente abra el proyecto y siga las instrucciones para actualizar la IP; si está usando una versión anterior a 2017.4, solo puede abrirla en modo de solo lectura y no puede cambiarla.

Palabras escritas en el frente

  Muchos estudiantes se han puesto en contacto con microcomputadoras de un solo chip antes de aprender FPGA, y las microcomputadoras de un solo chip pertenecen a ASIC. ASIC es mucho más popular que FPGA, pero la función de ASIC es relativamente fija. Nace para una función específica. A menudo es inútil esperar mejorar sus funciones y rendimiento. Para hacer una analogía simple, como se muestra en la figura siguiente, si ASIC es un material impreso lleno de tipografía, entonces FPGA es una hoja de papel blanco que se puede usar libremente. (De "layman Fun FPGA" Autor: estudiantes privilegiados)

  MicroBlaze es el núcleo blando de la plataforma Xilinx. Si ha estado en contacto con microcontroladores anteriormente, puede tratar a MicroBlaze temporalmente como un microcontrolador. Es solo que la estructura del hardware ya está construida y arreglada cuando usamos el microordenador de un solo chip para desarrollar, solo necesitamos escribir el programa de control requerido. Como se mencionó anteriormente, hay una hoja de papel FPGA en blanco, y ahora para realizar el control de LED a través de MicroBlaze, se deben seguir dos pasos: Primero, construya circuitos de hardware en este “documento técnico”. En segundo lugar, escriba el programa de control del LED . Esto causará un problema: para implementar una función con FPGA, habrá más pasos por recorrer y los errores en cualquier enlace en el medio afectarán el resultado final. (Todos pueden darse cuenta de lo problemático que es después de leer los siguientes pasos)

  La pregunta es, dado que es mucho más complicado usar FPGA + MicroBlaze para lograr la misma función, y el costo de FPGA es mucho más alto que el de una microcomputadora de un solo chip, ¿por qué es tan problemático y solo encuentra una MCU?

  La respuesta a esta pregunta es también la razón por la que decidí escribir este blog. Los FPGA y los ASIC tienen cada uno sus propias fortalezas y limitaciones. En el campo integrado, FPGA, AMR y DSP son comunes en el mercado. La fuerza de ARM radica en el control y la gestión, DSP está diseñado para operaciones matemáticas y FPGA es adecuado para ocasiones con alta flexibilidad y alto grado de personalización. En muchos casos, las funciones que implementan no se pueden reemplazar directamente. En el proceso de desarrollo tecnológico, ha habido un fenómeno de convivencia de mí en ti y tú en mí. Por ejemplo, ARM tiene DSP; Xilinx FPGA tiene núcleo blando MicroBlaze y la serie Zynq está integrada con núcleo duro ARM. En un diseño más complejo, se requiere la administración de la programación entre diferentes tareas. Es difícil lograr una administración de tareas complejas confiando en el control lógico FPGA. Si la administración de la programación entre las tareas se transfiere a MicroBlaze, el diseño se vuelve muy simple. Por lo tanto, es muy importante dominar la aplicación de núcleos blandos en el diseño de FPGA. A continuación, explicaré en detalle las dos partes del diseño mencionadas anteriormente.

  Esta rutina es el primer ejemplo para principiantes. En este ejemplo de proyecto, la mayoría de los parámetros de configuración adoptan valores predeterminados, de modo que un proyecto completo se puede construir rápidamente con menos pasos. Primero, ignore los detalles del diseño. Es hora de completar todos los pasos de un proyecto y ver los resultados experimentales lo antes posible. Esto ayuda a mejorar la confianza de los principiantes y es posible seguir aprendiendo con una mentalidad exploratoria. En el siguiente estudio, exploraremos el significado detrás de cada parámetro.

Parte 1: Creación de un circuito de hardware en "papel blanco"

  1. Abra Vivado como se muestra en la figura a continuación, haga clic en Crear proyecto
  1. Aparece la siguiente ventana, haga clic en Siguiente
  1. Seleccione la ruta del proyecto para crear el nombre del proyecto. Se recomienda que el nombre del proyecto sea lo más corto posible. La ruta de la ventana tiene un límite de 256 bytes. Si el nombre del proyecto es demasiado largo, las subcarpetas profundas no se pueden leer y la síntesis falla.
  1. Elija no agregar archivos de origen al crear el proyecto
  1. Elige el modelo de tabla
  1. Haga clic en Finalizar
  1. Haga clic en Crear diseño de bloque
  1. Nómbrelo Micro_led y haga clic en Aceptar
  1. Haga clic en "+" en el diagrama para agregar el núcleo de IP
  1. Agregar núcleo IP MicroBlaze
  1. Agregue el núcleo de IP del reloj en el orden que se muestra en la figura a continuación, y la configuración predeterminada es generar 1 canal de reloj de 100MHz después de agregar
  1. Agregue el núcleo IP LED como se indica arriba
  1. Haga clic en Ejecutar automatización de bloques, este paso agregará automáticamente el núcleo IP adicional requerido por MicroBlaze y se conectará
  1. Haga clic en la memoria local para cambiar a 32K, luego haga clic en Aceptar y espere a que se complete la conexión
  1. Una vez completada la conexión, habrá tres direcciones IP más, como se muestra a continuación
  1. A continuación, haga clic en Ejecutar automatización de conexión y las líneas restantes se conectarán
  1. Marque todo en la ventana emergente y haga clic en Aceptar
  1. Una vez completada la conexión, como se muestra en la figura siguiente. Aquí hay otra interconexión IP AXI, que es un puente entre MicroBlaze y los periféricos.
  1. Genere salida. Opere en el orden que se muestra en la figura siguiente (este paso a 22 es la síntesis e implementación de un único núcleo IP que completa el diseño de FPGA)
  1. Mantenga el valor predeterminado y haga clic en Generar
  1. Salida de la capa superior. Opere en el orden que se muestra en la figura siguiente y haga clic en Aceptar directamente en la ventana emergente
  1. Mira el estado de ejecución en la esquina superior derecha de Vivado
  1. Después de esperar a que se complete, la palabra Listo aparece en la esquina superior derecha de Vivdo, lo que indica que la integración se completó.
  1. A continuación, se genera un archivo Bitstream. Bitstream es el archivo que finalmente se descarga al chip FPGA. Busque la posición indicada en la figura siguiente en la columna Flow Navigator y luego haga clic en Generate Bitstream
  1. En este momento, se le indica que no se ha encontrado ningún resultado realizado. Para iniciar la síntesis y la realización, haga clic en Sí. En la siguiente ventana emergente, mantenga el valor predeterminado y haga clic en Aceptar. Tenga en cuenta que la síntesis sugerida aquí se refiere a la síntesis de todo el proyecto a nivel global, y la síntesis de los pasos 19 a 32 se refiere a la síntesis de una única PI
  1. Una vez generado el archivo Bitstream, aparecerá un cuadro emergente como se muestra en la figura a continuación, simplemente ciérrelo

Hasta ahora, la primera parte ha terminado.




La segunda parte es escribir el programa de control del LED.

Esta parte del SDK y el software Vivado deben alternarse entre sí, tenga cuidado de no confundir

  1. En el entorno Vivado, opere en el orden que se muestra en la siguiente figura
  1. En este momento, aparecerá la siguiente ventana, mantenga la configuración predeterminada y haga clic en Aceptar directamente
  1. En el entorno Vivado, opere en el orden que se muestra en la siguiente figura
  1. En este momento, aparece la siguiente ventana, mantenga la configuración predeterminada y haga clic en Aceptar directamente, y espere a que se complete la apertura del SDK
  1. En el entorno de SDK, opere en el orden que se muestra en la figura siguiente para crear un nuevo proyecto de SDK. Este proyecto es un poco similar a la construcción de un proyecto de aplicación con Keil en una microcomputadora de un solo chip 51
  1. En este momento, aparecerá la siguiente ventana, opere como se muestra en la siguiente figura
  1. Ahora ingrese a la ventana de nivel inferior, opere en el orden que se muestra en la figura a continuación para completar el nuevo proyecto SDK
  1. De acuerdo con la jerarquía de archivos como se muestra en la siguiente figura, abra el archivo testperiph.c y elimine el contenido del archivo.
  1. Pegue el siguiente programa en el archivo testperiph.c abierto y presione Ctrl + S para guardar (aquí, presione Ctrl + S para guardar y se compilará automáticamente)
#include <stdio.h>
#include "xparameters.h"
#include "xil_cache.h"
#include "xgpio.h"
#include "gpio_header.h"
#define LED_CHANNEL 1
XGpio GpioOutput; /* The driver instance for GPIO Device configured as O/P */
XGpio GpioInput;
void delay(u32 ms)
{
    
    
	 volatile u32 Delay1=0;
	 volatile u32 Delay2=0;
<span class="token keyword">for</span> <span class="token punctuation">(</span>Delay1 <span class="token operator">&#61;</span> <span class="token number">0</span><span class="token punctuation">;</span> Delay1 <span class="token operator">&lt;</span> ms<span class="token punctuation">;</span> Delay1<span class="token operator">&#43;&#43;</span><span class="token punctuation">)</span>
<span class="token punctuation">{<!-- --></span>
	<span class="token keyword">for</span> <span class="token punctuation">(</span>Delay2 <span class="token operator">&#61;</span> <span class="token number">0</span><span class="token punctuation">;</span> Delay2 <span class="token operator">&lt;</span> <span class="token number">8332</span><span class="token punctuation">;</span> Delay2<span class="token operator">&#43;&#43;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

}
int main ( )
{
int Estado ;
int coño = 0 ;
Xil_ICacheEnable ( ) ;
Xil_DCacheEnable ( ) ;
Estado = XGpio_Initialize ( & GpioOutput , XPAR_AXI_GPIO_0_DEVICE_ID ) ;
if ( Status ! = XST_SUCCESS ) {
return XST_FAILURE ;
}
XGpio_SetDataDirection ( & GpioOutput ,LED_CHANNEL , 0x0 ) ;
XGpio_DiscreteWrite ( & GpioOutput , LED_CHANNEL , 0x0 ) ;
while ( 1 )
{
if ( coño == 8 )
coño = 0 ;
XGpio_DiscreteWrite ( & GpioOutput , LED_CHANNEL , 0xf0 ) ;
retraso ( 500 ) ;
XGpio_DiscreteWrite ( y GpioOutput ,LED_CHANNEL , 0x0f ) ;
retraso ( 500 ) ;
coño ++ ;
}
Xil_DCacheDisable ( ) ;
Xil_ICacheDisable ( ) ;
return 0 ;
}

  1. Cambie al entorno Vivado, busque en la columna Flow Navigator y haga doble clic para abrir la ubicación indicada en la figura siguiente
  1. Aparece la siguiente interfaz, haga clic en la ubicación que se muestra en la figura para abrir la búsqueda del dispositivo de destino
  1. Si se encuentra el dispositivo, habrá información del dispositivo en localhost (si no se encuentra el dispositivo, verifique si la placa y la computadora están conectadas, si el controlador se ha instalado y si el interruptor de alimentación de la placa está encendido) y luego, como se muestra a continuación, descargue los archivos Bitstream a la placa en el orden de
  1. En este momento, aparece la siguiente ventana, mantenga la configuración predeterminada y haga clic en Programa directamente, y espere a que se complete la descarga del archivo Bitstream
  1. Finalmente, cambie al entorno SDK, primero asegúrese de que la ventana abierta actualmente sea testperiph.c, y luego siga la secuencia que se muestra en la figura a continuación para ejecutar el programa de control de LED compilado en el MicroBlaze. En este momento, puede observar la parte superior cuatro bits de la placa El LED y los cuatro LED inferiores parpadean alternativamente con un período de aproximadamente 1 segundo.

Transferencia desde:
https://blog.csdn.net/cuifuxiang/article/details/86551813

Supongo que te gusta

Origin blog.csdn.net/qq_45467083/article/details/113110288
Recomendado
Clasificación