实现对数运算的装置及方法

文档序号:6582307阅读:203来源:国知局
专利名称:实现对数运算的装置及方法
技术领域
本发明涉及信号处理领域,特别是涉及一种实现对数运算的装置。本发明还涉及 一种实现对数运算的方法。
背景技术
对数运算一般的可以表示成Y = Ioga (X),其中X是输入,a称为底数,常用的底数 有2,e,10。对数运算有许多应用,其中包括自动增益控制,在自动增益控制中需要计算信 号的功率值,为了便于后面的处理,往往需要转换成分贝,即Y = 20 X Iogltl (X),其中X代表 信号的幅度测量值。这就需要一种合适的计算对数的装置。对数运算目前已有很多方法,一类比较直接的方法是查表,即把X的每个值所对 应的对数值存到表中。这种方法对于精度要求不高以及X的动态范围有限的场合下是合适 的,但是在自动增益的应用场合往往要求较大的动态范围和较高的精度,即使采用分段查 表的方法,其复杂度仍比较高。另外一类方法是采用幂级数展开或者数值递推等数值计算 方法(参见《高级FPGA设计结构、实现和优化》----(美)克里兹著,孟宪元译机械工业出 版社2009)。这类方法精度很高但是计算复杂,需要多次迭代计算,往往还需要先对X作归 一化操作(Prescaling),收敛速度慢。另外上述方法都不够灵活,不能通过简单的改动来实 现不同精度不同底数的对数运算。这就需要一种简单的,又能灵活配置的对数运算装置。

发明内容
本发明要解决的技术问题是提供一种实现对数运算的装置,能够根据需要进行灵 活配置实现不同精度不同底数的对数运算,并且结构简单,实现的低复杂度;为此,本发明 还要提供一种实现对数运算的方法。为解决上述技术问题,本发明的实现对数运算的装置包括输入控制逻辑模块,用于把输入X的值转换成A,B, S的值,并赋值给寄存器A,寄 存器B,寄存器S,初始化所述寄存器;寄存器A,寄存器B,寄存器S,其输入端与输入控制逻辑模块连接,分别用于存储 A,B,S的值;寄存器K,其输出端与迭代比较控制模块连接,用于存储设定的常数K,且K为大于 1的有理数;一累加器CNT,其输入端与迭代比较控制模块连接,输出端与MUX模块连接,在所 述迭代比较控制模块的控制下进行累加计算;迭代比较控制模块,与所述寄存器A,寄存器B,寄存器K,累加器CNT连接,用于以 迭代方式获得对数运算结果;MUX模块,根据累加值CNT的值和寄存器S中的符号指示位S,得到最终的对数结 果 Y,Y = SXCNT。本发明的实现对数运算的方法包括如下步骤
步骤一、将输入X的值拆分为或近似为分子除以分母的形式,将分子分母中大的 值赋给寄存器A,将分子分母中较小的值赋给寄存器B,根据X是否大于1来预先确定对数 的符号并存储给寄存器S ;步骤二、迭代比较寄存器A中的数值A与寄存器B中的数值B与常数K的乘积 KXB,同时更新加器CNT和寄存器B的值,直至A彡KXB为止;步骤三、根据累加器CNT和寄存器S的值确定最终的对数计算结果Y。本发明实现简单,复杂度低,无需查表,只需几次加减法运算操作即可得到最终的 对数计算结果;操作灵活,通过配置不同的参数(常数K)即可实现不同精度不同底数的对 数运算。


下面结合附图与具体实施方式
对本发明作进一步详细的说明图1是本发明的对数运算方法一实施例控制流程图;图2是本发明的对数运算装置一实施例结构框图;图3是图2中的迭代比较状态机的控制流程图。
具体实施例方式参见图1所示,在一实施例中所述实现对数运算的方法包括如下步骤步骤一、根据输入X的值初始化寄存器A,B和S。将X的值近似成分子除以分母的 形式,并把分子分母中较大的值赋给寄存器A,把较小的值赋给寄存器B。即当X小于1时, X ^ B/A, S = -1 ;当 X 大于等于 1 时,X A/B, S = 1。步骤二、迭代比较寄存器A的值A与寄存器B中的数值B与K的乘积K X B,同时更 新一个累加器CNT和寄存器B的值,直至AS KXB为止。根据获得的寄存器A的值A和寄存器B的值B,通过以下的迭代过程来更新累加器 CNT以及寄存器B的值(1)累加器CNT清零;(2)比较A和■,如果A > K*B则进入(3),如果A ( K*B则进入(4);(3)累加器加1,即CNT = CNT+1,更新寄存器B的值,即B = KXB,返回⑵;(4)迭代过程结束,输出累加器CNT的值。其中,K是可配置的参数(常数,且K为大于1的有理数),通过配置不同的K值可 以实现不同精度不同底数的对数运算。实施步骤二时,无论输入X的值大小,迭代比较过程完全相同。实施步骤二时,只 需要通过配置不同的K值实现不同精度不同底数的对数运算,迭代比较过程完全相同。步骤三、根据累加器CNT和寄存器S的值来确定最终的结果Y。根据累加值CNT和 步骤1获得的符号指示位s(寄存器S的值)来得到最终的对数结果Y,Y = SXCNT。参见图2所示,在一实施例中所述实现对数运算的装置包括寄存器A,连接在初始化逻辑(输入控制逻辑)模块与迭代比较状态机(迭代比较 控制模块)之间;对输入X的值近似成分子除以分母的形式后,将分子分母中较大的值赋值 给A,并将赋值后的A存储在寄存器A中。
寄存器B,连接在初始化逻辑模块与迭代比较状态机之间;对输入X的值近似成分 子除以分母的形式后,将分子分母中较小的值赋值给B,并将赋值后的B存储在寄存器B中。所述寄存器A和寄存器B位宽相同均为M比特位,例如M= 16比特位。M也可称为字长,根据硬件来决定,通常都是字节(8比特)的整数倍。对于一些通 用处理器(MCU)或者通用数字信号处理器(DSP),字长是确定好的,无法由使用者改变,常 用的字长有8,16,32比特。而对于专用的硬件,比如可编程门阵列(FPGA),字长可以由设计者自由决定,上述 实施例中采用的就是这种方式,并且取16比特。寄存器K,其输出端与迭代比较状态机连接,用于存储常数K,K为可配置且为大于 1的有理数。存储一个有理数可以拆分成多段,因为大于1的有理数总可以拆分成整数位+分 数位+分母位。而整数位,分数位和分母位都可以用整数来表示了。例如为了表示K = 9/8,K = 1 (整数位)+1 (分子)/8 (分母),只需要分别存储1,1,和8就可以了。寄存器S,1比特位,其输入端与初始化逻辑模块连接,输出端与MUX模块连接,用 于存储符号指示位S,当X小于1时,即X B/A,S = -1 ;当X大于等于1时,即X A/B, S = 1。累加器CNT,其输入端与迭代比较状态机连接,输出端与MUX模块连接,在所述迭 代比较状态机的控制下进行累加计算。初始化逻辑模块,根据输入X的值初始化寄存器A,寄存器B和寄存器S。为实现简单,设定A = 2H,这样只要根据X来计算B,具体操作如下当X小于1 时,设X B/A,取B = Ixnmd(XXZH),S = !,代表对数的结果为负值;当X大于等于1时,
设X A/B,取B= round(去X2N_1),S = 0,代表对数的结果为正值。
JC这样无论X的取值如何总有A彡B,从而使得后面的迭代比较逻辑更简单。迭代比较状态机模块即迭代比较控制模块是一个状态机,以图2所示的实施例, 在自动增益控制中需要的运算是分贝运算Y = 20X Iog10 (X),并且精度是1分贝;为此,配 置K = 9/8 = 1+1/8,所以KXB = B+B/8 ;而B/8只需通过将B右移3位操作即可实现而无
需除法。所述迭代比较状态机模块的控制流程如图3所示。比较 A 和 B+B/8 ;如果Α-Φ+Β/8) > 0,则累加器CNT的值加1,并且更新寄存器B的值,即B = B+B/8 ;重复比较操作;当A-(B+B/8) ( 0则结束比较,并根据寄存器S中寄存的符号指示位S的情况输 出最终的结果Y,即如果S = 0,则Y = -CNT ;如果S = 1,则Y = CNT。MUX模块,根据累加值CNT的值和寄存器S中的符号指示位S,得到最终的对数结 果 Y,Y = SXCNT。下面的例子能进一步说明本发明的灵活性和可配置性。比如,需要奈培运算Y = In(X),并且精度是0.5奈培;为此可以配置K = 13/8 = 1+5/8,所以KXB = B+5XB/8,5 X B/8同样不需要乘除法。迭代比较过程与上面一致,只是在输出时有所不同,即如果S = 0,则 Y = -CNT/2 ;如果 S = 1,则 Y = CNT/2。 以上通过具体实施例对本发明进行了详细的说明,但这些并非构成对本发明的限 制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应 视为本发明的保护范围。
权利要求
1.一种实现对数运算的装置,其特征在于,包括输入控制逻辑模块,用于把输入X的值转换成A,B, S的值,并赋值给寄存器A,寄存器 B,寄存器S,初始化所述寄存器;寄存器A,寄存器B,寄存器S,其输入端与输入控制逻辑模块连接,分别用于存储A,B, S的值;寄存器K,其输出端与迭代比较控制模块连接,用于存储设定的常数K,且K为大于1的有理数;一累加器CNT,其输入端与迭代比较控制模块连接,输出端与MUX模块连接,在所述迭 代比较控制模块的控制下进行累加计算;迭代比较控制模块,与所述寄存器A,寄存器B,寄存器K,累加器CNT连接,用于以迭代 方式获得对数运算结果;MUX模块,根据累加值CNT的值和寄存器S中的符号指示位S,得到最终的对数结果Y。
2.如权利要求1所述的装置,其特征在于所述输入控制逻辑模块按照如下方式将输 入X的值转换成A,B,S的值;设定A = 2N_\当X小于1时,取B = round(XX2^1), S = 1,代表对数的结果为负值;当X大于等于1时,取B= round(^X2N1),S = 0,代表对数的JC结果为正值。
3.如权利要求1所述的装置,其特征在于所述迭代比较控制模块控制迭代的过程是 比较A和KXB,如果A > KXB,则累加器CNT的值加1,并且更新寄存器B的值,即B = KXB, 然后重复比较操作;当A < KXB则结束比较,并根据符号指示位S输出最终的对数计算结 果Y,即如果S = 0,则Y = -CNT ;如果S = 1,则Y = CNT。
4.一种实现对数运算的方法,其特征在于,包括如下步骤步骤一、将输入X的值拆分为或近似为分子除以分母的形式,将分子分母中大的值赋 给寄存器A,将分子分母中较小的值赋给寄存器B,根据X是否大于1来预先确定对数的符 号即符号指示位S并存储给寄存器S ;步骤二、迭代比较寄存器A中的数值A与寄存器B中的数值B与常数K的乘积KX B,同 时更新加器CNT和寄存器B的值,直至A彡KXB为止;步骤三、根据累加器CNT和寄存器S中符号指示位S的值确定最终的对数计算结果Y。
5.如权利要求4所述的方法,其特征在于实施步骤二时,无论输入X的值大小,迭代 比较过程完全相同。
6.如权利要求4所述的方法,其特征在于实施步骤二时,只需要通过配置不同的K值 实现不同精度不同底数的对数运算,迭代比较过程完全相同。
全文摘要
本发明公开了一种实现对数运算的装置,输入控制逻辑模块,用于把输入X的值转换成A,B,S的值,并赋值给寄存器A,寄存器B,寄存器S,初始化所述寄存器;寄存器K,其输出端与迭代比较控制模块连接,用于存储设定的常数K;累加器CNT,在迭代比较控制模块的控制下进行累加计算;迭代比较控制模块,用于以迭代方式获得对数运算结果;MUX模块,根据累加值CNT的值和寄存器S中的符号指示位S,得到最终的对数结果Y。本发明还公开了一种实现对数运算的方法。本发明能够根据需要进行灵活配置实现不同精度不同底数的对数运算,并且结构简单,实现的低复杂度。
文档编号G06F7/556GK102103480SQ200910202008
公开日2011年6月22日 申请日期2009年12月21日 优先权日2009年12月21日
发明者张帆, 金方其 申请人:卓胜微电子(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1