arty z7入门zynq

重要!

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

概述

本指南将提供使用Vivado IP集成商为Arty-Z7板创建硬件设计的一步一步的演练。

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

  • 创建了一个简单的硬件设计,包括板上led,开关和按钮。
  • 在XIlinx Vivado SDK中创建一个. c项目,使用上一步中显示的硬件设计,将板上led和按钮捆绑在一起,并通过USB-UART发送开关状态。

先决条件

硬件

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

软件

  • Xilinx Vivado 2017。Xwith the SDK package.

董事会的支持文件

  • Arty-Z7支持文件
    • 这些文件将描述GPIO在您的板上的接口,使它更容易选择您的板在初始设计设置和添加GPIOIP块在块设计中
    • 遵循此Wiki指南Vivado板文件为Digilent 7系列FPGA板如何安装vivado 2015.x的董事会支持文件

使用的功能

不习惯 使用
2用户切换 X
2个用户LED. X
2用户RGB led X
4用户按钮 X
USB-UART Bridge X
Micro SD卡连接器 X
HDMI水槽和HDMI源 X
PWM单音频输出w/ 3.5mm插孔 X
10/100/1000以太网PHY X
512MB 1050Mb/s DDR3内存 X
Quad-SPI闪光 X
两个PMOD港口 X
Chipkit连接器用于XADC信号 X
USB HID主机 X

一般的设计流程

I. Vivado

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

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

II。SDK.

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

- - -

1.创建一个新项目

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

1.1)点击创建新项目

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

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

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

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

1.6)选择董事会并选择Arty-Z7-20Arty-Z7-10董事会文件根据您拥有哪个板。
点击下一个然后完成


2.创建新的块设计

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

2.2)点击好吧

2.3)一个空白的块设计将出现。


3.添加Zynq IP和GPIO块

3.1)点击 添加IP按钮并搜索zynq。双击Zynq7处理系统放置裸zynq块。

3.2)点击运行块自动化链接并点击好吧.这将使用董事会文件和正确配置ZYNQ处理器为Arty-Z7。



您的Zynq块现在应该看起来像下面的图片。
3.3)点击 添加IP图标,这次搜索" gpio "并添加阿喜GPIO核心。


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



3.5)添加另一个GPIO重复步骤3.3但不启用双通道。

-

4.运行连接自动化工具

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

在方框上打勾所有自动化.选择GPIO在下面axi_gpio_0并选择btns_4bits“单板部件接口”下拉框。

4.3)选择GPIO2.在下面axi_gpio_0并选择swts_2bits在下拉框中。

4.4)选择GPIO在下面axi_gpio_1并选择LEDS_4BITS.在下拉框中点击好吧


这个过程将增加:
* AXI互连*处理器系统复位*单板部分的按钮,开关和led。

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


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

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

这将在VHDL或Verilog中创建顶级模块,具体取决于您选择的语言,并将允许您生成比特流。


6.生成比特流

6.1)点击产生的比特流在流动导航器的底部。



6.2)接下来有一系列弹出框。在第一个弹出窗口中选择保存



在第二个弹出窗口中选择yes。您可以选择让它不再通知您。



在最后的弹出选择最大数量的工作允许,如果你没有其他任务正在您的PC上。否则,请根据系统需要选择作业数量。



7.导出SDK硬件文件

7.1)进入文件→导出→导出硬件…确保选中复选框包括比特流然后单击好吧


8.发射SDK

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

-

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

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

9.2)输入项目名称,并在默认设置上留下其余的选项。然后选择下一个

9.3)选择Hello World模板。然后选择完成

9.4)扩大Getting_started_with_zynq(您制作的应用程序)然后打开src双击helloworld.c。这是默认的Hello World C代码。


10.创造自己的你好世界

复制并粘贴下面的代码到helloworld.c文件中。
/ ***************************************************** ARTY-Z7的入门指南此演示将显示LED上的按钮的状态,并在开关打开时打印到串行通信的消息。终端设置:-Baud:115200 -Data位:8  -  Parity:No -Stop位:1 9/21/17:由JPEYRON创建**************************************************** / #include  #include“platform.h”#include  #include“xparameters.h”#include“sleep.h”int main(){xgpio输入,输出;int button_data = 0;int switch_data = 0;xgpio_initialize(&input,xpar_axi_gpio_0_device_id);//初始化输入xgpio变量xgpio_initialize(&output,xpar_axi_gpio_1_device_id);//初始化输出xgpio变量xgpio_setdatairection(&input,1,0xf);//将第一个通道三态缓冲区设置为输入xgpio_setdatadirection(&Input,2,0xF); //set second channel tristate buffer to input XGpio_SetDataDirection(&output, 1, 0x0); //set first channel tristate buffer to output init_platform(); while(1){ button_data = XGpio_DiscreteRead(&input, 1); //get switch data XGpio_DiscreteWrite(&output, 1, button_data); //write switch data to the LEDs switch_data = XGpio_DiscreteRead(&input, 2); //get button data //print message dependent on whether one or more buttons are pressed if(switch_data == 0b00){} //do nothing else if(switch_data == 0b01) xil_printf("switch 0 on\n\r"); else if(switch_data == 0b10) xil_printf("switch 1 on\n\r"); else xil_printf("both switches on\n\r"); usleep(200000); //delay } cleanup_platform(); return 0; }

11.运行该项目

11.1)确保Arty-Z7通过UARTUSB端口和该JP4设置为JTAG。要对FPGA进行编程,请在顶部工具栏上单击 FPGA程序按钮。
11.2)保存项目。该项目将自动构建。
11.3)右键单击Getting_started_with_zynq目录并选择run as→Launch on Hardware(System Debugger)。
11.4)演示将在ARTY-Z7上运行。尝试使用(标记为BTN0-BTN3)。按每个按钮应亮起其各自的按钮领导.同样通过串口,2个交换机(标记为SW0-SW1)将产生消息“switch x on”或“both switches on”。
11.5) Tera Term或任何串行终端都可以作为控制台来显示BTN的输出。
将终端设置为:
您应该在终端上看到类似这样的东西,这取决于您如何处理这些开关。