ZYNQ 纯PL端逻辑资源程序固化流程
ZYNQ 纯PL端逻辑资源程序固化
ZYNQ的程序固化流程比传统的FPGA固化流程复杂很多,Vivado生成的bit文件无法直接固化在ZYNQ芯片中。因为ZYNQ 非易失性存储器的引脚(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的专用引脚。这些非易失性存储器由 PS 的 ARM 处理器进行驱动,因此需要将 bit 流文件和 elf 文件(软件程序的下载文件)合成一个 BOOT.BIN,才能进行固化。
本文以按键控制LED亮灭的程序为例,将代码固化至开发板上的QSPI FLASH中。
- 硬件平台:正点原子领航者 ATK-DF7020P
- 软件平台:Vivado 2020.2
-
正常的开发流程将可综合的RTL代码编写完成,确定代码功能正确。本例中只有一个模块。

-
点击侧边栏
PROJECT MANAGER-IP INTEGRATER-Create Block Design选项

-
在弹出的窗口中输入合适的名称,如
system,随后点击OK

-
点击
Diagram窗口中的+按钮

-
在弹出的窗口中找到
ZYNQ7 Processing System,回车选择

-
双击出现的ZYNQ处理器模块

-
由于纯PL端的开发不涉及与ZYNQ处理器的通信,不需要使用到AXI总线,因此需要将总线接口关闭。

-
因为打开IP核界面,按下图所示配置SPI FLASH外设。因为程序是固化在FLASH中的,因此,必须要对其进行配置。

-
然后配置DDR3。根据板载的DDR芯片选择相应的型号,本例选择的是MT41K256M16 RE-125

-
点击
OK结束配置 -
点击
Source,右键需要固化的模块,选择Add Module to Block Design,或者直接左键按住模块名称,拖入中间图形化界面中。

-
点击
Run Connection Automation进行自动连线

-
在弹出的界面中,勾选需要自动连线的模块,确认时钟源为ZYNQ FCLK端口提供的50MHZ时钟

-
完成后的界面如下

-
选择需要引出的端口,右键端口选择
Make External选项

-
全部完成后,点击
Run Block Automation

-
弹出的窗口直接点击
OK

-
点击红框中的按钮进行验证,如果出现绿色框中的弹窗,说明验证正确。如果出现错误请检查连线。

-
右键
Sources中的Design Block文件,选择Generate Output Products选项

-
直接点击
generate

-
完成后,右键
Sources中的Design Block文件,选择Create HDL Wrapper选项

-
保持默认,点击
OK

-
出现顶层文件后,按常规操作进行引脚分配

-
分配完成后,关闭
Elaborated Design界面,按常规流程生成bit文件。随后点击File-Export-Export Hardware选项

-
选择
Include bitstream选项

-
选择合适的导出位置和导出的文件名,默认也可。点击
Finish结束

-
之后打开Vitis。选择合适的文件夹,新建应用程序

-
点击
Create a new platform from hardware,找到刚才导出的文件

-
为工程命名,本例为FSBL

-
保持默认

-
选择
Zynq FSBL模板

-
直接右键应用工程名,点击
Bulid Project

-
左键单击系统工程名后,点击
Xilinx-Create Boot Image。

-
会弹出以下窗口,检查无误后,点击
Create Image。如果没有自动填充文件,则说明没有点击系统工程名。如果显示找不到elf文件,说明没有编译,需要先Bulid Project。

-
生成成功后,点击
Xilinx-Program Flash

-
将JTAG和电路板相连,确保ZYNQ芯片启动模式处于JTAG模式。电路板上电后,点击
Program。蓝色框中的选项,可选可不选。

-
写入完成后,电路板断电,断开JTAG,将ZYNQ启动模式调整为QSPI模式后,重新上电就能看到固化成功后的效果。
