Xilinx社区
首页 > 技术文章 > 插值查找表:实现DSP功能的简便方法
技术文章
插值查找表:实现DSP功能的简便方法
来源:电子产品世界  时间:2010-03-02  浏览量:3155

  图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)。

  下面的公式显示了以x0为x的最高有效位的情况下,如何在两个已知点(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位二进制数的一个分数,从而计算出(x-x0)/2-nb的值。

  从硬件角度来看,这些模块什么都不占用。总的来说(且根据我们通过ILUT方法应用的函数类型),如果y1=0且y0=0,我们可以强制y1-y0=1,这样我们就可以得到1/2-nb而不是0。我们采用Mux、Rational、Constant和Constant1模块来执行这项工作。剩下的Mult、Add和Sub模块则执行线性内插公式。在本例中,我强制Mult模块的输出信号为17位分辨率,而非理论上要求的23位,因为总体数值精度对本试验来说已经足够。此外,由于y=sqrt(x)函数呈单调递增,因此所有结果都无符号。换句话说,不同的函数需要对数据类型进行不同的精心调整,但不会与图3所示的原理相去甚远。

热点文章
精选视频
推荐资源

中国授权培训机构

北京 电话:(010)82757632
      (010) 62192881
深圳 电话:(0755)86186715
武汉 电话:(027)61389792
成都 电话:(028)80821007
南京 电话:(025)66022032
西安 电话:(029)82230498
邮箱:sales@e-elements.com

中国授权经销商

香港 电话:(852)22127848
北京 电话:(010)84148118
成都 电话:(028)86528262
上海 电话:(021)33678387
深圳 电话:(0755)26584925
武汉 电话:(027)87322806
邮箱:china@avent.com
深圳 电话:(0755)26743210
上海 电话:(021)51696680
北京 电话:(010)51726678
成都 电话:(028)85139576
武汉 电话:(027)87690155
邮箱:
xilinx_enquiry@comtech.com.cn

社区主办


《电子产品世界》杂志社

内容提供


    赛灵思公司

Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052