【技术实现步骤摘要】
一种基于查找表的复杂函数输出方法及其装置
[0001]本专利技术属于数字电路
,具体涉及一种基于查找表的复杂函数输出方法及其装置。
技术介绍
[0002]在数字信号处理、图像处理、人工智能以及雷达等领域,常需要使用到如指数、对数、三角函数等比较复杂的数学函数运算。常用的实现这些复杂函数的方法有CORDIC算法、泰勒展开以及使用LUT(Look
‑
Up
‑
Table,查找表)等。由于LUT本质上是一组RAM(Random Access Memory,随机存取存储器),通过离线的方式对LUT中的RAM进行配置,可以使用LUT对上述复杂函数进行拟合。LUT在实现上逻辑简单,由于其本质上是RAM,对同一套硬件电路中的相同RAM经过不同的配置可以实现对不同复杂函数的拟合,因此使用LUT对复杂函数进行拟合成为一种主流的方法。研究LUT的实现方法也成为研究复杂函数实现的重点。
[0003]各家LUT均使用固定深度的RAM,要想达到高的拟合精度通常需要增加RAM深度。但由于资源受限,RAM深度无法任意增加,因此有必要提出一种在有限RAM深度下,获得更高精度函数拟合的方案。
[0004]在现有技术中,使用LUT实现复杂函数时根据输入数据在x坐标的位置,在查找表中查找得到输出值做为复杂函数的输出。对于LUT,如果LUT在x轴方向的覆盖范围为MIN~MAX,LUT的RAM深度为N,则x轴方向的步进step以及LUT的RAM中每个地址存储的数据如下公式
①
所示:r/>[0005][0006]在公式
①
中LUT(0)用于表示LUT的RAM的地址0存储的数据,LUT(1)用于表示LUT的RAM的地址1存储的数据,依此类推LUT(N
‑
1)用于表示LUT的RAM的地址N
‑
1存储的数据。上式中f(x)为要拟合的复杂函数,拟合的范围为MIN≤x≤MAX,其中x为复杂函数f(x)的自变量。将f(0*step+MIN)的函数值存储到LUT(0),将f(1*step+MIN)的函数值存储到LUT(1),依此类推f((N
‑
1)*step+MIN)的函数值存储到LUT(N
‑
1)。公式
①
中step用于表示相邻LUT RAM地址所对应的实际的相邻自变量的间隔。
[0007]具体来说,当输入的真实数据x满足0*step+MIN≤x<1*step+MIN时,选择LUT(0)的数据做为复杂函数的结果;当输入的真实数据x满足1*step+MIN≤x<2*step+MIN时,选择LUT(1)的数据做为复杂函数的结果;依次类推当输入的真实数据x满足(N
‑
2)*step+MIN≤x<(N
‑
1)*step+MIN时,选择LUT(N
‑
1)的数据做为复杂函数的结果。
[0008]当输入的真实数据x<MIN或者x>MAX时,采用外延的方法获得自变量在x处的复杂函数的结果。其按照如下公式
②
实现,所述公式
②
中k1为当x<MIN时的外延系数,k2为当x>MAX时的外延系数。
[0009][0010]在采用现有技术时,复杂函数存储在同一块存储器中,复杂函数的任何部位按照等步长的方式在存储器中存储。这将导致复杂函数在变化较为显著的区域的输出精度不够理想,在变化较为平缓的区域的输出精度过于冗余。
[0011]同时在采用现有技术时,当自变量x满足M*step+MIN≤x<(M+1)*step+MIN时,选择LUT(M)的数据做为复杂函数的结果,0≤M≤N
‑
1;此时属于一个范围的任意自变量x都等于LUT(M),存在一定的误差。
技术实现思路
[0012]针对现有技术中所存在的不足,本专利技术提供了一种能够有效提高复杂函数输出精度的基于查找表的复杂函数输出方法及其装置。
[0013]第一方面,一种基于查找表的复杂函数输出方法,包括如下步骤:
[0014]建立所述复杂函数的查找表,所述查找表在所述复杂函数的显著变化区域较平缓变化区域分配有更多的存储空间;
[0015]接收所述复杂函数的输入数据,并根据所述查找表和插值算法,获得所述复杂函数的输出数据。
[0016]作为优选方案,根据所述复杂函数的输入数据,得到所述复杂函数的查找表地址及运算参数;
[0017]根据所述查找表地址输出对应的查找表数据;其中所述查找表在所述复杂函数的显著变化区域分配的存储空间比平缓变化区域更多;
[0018]根据所述运算参数及所述查找表数据进行计算,获得所述复杂函数的输出数据。
[0019]作为优选方案,所述获得所述复杂函数的输出数据,通过线性插值方法得到:
[0020]f(x)=(N
‑
x)/(N
‑
M)*RAM(m)+(x
‑
M)/(N
‑
M)*RAM(m+1);其中M≤x≤N。
[0021]作为优选方案,所述复杂函数为f(x)=2
x
;
[0022]所述N
‑
M的值为2的p次幂。
[0023]第二方面,一种基于查找表的复杂函数输出装置,包括地址范围选择逻辑模块、查找表模块及运算处理模块;
[0024]所述地址范围选择逻辑模块,用于根据所述复杂函数的输入数据,得到所述复杂函数的查找表地址及运算参数并分别输出至所述查找表模块和所述运算处理模块;
[0025]所述查找表模块,用于存储所述复杂函数的查找表,并根据接收到的查找表地址输出对应的查找表数据至所述运算处理模块;其中所述查找表在所述复杂函数的显著变化区域分配的存储空间比平缓变化区域更多;
[0026]所述运算处理模块,用于接收所述运算参数及所述查找表数据并进行计算,输出所述复杂函数的运算结果。
[0027]作为优选方案,所述运算处理模块采用线性插值方法进行计算:
[0028]f(x)=(N
‑
x)/(N
‑
M)*RAM(m)+(x
‑
M)/(N
‑
M)*RAM(m+1);其中M≤x≤N。
[0029]作为优选方案,所述运算处理模块,包括:
[0030]第一反相器,用于接收所述运算参数的M数据,将其反相处理并输出;
[0031]第一加法器,用于将所述复杂函数的输入数据及所述第一反相器的输出数据相加并输出;
[0032]第一乘法器,用于将所述查找表数据中的RAM(m+1)数据与所述第一加法器的输出数据相乘并输出;
[0033]第二反相器,用于接收所述复杂函数的输入数据,将其反相处理并输出;
[0034]第二加法器,用于将所述运算参数的N数据与所述第二反相器的输出数据相加并输出;
[0035]第二乘法器,本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于查找表的复杂函数输出方法,其特征在于,包括如下步骤:建立所述复杂函数的查找表,所述查找表在所述复杂函数的显著变化区域较平缓变化区域分配有更多的存储空间;接收所述复杂函数的输入数据,并根据所述查找表和插值算法,获得所述复杂函数的输出数据。2.一种基于查找表的复杂函数输出方法,其特征在于,包括如下步骤:根据所述复杂函数的输入数据,得到所述复杂函数的查找表地址及运算参数;根据所述查找表地址输出对应的查找表数据;其中所述查找表在所述复杂函数的显著变化区域分配的存储空间比平缓变化区域更多;根据所述运算参数及所述查找表数据进行计算,获得所述复杂函数的输出数据。3.根据权利要求1或2任一项所述的一种基于查找表的复杂函数输出方法,其特征在于,包括如下步骤:所述获得所述复杂函数的输出数据,通过线性插值方法得到:f(x)=(N
‑
x)/(N
‑
M)*RAM(m)+(x
‑
M)/(N
‑
M)*RAM(m+1);其中M≤x≤N。4.根据权利要求3所述的一种基于查找表的复杂函数输出方法,其特征在于:所述复杂函数为f(x)=2
x
;所述N
‑
M的值为2的p次幂。5.一种基于查找表的复杂函数输出装置,包括地址范围选择逻辑模块、查找表模块及运算处理模块,其特征在于:所述地址范围选择逻辑模块,用于根据所述复杂函数的输入数据,得到所述复杂函数的查找表地址及运算参数并分别输出至所述查找表模块和所述运算处理模块;所述查找表模块,用于存储所述复杂函数的查找表,并根据接收到的查找表地址输出对应的查找表数据至所述运算处理模块;其中所述查找表在所述复杂...
【专利技术属性】
技术研发人员:曹二帅,冯若飞,张莉莉,
申请(专利权)人:重庆位图信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。