描述
本答复记录包含儿童答案记录,涵盖使用Vivado HLS使用和实施C代码。答案记录解释了在何处获得C编码样式的所有方面的帮助,C综合和使用C的建模硬件。
注意 :此答复记录是Xilinx Vivado HLS解决方案中心的一部分 (Xilinx答复47428) ,可用于解决与Vivado HLS相关的所有问题。无论您是要开始新设计还是解决问题,请使用Vivado Synthesis解决方案中心来指导您获取正确的信息。
解
编码风格指南
Xilinx答案记录 AR_DM3 总结了Vivado HLS提供的用于综合C,C ++和SystemC的 支持 。
该 Vivado设计套件用户指南高级综合 包括对编码样式的一章。本章解释了与C,C ++和SystemC的综合相关的所有内容。
编码样式指南中的每个示例都包含在Vivado HLS软件中。可以通过GUI中的欢迎屏幕或位于Vivado HLS安装区域的示例目录中访问它们。
比特精确C建模
使用C,C ++或SystemC对硬件进行建模时,在FPGA器件中确保良好的结果质量(QoR)的主要技术之一是使用任意精度数据类型。
标准C数据类型允许变量在8位边界(8位,16位,32位等)上建模。任意精度数据类型允许将变量定义为任意位宽(6位,12位,143位等)。
这允许C代码精确地建模并综合到硬件所需的精确位宽。
例如,这确保了如果乘法运算仅需要18位,则设计人员不必使用标准的32位C数据类型,这将迫使乘法器在FPGA中使用多个DSP48宏实现。
使用任意精度数据类型的另一个巨大优势是C模型将使用精确的位大小进行仿真,并且快速C仿真可用于在综合之前验证正确的位精确操作方式。这允许在C级分析舍入效应和信噪比等。
Vivado Design Suite用户指南高级综合中 介绍了任意精度数据类型的使用,包括完整的参考部分 。 Vivado HLS教程中 提供了有关使用任意精度类型的 教程 。
应用笔记 XAPP-1163 展示了如何使用浮点FPGA模块实现使用浮点数据类型的C设计,或者如何迁移到任意精度定点数据类型,从而实现更小更快的硬件,从而实现精度损失。
使用C库进行硬件建模
Vivado HLS提供了许多C库,以确保将通用C函数实现为高质量FPGA硬件。
例如,C和C ++都提供了一个实现浮点函数的数学库(math.h或cmath)。
如果直接综合这些库,FPGA硬件中的QoR将很差。 Vivado HLS提供了自己的数学库,其中包含最常用的函数。使用Vivado HLS数学库时,浮点函数的RTL实现保证是最佳的。
应用笔记 XAPP-599 解释了如何在浮点设计中使用Vivado HLS数学库。 使用Vivado HLS 的QuickTake视频 浮点设计 概述了使用浮点类型进行设计。
Vivado HLS还提供了库,用于仿真Open CV视频库中的功能以及常见的视频设计操作,如行缓冲和图像窗口。
应用笔记 XAPP-793 提供了有关使用标准视频功能(行缓冲器等)的详细信息。应用笔记 XAPP-1167 ( 此处为 设计文件 )显示了如何使用Vivado HLS综合使用OpenCV功能的C程序并将其实现为高性能FPGA硬件。
QuickFake视频 利用OpenCV和Vivado的高级综合 提供了在Vivado HLS设计中使用OpenCV库的介绍 。
该 Vivado设计套件用户指南高级综合 解释提供Vivado HLS所有的C库,并列出支持的功能。
没有回复内容