ZYNQ芯片主要由PS端(ARM处理器)和PL端(FPGA逻辑单元)组成,因此ZYNQ芯片结合了ARM芯片和FPGA芯片的优点于一身。本实验主要介绍使用PS端来完成ZYNQ串口打印输出的功能。
虽然本实验仅仅使用了PS,但是还要建立一个Vivado工程,用来配置PS管脚。虽然PS端的ARM是硬核,但是在ZYNQ当中也要将ARM硬核添加到工程当中才能使用。本实验使用的Vivado版本为Vivado2021.1。
1. Vivado工程的建立
(1)打开Vivado,创建一个名为“Uart_HelloWorld”的工程; (2)点击“Create Block Design”,创建一个Block设计,也就是图形化设计; (3)进入到“Block Design”界面后,点击“Add IP”按钮,搜索“zynq”,在搜索结果列表中双击“ZYNQ7 Processing System”; (4)双击Block图中的“processing_system7_0”(即zynq的PS端IP核),配置该IP核的参数; (5)首先出现的界面是ZYNQ硬核的架构图,可以很清楚看到它的结构,可以参考ug585文档,里面有对ZYNQ的详细介绍。图中绿色部分是可配置模块,可以点击进入相应的编辑界面,当然也可以在左侧的窗口进入编辑。 (6)本教程使用的ZYNQ开发板为ZerdBoard,该开发板使用J14串口用于数据传输,电路图如下图所示,可知该串口的FPGA端接口为MIO48、MIO49。 (7)选择“Peripheral I/O Pins”选项卡,勾选“UART1”; (8)选择“MIO Configuration”选项卡,设置好Bank0 I/O Voltage和Bank1I/O Voltage;ZedBoard的Bank0 I/O Voltage设为LVCMOS 3.3V、Bank1 I/O Voltage设为LVCMOS 1.8V。 (9)选择“Clock Configuration”选项卡,根据ZerdBoard板卡配置,Input Frequency(MHz)设置为33.333333MHz,CPU Clock Ratio默认为6:2:1。 (10)选择“DDR Configuration”选项卡,根据ZerdBoard板卡配置,DDR型号选择为MT41J128M16HA-15E。 (11)点击“OK”按钮,完成该IP核的配置。点击“Run Block Automation”, Vivado软件会自动完成一些导出端口的工作。 (12)按照默认点击“OK”,不更改任何参数。 (13)点击“OK”以后我们可以看到PS端导出一些管脚,包括DDR还有FIXED_IO,DDR是DDR3的接口信号,FIXED_IO为PS端固定的一些接口,比如输入时钟,PS端复位信号,MIO等。连接FCLK_CLK0到M_AXI_GP0_ACLK,按“Ctrl+S”保存设计。 (14)选择Block设计,右键“Create HDL Wrapper…”,创建一个Verilog或VHDL 文件,为block design生成HDL顶层文件。 (15)保持默认选项,点击“OK” (16)展开设计可以看到PS被当成一个普通IP来使用。选择block设计,右键“Generate OutputProducts”,此步骤会生成block的输出文件,包括IP,例化模板,RTL源文件,XDC约束,第三方综合源文件等等。供后续操作使用。 (17)弹出的窗口直接安装默认设置,点击“Generate”。 (18)点击Vivado “Flow Navigator”一栏里的“Generate Bitstream”,等待Vivado生成好bit文件后,在菜单栏“File -> Export -> Export Hardware…”导出硬件信息,这里就包含了PS端的配置信息。 (19)在弹出的对话框中勾选“Include bitstream”并点击“Next”以及“Finished”。 (20)到此为止,Vivado的工作告一段落,Vivado最后导出了一个硬件平台的XSA文件。软件开发工程师用该XSA文件便可以脱离Vivado软件环境对上层应用软件进行开发。
2. Vitis(SDK)工程的建立和调试
在Vivado早期的版本中,软件工程师的开发是在SDK软件中进行的,Vivado目前最新的版本(例如Vivado 2021.1)已将原来的SDK软件升级为Vitis软件。 (1)点击 Vivado 菜单“Tools-> Launch VitisIDE”,启动 Vitis。 (2)首先我们要建立一个平台工程。这个平台工程即对应于我们刚刚在Vivado下搭的硬件平台。点击Vitis菜单“File-> New->Platform Project…”。 (3)工程命名“Zynq7000_Platform”,并点击下一步。 (4)点击“Browse…”指定硬件平台文件,即我们刚用Vivado最后导出的硬件平台配置XSA文件。点击完成。 (5)可以在项目的游览窗口里看到刚建立的平台工程文件夹。 (6)建立好平台工程后,我们再建立一个应用工程,该工程即实现串口打印“Hello World”信息。点击Vitis菜单“File-> New->Application Project…”,并点击下一步。 (7)选中我们刚建好的“Zynq7000_Platform”平台工程,并点击下一步。 (8)给应用工程取个名字,并点击下一步。 (9)从应用工程模板里,选择“Hello World”工程,点击“Finish”按钮。 (10)分别编译平台工程和应用工程。 (11)至此,我们完成了所有SDK软件的配置和开发工作。
3. 下载程序至开发板
(1)作者使用的开发板为ZedBoard开发板,板卡上的跳线帽MIO2~MIO6都接地,如下图所示。板卡和计算机之间连好JTAG下载线和串口线(USB转串口),给板卡上电。 (2)Vitis下点击“Run Configurations…” (3)点击“Single Application Debug(GDB)”,在“Application”选项卡中勾选“ps7_cortexa9_0”,点击“Run”按钮。 (4)程序运行成功后,便会在计算机的串口调试助手上打印如下信息。 (5)至此我们完成了ZYNQ串口打印输出项目的全部工作内容。
4. 工程源码下载
该工程对应的源码可以通过关注该微信公众号,找到对应的原创文章进行下载,工程采用的是Vivado2021.1版本。 如果大家对我们的文章感兴趣,可以关注我们的微信公众号:“图灵研究院”:
|