Nexys 4 - Microblaze服务器入门

概述

本指南将逐步介绍如何使用Vivado IP Integrator构建基于Microblaze的硬件设计开始使用Microblaze通过使用Nexys 4 FPGA板上的以太网端口和gpio进行引导。

在本教程的最后,您将有一个全面的硬件设计的Nexys4,利用各种硬件端口的Nexys4是由Microblaze软核处理器块管理。


先决条件

软件

  • Xilinx Vivado与SDK包

董事会的支持文件

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

硬件

  • Digilent Nexys 4 FPGA板和Micro USB Cable用于UART通信和JTAG编程

教程

Microblaze是Xilinx的软IP核,它将完全在Xilinx FPGA通用内存和逻辑结构中实现微处理器。在本教程中,我们将添加以太网功能并创建一个echo服务器。

一般的设计流程

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

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

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

1.创建一个新项目

1.1)单击Create New Project。选择项目名称和位置,以便有没有空格.对于项目名称、文件名和位置路径,这是一个重要的命名约定。
下划线可以很好地代替空格。
为Vivado项目创建一个专用文件夹是一种很好的实践,最好使用最小的路径长度。例如:C: / Vivado_Projects。



命名项目并选择项目位置,然后单击next。

1.2)选择“项目类型”为“RTL项目”。不选中“不指定源”框,单击“下一步”。

1.3)如果您已经遵循了董事会支持文件维基指南,然后单击下一步并选择董事会
从筛选选项中选择供应商、显示名称和板修订。
在下4应该显示在选择列表中。选择正确的板名不匹配将导致错误。

1.4)单击Next,然后是Finish, Vivado将为您创建一个项目。

2.创建块设计

2.1)点击下面用蓝色圈出来的按钮,创建一个块设计。


3.添加Microblaze核心

3.1)开始点击“添加IP”下面用蓝色圈出的按钮。搜索“Microblaze”并双击下面高亮显示的IP。

3.2)点击蓝色圈出的“运行区块自动化”,并更改选项以匹配下图中的选项。点击“Ok”。


4.添加必要的输出时钟

4.1)双击下面突出显示的时钟向导块,将CLK_IN1设置为使用“sys_clock”,将EXT_RESET_IN设置为使用“reset”。

4.2)选择Output时钟选项卡并启用clk_out2.集clk_out250兆赫.这些将分别时钟内存控制器和以太网参考时钟。
设置“Reset Type”为活性低使用下面的项目符号。当您完成时,单击Ok。



你的区块设计应该是这样的:


5.添加IP核

5.1)我们现在将添加所有必要的IP块到我们的项目中。我们将添加5个核心:
* AXI EMC
* AXI Uartlite
* Ethernet PHY MII to Reduced MII
* AXI EthernetLite
* AXI计时器
添加所有这些到您的设计,一次一个,使用“添加IP”按钮。一旦它们全部添加,您应该看到如下所示的5个块。


6.IP核配置与路由

6.1)AXI EMC块,连接rdlk输入clk1输出时钟向导块.为此,将鼠标悬停在EMC rdclk旁边的蓝色矩形上,直到看到铅笔光标。单击并将其拖动到另一个块的clk1输出并释放。
6.2)AXI EthernetLite块,连接信息产业部输出信息产业部输入以太网PHY MII到减少的MII块.为此,将鼠标悬停在MII+旁边的蓝色矩形上,直到看到一个铅笔光标。点击并拖动到另一个块的+MII输入并释放。

6.3)点击“连接自动化运行”.取消勾选的microblaze_0复选框,单击“确定”。

6.4)点击重新布局(下面用蓝色圈出来的),你的区块设计应该是这样的:

6.5)
*路线中断AXI计时器In0(0时)Concat块。
*路线ip2intc_irptAXI EthernetLite三机一体(0时)Concat块。




*连接resetn孵蛋的向导块的重置销。

6.6)右键单击您的设计的背景(空白),然后单击创建端口…,或使用快捷键Ctrl-K。将此端口命名为eth_ref_clk,并将选项更改为下图中的选项。

6.7)连接这eth_ref_clk销,ref_clkEthernet PHY MII to reduced MII块。然后从时钟向导将两者连接到输出引脚clk_out2。

6.8)双击进入AXI EMC块,选择Memory Bank1,设置如下图所示。

6.9)点击地址Edditor选择S_AXI_MEM并将范围更改为16M。

6.10)点击重新布局再次将导致您的最终块设计布局为这个项目。

6.11)我们现在必须通过创建XDC文件将eth_ref_clk引脚连接到FPGA上的正确引脚。下设计窗口中,选择来源选项卡。扩大文件夹,右击若干然后点击“添加资源…”

6.12)选择“添加或创建约束”,单击“下一步”。

6.13)点击创建文件…,命名新的约束文件并单击OK,然后单击Finish。

6.14)打开新的约束文件,粘贴下面的代码行:
set_property -dict {PACKAGE_PIN D5 IOSTANDARD LVCMOS33} [get_ports {eth_ref_clk}];
完成后保存xdc文件。
6.15)现在,右键单击design_1方框图并单击“创建高密度脂蛋白包装”.当弹出窗口时,选择“让Vivado管理包装和自动更新”,然后点击OK。

6.16)单击工作空间顶部的“生成比特流”。这个过程需要一段时间。


7.导出硬件设计到SDK

7.1)在窗口的左上角,从工具栏中单击文件并选择出口的硬件
这将为软件开发工具- Vivado SDK导出带有系统包装的硬件设计。
通过勾选复选框,确保生成的位流包含在内


8.启动SDK

8.1)去文件并选择发射SDK并单击OK。将启动Vivado设计项目位置本地创建的SDK文件。从Vivado到SDK的切换已经完成。


9.内部SDK为Vivado

将打开一个新的SDK窗口。HW设计规范和包含的IP块显示在system.hdf文件。SDK工具是独立于Vivado的,也就是说,从这一点上,你可以在导出的HW设计上用C/ c++创建你的SW项目。如果需要,还可以直接从Vivado Project主目录中创建的SDK文件夹中启动SDK。
现在,如果您需要返回Vivado并更改HW设计,那么建议关闭SDK窗口并在Vivado中进行所需的HW设计编辑。在此之后,您必须遵循创建新的HDL包装器、保存设计和位文件生成的顺序。然后必须将这个新的位文件和系统包装器导出到SDK。
由于我们目前没有任何HW设计编辑,我们将继续创建一个软件应用程序来运行一个echo服务器。


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

10.1)去文件在主工具栏中选择新»应用项目.将弹出一个新的项目窗口。
给您的SDK项目一个没有空格的名称,如下所示。确保目标硬件是正确的硬件设计。在我们的例子中,它将是“design_1_wrapper_hw_platform_0”。
例如,如果你还有另一个硬件设计Project Explorer窗口,则您还将在Target Hardware下拉选择列表中看到此设计名称。
因为我们只有一个硬件设计design_1_wrapper_hw_platform_0这将是我们的目标硬件。选择创建新的董事会支持包.该工具将自动填充董事会支持包名称来匹配给定的项目名称。
单击Next。



选择IwIP回显服务器在可用模板列表下单击Finish。

完成上一步后,您将在Project Explorer面板。
echo_server它包含所有的二进制文件,.C和.H(头文件)
echo_server_bsp哪个是板支持文件夹
echo_server是我们的主要工作源文件夹。它还包含src文件夹中名为“lscript.ld”的重要文件。这是一个Xilinx自动生成的链接器脚本文件。双击此文件打开。

11.验证内存区域映射的链接器脚本文件

在链接器脚本中,查看可用内存区域盒子。名称应该是axi_emc_0_s_AXI_MEMO_BASEADDR大小为0x01000000


12.1)打开system.mss文件内echo_server_bsp文件夹,然后单击修改BSP的设置



选择lwip140,然后展开temac_adapter_options并找到phy_link_speed在列表中。改变phy_link_speedCONFIG_LINKSPEED100和按下OK。


13.用位文件编程FPGA

13.1)确认Nexys 4 DDR已打开,并使用提供的micro USB数据线连接主机PC。在主工具栏上,单击Xilinx工具程序»FPGA
确保硬件平台是选为design_1_wrapper_hw_platform_0
在软件配置框中,在要在块中初始化的ELF文件内存列,行选项必须读取bootloop.如果不是,单击该行并选择bootloop
现在点击程序。


14.安装SDK串行控制台并运行服务器

14.1)右键单击echo_server项目文件夹并选择运行As»运行Configurations



它的连接按下并检查连接STDIO到控制台复选框。点击应用,然后单击运行


15.运行服务器

15.1)在屏幕底部的控制台窗口中将显示连接的详细信息。


16.用Tera Term测试服务器

16.1)用网线将PC机与Nexys4连接。
16.2)为了连接到echo服务器,你必须设置一个静态IP地址的以太网连接。
要做到这一点:
*右击你的互联网连接和点击开放网络和共享中心



*找到以太网连接到您的Nexys4-DDR。它应该是一个身份不明的网络。点击本地连接



*点击属性



*选择互联网协议版本4 (TCP/IPv4)并点击属性



*点击请使用以下IP地址:子弹,并输入IP地址192.168.1。XX,其中XX是介于2到255之间的值,而不是10。确保点击子网掩码字段获取要自动填充的255.255.255.0掩码。单击Ok,您将拥有一个静态IP地址。

16.3)打开Tera Term,输入以下信息,点击Ok。

16.4)在控制台中输入任何东西并按Enter键。回显服务器将回显您的输入并在控制台中显示它。
您可以进入Setup>Terminal并更改以下更传统的echo服务器格式的设置