首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MATLAB 算法面向 FPGA 的浮点定点转换

MATLAB 算法面向 FPGA 的浮点定点转换

AccelChip 公司(最近已被赛灵思公司收购)最近所做的一次调查显示,53% 的回答者认为浮点定点转换是在 FPGA 上实现算法时最困难的地方(图 1)。
  虽然 MATLAB 是一种强大的运算开发工具,但其许多优点却在浮点定点转换过程中被降低了。例如,由于定点算术中精度较低,新的数学误差被引入算法。您必须重写代码,使用能够反映实际硬件宏架构的低级模型来替换高级函数和运算符。而仿真运行时间将可能长达 50 倍之久。基于这些原因,MATLAB,这一算法开发的优势选择,却经常遭到遗弃,转而使用 C/C++ 进行定点建模。
  生成定点模型
  如果未将高级函数和运算符替换为硬件精确的宏架构,浮点 MATLAB 算法的定点表示将不会真正反映最终硬件的响应(图 2)。

图 3 对此进行了突出显示,该图使用一组量化为 8 位有符号二进制补码的随机输入矢量,对 MATLAB 除法运算符与工具硬件 CORDIC 除法算法的定点响应进行了比较。

   根据数据数值,计算输出之间将存在巨大分歧。
  在定点生成过程中,AccelDSP" Synthesis 综合工具的 IP Explorer" 技术将自动使用硬件精确的表达式替换高级 MATLAB 函数和运算符(图 4)。此步骤是透明的,且不需要对 MATLAB 代码进行修改。您可以使用综合指示来重新定义初始宏架构和微架构选择。

  一旦这些运算符替换为硬件精确的宏架构,量化过程就将开始。
  图形辅助式自动量化
  与定点 DSP 处理器不同, FPGA 结构允许使用可变定点字长。通过解除对变量的固定 16 位或 24 位边界限制,您可以执行需要位数增长的算术计算而不会引起额外的数值误差。
  这对于像雷达、导航和制导系统等要求较高数值精度的应用来说是一个巨大的优点。
  在大多数情况下,位增长率定律 (bit growth rules) 是简单直接和易于理解的。例如,一次加法的结果增长一位,而一次乘法的结果则增长到等于输入字长度的总长度(图 5)。然而,要在实际设计中确定变量的这些属性,将是一个高度反复的过程。允许未检查的位数增长现象发生,在硬件中代价是昂贵的,通常也是不必要的。如果您技术功底深厚,您可以采用各种技巧来尽可能地减小字长而同时保持数值精度。

确定变量的初始量化值和随后对该值的细化改进的过程,非常适合自动化。AccelDSP Synthesis 综合工具包括自动化浮点定点转换,该功能将在仿真过程中对浮点 MATLAB 模型进行分析,以确定输入数据和常量的动态范围要求。这些值提供了自动量化过程的起点,然后该过程将利用从 6,000 多个设计中获得的大量内置经验,确定下游变量的最佳字长。
  通过自动量化而获得的初始定点模型提供了一个良好的起点,但一般需要对该模型进行细化改进。
  MATLAB 提供了一种开发算法数学模型的高效环境,这种算法通常只需使用一组较少的仿真矢量就可完成。
  该过程高度反复,且紧密耦合至数据作用 (data effect) 的分析。为了最大程度地缩短这一反复循环时间,AccelDSP Synthesis 综合工具提供了一种加速定点仿真流程。
  分析定点数据作用
  MATLAB 提供了一种开发算法数学模型的高效环境,这种算法通常只需使用一组较少的仿真矢量就可完成。但是,当把该算法应用到定点硬件时,您将需要增加数据集,以精确地确定真实世界的环境响应。MATLAB 是一种解释型仿真器,可能无法为这些较大的、CPU 强度较高的定点仿真提供必需的性能。因此,开发者常常转向 C/C++。
  加速定点仿真
  AccelDSP Synthesis 综合工具的 M2C-Accelerator 自动生成一个硬件精确的定点 C++ 模型和测试基准,以加快定点仿真。
  消除手动记录步骤节省了开发时间,大程度地减小了误差的引入。由于 C++ 是编译式的,因此可提供高达 1000 倍的仿真性能优势(图 6)。这种性能水平通常是那些要求理解定点数据作用的大型矢量集所必需的。

  如果您想继续使用 MATLAB 可视化环境,包括其绘图功能,M2C-Accelerator 还可生成一个可用于原 MATLAB 测试基准脚本文件仿真的定点 C/C++ dll。
返回列表