專利名稱:實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信號(hào)處理領(lǐng)域,特別是涉及一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置。本發(fā)明還涉及 一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的方法。
背景技術(shù):
對(duì)數(shù)運(yùn)算一般的可以表示成Y = Ioga (X),其中X是輸入,a稱為底數(shù),常用的底數(shù) 有2,e,10。對(duì)數(shù)運(yùn)算有許多應(yīng)用,其中包括自動(dòng)增益控制,在自動(dòng)增益控制中需要計(jì)算信 號(hào)的功率值,為了便于后面的處理,往往需要轉(zhuǎn)換成分貝,即Y = 20 X Iogltl (X),其中X代表 信號(hào)的幅度測(cè)量值。這就需要一種合適的計(jì)算對(duì)數(shù)的裝置。對(duì)數(shù)運(yùn)算目前已有很多方法,一類比較直接的方法是查表,即把X的每個(gè)值所對(duì) 應(yīng)的對(duì)數(shù)值存到表中。這種方法對(duì)于精度要求不高以及X的動(dòng)態(tài)范圍有限的場(chǎng)合下是合適 的,但是在自動(dòng)增益的應(yīng)用場(chǎng)合往往要求較大的動(dòng)態(tài)范圍和較高的精度,即使采用分段查 表的方法,其復(fù)雜度仍比較高。另外一類方法是采用冪級(jí)數(shù)展開或者數(shù)值遞推等數(shù)值計(jì)算 方法(參見《高級(jí)FPGA設(shè)計(jì)結(jié)構(gòu)、實(shí)現(xiàn)和優(yōu)化》----(美)克里茲著,孟憲元譯機(jī)械工業(yè)出 版社2009)。這類方法精度很高但是計(jì)算復(fù)雜,需要多次迭代計(jì)算,往往還需要先對(duì)X作歸 一化操作(Prescaling),收斂速度慢。另外上述方法都不夠靈活,不能通過簡(jiǎn)單的改動(dòng)來實(shí) 現(xiàn)不同精度不同底數(shù)的對(duì)數(shù)運(yùn)算。這就需要一種簡(jiǎn)單的,又能靈活配置的對(duì)數(shù)運(yùn)算裝置。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置,能夠根據(jù)需要進(jìn)行靈 活配置實(shí)現(xiàn)不同精度不同底數(shù)的對(duì)數(shù)運(yùn)算,并且結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)的低復(fù)雜度;為此,本發(fā)明 還要提供一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的方法。為解決上述技術(shù)問題,本發(fā)明的實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置包括輸入控制邏輯模塊,用于把輸入X的值轉(zhuǎn)換成A,B, S的值,并賦值給寄存器A,寄 存器B,寄存器S,初始化所述寄存器;寄存器A,寄存器B,寄存器S,其輸入端與輸入控制邏輯模塊連接,分別用于存儲(chǔ) A,B,S的值;寄存器K,其輸出端與迭代比較控制模塊連接,用于存儲(chǔ)設(shè)定的常數(shù)K,且K為大于 1的有理數(shù);一累加器CNT,其輸入端與迭代比較控制模塊連接,輸出端與MUX模塊連接,在所 述迭代比較控制模塊的控制下進(jìn)行累加計(jì)算;迭代比較控制模塊,與所述寄存器A,寄存器B,寄存器K,累加器CNT連接,用于以 迭代方式獲得對(duì)數(shù)運(yùn)算結(jié)果;MUX模塊,根據(jù)累加值CNT的值和寄存器S中的符號(hào)指示位S,得到最終的對(duì)數(shù)結(jié) 果 Y,Y = SXCNT。本發(fā)明的實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的方法包括如下步驟
步驟一、將輸入X的值拆分為或近似為分子除以分母的形式,將分子分母中大的 值賦給寄存器A,將分子分母中較小的值賦給寄存器B,根據(jù)X是否大于1來預(yù)先確定對(duì)數(shù) 的符號(hào)并存儲(chǔ)給寄存器S ;步驟二、迭代比較寄存器A中的數(shù)值A(chǔ)與寄存器B中的數(shù)值B與常數(shù)K的乘積 KXB,同時(shí)更新加器CNT和寄存器B的值,直至A彡KXB為止;步驟三、根據(jù)累加器CNT和寄存器S的值確定最終的對(duì)數(shù)計(jì)算結(jié)果Y。本發(fā)明實(shí)現(xiàn)簡(jiǎn)單,復(fù)雜度低,無需查表,只需幾次加減法運(yùn)算操作即可得到最終的 對(duì)數(shù)計(jì)算結(jié)果;操作靈活,通過配置不同的參數(shù)(常數(shù)K)即可實(shí)現(xiàn)不同精度不同底數(shù)的對(duì) 數(shù)運(yùn)算。
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明圖1是本發(fā)明的對(duì)數(shù)運(yùn)算方法一實(shí)施例控制流程圖;圖2是本發(fā)明的對(duì)數(shù)運(yùn)算裝置一實(shí)施例結(jié)構(gòu)框圖;圖3是圖2中的迭代比較狀態(tài)機(jī)的控制流程圖。
具體實(shí)施例方式參見圖1所示,在一實(shí)施例中所述實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的方法包括如下步驟步驟一、根據(jù)輸入X的值初始化寄存器A,B和S。將X的值近似成分子除以分母的 形式,并把分子分母中較大的值賦給寄存器A,把較小的值賦給寄存器B。即當(dāng)X小于1時(shí), X ^ B/A, S = -1 ;當(dāng) X 大于等于 1 時(shí),X A/B, S = 1。步驟二、迭代比較寄存器A的值A(chǔ)與寄存器B中的數(shù)值B與K的乘積K X B,同時(shí)更 新一個(gè)累加器CNT和寄存器B的值,直至AS KXB為止。根據(jù)獲得的寄存器A的值A(chǔ)和寄存器B的值B,通過以下的迭代過程來更新累加器 CNT以及寄存器B的值(1)累加器CNT清零;(2)比較A和■,如果A > K*B則進(jìn)入(3),如果A ( K*B則進(jìn)入(4);(3)累加器加1,即CNT = CNT+1,更新寄存器B的值,即B = KXB,返回⑵;(4)迭代過程結(jié)束,輸出累加器CNT的值。其中,K是可配置的參數(shù)(常數(shù),且K為大于1的有理數(shù)),通過配置不同的K值可 以實(shí)現(xiàn)不同精度不同底數(shù)的對(duì)數(shù)運(yùn)算。實(shí)施步驟二時(shí),無論輸入X的值大小,迭代比較過程完全相同。實(shí)施步驟二時(shí),只 需要通過配置不同的K值實(shí)現(xiàn)不同精度不同底數(shù)的對(duì)數(shù)運(yùn)算,迭代比較過程完全相同。步驟三、根據(jù)累加器CNT和寄存器S的值來確定最終的結(jié)果Y。根據(jù)累加值CNT和 步驟1獲得的符號(hào)指示位s(寄存器S的值)來得到最終的對(duì)數(shù)結(jié)果Y,Y = SXCNT。參見圖2所示,在一實(shí)施例中所述實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置包括寄存器A,連接在初始化邏輯(輸入控制邏輯)模塊與迭代比較狀態(tài)機(jī)(迭代比較 控制模塊)之間;對(duì)輸入X的值近似成分子除以分母的形式后,將分子分母中較大的值賦值 給A,并將賦值后的A存儲(chǔ)在寄存器A中。
寄存器B,連接在初始化邏輯模塊與迭代比較狀態(tài)機(jī)之間;對(duì)輸入X的值近似成分 子除以分母的形式后,將分子分母中較小的值賦值給B,并將賦值后的B存儲(chǔ)在寄存器B中。所述寄存器A和寄存器B位寬相同均為M比特位,例如M= 16比特位。M也可稱為字長(zhǎng),根據(jù)硬件來決定,通常都是字節(jié)(8比特)的整數(shù)倍。對(duì)于一些通 用處理器(MCU)或者通用數(shù)字信號(hào)處理器(DSP),字長(zhǎng)是確定好的,無法由使用者改變,常 用的字長(zhǎng)有8,16,32比特。而對(duì)于專用的硬件,比如可編程門陣列(FPGA),字長(zhǎng)可以由設(shè)計(jì)者自由決定,上述 實(shí)施例中采用的就是這種方式,并且取16比特。寄存器K,其輸出端與迭代比較狀態(tài)機(jī)連接,用于存儲(chǔ)常數(shù)K,K為可配置且為大于 1的有理數(shù)。存儲(chǔ)一個(gè)有理數(shù)可以拆分成多段,因?yàn)榇笥?的有理數(shù)總可以拆分成整數(shù)位+分 數(shù)位+分母位。而整數(shù)位,分?jǐn)?shù)位和分母位都可以用整數(shù)來表示了。例如為了表示K = 9/8,K = 1 (整數(shù)位)+1 (分子)/8 (分母),只需要分別存儲(chǔ)1,1,和8就可以了。寄存器S,1比特位,其輸入端與初始化邏輯模塊連接,輸出端與MUX模塊連接,用 于存儲(chǔ)符號(hào)指示位S,當(dāng)X小于1時(shí),即X B/A,S = -1 ;當(dāng)X大于等于1時(shí),即X A/B, S = 1。累加器CNT,其輸入端與迭代比較狀態(tài)機(jī)連接,輸出端與MUX模塊連接,在所述迭 代比較狀態(tài)機(jī)的控制下進(jìn)行累加計(jì)算。初始化邏輯模塊,根據(jù)輸入X的值初始化寄存器A,寄存器B和寄存器S。為實(shí)現(xiàn)簡(jiǎn)單,設(shè)定A = 2H,這樣只要根據(jù)X來計(jì)算B,具體操作如下當(dāng)X小于1 時(shí),設(shè)X B/A,取B = Ixnmd(XXZH),S = !,代表對(duì)數(shù)的結(jié)果為負(fù)值;當(dāng)X大于等于1時(shí),
設(shè)X A/B,取B= round(去X2N_1),S = 0,代表對(duì)數(shù)的結(jié)果為正值。
JC這樣無論X的取值如何總有A彡B,從而使得后面的迭代比較邏輯更簡(jiǎn)單。迭代比較狀態(tài)機(jī)模塊即迭代比較控制模塊是一個(gè)狀態(tài)機(jī),以圖2所示的實(shí)施例, 在自動(dòng)增益控制中需要的運(yùn)算是分貝運(yùn)算Y = 20X Iog10 (X),并且精度是1分貝;為此,配 置K = 9/8 = 1+1/8,所以KXB = B+B/8 ;而B/8只需通過將B右移3位操作即可實(shí)現(xiàn)而無
需除法。所述迭代比較狀態(tài)機(jī)模塊的控制流程如圖3所示。比較 A 和 B+B/8 ;如果Α-Φ+Β/8) > 0,則累加器CNT的值加1,并且更新寄存器B的值,即B = B+B/8 ;重復(fù)比較操作;當(dāng)A-(B+B/8) ( 0則結(jié)束比較,并根據(jù)寄存器S中寄存的符號(hào)指示位S的情況輸 出最終的結(jié)果Y,即如果S = 0,則Y = -CNT ;如果S = 1,則Y = CNT。MUX模塊,根據(jù)累加值CNT的值和寄存器S中的符號(hào)指示位S,得到最終的對(duì)數(shù)結(jié) 果 Y,Y = SXCNT。下面的例子能進(jìn)一步說明本發(fā)明的靈活性和可配置性。比如,需要奈培運(yùn)算Y = In(X),并且精度是0.5奈培;為此可以配置K = 13/8 = 1+5/8,所以KXB = B+5XB/8,5 X B/8同樣不需要乘除法。迭代比較過程與上面一致,只是在輸出時(shí)有所不同,即如果S = 0,則 Y = -CNT/2 ;如果 S = 1,則 Y = CNT/2。 以上通過具體實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,但這些并非構(gòu)成對(duì)本發(fā)明的限 制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進(jìn),這些也應(yīng) 視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置,其特征在于,包括輸入控制邏輯模塊,用于把輸入X的值轉(zhuǎn)換成A,B, S的值,并賦值給寄存器A,寄存器 B,寄存器S,初始化所述寄存器;寄存器A,寄存器B,寄存器S,其輸入端與輸入控制邏輯模塊連接,分別用于存儲(chǔ)A,B, S的值;寄存器K,其輸出端與迭代比較控制模塊連接,用于存儲(chǔ)設(shè)定的常數(shù)K,且K為大于1的有理數(shù);一累加器CNT,其輸入端與迭代比較控制模塊連接,輸出端與MUX模塊連接,在所述迭 代比較控制模塊的控制下進(jìn)行累加計(jì)算;迭代比較控制模塊,與所述寄存器A,寄存器B,寄存器K,累加器CNT連接,用于以迭代 方式獲得對(duì)數(shù)運(yùn)算結(jié)果;MUX模塊,根據(jù)累加值CNT的值和寄存器S中的符號(hào)指示位S,得到最終的對(duì)數(shù)結(jié)果Y。
2.如權(quán)利要求1所述的裝置,其特征在于所述輸入控制邏輯模塊按照如下方式將輸 入X的值轉(zhuǎn)換成A,B,S的值;設(shè)定A = 2N_\當(dāng)X小于1時(shí),取B = round(XX2^1), S = 1,代表對(duì)數(shù)的結(jié)果為負(fù)值;當(dāng)X大于等于1時(shí),取B= round(^X2N1),S = 0,代表對(duì)數(shù)的JC結(jié)果為正值。
3.如權(quán)利要求1所述的裝置,其特征在于所述迭代比較控制模塊控制迭代的過程是 比較A和KXB,如果A > KXB,則累加器CNT的值加1,并且更新寄存器B的值,即B = KXB, 然后重復(fù)比較操作;當(dāng)A < KXB則結(jié)束比較,并根據(jù)符號(hào)指示位S輸出最終的對(duì)數(shù)計(jì)算結(jié) 果Y,即如果S = 0,則Y = -CNT ;如果S = 1,則Y = CNT。
4.一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的方法,其特征在于,包括如下步驟步驟一、將輸入X的值拆分為或近似為分子除以分母的形式,將分子分母中大的值賦 給寄存器A,將分子分母中較小的值賦給寄存器B,根據(jù)X是否大于1來預(yù)先確定對(duì)數(shù)的符 號(hào)即符號(hào)指示位S并存儲(chǔ)給寄存器S ;步驟二、迭代比較寄存器A中的數(shù)值A(chǔ)與寄存器B中的數(shù)值B與常數(shù)K的乘積KX B,同 時(shí)更新加器CNT和寄存器B的值,直至A彡KXB為止;步驟三、根據(jù)累加器CNT和寄存器S中符號(hào)指示位S的值確定最終的對(duì)數(shù)計(jì)算結(jié)果Y。
5.如權(quán)利要求4所述的方法,其特征在于實(shí)施步驟二時(shí),無論輸入X的值大小,迭代 比較過程完全相同。
6.如權(quán)利要求4所述的方法,其特征在于實(shí)施步驟二時(shí),只需要通過配置不同的K值 實(shí)現(xiàn)不同精度不同底數(shù)的對(duì)數(shù)運(yùn)算,迭代比較過程完全相同。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的裝置,輸入控制邏輯模塊,用于把輸入X的值轉(zhuǎn)換成A,B,S的值,并賦值給寄存器A,寄存器B,寄存器S,初始化所述寄存器;寄存器K,其輸出端與迭代比較控制模塊連接,用于存儲(chǔ)設(shè)定的常數(shù)K;累加器CNT,在迭代比較控制模塊的控制下進(jìn)行累加計(jì)算;迭代比較控制模塊,用于以迭代方式獲得對(duì)數(shù)運(yùn)算結(jié)果;MUX模塊,根據(jù)累加值CNT的值和寄存器S中的符號(hào)指示位S,得到最終的對(duì)數(shù)結(jié)果Y。本發(fā)明還公開了一種實(shí)現(xiàn)對(duì)數(shù)運(yùn)算的方法。本發(fā)明能夠根據(jù)需要進(jìn)行靈活配置實(shí)現(xiàn)不同精度不同底數(shù)的對(duì)數(shù)運(yùn)算,并且結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)的低復(fù)雜度。
文檔編號(hào)G06F7/556GK102103480SQ200910202008
公開日2011年6月22日 申請(qǐng)日期2009年12月21日 優(yōu)先權(quán)日2009年12月21日
發(fā)明者張帆, 金方其 申請(qǐng)人:卓勝微電子(上海)有限公司