Cmod A7 - Microblaze入门

重要!

这个指南已经过时了,可以找到更新的指南在这里

概述

描述

本指南将提供使用Vivado IP积分器为Cmod A7 FPGA板创建基于Microblaze的硬件设计的一步一步的步骤。

Microblaze是Xilinx的软IP核,它将完全在Xilinx FPGA通用内存和逻辑结构中实现微处理器。在本教程中,我们将使用Vivado IP Integrator工具添加一个Microblaze IP块。

上位机与运行在Cmod A7上的软处理器核心之间还将增加一个UART(通用异步接收/发送器)IP块进行通信。

一般的设计流程

即Vivado

  • 打开Vivado,选择Cmod A7板
  • 创建一个新的Vivado项目
  • 在新项目中创建空块设计工作区
  • 使用IP集成商工具添加所需的IP块并构建硬件设计
  • 验证和保存区块设计
  • 创建HDL系统包装器
  • 运行设计综合和实现
  • 生成一些文件
  • 导出硬件设计,包括生成的比特流文件到SDK工具
  • 发射SDK

现在硬件设计被导出到SDK工具。Vivado到SDK的切换是通过Vivado内部完成的。我们将使用SDK创建一个Software应用程序,通过从Vivado导入硬件设计信息,该应用程序将使用定制的板接口数据和FPGA硬件配置。

2SDK

  • 创建新的应用程序项目并选择默认的Hello World模板
  • FPGA程序
  • 通过选择正确的UART COM端口和波特率来运行配置

先决条件

硬件

  • Digilent Cmod A7 FPGA板
  • 微型USB电缆
    • 用于UART通信和JTAG编程

软件

  • Xilinx Vivado 2015。X +
    • 应该为2016年工作。X也
  • Xilinx SDK
    • 与vivado安装的版本相同
  • 串行终端应用程序
    • 在本教程中使用Tera术语

董事会的支持文件

  • 董事会的支持文件-这些文件将描述GPIO接口,并使您更容易选择您的FPGA板和添加GPIOIP块。

教程

1.创建项目

当您第一次运行Vivado时,这将是主启动窗口,您可以在这里创建一个新项目或打开一个最近的项目。

1.1)点击创建新项目.选择项目名称和位置,以便有没有空格.对于项目名称、文件名和位置路径,这是一个重要的命名约定。
下划线可以很好地代替空格。

为Vivado项目创建一个专用文件夹是一种很好的实践,最好使用最小的路径长度。例如:C: / Vivado_Projects。

命名项目并选择项目位置并单击下一个

1.2)选择项目类型为RTL项目.不选中“不指定源”框并单击下一个

1.3)我们不会在这里导入或创建任何文件,所以单击下一个直到零件选择屏幕。

1.4)如果您已完成董事会支持文件维基指南中,选择董事会
Cmod A7应该显示在选择列表中。选择正确的板名不匹配将导致错误。选择Cmod A7并点击下一个

1.5)显示新项目设计源和目标设备的概要。点击完成


2.创建新的区块设计

这是一个主项目窗口,在这里你可以创建一个基于IP的块设计或者添加基于RTL的设计源。左边的流量导航面板提供了关于如何创建硬件设计、执行模拟、运行合成和实现以及生成位文件的多个选项。您还可以使用硬件管理器直接从Vivado使用为RTL项目生成的位文件来编写电路板。

对于我们的设计,我们将使用IP积分器创建一个新的块设计。

2.1)在左边,你应该看到Flow Navigator。选择创建块设计IP集成商。给你的设计一个名字(不要有任何空白),然后点击好吧



您已经创建了一个新的模块设计。


3.添加Microblaze处理器和配置

3.1)点击 添加IP按下并搜索Microblaze



双击Microblaze将其添加到您的块设计中。

3.2)点击董事会选项卡(下面用橙色突出显示)并查找系统时钟



此列表包含您之前安装的board文件中定义的所有组件。这些已经配置为与几个Vivado ip一起工作。
3.3)单击并拖动系统时钟到您的块设计,创建一个新的时钟向导与我们的系统时钟连接到它。

3.2)点击块自动化运行打开Microblaze处理器的Block自动化。

在这里,您可以选择给Microblaze处理器提供多少内存。配置选项要匹配下面的图片,请单击好吧

3.3)运行区块自动化将自动生成一组额外的IP区块,这些IP区块将根据上一步选择的选项自动添加到我们的硬件设计中。暂时不要单击“运行连接自动化”。


4.添加单元格Ram组件

4.1)点击董事会标签(下面用橙色突出显示)

4.2)单击并拖动细胞内存组件添加到空块设计中。Vivado将自动连接Cellular内存为AXI EMC IP块。然后将rdclk引脚连接到时钟向导的clk_out1。


5.添加外围组件

5.1)进入董事会再次制表,找到USB UART组件。单击并拖动将Uartlite块添加到设计中。

5.2)点击连接自动化运行在绿色的旗帜。检查所有自动化复选框,然后单击好吧



这将为块内存创建一个AXI互连,为外围组件创建另一个AXI互连。
单击 重新布局按钮以重新排列模块设计。


6.验证设计并制作一个HDL包装器

6.1)选择 验证设计.这将检查设计和连接错误。
6.2)在设计验证步骤之后,我们将继续创建一个HDL系统包装器。点击来源选项卡并找到您的块设计。



右击你的块设计和点击创建高密度脂蛋白包装让Vivado管理包装和自动更新并点击好吧



这将在VHDL中创建一个顶级模块,并允许您生成位流。

7.生成一些文件

7.1)在Vivado的顶部工具栏中,单击 产生的比特流.这也可以在流导航器左边的面板,下面程序和调试
如果你还没有保存你的设计,你会得到一个提示来保存块设计。
将开始生成位文件。工具会运行合成实现.在合成和实现都成功完成后,将创建位文件。你会在项目窗口的右上角发现一个综合与实现的状态栏。

这个过程可以在任何地方进行2 - 20分钟这取决于你的电脑。
7.3)位流生成后,屏幕上会弹出消息提示。在本演示中,您不必打开已实现的设计。点击取消

8.导出硬件设计到SDK

8.1)在主工具栏中,单击文件并选择出口的硬件.勾选复选框包括比特流并点击好吧.这将为软件开发工具- Vivado SDK导出带有系统包装的硬件设计。



将在下面创建一个新的文件目录Hello_World。SDK类似Vivado硬件设计项目的名称。另外两个文件,.sysdef.hdf也创造了。这个步骤实际上创建了一个新的SDK工作区。
8.2)在主工具栏中,单击文件然后发射SDK.将这两个下拉菜单保留为默认值本地项目并点击好吧.这将打开Xilinx SDK并导入硬件。


9.在Xilinx SDK

HW设计规范和包含的IP块显示在system.hdf文件。Xilinx SDK独立于Vivado,也就是说,从这里开始,你可以在导出的HW设计上用C/ c++创建你的SW项目。如果需要,还可以直接从Vivado Project主目录中创建的SDK文件夹中启动SDK。

从这里开始,如果你需要返回Vivado并对HW设计进行更改,那么建议关闭SDK窗口并在Vivado中进行所需的HW设计编辑。在此之后,您必须遵循创建新的HDL包装器、保存设计和位文件生成的顺序。然后必须将这个新的位文件和系统包装器导出到SDK。

9.2)中Project Explorer选项卡,您可以看到您的硬件平台。

系统是在Vivado中创建的块设计的名称。该硬件平台包含了所有的HW设计定义、已添加的IP接口、外部输出信号信息和本地存储地址信息。

10.在SDK中创建新的应用项目

10.1)点击 下拉箭头并选择应用程序项目



为项目指定一个没有空格的名称,然后单击下一个
10.2)选择你好世界从模板列表中单击好吧

将在。中看到两个新文件夹Project Explorer面板。

  • display_hello_world它包含所有的二进制文件,.C和.H(头文件)
  • display_hello_world_bsp哪个是板支持文件夹

display_hello_world是我们的主要工作源文件夹。这里还包含一个重要的文件,即“lscript.ld”。这是一个Xilinx自动生成的链接器脚本文件。双击此文件打开。

10.3)回到Project Explorer,双击并打开helloworld.csrc文件夹中。

这是将要打印的主c文件你好世界在控制台中执行。


11.用位文件编程FPGA

确保Cmod A7已打开,并通过Cmod A7和Cmod A7连接到主机JTAGUSB端口UARTUSB端口。

在顶部工具栏上,单击 FPGA程序按钮。
11.2)点击程序使用硬件设计对FPGA进行编程。


12.设置UART终端

12.1)打开一个串行终端应用程序(Tera术语)。连接Cmod A7 UART端口,波特率为9600。通过双击Uartlite模块,可以在模块设计中改变波特率。


13.编写Microblaze处理器程序

回到SDK,选择您的Hello_world项目,然后单击 运行……按钮。选择在硬件上启动(系统调试器)并点击好吧

你的程序将运行,你应该看到你好世界弹出在您的串行终端。