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时,这将是主要的开始窗口,你可以在这里创建一个新项目或打开一个最近的项目。
2.创建新的块设计
3.添加Zynq IP和GPIO块
-
4.运行连接自动化工具
5.生成HDL包装器并验证设计
这将在VHDL或Verilog中创建顶级模块,具体取决于您选择的语言,并将允许您生成比特流。
6.生成比特流
7.导出SDK硬件文件
8.发射SDK
9.在SDK中创建一个新的Hello World应用程序项目
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的输出。
将终端设置为: