构建完整嵌入式系统--PS和PL的合作实验
实验资料可到群或qq进行下载:1073030956或1072008053
本实验的硬件框架为基本嵌入式系统,该系统组成 :
ARM Cortex-A9 PS和三个标准GPIO IP,用于连接板载LED,按钮和开关(PL)。
实验步骤:
- 添加PYNQ-Z2 Board File,点击http://www.tul.com.tw/ProductsPYNQ-Z2.html进行下载。
- 将下载后的PYNQ-Z2文件添加到Vivado 根目录下boards_files中。
- 双击桌面图标启动Vivado并点击Create Project新建一个新的设计工程,进入创建引导后,点击 Next 进入下一步。
- 输入工程名,并选择工程目录后,点击Next。
- 选择创建类型为RTL Project设计,点击Next。
- 在Default Part界面中点击Boards点击PYNQ-Z2,选择该器件点击Next。
- 在弹出的New Project Summary中重新检查所选器件型号是否与板卡芯片型号一致,若确认
无误,点击 Finish 完成工程创建。
- 完成工程创建后,进入到工程操作界面,在Flow Navigator栏选择Create Block Design创建
Block Design设计,并输入设计名,点击OK。
- 点击Diagram窗口中心➕或右击Diagram窗口空白处选择 (快捷键Ctrl+I),打开添加IP核窗口,输入ZYNQ并双击添加到Diagram中。
- 点击Run Block Automation,自动预设电路配置,点击OK。
11.双击ZYNQ模块打开ZYNQ处理器的Customization窗口,显示各种可配置模块,并且可点击各种可配置模块(绿色突出显示)进行更改
12将I/O外设模块配置为仅支持UART0,点击MIO Configuration面板取消除UART0以外所有外设(ENT0,USB0,SD0,GPIO),点击OK
13点击“+”号,在Search中输入AXI GPIO,双击进行添加。
14单击AXI GPIO模块,在属性选项中将名称更改为buttons。
点击AXI GPIO模块,右键找到Block Properties.
15双击AXI GPIO模块打开自定义窗口,点击Board interface选择btns 4bits,点击OK。
16点击Run Connection Automation,点击buttons(包括GPIO和S_AXI),点击OK。自动将S_AXI接口连接到ZYNQ M_GP_GP0端口(通过AXI互联模块Interconnect),以及外部接口GPIO。
注意:从中可以看出PS作为Master设备。外设作为Slave设备。要想了解相关的内容可到该博客中找到“vivado中ZYNQ详解(主要用于PS和PL之间的工作衔接)”文章进行学习。
17.重复上述过程,添加另一个GPIO,命名为leds,双击进行配置,在Board interface中选择leds 4bits,点击OK。
18重复上述过程,添加另一个GPIO,命名为switches,双击进行配置,在Board interface中选择sws 2bits,点击OK。
19再次点击Run Connection Automation,选择All Automation,点击OK。
20设计总体。点击下面按钮重新排一下布局。
21得到最终布局。
22验证是否将地址分配给三个GPIO,验证设计是否有误。
23在Source窗口右键software_hardware.bd文件,选择Generate Ouput Products。
24并在弹出Generate Ouput Products对话框内选择Out of context per IP,选择Generate。
25在 Source 窗口右键 software_hardware.bd 文件,选择 Create HDL Wrapper为 IP 子系统生成一个顶层文件。
26在弹出的 Create HDL Wrapper 中默认选择第二项,点击 OK 完成创建,并可以在 Source 窗口看到生成了包含有 system.bd 的 software_hardware_wrapper.v 的顶层文件。
27在Flow Navigator执行Generator Bitstream,生成Bit文件。
28在弹出Bitstream Generation Completed选择View Reports或者直接点击Cancel。
29.点击菜单栏 File>>Export>>Export Hardware,将生成的硬件导出,为后面进行软件应用开发做好准备。
30.在点击Export Hardware后,需要勾选Include bitstream,以确保导出的硬件信息会包含有bit文件。
软件方面的应用
31.点击File >> Launch SDK,并在弹出的对话框中点击OK,启动SDK工具。
32.SDK工具成功启动后,会进入以下界面,可以在左侧Project Explorer中找到software_hardware_wrapper_hw_plaform_0,其中包含有导出的bit文件与相关硬件信息。
33.点击File >> New >> Board Support Package 创建板级支持包,点击Finish,点击OK。
注意:点击OK后要注意console窗口的反应,如果console有反应则代表正常,当console内显示结束后再进行下一步。如果console在创建完Board Support Package 板级支持包后没有反应,则必须重新建立Board Support Package 板级支持包。
34.点击File >> New >> Application Project 创建新工程,命名为lab1,点击Next。
35.选择lab1>>src 右击src文件,选择Import。
36.在Import窗口中选择General文件,双击 File System 添加C文件。
37.选择C文件路径(Lab1\source),添加C文件,点击Finish。
38.更改错误,在standalone_bsp_0/ps7_cortexa9_0/include/xparameters.h
硬件测试
39.通过USB数据线连接PYNQ板卡与电脑,并打开开关将板卡上电,并等待板卡指示灯亮起,表示上电完成,板卡处于启动等在下载状态。
40.点击“+”,添加串口,进行程序下载检测。
41.在工具栏中点击Program FPGA按键 ,或菜单栏点击Xilinx >> Program FPGA,打开Program FPGA窗口,将Hardware Platform选择为system_wrapper_Hw_platform_0,Bitstream选择为 software_hardware_wrapper.bit。点击Program。
42.右击Lab1,然后选择Run as ,再选择launch on hardware.
43.注意:板卡SW0,SW1不能置为1,调节为“00”状态,并且跳线帽需要调节至JTAG处。
44.打开SDK Terminal窗口。窗口出现以下字样表示正常,程序开始运行。
45.测试硬件,按动板子上的四个开关时,开关上方对应的LED会亮。
46.板卡SW0,SW1置为1,调节为“11”状态,退出实验程序。