[Xilinx AX7103 MicroBalze notas de estudio 2] Puerto serie MicroBlaze que envía el experimento Hello World

contenido

Introducción al experimento

Diseño de hardware (parte Vivado)

Crear proyecto

Diseño de bloques de construcción

Sección MicroBlaze

Parte del módulo periférico

módulo de reloj

parte de arte

Vinculación de pasadores, restricciones de reloj

Generar archivo de flujo de bits

Diseño de software (parte SDK)

Verificación a nivel de placa

Resumir

Serie pasada de blogs


Introducción al experimento

Esta sección presenta el proyecto experimental más simple, utilizando el puerto serial para imprimir helloworld.

El proyecto experimental se implementa en base a Vivado2018.2

La siguiente figura es el diagrama de bloques del proyecto experimental. Es muy simple. MicroBlaze se usa como un núcleo blando de procesamiento y está equipado con memoria en chip BRAM. MB está conectado a AXI-UART a través de la interconexión AXI, y la información puede ser impreso en el puerto serie a través del control.

Diseño de hardware (parte Vivado)

Crear proyecto

Haga clic en Crear proyecto de Vivado para crear un nuevo proyecto y asígnele el nombre hello_world. Tenga en cuenta que el nombre no puede contener caracteres como espacios chinos. Solo se permiten letras y guiones bajos. Fallo.

Elija no especificar un archivo de diseño primero

Seleccione el modelo del dispositivo que está utilizando, y puede encontrarlo en el manual del dispositivo. Yo uso el black gold AX7103, y el modelo del dispositivo es xc7a100tfgg484-2.

Aquí puede ver la información resumida, haga clic en Finalizar.

Diseño de bloques de construcción

Haga clic en crear diseño de bloque en la barra de menú de la izquierda

Sección MicroBlaze

Haga clic en el signo + para buscar MicroBlaze, haga doble clic para agregarlo a la BD

Haga doble clic en el módulo MB para ver la información de configuración en él

la primera pagina

Configuraciones predefinidas: Configure la plantilla, haga clic en el cuadro de directorio en el lado derecho de Seleccionar configuración para ver múltiples opciones de plantilla (Área mínima, Rendimiento máximo, etc.), pero este experimento no necesita usar plantillas, así que mantenga la opción predeterminada " Configuración actual". .

Seleccione optimización de implementación; se utiliza para habilitar la función de optimización de área, abra el directorio en el lado derecho del mismo, puede ver que hay tres opciones: RENDIMIENTO, ÁREA y FRECUENCIA, que representan tres métodos de optimización, de los cuales AREA (área) representa la optimización de tercer nivel, y la velocidad es la más lenta Ocupa la menor cantidad de recursos; FRECUENCIA (frecuencia) significa optimización de ocho niveles, la velocidad más rápida ocupa la mayor cantidad de recursos; RENDIMIENTO (rendimiento) es la optimización de cinco niveles, la velocidad y el recurso consumo están entre ÁREA y FRECUENCIA, este experimento elige RENDIMIENTO.

Habilitar la interfaz del módulo de depuración de MicroBlaze: Habilita la función de depuración, que generalmente está habilitada. Esta función se deshabilita solo cuando los recursos son muy escasos.

Usar cachés de instrucciones y datos: Usar cachés de instrucciones y datos. Al usar almacenamiento externo, activar esta opción puede mejorar significativamente el rendimiento. Dado que este experimento usa almacenamiento local, esta opción no tiene ningún efecto en el experimento, por lo que no se selecciona.

Habilitar excepciones: habilite la función de excepción.

Habilitar puertos discretos: habilite puertos discretos en el núcleo suave.

la segunda pagina

Una vez completada la configuración, haga clic en "Siguiente" para ingresar a la segunda página Página general, la página General puede elegir la selección y optimización de la unidad. Simplemente mantenga el valor predeterminado y haga clic en "Siguiente" para ingresar a la página de depuración.

página tres

Esta página también se puede mantener por defecto.El contenido de configuración de esta página solo aparecerá cuando se seleccione depuración en la primera opción.

Página 4

En las opciones de las interfaces de bus de memoria local, ambas están marcadas, lo que significa habilitar la interfaz de comando y la interfaz de datos respectivamente. Seleccione la interfaz AXI en las interfaces AXI y ACE, y solo necesita verificar la interfaz de datos. En la mayoría de los casos, el comando interfaz es No, solo es necesario marcarlo en circunstancias especiales. Las interfaces de transmisión y otras interfaces se utilizan para habilitar la interfaz de transmisión y algunas otras interfaces respectivamente. En este experimento, mantenga el valor predeterminado. Una vez completada la configuración, haga clic en Aceptar para completar la configuración de MicroBlaze.

Parte del módulo periférico

Haga clic en Ejecutar automatización de bloques

En esta interfaz, debe elegir la Memoria local como 64 kb, intente elegir una más grande, ya que MicroBlaze en sí no tiene una unidad de almacenamiento, debe agregar almacenamiento en el chip, si la selección es demasiado pequeña, es posible que el programa no sea capaz de correr Haga clic en Aceptar.

Luego se generará una interfaz de varios módulos, que puede ver que se generan automáticamente cuatro módulos. El módulo clk_wiz_1 proporciona el reloj del sistema, rst_clk_wiz_1_100M es el módulo de reinicio del sistema, que se utiliza para proporcionar señales de reinicio a cada módulo del sistema, mdm_1 es el módulo de depuración de MicroBlaze y el módulo microblaze_0_local_memory es el módulo de memoria en el chip.

módulo de reloj

Luego configure el módulo de reloj clk_wiz_1

Haga doble clic para abrir la interfaz de configuración, y luego ingrese el reloj para configurar el reloj de entrada a 200Mhz, y seleccione el pin con capacidad de reloj diferencial en la columna Fuente, que es el reloj diferencial. ¡Darse cuenta! Solo configuro los parámetros de acuerdo con la placa que estoy usando. Necesito configurar los parámetros de acuerdo con el reloj de entrada requerido por la placa que realmente uso. Puede consultar el manual de la placa, de lo contrario, el experimento puede fallar .

En la opción de salida del reloj, seleccione el reloj de salida como 100Mhz y seleccione el tipo de reinicio para que esté activo bajo, ¡preste atención! Debido a que mi tablero tiene un nivel bajo cuando se presiona el botón de reinicio y un nivel alto cuando no se presiona, así que configúrelo en un nivel bajo y efectivo, de acuerdo con la situación real de su propio tablero .

Una vez completada la configuración del módulo clk_wiz_1, puede ver que el reloj de entrada del módulo clk_wiz_1 se ha convertido en una entrada de un solo extremo y el restablecimiento está activo bajo.

Haga clic con el botón derecho en el reloj y restablezca los pines del módulo de reloj, seleccione hacer externo y exporte los pines.

Los nombres de los pines también se pueden modificar.

Conecte el pin de reinicio a ext_reset_in del módulo de reinicio

parte de arte

Dado que se implementará el experimento de la información de impresión en serie, se requiere un módulo uart para la comunicación en serie, agregue el módulo uart, haga clic en el signo + para buscar uart y haga doble clic para agregar.

Haga doble clic en el módulo uart para configurar y seleccione 115200 para la velocidad en baudios, que debe ser consistente con la velocidad en baudios del puerto serie, y el resto se puede dejar como predeterminado.

Luego haga clic en la conexión automática para completar el diseño de Block Design.

Vinculación de pasadores, restricciones de reloj

Haga clic en Abrir diseño elaborado en la barra de menú de la izquierda.

Haga clic en los puertos de E/S en las opciones de Windows de arriba para asignar pines.

Puede asignarlo de acuerdo con el diagrama esquemático o el manual de su propia placa. CTRL+S guarda el archivo XDC.

Haga clic en el archivo de restricción en Fuentes y agregue una restricción de tiempo. El propósito es crear una frecuencia de reloj de 200 Mhz y un período de 5 ns, porque la placa que uso no es una placa oficial, sino una placa de oro negro de terceros, por lo que Necesito agregar una oración adicional Restricciones de reloj , no agregar posibles experimentos saldrá mal.

El archivo de restricciones completo se ve así:

set_property PACKAGE_PIN T6 [get_ports reset_n]
set_property IOSTANDARD LVCMOS15 [get_ports reset_n]
set_property PACKAGE_PIN N15 [get_ports uart_txd]
set_property PACKAGE_PIN P20 [get_ports uart_rxd]
set_property IOSTANDARD LVCMOS33 [get_ports uart_rxd]
set_property IOSTANDARD LVCMOS33 [get_ports uart_txd]
set_property PACKAGE_PIN R4 [get_ports diff_clk_clk_p]
set_property IOSTANDARD DIFF_SSTL15 [get_ports diff_clk_clk_p]
create_clock -period 5 [get_ports diff_clk_clk_p]

Generar archivo de flujo de bits

Haga clic directamente en Generar flujo de bits en la barra de menú de la izquierda para generar un archivo de flujo de bits.

Haga clic en Archivo->Exportar->Exportar hardware en la barra de menú superior para importar la información de la parte de diseño de hardware al hardware y luego traiga el SDK de lanzamiento para ingresar el diseño de la parte de software.

Diseño de software (parte SDK)

Ingrese el SDK, haga clic en Archivo->Nuevo->Proyecto de aplicación arriba para crear un nuevo proyecto

Nómbrelo helloworld y haga clic en Siguiente.

Seleccione la plantilla Hello World y haga clic en Finalizar.

Haga clic en el archivo helloworld.c en src en el archivo.

Puede ver que la plantilla importada es un helloworld muy simple escrito en lenguaje C. "platform.h" y ''xil_printf.h'' en el archivo de encabezado son la información oficial del archivo de encabezado de Xilinx, que se puede usar directamente.

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"


int main()
{
    init_platform();

    print("Hello World\n\r");

    cleanup_platform();
    return 0;
}

Verificación a nivel de placa

Haga clic en el signo + en SDK Terminal para agregar un puerto.

Puerto selecciona el número de puerto y la velocidad en baudios se establece en 115200, lo cual es consistente con la configuración del valor de velocidad en baudios del módulo uart anterior.

Haga clic con el botón derecho en el archivo y seleccione Ejecutar como->Ejecutar configuraciones.

En la interfaz Ejecutar configuraciones, haga doble clic en GDB, seleccione el GDB saltado, marque Restablecer todo el sistema y programe FPGA a la derecha, restablezca todo el sistema e inicie el FPGA, haga clic en Aplicar y finalmente haga clic en Ejecutar.

Finalmente, puede ver las palabras Hello World en el puerto, ¡y el experimento es exitoso!

Resumir

Al ejecutar el experimento de imprimir hola mundo, no solo puede tener una comprensión preliminar del proceso de desarrollo de MicroBlaze, sino también verificar si la placa está disponible, familiarizarse con algunas configuraciones de parámetros de la placa y sentar una base sólida para posteriores experimentos

Serie pasada de blogs

[Notas de estudio 1 de Xilinx AX7103 MicroBalze] Introducción a MicroBlaze

Supongo que te gusta

Origin blog.csdn.net/m0_61298445/article/details/123997843
Recomendado
Clasificación