用插值查找表实现FPGA的DSP功能_第1页
用插值查找表实现FPGA的DSP功能_第2页
用插值查找表实现FPGA的DSP功能_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、太大,太小或者不够快。有时,我们会开发一款能确切满足客户需求的内核,并迅速以CORE GeneratorTM商标推出。不过即便在这种情况下,客户仍然想要一套特定的DSP功能,而且刻不容缓。在这些情况下,我常常建议他们使用我们器件中的插值查找表来定制他们的DSP功能。查找表 (LUT) 实质上是一个存储元件,能够根据任何给定的输入状态组合,“查找”输出,以确保每个输入都有确切的输出。采用LUT来实现 DSP功能具有一些重大优势:您可用诸如MATLAB®或Simulink®等高抽象层编程语言改变LUT内容。您可以设计一项DSP功能来运行那些采用离散逻辑运算将极度困难的数学

3、函数,比如l y="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个18KB BRAM单元。如果,比如说,您的目标是实现小型化Spartan®器

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

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

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

7、 Generator中ILUT方案的顶层结构图。为让这个方法尽可能一般化,假设nx=16位中的输入变量 x 的取值范围为0x<1,因此其格式为“无符号16位加上二进制点右边的16 位”,也称为Ufix_16_16格式。最高有效位 (MSB) 和最低有效位 (LSB) 模块分别对应输入数据nb=10的最高位和nx-nb=6的最低位。这些信号被命名为x0和dx。y=sqrt(x) 输出则以ny=17位二进制数表示,格式为:Ufix_17_17。 图 1. System Generator for DSP中插值查找表顶层方框图图2显示了1000字小容量LUT通过双端口RAM模块的部署步骤。由于该模块系只读存储器,布尔常数模块We_const强制将写入归零。信号 X0和X0+1则用作ROM表上后续的两个地址。Data_const模块的零常数定义了任何ROM字的大小(即本例中的ny)。 图2 System Generator for DSP中的小容量LUT图下面的公式显示了以x0为x的最高有效位的情

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论