Nexys 4 DDR -开始与Microblaze服务器

概述

本指南将通过将基于微墨IP Integrator建立的MicroBlaze基于硬件设计提供了一步的步骤步骤从Microblaze开始通过使用内容为4 DDR FPGA板的板载以太网端口和GPIO来指导。

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


先决条件

硬件

  • Digilent Nexys 4 DDR FPGA板
  • 微型USB电缆

软件

  • Xilinx Vivado 2015。X与SDK包

板支持文件

  • 板支持文件

介绍

MicroBlaze是来自Xilinx的软IP核心,它将完全在Xilinx FPGA通用内存和逻辑面料内实现微处理器。对于本教程,我们将添加以太网功能并创建echo服务器。


一般的设计流程

I. Vivado

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

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

2SDK

  • 创建新的应用程序项目,然后选择默认的Hello World模板
  • FPGA程序
  • 请选择正确的UART COM端口和波特率进行配置

教程

1.创建一个新项目

1.1)打开Vivado并点击创建新项目打开Vivado的新项目向导。

1.2)将打开一个新窗口,点击下一个你会看到下面的屏幕。命名您的项目(没有空格!)并在单击之前选择您的项目保存目录下一个.下划线可以很好地替代空格。

1.3)我们将从头开始构建这个项目,并添加我们自己的资源,因此我们将希望创建一个RTL项目。选择RTL项目离开不要指定来源盒子未选中。点击下一个

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

1.5)点击下一个,显示新项目设计源和目标设备的摘要。点击完成

至此,您已经成功地创建了一个将与Nexys 4 DDR正确通信的项目。


2.创建新的块设计

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

2.2)在左边,你应该看到Flow Navigator。选择创建块设计在IP集成商下。在没有任何空的空间的情况下为您的设计提供名称。

添加MicroBlaze核心:

2.3)创建一个空的设计工作区,您可以在其中添加IP块。点击 添加IP按钮。这将打开一个来自Xilinx IP存储库的预构建IP块目录。搜索“Microblaze”并双击它添加IP块到您的空设计。

2.4)这是Xilinx Microblaze IP块。添加新的IP块时,用户可以通过单击控件自定义块属性块自动化运行消息提示或通过双击块本身。



2.5)选择块自动化运行和自定义助理窗口将打开默认设置。设置如下图片。


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

添加必要的输出时钟:

2.7)双击时钟向导(clk_wiz_1) IP块。

2.8)变化CLK_IN1使用“sys时钟”,和ext_reset_in.使用“重置”如下所示,然后单击好吧.这将使用我们的新用户设置自定义块。

2.9)选择输出时钟选项卡。

2.10)启用clk_out2.,clk_out3..放clk_out2.“200.0”MHz.clk_out3.“50.0”MHz.和集合重置类型作为活跃低.左侧面板显示GUI块的表示及其内部设置。观察到重置引脚现在将读取为resetn.完成后点击好吧


3.添加IP核

3.1)我们现在将为我们的项目添加所有必要的IP块。有4个核心我们会添加:
*内存接口生成器*以太网PHY MII to Reduced MII * AXI Uartlite * AXI EthernetLite * AXI Timer
3.2)将所有这些添加到您的设计中,一次使用 添加IP按钮。一旦它们全部添加,您应该会看到如下所示的四个块。


4.配置和路由IP核

4.1)点击块自动化运行并为mig_7series_0块运行它。



当MIG块自动化运行时,您将看到这个特定的错误消息[BD 41-1273]。您可以暂时忽略它。它不会以任何方式影响你的设计。MIG块将按照已下载的Nexys 4 DDR的板支持文件配置。点击好吧解雇此消息。

4.2)AXI EthernetLite块,连接MII输出信息产业部输入以太网PHY MII减少MII块.为此,将悬停在MII +旁边的蓝色矩形上,直到您看到铅笔光标。单击并将其拖动到另一个块和发布的+ MII输入。

4.2)路线clk_out2.clk_out3.在你的孵蛋的向导sys_clk_i.内存接口生成器ref_clk.以太网PHY MII到简化MII块分别。

4.3)点击连接自动化运行.联络microblaze_0复选框,然后单击好吧

4.4)点击重新制定布局(以下面的蓝色盘旋),你的块设计应该如下所示:

)
4.5)路线打断AXI定时器IN0 [0:0]块。下一个路线IP2INTC_IRPT.AXI EthernetLite在1 [0:0]块。

4.6)连接resetn孵蛋的向导块的重启销。

4.7)右键点击设计的背景(空白),然后点击创建港口......,或使用快捷键Ctrl-K。将此端口命名为“eth_ref_clk”,并将选项更改为下图中的选项。点击好吧一旦完成。

4.8)连接eth_ref_clk.销,ref_clk.以太网PHY MII到简化MII块。

4.9)右键单击旁边的蓝色条纹矩形DDR2 +公共汽车上内存接口生成器块,然后单击使外部

4.10)点击重新制定布局再次将导致您的最终块设计布局为此项目。

4.11)我们现在必须通过创建一个XDC文件将eth_ref_clk引脚连接到FPGA上的正确引脚。下设计窗口中,选择来源选项卡。扩大束缚文件夹,右键单击约束然后点击添加消息来源......

4.12)选择添加或创建约束然后点击下一个

4.13)点击创建文件…,命名新约束文件,然后单击好吧然后完成

4.14)打开新的约束文件并粘贴以下代码行:
set_property -dict {package_pin d5 iostandard lvcmos33} [get_ports {eth_ref_clk}];#sch = eth_ref_clk

完成后保存xdc文件。

4.15)现在,右键单击你的design_1框图,然后单击创建高密度脂蛋白包装.当窗口弹出时,选择让Vivado管理包装器和自动更新子弹,然后单击好吧

4.16)点击产生的比特流在工作空间的顶部。这个过程需要一段时间。


5.导出硬件设计到SDK

5.1)在窗口的左上角,从工具栏点击文件→出口硬件.检查框中是否包含生成的比特流。这将导出使用系统包装器的硬件设计,用于软件开发工具 - Vivado SDK。

目前有一个bugdownload.bit未为Nexys 4 DDR板生成文件。要解决此问题,请单击文件→导出→导出比特流文件...然后导航到Project / Project.sdk / design_1_wrapper_hw_platform_0并导出名为“下载”的新位文件


6.启动SDK

6.1)去文件→启动SDK然后点击好吧.在Vivado设计项目位置本地创建的SDK文件将被启动。Vivado已经完成了对SDK的移交。


7.Vivado SDK内部

7.1)将打开一个新的SDK窗口。硬件设计规范和包含的IP块显示在system.hdf文件。SDK工具独立于Vivado,即,从这一点开始,您可以在导出的HW设计顶部的C / C ++中创建SW项目。如有必要,您还可以直接从主Vivado项目目录中创建的SDK文件夹启动SDK。

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

由于目前没有任何HW设计编辑,我们将继续创建一个软件应用程序来运行回显服务器。


8.在SDK中创建新的应用程序项目

8.1)去文件→新建→应用程序项目在主工具栏中。将弹出一个新的项目窗口。给你的SDK项目一个没有空格的名称,如下所示。确保目标硬件是正确的硬件设计。在我们的例子中,它将是design_1_wrapper_hw_platform_0.

例如,如果您还拥有另一个硬件设计项目资源管理器窗口中,则您还将在Target Hardware下拉选择列表中看到此设计名称。

因为我们只有一个硬件设计design_1_wrapper_hw_platform_0.这将是我们的目标硬件。选择创建新的董事会支持包.该工具将自动填充董事会支持包与给定的项目名称匹配。点击下一个


8.2)选择IWIP Echo Server.在可用模板列表中,然后单击完成

8.3)完成上一步后,你会看到两个新的文件夹在项目资源管理器面板。echo_server它包含所有二进制文件,.C和.H(头文件),以及echo_server_bsp这是董事会支持文件夹。

echo_server是我们的主要工作源文件夹。它还包含一个重要的文件,显示在src文件夹中,名为lscript.ld..这是一个Xilinx自动生成的链接器脚本文件。双击此文件打开。


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

9.1)在链接器脚本中,看看部分到内存区域映射盒子。如果你这样做了使DDR2外部然后步目标内存区域必须mig_7series_0
向下滚动查看这是否适用于所有行。如果对于任何地区它都没有说mig_7series_0,然后单击行下的行内存区域列和选择mig_7series_0


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

10.2)一次板支持包设置选择概述→独立→lwip141.LWIP141库的配置表现在应该在右侧可见。导航temac_adapter_options→phy_link_speed.在这里你需要改变CONFIG_LINKSPEED_AUTODETECTCONFIG_LINKSPEED100这样它看起来像下面的图片。


11.用位文件编程FPGA

11.1)确保Nexys 4 DDR打开并通过Micro USB电缆连接到主机PC。在主工具栏上,单击Xilinx工具→程序FPGA
确保硬件平台是选为design_1_wrapper_hw_platform_0.

在软件配置框中,在ELF文件以块初始化内存列,行选项必须读取bootloop.如果没有,单击该行并选择bootloop

现在点击程序。

12.设置SDK串行控制台并运行服务器

右键单击echo_server项目文件夹并选择作为→运行运行配置

12.2)去它的连接标签和检查连接STDIO到控制台复选框。点击应用,然后单击


13.运行服务器

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


14.使用Tera Term测试服务器

14.1)使用以太网电缆将PC连接到Nexys 4 DDR。如果使用路由器,请观看UART控制台以找出NEXYS 4 DDR回显服务器的IP,并连接到该IP地址。将连接设置为静态是不必要的。
为了从您的计算机直接连接到回显服务器,您必须使用一个静态IP地址设置以太网连接。要做到这一点:
14.2.1)右键单击您的internet连接,然后单击打开网络与共享中心

14.2.2)查找到Nexys 4 DDR的以太网连接。应该是一个身份不明的网络。点击本地连接

14.2.3)点击特性

14.2.4)选择Internet协议版本4 (TCP/IPv4)然后点击特性

14.2.5)点击使用以下IP地址:子弹和类型在IP地址“192.168.1.xx”中,其中xx是2到255之间的值,但不是10。此IP不能与网络中已经存在的其他IP相同.请确保点击子网掩码字段获取要自动填充的255.255.255.0掩码。点击好吧你将拥有一个静态IP地址。

14.3)打开“Tera Term”,输入以下信息,单击好吧

在控制台上输入任何东西,然后按下键盘的Enter键。回显服务器将回显您的输入并将其显示在控制台中。

您可以进入设置→终端,更改下面的设置以获得更传统的回显服务器格式