用插值查找表实现FPGA的DSP功能.doc

用插值查找表实现FPGA的DSP功能.doc

ID:28111042

大小:92.50 KB

页数:7页

时间:2018-12-08

用插值查找表实现FPGA的DSP功能.doc_第1页
用插值查找表实现FPGA的DSP功能.doc_第2页
用插值查找表实现FPGA的DSP功能.doc_第3页
用插值查找表实现FPGA的DSP功能.doc_第4页
用插值查找表实现FPGA的DSP功能.doc_第5页
资源描述:

《用插值查找表实现FPGA的DSP功能.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用插值查找表实现FPGA的DSP功能  我们是否能够提供一款其功能可满足客户所有独特设计要求的DSP内核。有时候内核会太大,太小或者不够快。有时,我们会开发一款能确切满足客户需求的内核,并迅速以COREGeneratorTM商标推出。不过即便在这种情况下,客户仍然想要一套特定的DSP功能,而且刻不容缓。在这些情况下,我常常建议他们使用我们器件中的插值查找表来定制他们的DSP功能。  查找表(LUT)实质上是一个存储元件,能够根据任何给定的输入状态组合,“查找”输出,以确保每个输入都有确切的输出。采用LUT来实现DSP功能具有一些重大优势:  您可用诸如MATLAB®或Simulink®等高抽

2、象层编程语言改变LUT内容。  您可以设计一项DSP功能来运行那些采用离散逻辑运算将极度困难的数学函数,比如ly=“log”(x)、y=exp(x)、y=1/x、y=sin(x)等。  LUT还可轻松执行在可配置逻辑块(CLB)l芯片,以及嵌入式乘法单元或DSP48可编程乘法累加(MAC)单元方面可能要求过多FPGA资源的复杂数学函数。  不过,以这种方式使用LUT当然也会存在一些弊端。当您使用LUT来实现DSP功能时,您必须使用块RAM(BRAM)元件。若执行函数y=“sqrt”(x)(其中x表示16位输入,y表示18位输出),每个变量则需要约64个18KBBRAM单元。如果,比如说,您的

3、目标是实现小型化Spartan®器件,或者您有太多的运算需要执行,无法为每个变量省出64个BRAM单元,建议您放弃这种需要如此大量BRAM单元的方法,从系统架构的角度来看,这种方法代价太大。  插值LUT方法不仅具有LUT方法在实现DSP功能时所带来的各种优势,而且无需使用太多BRAM单元。采用这种方法,您可以使用来自容量较小的LUT(比如,1000字LUT)的连续输出,线性地对其内插,以模拟更大容量的LUT。这样,您就可以实现比1000字LUT更高的数值分辨率。此外,通过这种方法,仅需1个BRAM、1个嵌入式乘法器(或DSP48),以及少数几个CLB芯片便可实施控制逻辑,因此LUT的使用成

4、本变得更加合理化。而且,从信噪比的角度来看,其数值精度也是非常让人满意。  当然,应用插值LUT(ILUT)方法需要一定的技巧。举例来说,采用该方法执行y=sqrt(x)函数时,可以清楚地显示ILUT在面积占用、时序和数值精度方面的性能。我们先大致看一下这个示例,然后我再讲解部分实例,说明如何使用这种方法来满足客户截然不同的需求,比如让传递函数呈非线性的传感器实现线性化,以及实施自适应有限脉冲响应(FIR)滤波器以消除合成孔径雷达(SAR)图像上的斑点噪声。  使用SystemGeneratorforDSP进行设计  为在赛灵思FPGA上实施DPS算法,我借助了采用MathWorksSimu

5、link基于模型设计方法的SystemGeneratorforDSP设计与综合工具。SystemGenerator得益于赛灵思在Simulink环境中的DSP模块组,可自动调用COREGenerator为DSP构建块生成高度优化的网表。Simulink是一种双精度浮点设计工具,而SystemGenerator则是一款定点运算工具。不管怎样,您只要将这两种工具协同使用,就可以定义每个信号的总位数以及每个信号的二进制位置,从而在定点运算中巧妙处理分数。仿真结果周期精确、位真,因此您可以方便地将它们与MATLAB脚本或Simulink模块生成的浮点参考值相比较,以检查量化误差。  图1显示了Sys

6、temGenerator中ILUT方案的顶层结构图。为让这个方法尽可能一般化,假设nx=16位中的输入变量x的取值范围为0≤x  图1.SystemGeneratorforDSP中插值查找表顶层方框图  图2显示了1000字小容量LUT通过双端口RAM模块的部署步骤。由于该模块系只读存储器,布尔常数模块We_const强制将写入归零。信号X0和X0+1则用作ROM表上后续的两个地址。Data_const模块的零常数定义了任何ROM字的大小(即本例中的ny)。    图2SystemGeneratorforDSP中的小容量LUT图  下面的公式显示了以x0为x的最高有效位的情况下,如何在两个已

7、知点(x0,y0)和(x1,y1)之间插入坐标为(x,y)的点:    注意X1和X0是这个小容量LUT的相邻地址,它们之间只隔了一个最低有效位。由于这个小容量LUT的地址空间为nb位,那么该LSB的值为2-nb。  内插步骤见图3。“Reinterpret”模块在不改变二进制表示法的情况下,可改变dx=x-x0信号。其重置了二进制小数点(从UFix_6_0到UFix_6_6格式),并输出nx-nb位二进制数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。