前言
本文主要介绍HLS案例的使用说明,适用开发环境:Windows7/bit、XilinxVivado.4、XilinxVivadoHLS.4、XilinxSDK.4。
XilinxVivadoHLS(High-LevelSynthesis,高层次综合)工具支持将C、C++等语言转化成硬件描述语言,同时支持基于OpenCL等框架对Xilinx可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。
本次案例用到的是创龙科技的TLZ7x-EasyEVM-S开发板,它是一款基于XilinxZynq-系列XC7Z/XC7Z高性能低功耗处理器设计的异构多核SoC评估板,处理器集成PS端双核ARMCortex-A9+PL端Artix-7架构28nm可编程逻辑资源,评估板由核心板和评估底板组成。核心板经过专业的PCBLayout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
TLZ7x-EasyEVM-S评估板
TLZ7x-EasyEVM-S评估板评估板接口资源丰富,引出千兆网口、双路CAMERA、USB、MicroSD、CAN、UART等接口,支持LCD显示拓展及Qt图形界面开发,方便快速进行产品方案评估与技术预研。
matrix_demo案例
案例功能:实现32*32浮点矩阵乘法运算功能,同时提供提高运算效率的方法。
HLS工程说明
时钟
HLS工程配置的时钟为MHz。如需修改时钟频率,请打开HLS工程后点击后,在弹出的界面中的Synthesis栏目进行修改。
图42
(2)顶层函数
案例有两个可选的顶层函数,分别为standalone_mmult()和HLS_accel()。前者为矩阵乘法运算函数,用于仿真阶段;后者基于前者将数据输入输出接口封装成AXI4-Stream接口,用于综合阶段。工程默认配置为standalone_mmult()。
图43
点击后矩阵乘法运算函数如下:
图44
矩阵乘法运算函数如下:
图45
matrix_demo_test.cpp中提供了矩阵乘法运算函数mmult_sw(),程序将mmult_sw()的运算结果和顶层函数standalone_mmult()的运算结果进行对比。如结果一致,则说明顶层函数逻辑正确。mmult_sw()函数不调用逻辑资源,而standalone_mmult()函数调用逻辑资源。
图46
图47
编译与仿真
请参考本文档HLS开发流程说明章节,进行编译。编译完成后,进入仿真界面点击综合
图48
运行完毕后,将在Console窗口打印如下提示信息,说明顶层函数逻辑正确。
图49
综合
案例提供三个solution,每个solution的算法运行效率不同。由于solution3所用资源较多,xc7z无法满足资源要求,因此案例默认使用solution2生成IP核。
进行综合时,需将顶层函数修改为HLS_accel()。修改顶层函数后