文档库 最新最全的文档下载
当前位置:文档库 › MYiR Zynq FPGA 使用手册

MYiR Zynq FPGA 使用手册

MYiR Zynq FPGA 使用手册

版本V1.0

2015年5月28日

版本记录

目录

目录 (3)

简介 (5)

第1章HelloWorld (6)

1.1 新建Vivado工程 (6)

1.2 新建Block Design (7)

1.3 设置工程使用Verilog语言 (8)

1.4 添加PS的IP核并配置 (9)

1.5 生成综合文件 (11)

1.6 生成FPGA顶层文件 (12)

1.7 综合实现 (12)

1.8 导出硬件配置文件 (13)

1.9 启动SDK,新建SDK工程 (13)

1.10 修改源码 (14)

1.11 生成boot.bin启动文件 (15)

第2章GPIO操作1 (16)

2.1 新建Vivado工程 (16)

2.2 添加IP核并配置 (16)

2.3 综合实现 (16)

2.4 新建SDK工程 (16)

2.5 生成boot.bin运行 (16)

第3章GPIO操作2 (17)

3.1 新建Vivado工程 (17)

3.2 添加IP核并配置 (17)

3.3 综合 (17)

3.4 分配引脚 (18)

3.5 实现和生成bitstream (19)

3.6 导出硬件配置文件 (19)

3.7 SDK新建FSBL工程分配引脚 (20)

3.8 SDK新建app工程 (20)

3.9 生成boot.bin启动文件 (21)

第4章GPIO操作3 (23)

4.1 新建Vivado工程 (23)

4.2 添加axi gpio ip核 (23)

4.3 综合 (25)

4.4 分配引脚 (25)

4.5 生成boot.bin (26)

第5章PL中断 (27)

5.1 新建Vivado工程 (27)

5.2 添加其他IP核 (27)

5.3 综合分配引脚 (31)

5.4 生成boot.bin启动文件 (31)

附录A 售后服务与技术支持 (33)

简介

例程使用的软件版本是Vivado Design Suite 2014.4,安装之后会有4个软件,Vivado 2014.4,Xilinx SDK 2014.4,System Generator 2014.4和Vivado HLS 2014.4。这里只使用Vivado 2014.4和Xilinx SDK 2014.4,以下分别简称Vivado和SDK.

ZYNQ芯片的开发环境与传统的ARM芯片开发环境有些区别,毕竟ZYNQ是

ARM+FPGA的架构,这个特性也体现在了开发环境上。我们平常开发新的ARM平台时候,一般需要编写或修改引导程序,配置DDR,查找Datasheet配置管脚等一大堆繁琐的工作,面对的是源码,修改的时候需要在源码中来回跳转,查找,很烦人而且容易出错。而在开发ZYNQ芯片的时候,我们可以在Vivado中用图形界面直接修改,很直观方便。

Vivado可以构建出一个PS的模型,在界面界面下对这个模型进行修改,最后生成对应的C文件,可以用这个C文件去初始化PS。FPGA的开发也是在Vivado下进行的,下面会有详细的例子进一步说明。

SDK是Xilinx对Eclipse包装过的软件,里边已经集成了GCC编译器,用来开发PS 端的软件,界面跟Eclipse差不多,对Eclipse熟悉的朋友上手会很快。

ZYNQ芯片的FPGA程序不能固化,每次上电都需要通过PS重新下载FPGA程序,但是在开发阶段,FPGA可以通过JTAG口单独下载程序调试,关于如何通过JTAG下载FPGA程序,请参考文档《MYIR-Xilinx-AN-001_使用JTAG下载FPGA程序》。

第1章HelloWorld

本例子实现从串口打印出“Hello World”,不涉及FPGA端的开发,但是ZYNQ的ARM 和FPGA开发是很密切,通过HelloWorld可以熟悉FPGA的开发环境。本例子会详细介绍怎样建立工程,之后的例子只讲解重要的部分,在阅读其他例子的时候如果不熟悉操作,可回头参考本章。

1.1 新建Vivado工程

打开Vivado软件-> Create New Project,在Project Name对话框输入工程名称和工程位置。

图1-1

一直点击Next到Default Parts界面,按下图填好Filter项,选择xc7z010clg400-1->Next->Finish。

图1-2

1.2 新建Block Design

按ctrl+q调出Flow Navigator,然后单击IP Integrator->Create Block Design新建Block Design。

图1-3

输入Block Design的名称->OK

图1-4

1.3 设置工程使用Verilog语言

点击工具栏上的Project Settings

图1-5 点击General,在Target Language中选择Verilog

图1-6

1.4 添加PS的IP核并配置

双击Project Mamager中的design_1打开Block Design,点击左边工具栏上的Add IP 按钮添加IP核。

图1-7

在search中输入ZYNQ,然后选择ZYNQ7 Processing System->回车

图1-8

这样PS的IP核就添加到了Block Design中,双击该IP核进行配置。

图1-9

ZYNQ配置项主要有:

PS-PL Configuration,PS-PL AXI总线的配置

MIO Configuration,PS 外设的配置

Clock Configuration,PS 和PL的时钟配置

DDR Configuration,PS外接的DDR配置

SMC Configuration,PS外接的NAND,NOR,SRAM配置Interrupt,PS和PL的中断配置

图1-10

配置项比较多,这里直接使用光盘上的HelloWord.tcl配置文件。点击Presets->Apply Configuration

图1-11

在弹出的选择配置文件窗口中选择从光盘上拷贝过来的HelloWorld.tcl文件,然后点击OK退出配置。配置后的PS如下图,点击顶部的Run Block Automation->OK进行自动连线。

图1-12

1.5 生成综合文件

右击design_1->Generate Ouput Products->Generate

图1-13 1.6 生成FPGA顶层文件

右击design_1->Create HDL Wrapper->OK

图1-14 1.7 综合实现

点击工具栏上的Run Implementation进行综合实现

图1-15

1.8 导出硬件配置文件

点击菜单栏上的File->Export->Export Hardware->OK导出硬件配置文件

图1-16

1.9 启动SDK,新建SDK工程

点击菜单栏上的File->Launch SDK->OK启动SDK。以下的操作都在SDK下进行.

点击菜单栏上的File->New->Application Project新建工程。

图1-17

填写好Project Name然后点Next,这里有几个工程模板可以选择,这里选择HelloWorld->Finish,

图1-18

1.10 修改源码

发现SD V2.3驱动有问题,将其退为2.2。在HelloWorld_bsp工程下打开system.mss 文件,点击左下角的source,修改sd驱动版本为2.2,按键ctrl+s保存。

图1-19

修改之后重新生成BSP源码,点system.mss左下角的overview->Re-generate BSP Sources。将ps7_init.c和ps7_init.h copy到helloword/src目录下修改

helloword/src/platform.c:

--init_platform函数前添加ps7_init();

--包含头文件#include "ps7_init.h"

这部分可参考HelloWorld工程

1.11 生成boot.bin启动文件

先编译代码,点击菜单栏的project->Clean->OK,编译完后,右击HelloWorld工程->Create boot Image->Create Image,生成BOOT.bin启动文件,用HP USB Disk Storage Format Tool v2.0.6 Portable将SD卡格式化。将该文件Copy到SD卡上,插到Z-turn板上运行,会从串口打印出Hello World.

图1-20

第2章GPIO操作1

ZYNQ的gpio可以通过MIO引出到PS端的引脚,也可以通过EMIO引出到PL端的引脚。PS端可以引出54个gpio,PL端可以引出上百个gpio(根据具体型号而定)。本例子的gpio通过MIO引出,控制LED灯D29。本例子不会详细介绍怎样新建工程,本例子提到的一些操作,如果不熟悉,请参考HelloWorld。

2.1 新建Vivado工程

参考第2章新建一个Vivado工程,工程命名为gpio_mio并添加PS的IP核

2.2 添加IP核并配置

参考2.4添加PS的IP核并配置,用光盘上的配置文件gpio_mio.tcl来配置IP核2.3 综合实现

参考1.5~1.9节,生成综合文件,生成FPGA顶层文件,综合实现,导出硬件配置文件,启动SDK。

2.4 新建SDK工程

参考1.9新建一个SDK工程,工程名为gpio_mio,新建工程时,到参考模板那一项时,选择HelloWorld工程模块,参考光盘提供gpio_mio工程修改SDK源码

2.5 生成boot.bin运行

参考1.11生成boot.bin,拷贝到SD卡运行

第3章GPIO操作2

前面几章只涉及到PS,本章会涉及到PL,会讲解怎样生成PL的程序bitstream,及怎样通过PS下载bitstream到PL。本章描述怎样通过EMIO引出GPIO,并控制三色灯D34,该工程跟之前的例子运行地址不一样,之前的程序运行在内部的RAM中,上电之前内部RAM就可以使用,不需要额外的程序来初始化,但是外部DDR需要初始化才能使用,这个程序就是FSBL(First Stage Boot Loader),FSBL不紧负责初始化外部DDR,将app(应用程序)加载到DDR中运行,还负责将bitstream下载到PL。FSBL不需要我们自己去编写,SDK有FSBL的工程,用SDK可以直接生成FSBL工程。所以本章会涉及到两个工程,一个是FSBL,另一个是控制三色灯的app工程。

3.1 新建Vivado工程

参考第2章新建一个Vivado工程,工程命名为gpio_emio并添加PS的IP核

3.2 添加IP核并配置

参考1.4添加PS的IP核并配置,用光盘上的配置文件gpio_emio.tcl来配置IP核.在Block Design界面,右击GPIO_0端口->Make External将EMIO端口引出

图3-1

3.3 综合

参考1.5生成综合文件,1.6生成FPGA工程顶层文件,然后按F11进行综合。

3.4 分配引脚

综合完成后,点击左侧边的Flow Navigator->Open Synthesized Design打开综合

后的设计

图3-2

打开之后,点击菜单栏的layout->IO Planning打开引脚分配窗口,三色灯的RGB 分别连接的引脚IO_B34_LP7,IO_B34_LN7,IO_B34_LN6,可从电路图上查到对应的引脚号是Y16,Y17,R14,我们将这三个引脚分配到gpio_0_tri_io[0],gpio_0_tri_io[1],gpio_0_tri_io[2],并设置好IO电压,BANK34的IO电压为3.3V,其他值默认,设置如下图所示

图3-3

配置引脚之后,按ctrl+s保存约束文件,所配置的引脚信息会保存在该文件中,在弹出窗口中输入文件名design_1,然后点击OK保存,之后关闭synthesized design 返回Block Design。

3.5 实现和生成bitstream

在工具栏点击Generate Bitstream进行实现和生成bitstream。

图3-4

3.6 导出硬件配置文件

导出硬件配置文件的时候,要选上bitstream,

图3-5

3.7 SDK新建FSBL工程分配引脚

参考1.9新建一个名称为fsbl的工程,工程模板选择的是Zynq FSBL,

图3-6

参考1.10将BSP中的SD源码改为2.2版本。

3.8 SDK新建app工程

参考1.9新建一个以HelloWorld为模板的工程,Board Support Package使用fsbl工程的BSP,不用新建BSP,如下图所示:

相关文档