ZYNQ开发入门基础.doc
《ZYNQ开发入门基础.doc》由会员分享,可在线阅读,更多相关《ZYNQ开发入门基础.doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.-第9章 ZedBoard入门前面大家已经对ZYNQ架构以及相应的开发工具有一定的认识,接下来我们将带领大家来一起体验ZYNQ,体验软硬件协同设计的魅力。由于时间的关系,下面的一些实验(本章及后续章节的实验)可能有不完善的地方,欢迎读者向我们反馈。9.1 跑马灯本实验将指导大家使用Vivado 集成设计环境创建本书的第一个Zynq设计。这里,我们使用跑马灯这个入门实验来向大家介绍Vivado IDE的IP Integrator环境,并在Zedboard上实现这个简单的Zynq嵌入式系统。之后,我们将会使用SDK创建一个简单的软件应用程序,并下载到Zynq的ARM处理器中,对在PL端实现的硬件
2、进行控制。本实验分为三个小节来向大家进行介绍: 第一节我们将使用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.
3、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 Na
4、me对话框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 或者Add directory进行添加,由于我们没有任何的源文件, 所以这里我们直接点击Next即可
5、,如图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的工程界面,在第
6、四章我们已经对该界面进行过介绍,如果还不熟悉的读者再回到前面复习一下。下面我将使用Flow Navigator的 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 De
7、sign。在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核,然后添加到工程中使
8、用,或者提供给其他用户使用,在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图形化界
9、面所做的所有操作都将转化为TCL命令来执行。create_bd_cell -type ip -vlnv :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
10、:提供该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 Co
11、nfiguration页面主要是对DDR控制器一些参数的配置。Interrupts页面主要是对中断进行配置管理。 Presets:这里主要提供了一些开发板的预定义配置功能,Vivado将会按照已经设置好的配置信息来对该IP核进行配置,而不需要我手动的来配。点击该按钮,我们可以看到Vivado现在已经支持的开发板有Microzed、ZC702、ZC706、ZedBoard以及一个Default配置选项。 Import XPS Settings:这个功能主要是将XPS中的ZYNQ7 Processing System的配置信息导入进来,其实就是导入一个xml文件。由于我们使用的是ZedBoard开
12、发板,且只用到Vivado提供的默认配置,所以这里选择Presets Zedboard,点击OK来完成对ZYNQ7 Processing System的配置。下一步我们将要连接PS端的DDR与FIXED_IO接口到顶层接口。6) 左建选择ZYNQ7 Processing System模块上的DDR接口,当光标变成笔装的时候右键并选择Make External,如图9-14,对于FIXED_IO使用同样的方法。 图9- 13 ZYNQ7 Processing System界面注:5、6两步更加简单的方法是点击Diagram顶端的Run Block Automation设计协助链接来完成对ZYNQ
13、7 Processing System IP核的配置并将DDR与FIXED_IO Make External,如图9-15所示。当选择/processing_system7_0的时候,相应的IP核图形界面会变成高亮显示,表示其已被选中,并将会被自动配置。在弹出的Run Block Automation对话框中确保Apply Board Preset被勾选,否则其只会将DDR与FIXED_IO 连接到顶层端口,而不会对ZYNQ7进行默认配置。如果你在手动完成了ZYNQ7的配置又要使用Run Block Automation这个功能,那么一定要确保Apply Board Preset选项没有被选中
14、, 否则它将会使用默认配置来覆盖你原来的配置。图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 Processi
15、ng 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提
16、供一个定制化的Reset功能,包括所有外设,互联以及处理器生。 AXI Interconnect:提供AXI 总线互联控制,它将PL端外设同PS端连接起来。9) 同样点击Run Connection Automation链接,并选择/axi_gpio_0/GPIO,Run Connection Automation对话框将被打开,在Select Board Interface的下拉菜单中选择leds_8bit选项,点击OK,如图9-18所示。图9- 18 Run Connection Automation-GPIO注:当使用如上的方式来对GPIO Make External时,Vivado会自
17、动在系统中添加约束文件,将GPIO连接到ZedBoard的LED引脚上。10) 当完成上面一步,在Diagram中应该看到如图9-19所示的画面。图9- 19 Module Connect System11) IP Integrator将会自动为挂在AXI总线上的逻辑设备分配地址空间, 这样ARM才可以寻址到PL端的逻辑设备。选择Address Editor选项,并展开Data,如图9-20。可以看到IP Integrator已经为AXI GPIO 分配了64K的地址空间,基地址为0x41200000。由于ARM是统一编址的,所以在编写ARM程序的时候就可以像读写内存一样直接对该地址进行读写,
18、从而实现对该IP核的控制。图9- 20 地址编辑器12) 保存工程:Ctrl + S13) 在Diagram窗口的左面工具栏中选择Validate Design 按钮检测设计的有效性。这个操作将会调用一次DRC检测,如果检测正确,Validation successful对话框将会弹出, 否则根据错误信息进行改正。点击OK完成设计有效性检测。至此,一个简单的IP子系统已经设计完成,下面我们将设计完成Block Design生成可以综合的HDL设计文件。14) 在Source窗口中,选择Sources选项,右键Block设计zynq_system_1,选择Generate Output Prod
19、ucts,如图9-21。图9- 21生成HDL文件15) 在弹出的对话框中直接点击Generate。这一步将会生成Diagram Block Design的HDL源文件以及相应端口的约束文件。16) 继续右键zynq_system_1,选择Create HDL Wrapper,保持默认选项,点击OK关闭Create HDL Wrapper对话框。这里,Vivado会为IP子系统生成一个顶层文件,这样我们就可以对该系统进行综合、实现并生成bit流了。17) 在Flow Navigator中,展开Program and Debug,点击Generate Bitstream,这时No Impleme
20、ntation Result Available对话框被打开, 点击YES,如图9-22。18) 当bit流生成完成,Bitstream Generation successful completed对话框被打开, 选择Open Implementation Design对话框,点击OK完成,如图9-23所示。当bit流生成完成后,在Vivado中最后的工作就是要将设计导入到SDK中,然后对ARM进行编程,控制ZedBoard上的LED灯,实现我们这次实验的目的。图9- 22 生成bit流图9- 23 打开实现设计19) 在IP Integrator下点击Open Block Design,选
21、择zynq_system_1.bd,重新打开前面创建的Block Design,如图9-24。图9- 24打开Block Design20) 选择File Export Export Hardware for SDK.,Export Hardware for SDK 对话框将被打开,确保Include bitstream 和 Launch SDK两个选项被选中,如图9-25,点击OK。注意:这里要导入的Source是Block Design,所以必须要先将zynq_system_1.bd打开,否则会出现错误;要想将bitstream导入到SDK, 必须先打开implementation des
22、ign,否则这里的Include Bitstream将会是disable的。21) 到此,在Vivado下的工作就算完成了,如果没有出现错误,说明我们的硬件工程总体上是没有问题的。下面一节我们将在SDK中创建一个简单的应用程序,来完成软硬件协同设计中的软件部分。图9- 25 将硬件设计导入到 SDK9.1.3 SDK应用程序编写这一节我们将讲解如何使用SDK来创建一个简单的软件应用程序,并使用该程序来对ZedBoard上的LED进行控制。从前面可以看到,系统已经为AXI GPIO分配了一个地址空间,ARM处理器通过访问该地址空间中的寄存器来对GPIO进行控制寄存器,从而达到控制ZedBoard
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- zynq 开发 入门 基础
限制150内