AccelChip 公司(最近已被赛灵思公司收买)最近所做的一次查询显现,53% 的回答者以为浮点定点转化是在 FPGA|0″>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 多个规划中取得的很多内置经历,确认下流变量的最佳字长。
经过主动量化而取得的初始定点模型供给了一个杰出的起点,但一般需求对该模型进行细化改善。
图 1 – AccelChip DSP 规划应战查询 |
图 2 – 替换内置运算符和函数 |
图 3 – MATLAB “/” 与 CORD%&&&&&% 的定点呼应比较 |
图 4 – 主动硬件准确 IP 刺进 |
图 5 – 定点位添加 |
MATLAB 供给了一种开发算法数学模型的高效环境,这种算法一般只需运用一组较少的仿真矢量就可完结
该进程高度重复,且严密耦合至数据效果 (data effect) 的剖析。为了最大程度地缩短这一重复循环时刻,AccelDSP Synthesis 归纳东西供给了一种加快定点仿真流程。
图 6 – FFT 示例仿真运转时刻 |
剖析定点数据效果
MATLAB 供给了一种开发算法数学模型的高效环境,这种算法一般只需运用一组较少的仿真矢量就可完结。可是,当把该算法运用到定点硬件时,您将需求添加数据集,以准确地确认实在国际的环境呼应。MATLAB 是一种解说型仿真器,或许无法为这些较大的、CPU 强度较高的定点仿真供给必需的功用。因而,开发者常常转向 C/C++。
加快定点仿真
AccelDSP Synthesis 归纳东西的 M2C-Accelerator 主动生成一个硬件准确的定点 C++ 模型和测验基准,以加快定点仿真。
消除手动记载进程节省了开发时刻,大程度地减小了差错的引进。因为 C++ 是编译式的,因而可供给高达 1000 倍的仿真功用优势(图 6)。这种功用水平一般是那些要求了解定点数据效果的大型矢量集所必需的。
假如您想持续运用 MATLAB 可视化环境,包含其绘图功用,M2C-Accelerator 还可生成一个可用于原 MATLAB 测验基准脚本文件仿真的定点 C/C++ dll。
当您现已取得初始定点成果时,剖析和细化改善的进程就能够开端了。AccelDSP Synthesis 归纳东西供给了一组图形东西,包含表格化陈述、变量探查和绘图等,以便在这一进程中供给辅佐。
观测定点位添加
一个规划有必要从全体上考虑,以有用地将浮点算法转化为定点模型。
假如从前期开端就一向未对数据途径进行查看,位添加或许会快速添加而产生过度的硬件,而过度束缚位添加则或许形成无法承受的数值精度丢失。取得对位添加发展状况较好观测性的一种通用技巧是向一个电子表格中输入变量。AccelDSP Synthesis 归纳东西经过生成一个表格化、格式化的定点陈述(图 7)而供给了此类等级的观测性。
在优化硬件之前,您有必要取得一个能够承受的定点呼应。假如一个输出的信噪比 (SNR) 不在所需的技能标准之上,则有必要对揣度的量化值进行调整。这一进程一般由查找因变量上溢出和下溢出导致的严重差错开端。
上溢出和下溢出
关于输入数据动态规模的不良假定或许会引起因为变量的最高有用位 (MSB) 上溢出和最低有用位 (LSB) 下溢出而导致较大的定点差错的问题。您需求在观测和纠正更纤细的定点差错之前先处理这些差错。
上溢出和下溢出陈述,是 MATLAB 定点数据类型的固有特点,但不是 C/C++ 所固有的,且常常在模型重写进程中被省掉。可是,由 M2C-Accelerator 生成的 C++ 模型中包含了反映在仿真期间产生的一切上溢出和下溢出的量化例程。当这些状况产生时,它们将被汇总在“验证定点陈述”中(图 8)。
一旦您处理了任何上溢出和下溢出问题,该定点模型的细化改善将愈加依赖于可视化。假如别的的定点数据差错持续存在,那么您有必要剖析常量的效果。不然,您能够经过减小变量位宽来持续细化改善硬件的进程。在两种状况下,知道因某个特定变量的量化而引起的定点差错,在细化改善进程中都是一个有用的协助。
图 7 – AccelDSP Synthesis 关于一个自适应滤波器的定点陈述 |
图 8 – AccelDSP 验证定点陈述 |
图 9 – Accel 关于一个变量的探查图 |
定点可视化
依据一组给定的数据集确认一个算法的适宜定点呼应,一般不是一种准确的科学行为。您常常不得不在数值精度方面做出一些折衷,以进步硬件功率。这一进程高度重复,且严密耦合至绘图中所示定点效应的可视剖析。可是,在一个输出信号上观测到不行承受的 SNR,并不总是表明那里过错地指定了一个量化值。对此,有必要进行进一步的剖析。
为了协助进行这一进程,AccelDSP Synthesis 归纳东西的 AccelProbe 东西以图形方法对一个给定仿真期间的任何变量的浮点和定点值进行了比较(图 9)。假如您运用的是 AccelProbe,您会敏捷体会到特定变量的奉献使终究成果的差错累积的进程。您能够经过在 MATLAB 源码中添加句子 “accel_probe(variable_name)”,来“探查”一个变量。
“定点前史”图能够让您感知一个变量在仿真期间或许遇到的频频程度。假如一个值很少呈现,则需求用以在动态规模内的高端或低端存储该值的附加硬件或许具有很小的值。
定论
当创立一个 DSP 算法的数学模型时,MATLAB 是天然之选,且出于硬件考虑,能够无阻止地运用。将一个算法转化为在 FPGA 上完结的定点模型是一个杂乱的、可从 AccelDSP Synthesis 归纳东西供给的主动化、加快和可视化功用中大大获益的进程。
欲了解有关 AccelDSP Synthesis 归纳东西的更多信息,请拜访 www.xilinx.com/dsp。
作者:Tom Hill DSP 东西营销技能营销工程师 赛灵思公司 @xilinx.com”>tom.hill@xilinx.com