从Zynq开始

概述

本指南将逐步介绍如何使用Vivado IP Integrator为Zedboard创建硬件设计。

在本教程的最后,你会有:

  • 创建了一个简单的硬件设计,包括板上led和开关。
  • 在XIlinx Vivado SDK中创建了一个。c项目,使用上一步所示的硬件设计将板上led和交换机绑定在一起。

先决条件

硬件

  • Digilent的Zedboard开发板和用于UART通信和JTAG编程的Micro USB电缆

软件

  • Xilinx Vivado 2015。Xwith the SDK package.

董事会的支持文件

  • Zedboard支持文件
    • 这些文件将描述GPIO界面在您的板,使它更容易选择您的板在最初的设计设置和添加GPIOIP块中的块设计
    • 遵循这个维基指南一般的设计流程

      即Vivado

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

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

      2SDK

      • 创建新的应用程序项目并选择默认的Hello World模板
      • 编写FPGA程序并运行应用程序

      - - -

      1.创建新项目

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

      1.1)点击创建新项目



      1.2)您将看到项目创建向导。点击下一个



      1.3)输入项目名称和单击位置下一个



      1.4)选择RTL项目并点击下一个



      1.5)本演示不使用任何现有资源、现有IP或约束。单击下面三个屏幕。

      1.6)选择董事会并选择Zedboard董事会文件。点击下一个然后完成

      请务必选择Digilent制作的board文件。


      2.创建一个新的区块设计

      2.1)流程完成后,单击创建块设计在流程导航器中。



      2.2)点击好吧



      2.3)一个空白块设计将打开。


      3.添加Zynq IP和GPIO块

      3.1)点击 添加IP点击并搜索ZYNQ。双击ZYNQ7处理系统放置Zynq的空块



      3.2)点击块自动化运行链接



      你的Zynq区块现在应该如下图所示。


      3.3)点击 添加IP图标,这次搜索“gpio”并添加阿喜GPIO核心。


      3.4)双击newaxi_gpio_0刚添加的用来弹出自定义窗口的核心。下IP配置选项卡检查支持双通道盒子。点击好吧



      3.5)添加另一个GPIO核心重复步骤3.4,但不要启用双通道。


      - - -

      4.运行连接自动化工具

      4.1)连接自动化工具将为演示添加所需的逻辑块。选择连接自动化运行用蓝色突出显示。



      4.2)检查框by所有自动化.选择GPIOaxi_gpio_0并选择btns_5bits“单板部件接口”下拉框。



      4.3)选择GPIO2axi_gpio_0并选择swts_8bits在下拉框中。



      4.4)选择GPIOaxi_gpio_1并选择leds_8bits在下拉框中点击好吧


      4.5)此过程将增加:
      * AXI互连*处理器系统复位*用于按钮、开关和led的单板部件。

      >

      4.6)接下来让我们清理我们的块设计。单击重新布局按钮以重新排列模块设计。


      - - -

      5.生成HDL包装器和验证设计

      5.1)选择 验证设计.这将检查设计和连接错误。
      5.2)在设计验证步骤之后,我们将继续创建一个HDL系统包装器。在块设计窗口中,在设计来源选项卡,右键单击框图文件。我们把它命名为design_1。bd”并选择创建高密度脂蛋白包装

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


      6.生成比特流

      6.1)点击产生的比特流在流导航器的底部。等待流程完成并单击OK。


      7.为SDK导出硬件文件

      7.1)进入文件→导出→导出硬件包括比特流然后单击好吧


      8.发射SDK

      8.1)去文件→启动SDK并点击好吧


      9.创建一个新的Hello World应用程序项目

      9.1)去文件→新建→应用程序项目



      9.2)输入项目详细信息:
      *硬件平台:design_1_wrapper_hw_platform_0 *处理器:ps7_cortexas9_0 *语言:C * OS平台:standalone * Board Support Package: Create New(保留默认名称)

      9.3) Hello World演示是这个演示的一个很好的起点。点击下一个中,选择你好世界并点击完成.这个过程将向项目资源管理器添加两个目录。
      9.4)扩大zedboard_getting_started_with_zynq然后打开src双击“helloworld.c”。这是默认的Hello World C代码。



      10.1)复制并粘贴下面的代码到helloworld.c文件中。
      /***************************************************** Zedboard入门指南终端设置:波特:115200拼:8平价:没有停止位:1 7/25/16:由JonP  ****************************************************/# include < stdio . h ># include“platform.h”# include < xgpio.h ># include“xparameters.h”# include“sleep.h”int主要XGpio输入输出intbutton_data0intswitch_data0XGpio_Initialize输入XPAR_AXI_GPIO_0_DEVICE_ID//初始化输入XGpio变量XGpio_Initialize输出XPAR_AXI_GPIO_1_DEVICE_ID//初始化输出XGpio变量XGpio_SetDataDirection输入10 xf//设置第一个通道三态缓冲区为输入XGpio_SetDataDirection输入20 xf//设置第二个通道三态缓冲区为输入XGpio_SetDataDirection输出10 x0//设置第一个通道三状态缓冲区输出init_platform1switch_dataXGpio_DiscreteRead输入2/ /得到转换数据XGpio_DiscreteWrite输出1switch_data//将开关数据写入ledbutton_dataXGpio_DiscreteRead输入1/ /获得数据的按钮//打印消息,取决于是否按下一个或多个按钮如果button_data==0 b00000/ /什么都不做其他的如果button_data==0 b00001xil_printf0”按钮按下\ nr \其他的如果button_data==0 b00010xil_printf1”按钮按下\ nr \其他的如果button_data==0 b00100xil_printf2”按钮按下\ nr \其他的如果button_data==0 b01000xil_printf”按钮3压\ nr \其他的如果button_data==0 b10000xil_printf4”按钮按下\ nr \其他的xil_printf“多个按钮按下\ nr \usleep200000/ /延迟cleanup_platform返回0

      11.运行该项目

      11.1)确认Zedboard已通过UARTUSB端口,JP5设置为JTAG。要对FPGA编程,在顶部工具栏上,单击 FPGA程序按钮。
      11.2)保存项目。项目将自动生成。
      11.3)右键单击zedboard_getting_started_with_zynq目录,并选择运行为→启动硬件(系统调试器)。
      11.4) demo将在Zedboard上运行。尝试使用4个开关(标记为SW0-SW3)。这样做应该光照其各自领导.同样在串口上,按下每个按钮(标记为BTN0-BTN3)将产生“按下按钮x”的信息。
      11.5) Tera Term或任何串行终端将作为控制台显示BTN的输出。
      将终端设置为: