專(zhuān)利名稱(chēng):用于集成電路設(shè)備中的三角函數(shù)的計(jì)算的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在集成電路設(shè)備中計(jì)算三角函數(shù),并且具體而言在諸如可編程邏輯設(shè)備(PLD)的可編程集成電路中。
背景技術(shù):
通常對(duì)于0-360°或0-2π弧度的相對(duì)小的角度范圍定義三角函數(shù)。對(duì)于2 π以上的角度值,三角函數(shù)的值重復(fù)。事實(shí)上可以將范圍限制為0-π/2,因?yàn)楦鞣N三角恒等式可用于從O到π/2之間的角度的三角函數(shù)得到/2到2 之間的任意角度是三角函數(shù)的值。
在集成電路設(shè)備中可用于計(jì)算三角函數(shù)的一個(gè)方法是CORDIC算法,其使用以下三個(gè)遞歸方程式xn+1 = xn-dnyn2_nyn+1 = yn+dnxn2_nzn+1 = Zn-ClntarT1 (2_n)例如,為了計(jì)算輸入的正弦或余弦,將X值初始化為“1”,將y值初始化為“0”,并且將Z值初始化為需要的角度。然后將Z向零旋轉(zhuǎn),其確定的dn的符號(hào),<是±1,如果Zn是正的,則4也是正的,因?yàn)槟繕?biāo)是使z更接近O;如果Zn是負(fù)的,則 <也是負(fù)的,這出于相同的原因。X和I表示單位向量的X和I分量;隨著z旋轉(zhuǎn),該向量也旋轉(zhuǎn),并且當(dāng)z到達(dá)它到O的最終旋轉(zhuǎn)時(shí),X和y的值將分別收斂到輸入角的余弦和正弦。為了解決旋轉(zhuǎn)期間單位向量的伸展,將比例因子應(yīng)用于X的初始值。該比例因子是Πλ/ι + 2-2μ =1.64676025812106564……
η=0因此將最初的X 設(shè)置為 1/1. 64677. . . = O. 607252935. · ·。但是隨著輸入變小,CORDIC可能變得不正確。例如,隨著Θ接近O,sin(0)接近Θ (并且因此sin(e)接近0),并且隨著Θ接近0,cos(0)接近I。但是,計(jì)算值與實(shí)際值之間的誤差的量值隨著Θ減小而增加。此外,在諸如FPGA的集成電路設(shè)備中看起來(lái)容易實(shí)現(xiàn)具有初始考慮的C0RDIC,但是更仔細(xì)的分析顯示無(wú)效率,至少部分地因?yàn)槎鄠€(gè)深度數(shù)學(xué)結(jié)構(gòu),每個(gè)層包括寬的加法器。普通FPGA架構(gòu)可以具有4-6個(gè)輸入函數(shù),緊接著專(zhuān)用脈動(dòng)進(jìn)位加法器,緊接著寄存器。當(dāng)用于計(jì)算浮點(diǎn)函數(shù)時(shí),如在單精度正弦或余弦函數(shù)的情況,對(duì)于更小的輸入值生成精確的結(jié)果所需要的硬件資源的數(shù)量可能變大。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的實(shí)施方式,可以使用基于可以被應(yīng)用的不同的三角恒等式的各種改進(jìn)實(shí)現(xiàn)來(lái)計(jì)算不同的三角函數(shù)。對(duì)于正弦和余弦函數(shù),改進(jìn)CORDIC實(shí)現(xiàn)將小輸入角度改變成較大角度,其中CORDIC結(jié)果對(duì)于較大角度更精確。這可以通過(guò)對(duì)于小的Θ (例如對(duì)于Θ < ji/4)使用n/2-θ代替Θ來(lái)完成。如上文所討論的,對(duì)于較小角度,CORDIC精確性受損,但是標(biāo)準(zhǔn)CORDIC實(shí)現(xiàn)可以用于較大角度。復(fù)用器可以在輸入值Θ與減法器的輸出之間選擇,其中該減法器的減數(shù)和被減數(shù)分別是η/2和輸入值Θ。可以使用輸入Θ與閾值的比較來(lái)控制復(fù)用器以做出選擇。正弦和余弦都由CORDIC實(shí)現(xiàn)的X和y數(shù)據(jù)路徑來(lái)計(jì)算,并且可以使用可能受與輸入復(fù)用器相同的比較輸出控制的另一個(gè)復(fù)用器來(lái)選擇希望的輸出路徑。當(dāng)π /2- Θ已經(jīng)被用作輸入時(shí),可以使用恒等式cos( Θ ) = sin( η /2- θ )以及sin( θ )=cos (π/2-Θ)來(lái)得到希望的結(jié)果。對(duì)于正切函數(shù),可以使用用于角度的和的正切的三角恒等式 將輸入角度分解成輸入角度的不同的比特范圍的和。因?yàn)橐恍┓至糠秶鷮⑹切〉模韵鄬?duì)于那些分量范圍將簡(jiǎn)化恒等式??梢栽诤线m的電路中實(shí)現(xiàn)恒等式。對(duì)于反正切(即acrtan或tarT1)函數(shù),問(wèn)題在于潛在的輸入范圍在負(fù)無(wú)窮大到正無(wú)窮大之間(不像例如反正弦或反余弦,它們的潛在輸入范圍在-I到+1之間)。根據(jù)本發(fā)明,可以使用涉及反正切函數(shù)的三角恒等式將輸入分解成不同的范圍,其中該恒等式的最復(fù)雜的部分貢獻(xiàn)小于結(jié)果的最不重要片段,因而它可以被忽略??梢栽诤线m的電路中實(shí)現(xiàn)該恒等式。對(duì)于反余弦(即arcos或cos—1),可以使用以下恒等式
,(^7)arccos = 2 arctan -
1 + x
V)其可以被簡(jiǎn)化為
(Λ \
「 π-I-Xarccos = 2 arctan ,
y^Jl — x2 j可以如以上所討論計(jì)算、簡(jiǎn)化反正切,因?yàn)榉从嘞业妮斎敕秶幌抻贠到I之間??梢允褂靡阎募夹g(shù)來(lái)計(jì)算平方根倒數(shù)。對(duì)于反正弦(即arsin或sin-Ι),其也具有被限于O到I之間的輸入范圍,可以計(jì)算反余弦,并且然后基于恒等式arcsinOO =n /2-arccos (x)來(lái)從 π/2 中減去。因此,根據(jù)本發(fā)明提供了用于計(jì)算輸入的三角函數(shù)的電路。該電路包括用于將該輸入與另一個(gè)值關(guān)聯(lián)以生成中間值的電路;用于選擇該輸入值和該中間值中的一個(gè)作為三角輸入值的電路;用于確定用于該三角輸入值的多個(gè)三角函數(shù)各自的初始值的電路;以及用于至少部分地基于三角恒等式,從該多個(gè)三角函數(shù)各自的初始值得出第一三角函數(shù)的最終值的電路。還提供了用于將集成電路設(shè)備配置成該電路的對(duì)應(yīng)方法。此外,提供了利用指令來(lái)編碼的機(jī)器可讀數(shù)據(jù)存儲(chǔ)介質(zhì),用于執(zhí)行用于配置集成電路設(shè)備的方法。
在結(jié)合附圖來(lái)考慮以下詳細(xì)描述之后,本發(fā)明的其他特征、它的屬性和各種優(yōu)點(diǎn)將變得清楚,其中在附圖中相同的附圖標(biāo)記始終涉及相同的部件,其中圖I顯示了根據(jù)本發(fā)明用于計(jì)算正弦和/或余弦的CORDIC實(shí)現(xiàn)的第一實(shí)施方式;
圖2顯示了根據(jù)本發(fā)明用于計(jì)算正弦和/或余弦的CORDIC實(shí)現(xiàn)的第二實(shí)施方式;圖3顯示了根據(jù)本發(fā)明用于計(jì)算正弦和/或余弦的CORDIC實(shí)現(xiàn)的第三實(shí)施方式;圖4顯示了根據(jù)本發(fā)明用于計(jì)算正弦和/或余弦的CORDIC實(shí)現(xiàn)的第四實(shí)施方式;圖5顯示了根據(jù)本發(fā)明用于計(jì)算正切的實(shí)現(xiàn)的實(shí)施方式;圖6顯示了反正切函數(shù)的第一范圍;圖7顯示了反正切函數(shù)的第二范圍;圖8顯示了反正切函數(shù)的第三范圍; 圖9顯示了根據(jù)本發(fā)明用于計(jì)算反正切實(shí)現(xiàn)的實(shí)施方式;圖10顯示了根據(jù)本發(fā)明用于計(jì)算反正弦和/或反余弦的實(shí)現(xiàn)的實(shí)施方式的第一部分;圖11顯示了根據(jù)本發(fā)明用于計(jì)算反正弦和/或反余弦的實(shí)現(xiàn)的實(shí)施方式的第二部分;圖12是利用用于執(zhí)行根據(jù)本發(fā)明的方法的機(jī)器可讀指令集來(lái)編碼的磁數(shù)據(jù)存儲(chǔ)介質(zhì)的橫截面視圖;圖13是利用用于執(zhí)行根據(jù)本發(fā)明的方法的機(jī)器可讀指令集來(lái)編碼的光可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的橫截面視圖;以及圖14是使用并入本發(fā)明的可編程邏輯設(shè)備的示例性系統(tǒng)的簡(jiǎn)化框圖。
具體實(shí)施例方式如上文所討論的,在標(biāo)準(zhǔn)CORDIC實(shí)現(xiàn)中xn+1 = xn-dnyn2_nyn+1 = yn+dnxn2_nzn+1 = Zn-ClntarT1 (2_n)從該方程式可以看出,在第一等級(jí)處(對(duì)于η = O):X1 = x0-y0Y1 = y0+x0Z1 = Zc^tarf1(I)類(lèi)似地,在第二等級(jí)處(對(duì)于η = I):X2 = X1-Cl1 (jx/2)y2 = Y^d1 (x/2)z2 = Z1-C^tarf1 (0. 5)將理解,這對(duì)于另外的η繼續(xù)直到Zn收斂到O或者如具體實(shí)現(xiàn)中需要的接近O為止。但是,如上文所討論的,CORDIC實(shí)現(xiàn)的精確性隨著輸入角度變小而減小。在圖I中顯示了根據(jù)本發(fā)明的用于實(shí)現(xiàn)正弦或余弦的CORDIC的第一實(shí)施方式的邏輯結(jié)構(gòu)100??梢詫⒔Y(jié)構(gòu)100實(shí)現(xiàn)為電路。將結(jié)構(gòu)100建立在CORDIC引擎101周?chē)?,CORDIC引擎101可以是任意合適的CORDIC引擎,包括以參考的方式被整體并入本申請(qǐng)的、2010年3月12日遞交的、共同未決、共同擁有的美國(guó)專(zhuān)利申請(qǐng)?zhí)?2/722,683中所述的CORDIC引擎。CORDIC引擎101提供用于一般表示輸入的余弦的χ輸出111以及用于一般表不輸入的正弦的y輸出112。
輸入復(fù)用器102選擇輸入變量103或π /2與輸入變量103的差104中的任意一個(gè)。用于輸入復(fù)用器102的控制信號(hào)105是由用于指示輸入變量103(θ)是大于π/4還是小于η/4(或者可以選擇任意其他閾值)的比較106產(chǎn)生。因?yàn)檩斎胱兞?03被優(yōu)選表示成分?jǐn)?shù)(意味著被η /2乘),所以可以通過(guò)檢查輸入變量103的一個(gè)或多個(gè)最重要比特來(lái)簡(jiǎn)單地執(zhí)行該比較。可替換地,可以做出更復(fù)雜的比較。在任意情況中,取決于Θ是大于(或等于)還是小于π/4,傳遞到CORDIC引擎的值是Θ或π /2- Θ。用于確定到CORDIC引擎101的輸入的相同的控制信號(hào)105助于確定由輸出復(fù)用器107選擇輸出111、121中的哪一個(gè)。具體地,cos(0)-sin(3i/2-0)并且sin(0)-cos(ji /2- Θ )。可以提供用于表示希望的輸出是正弦還是余弦的附加輸入115,并且在125處將該輸入與輸出105組合以提供控制信號(hào)135,因而如果直接使用輸入變量103(θ)作為CORDIC輸入,則如果希望的函數(shù)是余弦則選擇輸出111并且如果希望的函數(shù)·是正弦則選擇輸出112。但是,如果使用差104 (JI/2-Θ)作為CORDIC輸入,則如果希望的函數(shù)是余弦則選擇輸出112并且如果希望的函數(shù)是正弦則選擇輸出111??梢允褂糜糜诩铀貱ORDIC計(jì)算的已知的技術(shù)。例如在正弦值的CORDIC計(jì)算的大約一半之后,可以通過(guò)將χ的當(dāng)時(shí)值乘以z的當(dāng)時(shí)值并且從y的當(dāng)時(shí)值減去該乘積來(lái)近似y的最終值。類(lèi)似地,對(duì)于余弦,可以通過(guò)將I的當(dāng)時(shí)值乘以z的當(dāng)時(shí)值并且將該乘積與χ的當(dāng)時(shí)值相加來(lái)近似χ的最終值。這可以被稱(chēng)為“終止C0RDIC”。圖2顯示了根據(jù)本發(fā)明的實(shí)施方式實(shí)現(xiàn)終止CORDIC的改進(jìn)CORDIC結(jié)構(gòu)200??梢詫⒔Y(jié)構(gòu)200實(shí)現(xiàn)為電路。結(jié)構(gòu)200的輸入級(jí)與結(jié)構(gòu)100的輸入級(jí)相同,包括輸入復(fù)用器102、輸入變量103、差104、比較電路106和控制信號(hào)105。CORDIC引擎201可以與CORDIC引擎101相同,其中除了輸出111、121之外z數(shù)據(jù)路徑被用作為輸出211。但是結(jié)構(gòu)200的輸出級(jí)與結(jié)構(gòu)100的輸出級(jí)不同。存在由信號(hào)135控制的第一輸出復(fù)用器206和由135的倒數(shù)控制的第二輸出復(fù)用器216以代替一個(gè)輸出復(fù)用器106。對(duì)于余弦,該配置直接向加法器/減法器208提供X,并且向乘法器207提供y和z,乘法器207向加法器/減法器208提供它的輸出。對(duì)于正弦,該配置直接向加法器/減法器208提供1,并且向乘法器207提供χ和z,乘法器207向加法器/減法器208提供它的輸出。在一些實(shí)施方式中,可以在可編程設(shè)備(如FPGA)中,要么在可編程邏輯中要么在可編程邏輯與固定邏輯(例如加法器和/或乘法器)的組合(如果提供)中實(shí)現(xiàn)結(jié)構(gòu)100或200。例如從San Jose, California(加利福尼亞圣荷塞)的Altera公司可獲得的FPGA的STRATIX 族中的FPGA包括具有乘法器、加法器和用于連接乘法器和加法器的可編程互連的數(shù)字信號(hào)處理塊。該FPGA可以被配置為使用加法器和/或乘法器以及可能需要的任意可編程邏輯來(lái)實(shí)現(xiàn)結(jié)構(gòu)100和200??梢詫⑤斎敕秶M(jìn)一步限制為π/8到π/4之間的更小的范圍,其與/4到/2之間的范圍相比提供更準(zhǔn)確的CORDIC結(jié)果。根據(jù)可以使用圖3中顯示的可以被實(shí)現(xiàn)為電路的結(jié)構(gòu)300來(lái)執(zhí)行的該實(shí)施方式,當(dāng)輸入在O到/8之間時(shí),從/4減去該輸入,創(chuàng)建π/8到/4之間的新值。當(dāng)輸入在3 /8到/2之間時(shí),從輸入減去/4,創(chuàng)建π/8到
/4之間的新值。如果輸入在/8到3 /8之間則輸入可以無(wú)改變地通過(guò)。如圖3中所示,輸入復(fù)用器302選擇輸入303或π/4與輸入303的差304或輸入303與π/4之間的差314的中任意一個(gè)。在可以與CORDIC引擎101實(shí)質(zhì)上相同的CORDIC引擎301中使用所選擇的輸入。對(duì)于使用差304的情況,由輸出級(jí)320根據(jù)以下恒等式處理CORDIC引擎301的輸出sin(A-B) = sin (A) cos (B) -sin (B) COS (A)cos (A-B) = cos (A) cos (B) +sin (A) sin (B)如果A= /4 并且 B= Ji /4- θ,則 Α_Β = Ji /4-( π /4- θ ) = θ。并且SIN (3 /4) =COS (3 /4) = 2_0.5。然后接下來(lái) SIN( θ ) = SIN(A-B)= SIN (Π/4) COS (Π/4- θ ) -SIN (Π/4- θ ) COS (Π/4)= 2-0.5 (C0S (Π /4- θ ) -SIN (Π /4- θ )).類(lèi)似地C0S( θ ) = COS (Α+Β)= COS (Π/4) COS (Π/4- θ ) +SIN(Π/4- θ ) SIN(Π/4)= 2-0.5 (C0S (Π/4- θ ) +SIN (Π/4- θ ))。對(duì)于使用差314的情況,由輸出級(jí)320根據(jù)以下恒等式處理CORDIC引擎301的輸出sin (A+B) = sin (A) cos (B) +sin (B) COS (A)cos (A+B) = cos (A) cos (B)—sin (A) sin (B)如果A= π/4 并且 B= Θ -Ji/4,則 A+B= Ji/4+( θ - ji /4) = θ。同樣,SIN( π/4)=COS (31 /4) = 2_0.5。然后接下來(lái)SIN( Θ ) = SIN (A+B)= SIN(n/4)C0S( θ -Π/4) +SIN( θ -Π/4)COS(Π/4)= 2-0·5(COS( θ -n/4)+SIN( θ -Π/4)).類(lèi)似地COS ( θ ) = COS (A+B)= COS (Π/4) COS ( θ -Π/4)-SIN ( θ - Π/4) SIN (Π/4)= 2-0·5(COS( θ -Π/4)-SIN( θ -Π/4)).這在輸出級(jí)302中通過(guò)加法器/加法器321并且通過(guò)乘法器322實(shí)現(xiàn),加法器/加法器321將y (SIN)數(shù)據(jù)路徑與x (COS)數(shù)據(jù)路徑相加或者從x (COS)數(shù)據(jù)路徑減去y (SIN)數(shù)據(jù)路徑,乘法器322將該差乘以2_°_5(如圖3中SIN( π /4)所示)。輸出級(jí)320還可以包括用于對(duì)于輸入303在π /8到3 π /8之間并且無(wú)改變地通過(guò)輸入復(fù)用器302的情況實(shí)現(xiàn)正確的數(shù)據(jù)路徑(SIN或C0S,取決于希望的函數(shù))的導(dǎo)通的復(fù)用電路323(與圖2中的復(fù)用器206、216的組合類(lèi)似)。因此,與圖I的實(shí)施方式100相比,僅需要一個(gè)附加減法器和一個(gè)附加常數(shù)乘法來(lái)增加精確性。可替換地,如果輸入在π /4到3 π /8之間的,則其還落入圖I的是實(shí)施方式100中,并且可以通過(guò)從π/2減去輸入來(lái)在π/4周?chē)从吃撦斎?,切換SIN和COS結(jié)果以得到希望的輸出。在可以使用小的輸入范圍來(lái)改進(jìn)收斂速度的情況中,這還可用于實(shí)現(xiàn)其他類(lèi)型的算法以計(jì)算SIN和COS值,與圖2的實(shí)施方式200類(lèi)似的“終止C0RDIC”實(shí)現(xiàn)可以與圖3的實(shí)施方式300 —
起使用。在圖4中顯示了該實(shí)現(xiàn)400。在信號(hào)105選擇直接輸入408的情況中,隨后如在實(shí)施方式200中,在411、412處僅將SIN/C0S數(shù)據(jù)路徑401、402中的一個(gè)乘以z數(shù)據(jù)路徑403,并且隨后在421處與SIN/COS數(shù)據(jù)路徑401、402中的另一個(gè)相加或從SIN/C0S數(shù)據(jù)路徑401、402中的另一個(gè)中減去,并且在422處將結(jié)果乘以2_°_5。由邏輯425輸出的信號(hào)435確定將數(shù)據(jù)路徑401還是數(shù)據(jù)路徑402乘以數(shù)據(jù)路徑403,其中邏輯425基于比較信號(hào)105和用于指示希望正弦還是余弦的信號(hào)115導(dǎo)致復(fù)用器413、423中的一個(gè)復(fù)用器選擇數(shù)據(jù)路徑403用于到乘法器411、412中各自的乘法器的輸入,并且復(fù)用器413、423中的另一個(gè)復(fù)用器選擇值“ I”用于到乘數(shù) 411、412中其他各自的乘法器的輸入。在該情況中,信號(hào)(或多個(gè)信號(hào))435還確定加法器/減法器421相加還是相減,并且導(dǎo)致復(fù)用器433選擇值“O”用于在453處對(duì)和/差421的加法。然后在422處將和乘以sin( π /4)(即2_°_5)。在信號(hào)105選擇差輸入404( π/4-Θ )的情況中,因?yàn)檩斎?08小于π/8,所以根據(jù)是希望正弦還是余弦,將應(yīng)用如上文所討論的以下關(guān)系SIN ( Θ ) = 2-0.5 (COS (Π/4- Θ ) -SIN (Π/4- Θ ))COS ( Θ ) = 2-0.5 (COS (Π/4- θ ) +SIN (Π/4- θ ))類(lèi)似地,在信號(hào)105選擇差輸入444( θ - ji/4)的情況中,因?yàn)檩斎?08大于
3π /8,所以根據(jù)是希望正弦還是余弦,將應(yīng)用如上文所討論的以下關(guān)系SIN( Θ ) = 2-0·5(COS( θ -Π/4)+SIN( θ -Π/4))COS( θ ) = 2-0·5(COS( θ -Π/4)-SIN( θ -Π/4))在終止CORDIC實(shí)現(xiàn)中,COS ( · ) = x+yzSIN ( · ) = y-xz因此,在信號(hào)105選擇差輸入404 (π/4-Θ)的終止CORDIC情況中,SIN ( Θ ) = 2_α 5 (x+yz_ (y-xz))= 2-0'5 (χ-y+(yz+xz))COS ( Θ ) = 2-0'5 (x+yz+(y-χζ))= 2_0'5(x+y+(yz-xz))類(lèi)似地,在信號(hào)105選擇差輸入,444( Θ-ji/4)的終止CORDIC情況中,SIN ( Θ ) = 2-0'5 (x+yz+(y-xz))= 2_α 5 (x+y+(yz-xz))COS ( Θ ) = 2-0'5 (x+yz-(y-χζ))= 2-0'5 (χ-y+(yz+xz))對(duì)于這些實(shí)現(xiàn),信號(hào)(或多個(gè)信號(hào))435將導(dǎo)致復(fù)用器413、423都選擇數(shù)據(jù)路徑403用于到乘法器411、412的輸入。信號(hào)(或多個(gè)信號(hào))435還將分別確定加法器/減法器421和431相加還是相減,并且將導(dǎo)致復(fù)用器443選擇和/差431用于在453處對(duì)和/差421的加法。然后在422處將和乘以sin ( π /4)(即2<_5)。
當(dāng)在前述STRATIX FPGA的一個(gè)中實(shí)現(xiàn)實(shí)施方式400時(shí),可以在410處使用具有乘法器和加法器的前述數(shù)字信號(hào)處理塊的其中一個(gè)來(lái)提供乘法器404、405和加法器/減法器406。該FPGA的數(shù)字信號(hào)處理塊例如良好地適用于執(zhí)行為此目的可以使用的兩個(gè)36比特乘以18比特的乘法。在通過(guò)參考的方式并入本文的、由Altera公司發(fā)布的StratixIII設(shè)備手冊(cè)第一卷(2010年3月第二版)中第5-21頁(yè)描述了一個(gè)這樣的實(shí)現(xiàn)??梢允褂闷渌诤愕仁降姆椒▉?lái)簡(jiǎn)化其他三角函數(shù)的計(jì)算。例如對(duì)于tan( Θ ),歸一化的或范圍減小的輸入是-ji/2彡Θ ( π/2,而輸出在
負(fù)無(wú)窮大到正無(wú)窮大之間。對(duì)于正切函數(shù),以下恒等式為真
權(quán)利要求
1.一種用于計(jì)算輸入的第一三角函數(shù)的電路,所述電路包括 用于將所述輸入與另一個(gè)值關(guān)聯(lián)以生成中間值的電路; 用于選擇所述輸入和所述中間值中的一個(gè)作為三角輸入值的電路; 用于確定用于所述三角輸入值的多個(gè)三角函數(shù)各自的初始值的電路;以及用于至少部分地基于三角恒等式,從所述多個(gè)三角函數(shù)各自的初始值得出所述第一三角函數(shù)的最終值的電路。
2.根據(jù)權(quán)利要求I所述的電路,其中 所述用于確定多個(gè)三角函數(shù)各自的初始值的電路確定正弦值和余弦值;并且所述用于得出最終值的電路當(dāng)所述輸入處于第一范圍中時(shí)選擇所述多個(gè)三角函數(shù)中的一個(gè)三角函數(shù)的所述初始值,并且當(dāng)所述輸入處于第二范圍中時(shí)選擇所述多個(gè)三角函數(shù)中的另一個(gè)三角函數(shù)的所述初始值。
3.根據(jù)權(quán)利要求2所述的電路,其中,所述用于確定的電路包括CORDIC電路。
4.根據(jù)權(quán)利要求2所述的電路,其中 所述另一個(gè)值是η/2; 所述用于關(guān)聯(lián)的電路從η /2減去所述輸入以生成所述中間值; 所述第一范圍包括最大等于η /4的值;并且 所述第二范圍包括最小等于η /4的值。
5.根據(jù)權(quán)利要求2所述的電路,其中 所述另一值是η/4; 所述中間值包括第一中間值和第二中間值; 所述用于關(guān)聯(lián)的電路從η/4減去所述輸入以生成所述第一中間值,并且從所述輸入減去η /4以生成所述第二中間值; 所述第一范圍包括最大等于η /8的值; 所述第二范圍包括最小等于3 π /8和最大等于π /2的值;并且所述用于得出最終值的電路選擇性地組合所述第一中間值和所述第二中間值的正弦和余弦。
6.根據(jù)權(quán)利要求I所述的電路,其中 所述用于確定多個(gè)三角函數(shù)各自的初始值的電路確定正弦值和余弦值;并且所述用于得出最終值的電路當(dāng)所述輸入處于第一范圍中時(shí)以第一組合方式組合所述多個(gè)三角函數(shù)中的每個(gè)三角函數(shù)的所述初始值,并且當(dāng)所述輸入處于第二范圍中時(shí)以第二組合方式組合所述多個(gè)三角函數(shù)中的每個(gè)三角函數(shù)的所述初始值。
7.根據(jù)權(quán)利要求6所述的電路,其中,所述第一組合方式和所述第二組合方式從由以下各項(xiàng)構(gòu)成的組中選擇和、差、乘積、乘積之和、乘積之差以及它們的組合。
8.根據(jù)權(quán)利要求7所述的電路,其中 所述用于得出的電路被配置在可編程集成電路設(shè)備的專(zhuān)用處理塊中;并且 所述專(zhuān)用處理塊包括多個(gè)乘法器和至少一個(gè)加法器。
9.一種用于將可編程集成電路設(shè)備配置成為用于計(jì)算輸入的第一三角函數(shù)的電路的方法,所述方法包括 將所述可編程集成電路設(shè)備的邏輯配置成為用于將所述輸入與另一值關(guān)聯(lián)以生成中間值的電路; 將所述可編程集成電路設(shè)備的邏輯配置成為用于選擇所述輸入和所述中間值中的一個(gè)作為三角輸入值的電路; 將所述可編程集成電路設(shè)備的邏輯配置成為用于確定用于所述三角輸入值的多個(gè)三角函數(shù)各自的初始值的電路;以及 將所述可編程集成電路設(shè)備的邏輯配置成為用于至少部分地基于三角恒等式,從所述多個(gè)三角函數(shù)各自的初始值得出所述第一三角函數(shù)的最終值的電路。
10.根據(jù)權(quán)利要求9所述的方法,其中 將所述可編程集成電路設(shè)備的邏輯配置成為用于確定多個(gè)三角函數(shù)各自的初始值的電路包括配置所述可編程集成電路設(shè)備的邏輯以確定正弦值和余弦值;以及 所述將所述可編程集成電路設(shè)備的邏輯配置成為用于至少部分地基于三角恒等式,從所述多個(gè)三角函數(shù)的所述各自的初始值得出所述第一三角函數(shù)的最終值的電路包括配置所述可編程集成電路設(shè)備的邏輯以當(dāng)所述輸入處于第一范圍中時(shí),選擇所述多個(gè)三角函數(shù)中的一個(gè)三角函數(shù)的所述初始值,并且當(dāng)所述輸入處于第二范圍中時(shí),選擇所述多個(gè)三角函數(shù)中的另一個(gè)三角函數(shù)的所述初始值。
11.根據(jù)權(quán)利要求10所述的方法,其中,所述將所述可編程集成電路設(shè)備的邏輯配置成為用于確定的電路包括將所述可編程集成電路設(shè)備的邏輯配置成為CORDIC電路。
12.根據(jù)權(quán)利要求10所述的方法,其中 所述另一值是η/2; 所述將所述可編程集成電路設(shè)備的邏輯配置成為用于關(guān)聯(lián)的電路包括配置所述可編程集成電路設(shè)備的邏輯以從η /2減去所述輸入以生成所述中間值; 所述第一范圍包括最大等于η /4的值;并且 所述第二范圍包括最小等于η /4的值。
13.根據(jù)權(quán)利要求10所述的方法,其中 所述另一值是η/4; 所述中間值包括第一中間值和第二中間值; 所述將所述可編程集成電路設(shè)備的邏輯配置成為用于關(guān)聯(lián)的電路包括配置所述可編程集成電路設(shè)備的邏輯以從η/4減去所述輸入以生成所述第一中間值,并且從所述輸入減去η /4以生成所述第二中間值; 所述第一范圍包括最大等于η /8的值; 所述第二范圍包括最小等于3 π /8和最大等于π /2的值;并且所述將所述可編程集成電路設(shè)備的邏輯配置成為用于得出最終值的電路包括配置所述可編程集成電路設(shè)備的邏輯以選擇性地組合所述第一中間值和所述第二中間值的正弦和余弦。
14.根據(jù)權(quán)利要求9所述的方法,其中 所述將可編程集成電路設(shè)備的邏輯配置成為用于確定多個(gè)三角函數(shù)各自的初始值的所述電路包括將所述可編程集成電路設(shè)備的邏輯配置成為用于確定正弦值和余弦值的電路;并且 所述將所述可編程集成電路設(shè)備的邏輯配置成為用于得出最終值的電路包括將所述可編程集成電路設(shè)備的邏輯配置成為用于當(dāng)所述輸入處于第一范圍中時(shí),以第一組合方式組合所述多個(gè)三角函數(shù)中的每個(gè)三角函數(shù)的所述初始值,并且當(dāng)所述輸入處于第二范圍中時(shí),以第二組合方式組合所述多個(gè)三角函數(shù)中的每個(gè)三角函數(shù)的所述初始值的電路。
15.根據(jù)權(quán)利要求14所述的方法,其中,所述第一組合方式和所述第二組合方式從由以下各項(xiàng)構(gòu)成的組中選擇和、差、乘積、乘積之和、乘積之差以及它們的組合。
16.根據(jù)權(quán)利要求15所述的方法,其中 所述將所述可編程集成電路設(shè)備的邏輯配置成為用于得出的電路包括在可編程集成電路設(shè)備的專(zhuān)用處理塊中配置所述用于得出的電路,所述專(zhuān)用處理塊包括多個(gè)乘法器和至少一個(gè)加法器。
17.一種利用非瞬態(tài)機(jī)器可執(zhí)行指令編碼的機(jī)器可讀數(shù)據(jù)存儲(chǔ)介質(zhì),所述非瞬態(tài)機(jī)器可執(zhí)行指令用于將可編程集成電路設(shè)備配置成為用于計(jì)算輸入的三角函數(shù)的電路,所述指令包括 用于將所述可編程集成電路設(shè)備的邏輯配置成為用于將所述輸入與另一個(gè)值關(guān)聯(lián)以生成中間值的電路的指令; 用于將所述可編程集成電路設(shè)備的邏輯配置成為用于選擇所述輸入和所述中間值中的一個(gè)作為三角輸入值的電路的指令; 用于將所述可編程集成電路設(shè)備的邏輯配置成為用于確定用于所述三角輸入值的多個(gè)三角函數(shù)各自的初始值的電路的指令;以及 用于將所述可編程集成電路設(shè)備的邏輯配置成為用于至少部分地基于三角恒等式,從所述多個(gè)三角函數(shù)各自的初始值得出所述第一三角函數(shù)的最終值的電路的指令。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于確定多個(gè)三角函數(shù)各自的初始值的電路的指令包括所述用于配置所述可編程集成電路設(shè)備的邏輯以確定正弦值和余弦值的指令;以及 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于至少部分地基于三角恒等式,從所述多個(gè)三角函數(shù)的所述各自的初始值得出所述第一三角函數(shù)的最終值的電路的指令包括所述用于配置所述可編程集成電路設(shè)備的邏輯以當(dāng)所述輸入處于第一范圍中時(shí),選擇所述多個(gè)三角函數(shù)中的一個(gè)三角函數(shù)的所述初始值,并且當(dāng)所述輸入處于第二范圍中時(shí),選擇所述多個(gè)三角函數(shù)中的另一個(gè)三角函數(shù)的所述初始值的指令。
19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中,所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于確定的電路的指令包括用于將所述可編程集成電路設(shè)備的邏輯配置成為CORDIC電路的指令。
20.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中 所述另一值是η/2; 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于關(guān)聯(lián)的電路的指令包括用于配置所述可編程集成電路設(shè)備的邏輯以從η/2減去所述輸入以生成所述中間值的指令; 所述第一范圍包括最大等于η /4的值;并且 所述第二范圍包括最小等于η /4的值。
21.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中 所述另一值是η/4; 所述中間值包括第一中間值和第二中間值; 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于關(guān)聯(lián)的電路的指令包括用于配置所述可編程集成電路設(shè)備的邏輯以從η/4減去所述輸入以生成所述第一中間值,并且從所述輸入減去η/4以生成所述第二中間值的指令; 所述第一范圍包括最大等于η /8的值; 所述第二范圍包括最小等于3 π /8和最大等于π /2的值;并且 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于得出最終值的電路的指令包括用于配置所述可編程集成電路設(shè)備的邏輯以選擇性地組合所述第一中間值和所述第二中間值的正弦和余弦的指令。
22.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于確定多個(gè)三角函數(shù)各自的初始值的所述電路的指令包括用于將所述可編程集成電路設(shè)備的邏輯配置成為用于確定正弦值和余弦值的電路的指令;并且 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于得出最終值的電路的指令包括用于將所述可編程集成電路設(shè)備的邏輯配置成為用于當(dāng)所述輸入處于第一范圍中時(shí),以第一組合方式組合所述多個(gè)三角函數(shù)中的每個(gè)三角函數(shù)的所述初始值,并且當(dāng)所述輸入處于第二范圍中時(shí),以第二組合方式組合所述多個(gè)三角函數(shù)中的每個(gè)三角函數(shù)的所述初始值的電路的指令。
23.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中,所述第一組合方式和所述第二組合方式從由以下各項(xiàng)構(gòu)成的組中選擇和、差、乘積、乘積之和、乘積之差以及它們的組合。
24.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),其中 所述用于將所述可編程集成電路設(shè)備的邏輯配置成為用于得出的電路的指令包括用于在可編程集成電路設(shè)備的專(zhuān)用處理塊中配置所述用于得出的電路的指令,所述專(zhuān)用處理塊包括多個(gè)乘法器和至少一個(gè)加法器。
全文摘要
一種用于計(jì)算輸入的三角函數(shù)的電路,其包括用于將輸入與另一個(gè)值關(guān)聯(lián)以生成中間值的電路;用于選擇該輸入和該中間值中的一個(gè)作為三角輸入值的電路;用于確定用于該三角輸入值的多個(gè)三角函數(shù)各自的初始值的電路;以及用于至少部分地基于三角恒等式,從該多個(gè)三角函數(shù)各自的初始值得出第一三角函數(shù)的最終值的電路。該三角函數(shù)可以是任何正弦、余弦和正切和它們的反函數(shù)。所使用的三角恒等式允許將三角函數(shù)的計(jì)算分解成更易于執(zhí)行或者能夠被更準(zhǔn)確地執(zhí)行的片。
文檔編號(hào)G06F7/548GK102959503SQ201180031374
公開(kāi)日2013年3月6日 申請(qǐng)日期2011年6月21日 優(yōu)先權(quán)日2010年6月25日
發(fā)明者M·蘭厄姆默 申請(qǐng)人:阿爾特拉公司