记录一下最近在调试zynq7020时遇到的关于固化程序的问题与要点
我前期利用zynq7020的板子做了一个简单的lcd显示界面,用来显示三串数字和单位,方便后面测量信号时进行上电调试,程序调好了,通过jtag下载也没问题,到最后一步固化程序到SD卡中时遇到了问题,最后几经波折解决了,特此记录。
场景说明:
1.开发环境: vivado2019.2 和 vitis2019.2
2.所需功能只使用了PL部分的资源,且PL部分为.v文件和rom ip.
遇到的问题:
1. 在原工程中引入PS zynq的block design后导致文件混乱
2. 输出的hadrware 文件 (.xsa) 无法被vitis使用。
问题2是最终要解决的,但是是由问题1引起的,问题1的关键是理解PL和PS部分的文件关系.
参考正点原子zynq的程序固化教程以及网上其他的教程,要固化程序必须要加入zynq的IP,并使能SD或者qspi等控制器模块功能。引入zynq IP的一般步骤是新建design block模块图文件,再加入ZYNQ IP进行配置,再generate output file,接着创建 HDL wrapper,最后export出Hardware文件时勾选bitstream。
但是工程前面已经有了lcd的顶层文件及多个子文件,且全是verilog文件,再添加block design后PS和PL部分如何合并,HDL wrapper该如何创建,要不要把原来的PL部分也生成block后合并到一起打包?
答案是原PL部分verilog代码保持不动,仅对新添加的包含zynq IP的block design文件生成 HDL wrapper,注意!注意!注意!此时会有两个顶层文件,如果要更新PL部分lcd的bitsteam文件,就把lcd的verilog文件设为顶层,然后生成比特流,如果要输出含有比特流的硬件文件给后面vitis固化,则必须把HDL wrapper设置为顶层文件后再进行export!千万不能在原PL部分的顶层文件下输出xsa文件,否则vitis无法创建!