ZYNQ开发入门

  • 格式:pdf
  • 大小:891.48 KB
  • 文档页数:12

ZYNQ开发⼊门

第9章 ZedBoard⼊门

前⾯⼤家已经对ZYNQ架构以及相应的开发⼯具有⼀定的认识,接下来我们将带领⼤家来⼀起体验ZYNQ,体验软硬件协同设计的魅⼒。由于时间的关系,下⾯的⼀些实验(本章及后续章节的实验)可能有不完善的地⽅,欢迎读者向我们反馈。9.1 跑马灯

本实验将指导⼤家使⽤Vivado 集成设计环境创建本书的第⼀个Zynq设计。这⾥,我们使⽤跑马灯这个⼊门实验来向⼤家介绍Vivado IDE的IP Integrator环境,并在Zedboard上实现这个简单的Zynq嵌⼊式系统。之后,我们将会使⽤SDK创建⼀个简单的软件应⽤程序,并下载到Zynq的ARM处理器中,对在PL端实现的硬件进⾏控制。本实验分为三个⼩节来向⼤家进⾏介绍:第⼀节我们将使⽤Vivado IDE创建⼀个⼯程。

在第⼀节的基础上,第⼆节我们将继续构建⼀个Zynq嵌⼊式处理系统,并将完成后的硬件导⼊到SDK中进⾏软件设计。

最后⼀节我们将使⽤SDK编写ARM测试应⽤程序,并下载到ZedBoard上进⾏调试。

实验环境:Windows 7 x64操作系统, Vivado2013.4,SDK 2013.49.1.1 Vivado⼯程创建

1)双击桌⾯Vivado快捷⽅式,或者浏览Start > All Programes > Xilinx Design Tools > Vivado

2013.4 > Vivado 2013.4来启动Vivado.

2)当Vivado启动后,可以看到图9-1的Getting Started页⾯。

图9- 1 Vivado 开始界⾯3)选择Create New Project选项,图9-2所⽰的New Project 向导将会打开,点击Next。

图9- 2 New Project 对话框4)在Project Name对话框中,输⼊first_zynq_design作为Project name, 选择C:/XUP/Zed作为

Project location,确保Create project subdirectory被勾选上,如图9-3,点击Next。

图9- 3 Project Name对话框5)在Project Type对话框中,选择RTL Project,确保Do not specify sources at this time选项没有

被勾选,如图9-4,点击Next。

图9- 4 Project Type对话框6)在Add Source对话框中,选择Verilog作为⽬标语⾔,如果你对VHDL熟悉的话,你也可以

选择VHDL,如果这⾥你忘记了选择,在⼯程创建完成后,也可以在⼯程设置中选择你熟悉的HDL语⾔。如果你已经有了源⽂件,在这⾥就可以选择Add file或者Adddirectory进⾏添加,由于我们没有任何的源⽂件,所以这⾥我们直接点击Next即可,如图9-5。

图9- 5 添加源⽂件7)在Add Existing IP对话框中,点击Next。

8)在Add Constraints对话框中,点击Next。

9)在Default Part对话框中,在Specify框中选择Boards选项,在下⾯的Board列表中选择

ZedBoard Zynq Evaluation and Development Kit,点击Next,如图9-6。

图9- 6 芯⽚选择10)在New Project Summary对话框中,点解Finish完成⼯程创建,⾄此,我们已经使⽤Vivado

创建了⼀个Zynq设计的⼯程框架,图9-7为Vivado的⼯程界⾯,在第四章我们已经对该界⾯进⾏过介绍,如果还不熟悉的读者再回到前⾯复习⼀下。下⾯我将使⽤FlowNavigator的IP Integrator功能完成第⼆节的嵌⼊式系统设计。

图9- 7 Vivado⼯程界⾯9.1.2 在Vivado 中创建Zynq 嵌⼊式系统

这⼀节我们将创建⼀个简单的Zynq 嵌⼊式系统,该系统使⽤Zynq PL 部分实现⼀个通⽤I/O 控制器 (GPIO),控制器同ZedBoard 上的8个LED 相连接,并且通过AXI 总线连接到PS 端,这样我们就可以通过将要在第三⼩节中实现的ARM 应⽤程序来对LED 进⾏控制。系统结构图如图9-8所⽰。

图9- 8

系统结构图 1) 创建⼀个Block Design 。在Flow Navigator 窗⼝中展开IP Intergrator ,选择Create Block Design ,

如图9-9。

图9- 9 创建Block Design2) 在Block Design 对话框中输⼊zynq_system_1作为Design name ,如图9-10,点击OK 继续。这时,

在workplace 区域将会打开IP Integrator 的图表画布,我们将在这个空⽩区域中像画画⼀样的构建⾃⼰的系统。这⾥操作的最⼩单位是IP 核,Xilinx 官⽅还有⼀些第三⽅机构给我们提供了很多的免费IP 核,你可以直接在这⾥添加使⽤,当然,⽤户也可以⾃定义⾃⼰的IP 核,然后

添加到⼯程中使⽤,或者提供给其他⽤户使⽤,在13章第⼀节我们将会向⼤家介绍如何制作⾃⼰的IP核。

图9- 10 输⼊设计名称3)在空⽩画布中,右键空⽩区域,并选择Add IP选项,或者点击画布最上⽅的绿⾊提⽰信息中的

Add IP链接,如图9-11。

4)这时⼀个IP核列表将会弹出,在Search⼀栏输⼊Zynq,在搜索结果列表中双击ZYNQ7

Processing System添加PS端的IP核到画布中,如图9-12所⽰。由于我们使⽤的是ZedBoard,这⼀步完成后Vivado会对Zynq处理器进⾏相应的配置。同时在IDE的下⾯,选择TCL Console 你将看到如下的信息,其实我们在Vivado图形化界⾯所做的所有操作都将转化为TCL命令来执⾏。create_bd_cell -type ip -vlnv http://www.doczj.com/doc/489599873.html :ip:processing_system7:5.3 processing_system7_0

图9- 11 添加IP

图9- 12 添加PS IP核

在空⽩画布中,可以看到ZYNQ7 Processing System被以图形化的⽅式添加进来,当前的IP模块是⼀个初始化界⾯,如果要使这个模块能在ZedBoard⼯作起来,⾸先对其进⾏相应的配置。5)双击ZYNQ7 Processing System模块,打开其配置界⾯,如图9-13所⽰,⾸先先来熟悉⼀下这个

界⾯。Documentation:提供该IP模块相关的⽂档帮助。

Page Navigator: 这⾥提供了该IP模块的详细配置列表。Zynq Block Design页⾯显⽰了ZYNQ7 Processing System的总体概貌,我们可以通过点击绿⾊部分对相应的模块进⾏查看或者配

置;PS-PL Configuration页⾯提供了PS到PL的相关接⼝配置信息以及PS部分⼀些配置信

息;Peripheral I/O Pins页⾯主要是对⼀些通过外设接⼝的配置;MIO Configuration页⾯主

要是对MIO以及EMIO的分配控制。Clock Configuration页⾯主要是对PS端时钟资源的配

置及管理。DDR Configuration页⾯主要是对DDR控制器⼀些参数的配置。Interrupts页⾯

主要是对中断进⾏配置管理。Presets:这⾥主要提供了⼀些开发板的预定义配置功能,Vivado将会按照已经设置好的配置信息来对该IP核进⾏配置,⽽不需要我⼿动的来配。点击该按钮,我们可以看到Vivado现

在已经⽀持的开发板有Microzed、ZC702、ZC706、ZedBoard以及⼀个Default配置选项。Import XPS Settings:这个功能主要是将XPS中的ZYNQ7 Processing System的配置信息导⼊进来,其实就是导⼊⼀个xml⽂件。由于我们使⽤的是ZedBoard开发板,且只⽤到Vivado

提供的默认配置,所以这⾥选择Presets > Zedboard,点击OK来完成对ZYNQ7 Processing System的配置。下⼀步我们将要连接PS端的DDR与FIXED_IO接⼝到顶层接⼝。6)左建选择ZYNQ7 Processing System模块上的DDR接⼝,当光标变成笔装的时候右键并选择

Make External,如图9-14,对于FIXED_IO使⽤同样的⽅法。

25134

图9- 13 ZYNQ7 Processing System界⾯

注:5、6两步更加简单的⽅法是点击Diagram顶端的Run Block Automation设计协助链接来完成对ZYNQ7 Processing System IP核的配置并将DDR与FIXED_IO MakeExternal,如图9-15所⽰。当选择

/processing_system7_0的时候,相应的IP核图形界⾯会变成⾼亮显⽰,表⽰其已被选中,并将会被⾃动配置。在弹出的Run Block Automation对话框中确保Apply BoardPreset被勾选,否则其只会将DDR 与FIXED_IO 连接到顶层端⼝,⽽不会对ZYNQ7进⾏默认配置。如果你在⼿动完成了ZYNQ7的配置⼜要使⽤Run Block Automation这个功能,那么⼀定要确保Apply Board Preset选项没有被选中,否则它将会使⽤默认配置来覆盖你原来的配置。

图9- 14 Make External Interface 操作

图9- 15 Run Block Automation-ZYNQ

当完成了ZYNQ7 Processing System IP核的添加并对其进⾏配置后,你的Block Design应该如图9-16所⽰。下⾯将添加AXI GPIO IPcore到系统中,该IP核被放在PL端,通过AXI总线同ARM 相连接,并通过GPIO接⼝控制ZedBoard上的8个LED⼩灯。我们将使⽤IP Integrator 的设计协助⼯具来将AXI GPIO连接到PS端。

图9- 16 ZYNQ7 Processing System 外部连接7)右键Diagram窗⼝的空⽩区域,在弹出的菜单列表中选择Add IP选项,在搜索栏中输⼊GPIO,

并在搜索结果列表中双击AXI GPIO将该IP添加到系统中。8)在Diagram窗⼝顶部点击Run Connection Automation链接,并选择/axi_gpio_0/S_AXI选项,这时

可以看到GPIO IPcore的S_AXI接⼝被⾼亮显⽰,如图9-17,点击OK完成。

图9- 17 Run Connection Automation-GPIO

这时可以看到有两个新的IP模块⾃动被添加了进来:Processor System Reset: 这个IP提供⼀个定制化的Reset功能,包括所有外设,互联以及处理器⽣。

AXI Interconnect:提供AXI 总线互联控制,它将PL端外设同PS端连接起来。