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模式后,重新上电就能看到固化成功后的效果。