资料介绍
如果数字信号处理器内核没有您需要的确切功能,可使用插值查找表(ILUT)来解决这一问题。
作为赛灵思的现场工程师,我常常问这样的问题:我们是否能够提供一款其功能可满足客户所有独特设计要求的DSP内核。有时候内核会太大,太小或者不够快。有时,我们会开发一款能确切满足客户需求的内核,并迅速以CORE Generator商标推出。不过即便在这种情况下,客户仍然想要一套特定的DSP功能,而且刻不容缓。在这些情况下,我常常建议他们使用我们器件中的插值查找表来定制他们的DSP功能。
查找表(LUT)实质上是一个存储元件,能够根据任何给定的输入状态组合,“查找”输出,以确保每个输入都有确切的输出。采用LUT来实现DSP功能具有一些重大优势:
● 可用诸如MATLAB或Simulink等高抽象层编程语言改变LUT内容。
● 可以设计一项DSP功能来运行那些采用离散逻辑运算将极度困难的数学函数,比如y=log(x)、y=exp(x)、y=1/x、y=sin(x)等。
● LUT还可轻松执行在可配置逻辑块(CLB)芯片,以及嵌入式乘法单元或DSP48可编程乘法累加(MAC)单元方面可能要求过多FPGA资源的复杂数学函数。
不过,以这种方式使用LUT当然也会存在一些弊端。当您使用LUT来实现DSP功能时,您必须使用块RAM(BRAM)元件。若执行函数y=sqrt(x)(其中x表示16位输入,y表示18位输出),每个变量则需要约64个18KB BRAM单元。如果,比如说,您的目标是实现小型化Spartan器件,或者您有太多的运算需要执行,无法为每个变量省出64个BRAM单元,建议您放弃这种需要如此大量BRAM单元的方法,从系统架构的角度来看,这种方法代价太大。
插值LUT方法不仅具有LUT方法在实现DSP功能时所带来的各种优势,而且无需使用太多BRAM单元。采用这种方法,您可以使用来自容量较小的LUT(比如,1000字LUT)的连续输出,线性地对其内插,以interwetten与威廉的赔率体系 更大容量的LUT。这样,您就可以实现比1000字LUT更高的数值分辨率。此外,通过这种方法,仅需1个BRAM、1个嵌入式乘法器(或DSP48),以及少数几个CLB芯片便可实施控制逻辑,因此LUT的使用成本变得更加合理化。而且,从信噪比的角度来看,其数值精度也是非常让人满意。
当然,应用插值LUT(ILUT)方法需要一定的技巧。举例来说,采用该方法执行y=sqrt(x)函数时,可以清楚地显示ILUT在空间占用、时序和数值精度方面的性能。我们先大致看一下这个示例,然后我再讲解部分实例,说明如何使用这种方法来满足客户截然不同的需求,比如让传递函数呈非线性的传感器实现线性化,以及实施自适应有限脉冲响应(FIR)滤波器以消除合成孔径雷达(SAR)图像上的斑点噪声。
使用System Generator for DSP进行设计
为在赛灵思FPGA上实施DPS算法,我借助了采用MathWorks Simulink基于模型设计方法的System Generator for DSP设计与综合工具。 System Generator得益于赛灵思在Simulink环境中的DSP模块组,可自动调用CORE Generator为DSP构建块生成高度优化的网表。Simulink是一种双精度浮点设计工具,而System Generator则是一款定点运算工具。不管怎样,您只要将这两种工具协同使用,就可以定义每个信号的总位数以及每个信号的二进制位置,从而在定点运算中巧妙处理分数。仿真结果周期精确、位真,因此您可以方便地将它们与MATLAB脚本或Simulink模块生成的浮点参考值相比较,以检查量化误差。
图1显示了System Generator中ILUT方案的顶层结构图。为让这个方法尽可能一般化,假设nx=16位中的输入变量x的取值范围为0≤x《1,因此其格式为 “无符号16位加上二进制点右边的16位”,也称为Ufix_16_16格式。最高有效位(MSB)和最低有效位(LSB)模块分别对应输入数据 nb=10的最高位和nx-nb=6的最低位。这些信号被命名为x0和dx。y=sqrt(x)输出则以ny=17位二进制数表示,格式为:Ufix_17_17。
图2显示了1000字小容量LUT通过双端口RAM模块的部署步骤。由于该模块系只读存储器,布尔常数模块We_const强制将写入归零。信号X0和X0+1则用作ROM表上后续的两个地址。Data_const模块的零常数定义了任何ROM字的大小(即本例中的ny)。
作为赛灵思的现场工程师,我常常问这样的问题:我们是否能够提供一款其功能可满足客户所有独特设计要求的DSP内核。有时候内核会太大,太小或者不够快。有时,我们会开发一款能确切满足客户需求的内核,并迅速以CORE Generator商标推出。不过即便在这种情况下,客户仍然想要一套特定的DSP功能,而且刻不容缓。在这些情况下,我常常建议他们使用我们器件中的插值查找表来定制他们的DSP功能。
查找表(LUT)实质上是一个存储元件,能够根据任何给定的输入状态组合,“查找”输出,以确保每个输入都有确切的输出。采用LUT来实现DSP功能具有一些重大优势:
● 可用诸如MATLAB或Simulink等高抽象层编程语言改变LUT内容。
● 可以设计一项DSP功能来运行那些采用离散逻辑运算将极度困难的数学函数,比如y=log(x)、y=exp(x)、y=1/x、y=sin(x)等。
● LUT还可轻松执行在可配置逻辑块(CLB)芯片,以及嵌入式乘法单元或DSP48可编程乘法累加(MAC)单元方面可能要求过多FPGA资源的复杂数学函数。
不过,以这种方式使用LUT当然也会存在一些弊端。当您使用LUT来实现DSP功能时,您必须使用块RAM(BRAM)元件。若执行函数y=sqrt(x)(其中x表示16位输入,y表示18位输出),每个变量则需要约64个18KB BRAM单元。如果,比如说,您的目标是实现小型化Spartan器件,或者您有太多的运算需要执行,无法为每个变量省出64个BRAM单元,建议您放弃这种需要如此大量BRAM单元的方法,从系统架构的角度来看,这种方法代价太大。
插值LUT方法不仅具有LUT方法在实现DSP功能时所带来的各种优势,而且无需使用太多BRAM单元。采用这种方法,您可以使用来自容量较小的LUT(比如,1000字LUT)的连续输出,线性地对其内插,以interwetten与威廉的赔率体系 更大容量的LUT。这样,您就可以实现比1000字LUT更高的数值分辨率。此外,通过这种方法,仅需1个BRAM、1个嵌入式乘法器(或DSP48),以及少数几个CLB芯片便可实施控制逻辑,因此LUT的使用成本变得更加合理化。而且,从信噪比的角度来看,其数值精度也是非常让人满意。
当然,应用插值LUT(ILUT)方法需要一定的技巧。举例来说,采用该方法执行y=sqrt(x)函数时,可以清楚地显示ILUT在空间占用、时序和数值精度方面的性能。我们先大致看一下这个示例,然后我再讲解部分实例,说明如何使用这种方法来满足客户截然不同的需求,比如让传递函数呈非线性的传感器实现线性化,以及实施自适应有限脉冲响应(FIR)滤波器以消除合成孔径雷达(SAR)图像上的斑点噪声。
使用System Generator for DSP进行设计
为在赛灵思FPGA上实施DPS算法,我借助了采用MathWorks Simulink基于模型设计方法的System Generator for DSP设计与综合工具。 System Generator得益于赛灵思在Simulink环境中的DSP模块组,可自动调用CORE Generator为DSP构建块生成高度优化的网表。Simulink是一种双精度浮点设计工具,而System Generator则是一款定点运算工具。不管怎样,您只要将这两种工具协同使用,就可以定义每个信号的总位数以及每个信号的二进制位置,从而在定点运算中巧妙处理分数。仿真结果周期精确、位真,因此您可以方便地将它们与MATLAB脚本或Simulink模块生成的浮点参考值相比较,以检查量化误差。
图1显示了System Generator中ILUT方案的顶层结构图。为让这个方法尽可能一般化,假设nx=16位中的输入变量x的取值范围为0≤x《1,因此其格式为 “无符号16位加上二进制点右边的16位”,也称为Ufix_16_16格式。最高有效位(MSB)和最低有效位(LSB)模块分别对应输入数据 nb=10的最高位和nx-nb=6的最低位。这些信号被命名为x0和dx。y=sqrt(x)输出则以ny=17位二进制数表示,格式为:Ufix_17_17。
图2显示了1000字小容量LUT通过双端口RAM模块的部署步骤。由于该模块系只读存储器,布尔常数模块We_const强制将写入归零。信号X0和X0+1则用作ROM表上后续的两个地址。Data_const模块的零常数定义了任何ROM字的大小(即本例中的ny)。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 新型双声道音频-+DAC小面积插值滤波器的设计实现
- 基于预测缓存的OpenFlow虚拟流表查找方法 11次下载
- 如何使用查找表和Newton插值算法实现正余弦函数的FPGA 29次下载
- FPGA查找表LUT和编程方式的基础知识说明 16次下载
- 如何使用LUT实现FPGA中的DSP功能 19次下载
- 高速并行成型滤波器的FPGA实现方法 0次下载
- OpenFlow流表查找方法 0次下载
- 局部多项式的方法对图像进行插值 1次下载
- 基于CFA插值的图像拼接篡改检测方法 9次下载
- 基于AIS线性插值的综合插值方法 13次下载
- 基于小波变换的分形插值图像放大方法 0次下载
- 基于多项式插值函数的翼型参数化设计方法 2次下载
- CCD图像的颜色插值算法研究及其FPGA实现 12次下载
- 基于B样条插值的图像边缘检测实现 40次下载
- 插值查找表:实现DSP功能的简便方法
- 中性点接地10 kV线路故障的查找方法 131次阅读
- 什么是线性插值?一维线性插值和双线性插值在BMS开发中的应用 5879次阅读
- 图像插值理论研究之双三次插值 827次阅读
- DS1847/DS1848查找表的考虑因素 531次阅读
- CIC插值滤波器与直接频率合成器DDS的FPGA实现 1120次阅读
- 基于深度学习构造DL-SR网络结构和实现方法 2030次阅读
- 直插式元器件的焊接方法,有哪些注意事项? 1.6w次阅读
- 固定连接器插针的三种方法 1.1w次阅读
- 一种不同于双线性插值的上采样方法 6239次阅读
- 常用的插值算法盘点 7964次阅读
- 如何利用LUT来实现FPGA中的DSP功能 1.2w次阅读
- matlab-插值 1665次阅读
- 基于FPGA的双线性CFA插值算法的设计 4199次阅读
- FPGA查找表实现原理分析 1.3w次阅读
- 用插值查找表实现FPGA的DSP功能 1954次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1489次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 91次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 9次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 3次下载 | 免费
- 8基于单片机的红外风扇遥控
- 0.23 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30319次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多