TWI768430B - 對數計算方法及對數計算電路 - Google Patents

對數計算方法及對數計算電路 Download PDF

Info

Publication number
TWI768430B
TWI768430B TW109127334A TW109127334A TWI768430B TW I768430 B TWI768430 B TW I768430B TW 109127334 A TW109127334 A TW 109127334A TW 109127334 A TW109127334 A TW 109127334A TW I768430 B TWI768430 B TW I768430B
Authority
TW
Taiwan
Prior art keywords
parameter
input value
value
logarithmic
circuit
Prior art date
Application number
TW109127334A
Other languages
English (en)
Other versions
TW202144997A (zh
Inventor
趙博雅
邱棟
唐明哲
吳艷
Original Assignee
瑞昱半導體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 瑞昱半導體股份有限公司 filed Critical 瑞昱半導體股份有限公司
Publication of TW202144997A publication Critical patent/TW202144997A/zh
Application granted granted Critical
Publication of TWI768430B publication Critical patent/TWI768430B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/10Logarithmic or exponential functions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Logic Circuits (AREA)

Abstract

本發明揭露了一種對數計算方法,其包含有以下步驟:(a)選擇對應到第i次曡代運算的第一參數、第二參數、第三參數及第四參數;(b)判斷輸入值是大於第三參數或是小於第四參數;(c)若是輸入值大於第三參數,透過乘以第一參數以更新輸入值,並透過減去第一參數的對數值以更新輸出值;若是輸入值小於第四參數,透過乘以第二參數以更新輸入值,並減去第二參數的對數值以更新輸出值;若是輸入值位於第三參數與第四參數之間,不改變輸入值與輸出值;(d)將i加上1,並回到步驟(a),直到i等於預設值;(e)當i等於預設值時,將目前的輸出值作為計算結果。

Description

對數計算方法及對數計算電路
本發明係有關於對數計算方法。
在一般的對數計算電路中,通常是採用座標旋轉數字計算(Coordinate Rotation Digital Computer,CORDIC)方式來實現對數計算,然而,上述方法會需要儲存一個很大的參數表,且也需要使用多個電路設計較為複雜的乘法器,因此,會增加電路設計的複雜度及成本。
因此,本發明的目的之一在於提出一種對數計算方法及相關的電路,其在每次疊代(iteration)運算的過程中僅需要兩次加法以及一次移位,因此可以大幅簡化電路設計,以解決先前技術中的問題。
在本發明的一個實施例中,揭露一種對數計算方法,其用以對一初始輸入值進行對數運算,其包含有以下步驟:(a)選擇對應到第i次曡代運算的一第一參數、一第二參數、一第三參數以及一第四參數;(b)判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中 該輸入值係由該初始輸入值所得到;(c)若是該輸入值大於該第三參數,透過乘以該第一參數以更新一輸入值,透過減去該第一參數的對數值以更新該輸出值;若是該輸入值小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d)將i加上1,並回到步驟(a),直到i等於一預設值;以及(e)當i等於該預設值時,將目前的該輸出值作為對該初始輸入值進行對數運算的一輸出結果。
在本發明的另一個實施例中,揭露了一種對數計算電路,其用以對一初始輸入值進行對數運算,且包含有一曡代運算電路,且該曡代運算電路用以依序進行多次曡代運算;針對該曡代運算電路所執行的任一次曡代運算,該曡代運算電路執行以下操作:(a)選擇對應到之一第一參數、一第二參數、一第三參數以及一第四參數;(b)判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係根據該初始輸入值所得到;(c)若是該輸入值大於該第三參數,透過乘以該第一參數以更新該輸入值,透過減去該第一參數的對數值以更新一輸出值;若是該輸入小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d)將更新後的該輸入值及該輸出值作為下一次疊代運算的輸出值與輸入值;其中該曡代運算電路的最後一次曡代運算所產生的該輸出值作為對該初始輸入值進行對數運算的一計算結果。
100~112:步驟
200:對數計算電路
210:曡代運算電路
202:移位暫存器
204:加法器
206:加法器
220:選擇電路
x,x’:輸入值
xa(i):參數
xb(i):參數
y,y’:輸出值
第1圖為根據本發明一實施例之對數計算方法的流程圖。
第2圖為根據本發明一實施例之對數計算電路的示意圖。
第1圖為根據本發明一實施例之對數計算方法的流程圖。如第1圖所示,在步驟100中,流程開始,且準備對初始輸入值x進行對數運算以得到輸出值y,亦即y=ln(x)。在步驟102中,先將輸出值y設為0,參數i設為1(亦即,進行第1次曡代運算,並將初始輸入值x轉換為浮點數表示,亦即將初始輸入值x轉換為x=m*2^n,其中n為正整數,且m為介於0.5~1之間的數值。在一實施例中,m可以是16位元的數位值、且n可以是6位元的數位值。在步驟104中,選擇第i組參數,其中第i組參數包含了xa(i)、xb(i)、limit_up(i)、limit_low(i),此時,由於一開始計算時i等於1,第1組參數所包含的xa(1)、xb(1)、limit_up(1)、limit_low(1)分別為(1/2)、(3/2)、(4/3)、(4/5)。在步驟106,判斷初始輸入值x與參數limit_up(1)、limit_low(1)的大小關係,若是初始輸入值x大於參數limit_up(1),則流程進入步驟108;若是初始輸入值x小於參數limit_low(1),則流程進入步驟110;若是初始輸入值x介於參數limit_up(1)與limit_low(1)之間,則流程進入步驟112。在步驟108中,將初始輸入值x乘上參數xa(1)以進行更新(後續的x均稱為輸入值),並將輸出值y減去ln(xa(1)),亦即x=x*xa(1),且y=y-ln(xa(1))。在步驟110中,將輸入值x乘上參數xb(1),並將輸出值y減去ln(xb(1)),亦即x=x*xb(1),且y=y-ln(xb(1))。在步驟112中,將參數i加上1,並回到步驟104開始進行第二次曡代運算。
需注意的是,由於在以上的參數xa(1)與xb(1)分別滿足1-2^(-1)以及1+2^(-1)的結構,因此,步驟108中的x*xa(1)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xa(1)=x*(1-2^(-1))=x-x>>1,其中“>>”是移位運 算子;同理,步驟110中的x*xb(1)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xb(1)=x*(1+2^(-1))=x+x××1,其中“××”是移位運算子。
在第二次曡代運算中,在步驟104中所選擇的第2組參數所包含的參數xa(2)、xb(2)、limit_up(2)、limit_low(2)分別為(3/4)、(5/4)、(8/7)、(8/9)。在步驟106,判斷輸入值x與參數limit_up(2)、limit_low(2)的大小關係,若是輸入值x大於limit_up(2),則流程進入步驟108;若是輸入值x小於參數limit_low(2),則流程進入步驟110;若是輸入值x介於參數limit_up(2)與limit_low(2)之間,則流程進入步驟112。在步驟108中,將x乘上xa(2),並將輸出值y減去ln(xa(2)),亦即x=x*xa(2),且y=y-ln(xa(2))。在步驟110中,將輸入值x乘上xb(2),並將輸出值y減去ln(xb(2)),亦即x=x*xb(2),且y=y-ln(xb(2))。
由於在以上的參數xa(2)與xb(2)分別滿足1-2^(-2)以及1+2^(-2)的結構,因此,步驟108中的x*xa(2)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xa(2)=x*(1-2^(-2))=x-x>>2;同理,步驟110中的x*xb(2)在電路上可以透過一個移位暫存器以及一個加法器來實現,亦即x*xb(2)=x*(1+2^(-2))=x+x×>2。
接著,繼續進行第三次曡代運算、第四次曡代運算、...直到系統的一預設值,例如,當第八次曡代運算完成之後便將所計算出的輸出值y輸出以作為最後的計算結果,亦即對初始輸入值進行對數計算的結果。
在一實施例中,每一次曡代運算所使用的參數xa(i)、xb(i)、limit_up(i)、limit_low(i)設計如以下的表一與表二:
Figure 109127334-A0305-02-0008-1
Figure 109127334-A0305-02-0008-2
Figure 109127334-A0305-02-0009-3
透過上表的參數設計,在第一次曡代運算後的輸入值x會介於(2/3)與(4/3)之間,在第二次曡代運算後的輸入值x會介於(5/6)與(8/7)之間,在第三次曡代運算後的輸入值x會介於(14/15)與(16/15)之間,在第四次曡代運算後的輸入值x會介於(30/31)與(32/31)之間,在第五次曡代運算後的輸入值x會介於(62/63)與(64/63)之間,在第六次曡代運算後的輸入值x會介於(126/127)與(128/127)之間,...,亦即隨著曡代運算的次數越多,的輸入值x的數值會越來越逼近1,因而使得輸出值y也會更逼近理想值。在一範例中,若是進行16次曡代運算操作,輸出值y與理想值的誤差為7.6*10^(-6)。
如以上表所述,由於參數xa(i)與xb(i)分別滿足1-2^(-i)以及1+2^(-i)的結構,因此每一次曡代運算中有關於輸入值x的計算在電路上可以透過一個移位暫存器以及一個加法器來實現;此外,由於參數xa(i)、xb(i)、limit_up(i)、limit_low(i)都是常數,因此可以事先將這些參數的對數值預先計算出來並建立出一個查找表,以供每一次曡代運算中計算輸出值y使用,亦即每一次曡代運算中輸出值y的計算在電路上可以僅透過一個加法器來實現。綜上所述,每一次曡代運算總共只需要一次移位運算、兩次加法運算以及兩個比較運算便可以實現,因此可以有效的降低對數計算過程中的複雜度,且也降低了電路的製造及設計成本。
第2圖為根據本發明一實施例之對數計算電路200的示意圖。如第2圖所示,對數計算電路200包含了一曡代運算電路210以及一選擇電路220,其中曡代運算電路210係用來執行第1圖所示的每一次曡代運算,而選擇電路220則是根據目前所進行的第i次疊代運算來傳送相關的參數至疊代運算電路210,例如上述的i、xa(i)、xb(i)、limit_up(i)、limit_low(i)以及目前的輸入值x及輸出值y。在本實施例中在曡代運算電路210的操作中,曡代運算電路210包含了移位暫存器202以及兩個加法器204、206,其中移位暫存器202以及加法器204係用來執行步驟108、110中有關於輸入值x的操作,亦即x=x*xa(i)或是x=x*xb(i),其中圖示的x’用來表示下一次曡代運算電路210的輸入值x;且加法器206係用來執行步驟108、110中有關於輸出值y的操作,亦即y=y-ln(xa(i))或是y=y-ln(xb(i)),其中圖示的y’用來表示下一次曡代運算輸出值y。由於本領域具有通常知識者再搭配有關於第1圖所述的流程後應能輕易了解到對數計算電路200的操作,故對數計算電路200的操作細節不再重述。
簡要歸納本發明,在本發明的對數計算方法及相關的電路中,透過特殊的參數設定以及曡代運算流程,可以讓每一個曡代運算僅需要透過一個移位暫存器及兩個加法器便可實現,因此,可以有效的降低對數計算過程中的複雜度,且也降低了電路的製造及設計成本。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100~112:步驟

Claims (8)

  1. 一種對數計算方法,其用以對一初始輸入值進行對數運算,其包含有以下步驟:(a)選擇對應到第i次曡代運算的一第一參數、一第二參數、一第三參數以及一第四參數;(b)判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係由該初始輸入值所得到;(c)若是該輸入值大於該第三參數,透過乘以該第一參數以更新一輸入值,並透過減去該第一參數的對數值以更新一輸出值;若是該輸入值小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d)將i加上1,並回到步驟(a),直到i等於一預設值;以及(e)當i等於該預設值時,將目前的該輸出值作為對該初始輸入值進行對數運算的一計算結果;其中該第三參數大於該第四參數,該第一參數為1-2^(-i),該第二參數為1+2^(-i),且該步驟(c)中係僅透過移位暫存器以及加法器來完成更新該輸入值及更新該輸出值的操作。
  2. 如申請專利範圍第1項所述的對數計算方法,其中當i等於1時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(1/2)、(3/2)、(4/3)、(4/5);當i等於2時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(3/4)、(5/4)、(8/7)、(8/9);當i等於3時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(7/8)、(9/8)、(16/15)、(16/17);當 i等於4時,該第一參數、該第二參數、該第三參數以及該第四參數分別為(15/16)、(17/16)、(32/31)、(32/33)。
  3. 如申請專利範圍第1項所述的對數計算方法,其中該步驟(c)中係僅透過移位暫存器以及一個加法器來完成更新該輸入值操作,並僅透過另一個加法器來完成更新該輸出值的操作。
  4. 一種對數計算電路,用以對一初始輸入值進行對數運算,包含有:一曡代運算電路,用以依序進行多次曡代運算;其中針對該曡代運算電路所執行的任一次疊代運算,該曡代運算電路執行以下操作:(a)選擇對應到之一第一參數、一第二參數、一第三參數以及一第四參數;(b)判斷一輸入值是大於該第三參數、小於該第四參數、或是位於該第三參數與該第四參數之間,其中該輸入值係根據該初始輸入值所得到;(c)若是該輸入值大於該第三參數,透過乘以該第一參數以更新該輸入值,並透過減去該第一參數的對數值以更新一輸出值;若是該輸入小於該第四參數,透過乘以該第二參數以更新該輸入值,並減去該第二參數的對數值以更新該輸出值;若是該輸入值位於該第三參數與該第四參數之間,不改變該輸入值與該輸出值;(d)將更新後的該輸入值及該輸出值作為下一次疊代運算的該輸出值與該輸入值;其中該曡代運算電路的最後一次曡代運算所產生的該輸出值係作為對該初始輸入值進行對數運算的一計算結果。
  5. 如申請專利範圍第4項所述的對數計算電路,其中該多次曡代運 算的第一次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(1/2)、(3/2)、(4/3)、(4/5);該多次曡代運算的第二次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(3/4)、(5/4)、(8/7)、(8/9);該多次曡代運算的第三次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(7/8)、(9/8)、(16/15)、(16/17);該多次曡代運算的第四次曡代運算所選擇的該第一參數、該第二參數、該第三參數以及該第四參數分別為(15/16)、(17/16)、(32/31)、(32/33)。
  6. 如申請專利範圍第4項所述的對數計算電路,其中該第三參數大於該第四參數,且該第一參數為1-2^(-i),且該第二參數為1+2^(-i)。
  7. 如申請專利範圍第6項所述的對數計算電路,其中該曡代運算電路僅透過移位暫存器以及加法器來完成更新該輸入值及更新該輸出值的操作。
  8. 如申請專利範圍第6項所述的對數計算電路,其中該曡代運算電路僅透過移位暫存器以及一個加法器來完成更新該輸入值操作,並僅透過另一個加法器來完成更新該輸出值的操作。
TW109127334A 2020-05-25 2020-08-12 對數計算方法及對數計算電路 TWI768430B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010446312.0 2020-05-25
CN202010446312.0A CN113721886B (zh) 2020-05-25 2020-05-25 对数计算电路的操作方法及对数计算电路

Publications (2)

Publication Number Publication Date
TW202144997A TW202144997A (zh) 2021-12-01
TWI768430B true TWI768430B (zh) 2022-06-21

Family

ID=78608959

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109127334A TWI768430B (zh) 2020-05-25 2020-08-12 對數計算方法及對數計算電路

Country Status (3)

Country Link
US (1) US20210365239A1 (zh)
CN (1) CN113721886B (zh)
TW (1) TWI768430B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197024A (en) * 1989-06-14 1993-03-23 Pickett Lester C Method and apparatus for exponential/logarithmic computation
EP0593713A1 (en) * 1992-04-03 1994-04-27 PICKETT, Lester Caryl Exponential/logarithmic computational apparatus and method
TWI625671B (zh) * 2014-07-02 2018-06-01 上海兆芯集成電路有限公司 微處理器與在微處理器中執行之方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0572695A1 (en) * 1992-06-03 1993-12-08 International Business Machines Corporation A digital circuit for calculating a logarithm of a number
JPH11212768A (ja) * 1998-01-23 1999-08-06 Sanyo Electric Co Ltd 対数値算出回路
WO2020090025A1 (ja) * 2018-10-31 2020-05-07 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN110147218B (zh) * 2019-04-09 2021-05-11 珠海市杰理科技股份有限公司 基于Cordic算法的运算电路与方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197024A (en) * 1989-06-14 1993-03-23 Pickett Lester C Method and apparatus for exponential/logarithmic computation
EP0593713A1 (en) * 1992-04-03 1994-04-27 PICKETT, Lester Caryl Exponential/logarithmic computational apparatus and method
AU672787B2 (en) * 1992-04-03 1996-10-17 Lester Caryl Pickett Exponential/Logarithmic Computational Apparatus and Method
TWI625671B (zh) * 2014-07-02 2018-06-01 上海兆芯集成電路有限公司 微處理器與在微處理器中執行之方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Yi-Hua Chen et al., "FPGA implementation and verification of LDPC minimum sum algorithm decoder with weight (3, 6) regular parity check matrix", 11th IEEE International Conference on Electronic Measurement & Instruments, 2013-08-19. *
Yi-Hua Chen et al., "FPGA implementation and verification of LDPC minimum sum algorithm decoder with weight (3, 6) regular parity check matrix", 11th IEEE International Conference on Electronic Measurement & Instruments, 2013-08-19.

Also Published As

Publication number Publication date
TW202144997A (zh) 2021-12-01
CN113721886A (zh) 2021-11-30
US20210365239A1 (en) 2021-11-25
CN113721886B (zh) 2024-08-27

Similar Documents

Publication Publication Date Title
US5909385A (en) Multiplying method and apparatus
CN107305484B (zh) 一种非线性函数运算装置及方法
US10877733B2 (en) Segment divider, segment division operation method, and electronic device
CN111984227B (zh) 一种针对复数平方根的近似计算装置及方法
CN111813371B (zh) 数字信号处理的浮点除法运算方法、系统及可读介质
US7143126B2 (en) Method and apparatus for implementing power of two floating point estimation
US7725522B2 (en) High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
CN113138749A (zh) 基于cordic算法的三角函数计算装置及方法
US6182100B1 (en) Method and system for performing a logarithmic estimation within a data processing system
US6941334B2 (en) Higher precision divide and square root approximations
TWI768430B (zh) 對數計算方法及對數計算電路
JP4273071B2 (ja) 除算・開平演算器
JPH04205026A (ja) 除算回路
US20010025293A1 (en) Divider
US10216481B2 (en) Digit recurrence division with scaling and digit selection using intermediate value
CN108595148B (zh) 除法函数实现方法、电路、芯片以及系统
CN108319447A (zh) 便于硬件实现的开平方算法
US6963895B1 (en) Floating point pipeline method and circuit for fast inverse square root calculations
TWI444889B (zh) 複數除法器及其相關方法
CN111353118A (zh) 开平方的方法及相应的用于开平方的电路
JP2009089343A (ja) 角度計算方法及び関連回路
JP2003084969A (ja) 浮動小数点剰余演算器、情報処理装置及びコンピュータプログラム
JPH0225924A (ja) 浮動小数点演算処理装置
JP2003223316A (ja) 演算処理装置
JPH06195206A (ja) 除算器