复旦微对标Xilinx 690T FPGA程序固化流程测试

概述:

针对复旦微对标xilinx的690T FPGA芯片进行程序固化,对不同方法的固化流程及固化时间对比,同时对固化后的加载过程进行测试并对比。通过使用不同方法固化及程序加载的对比分析,选出效率最高的一种方法。

一、程序固化方法

复旦微对标xilinx 690T芯片,使用xilinx相同的开发工具开发,目前使用Vivado 2018.3版本。通常在工程生成bit流文件以后,将bit文件转换为MCS文件或bin文件,可以直接使用vivado进行固化。但是根据复旦微描述,在直接使用vivado固化,在这个过程中编程flash不稳定,通过多次测试,确实存在这个问题,尤其是文件较大、固化到flash的时间较长时,容易固化失败,最后的校验结果通常会提示字节不匹配的报错信息。因此复旦微提供了一种专门解决此问题的插件,结合相应的文档说明按照流程可以实现程序的稳定固化。

1、复旦微固化方法:

参考《SPI_BPI编程工具使用说明_V1p5.pdf》文档,使用JFM_Kits插件,即可完成对bit文件转MCS文件后的固化。

2、使用vivado自带功能直接固化:

固化流程不在赘述。

3、固化前准备工作:

首先要通过vivado生成bit文件,在进行这个过程的操作前,首先要明确flash的型号,如果是国产对标型号,要先在vivado开发工具中找到对标的详细型号,确认flash的接口类型(x1/x2/x4),根据接口类型在工程中针对性进行修改,否则最后生成的bit可能和要生成的mcs/bin文件对标的flash SPI接口类型不同,最后报错。例如,flash的SPI接口是x4接口,但是vivado工程默认的SPI接口可能是x1,如果不提前设置,最后生成的bit属性为支持x1的SPI接口类型,这样在将bit文件转换为MCS或bin文件时,由于要选择flash型号和SPI接口x4类型,这时文件类型转换操作就会报错。为了避免不必要的麻烦,建议在编译工程前先根据原理图进行配置。

上述配置过程不在赘述。

二、不同固化方法测试对比

针对测试工程不做任何处理生成的未压缩的bit文件以及生成压缩后的bit文件,将其转换为MCS/bin文件后,分别使用复旦微和vivado固化流程进行固化,记录如下表。

总结:

1、固化文件较大时,复旦微提供的方法下载比较稳定,文件较小时可以使用vivado下载mcs或者bin文件。

2、在测试过程中发现,固化完成后PC连接JTAG不断开的情况下,对板卡重新断电上电,FPGA均无法正常从flash加载bit流,只有在PC断开JTAG的情况下对板卡断电上电后等待10几秒后在连接JTAG,才能检测到FPGA已从flash加载完bit。

三、高效固化程序建议

为提高效率,加快固化速度和提高固化稳定性,建议如下:

1、将工程中SPI接口时钟由3MHHz修改为50MHz。

2、在编译工程前修改生成bit配置,改为生成压缩bit。

3、连上JTAG,在Hardware Target Properties JTAG时钟由默认的6MHz修改为12MHz。

4、选用稳定的下载器:固化较小文件时可以使用vivado下载,下载mcs或bin文件时间相差不大;下载较大文件时,可以使用复旦微提供方法,比较稳定,时间稍微比vivado方法长一点,但是稳定。

四、一点小技巧

1、生成bit文件前在vivado Bitstream Settings...上配置flash SPI时钟为50MHz;设置Bitstream Properties的Enable Bitstream Compression为TRUE。

2、连接上JTAG后,在Tcl Console执行set_param labtools.auto_update_hardware 0命令,可以解决FPGA断电后无法正常从flash加载bit的问题;将JTAG时钟由默认的6MHz修改为12MHz。

3、第一条技巧中可以通过约束实现:

set_property BITSTREAM.CONFIG.CONFIGRATE 3 [current_design]

set_property BITSTREAM.GENERAL.COMPRESS FALSE [current_design]

第二条可以通过新建一个Vivado_init.tcl脚本,添加一下内容:

set_param labtools.auto_update_hardware 0

将脚本放到:installdir/Vivado/version/scripts/Vivado_init.tcl实现。

也可通过在CMD中运行行指令:hw_server -e "set jtag-poll-delay 3600000000" 调整硬件管理器的刷新周期实现。

相关推荐
不想写代码的我3 小时前
基于ZYNQ-7000系列的FPGA学习笔记11——IP核之单端RAM读写
笔记·学习·fpga开发·嵌入式·zynq
我爱C编程3 小时前
【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
fpga开发·硬件片内测试·qpsk调制·qpsk软解调
『潺湲¢8 小时前
PCIe学习笔记
笔记·学习·fpga开发
我爱C编程9 小时前
【硬件测试】基于FPGA的MSK调制解调系统系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
fpga开发·msk调制解调·硬件片内测试
第二层皮-合肥18 小时前
matlab测试ADC动态性能的原理
fpga开发
云山工作室1 天前
基于FPGA的RLC测试仪
fpga开发
搬砖的小码农_Sky1 天前
FPGA:FPGA器件选型
fpga开发
北城笑笑1 天前
FPGA 17 ,FPGA 与 SR-IOV虚拟化技术,高性能计算与虚拟化技术的结合(FPGA 与 SR-IOV 和 PCI,高性能计算与虚拟化的完美融合)
fpga开发·fpga
北城笑笑1 天前
FPGA 16 ,Verilog中的位宽:深入理解与应用
fpga开发·fpga
热爱学习地派大星1 天前
FPGA在线升级 -- Multiboot
fpga开发·verilog·fpga·远程升级·升级程序