C Code和Vivado HLS-Xilinx-AMD社区-FPGA CPLD-ChipDebug

C Code和Vivado HLS

描述

本答复记录包含儿童答案记录,涵盖使用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库,并列出支持的功能。

请登录后发表评论

    没有回复内容