,,
(中船重工716研究所,江蘇 連云港 222006)
在計(jì)算機(jī)中實(shí)現(xiàn)三角函數(shù)的硬件解算方法
袁岐川,龍瑋潔,李建峰
(中船重工716研究所,江蘇連云港222006)
針對(duì)目標(biāo)跟蹤中大量存在的三角函數(shù)運(yùn)算,提出在火控計(jì)算機(jī)中建立三角函數(shù)解算單元,采用硬件實(shí)現(xiàn)三角函數(shù)解算的設(shè)想;而三角函數(shù)解算單元是一種可以完成正弦函數(shù)解算功能的函數(shù)芯片;它的設(shè)計(jì)核心是以角度值為地址,通過(guò)硬件查表計(jì)算,可對(duì)0到90度的正弦函數(shù)值進(jìn)行查表;查表精度可設(shè)計(jì)到0.001°,最大查表時(shí)間即為函數(shù)值的解算時(shí)間;余弦查表計(jì)算是采用正弦同一芯片,可以根據(jù)相位差90度的關(guān)系進(jìn)行查表;實(shí)踐表明三角函數(shù)的硬件解算速度快,精度高,可以替代通常方法的函數(shù)解算;因此,如果在火控系統(tǒng)中,設(shè)計(jì)一個(gè)地址譯碼器電路,就可建立多個(gè)三角函數(shù)芯片解算單元,通過(guò)計(jì)算機(jī)數(shù)據(jù)指令,實(shí)現(xiàn)對(duì)多個(gè)三角函數(shù)值的并行計(jì)算,從而提高系統(tǒng)對(duì)多個(gè)目標(biāo)的快速跟蹤處理能力。
三角函數(shù); 正弦算法; 芯片設(shè)計(jì); 火控計(jì)算機(jī)
火控計(jì)算機(jī)中如何加快三角函數(shù)的解算是跟蹤處理大批目標(biāo)的關(guān)鍵,建立三角函數(shù)解算單元,是實(shí)現(xiàn)三角函數(shù)硬件解算的最簡(jiǎn)單方法,它不同于火控計(jì)算機(jī)中為解決三角函數(shù)運(yùn)算所采用的以DSP芯片為主的函數(shù)處理系統(tǒng),這里所說(shuō)的三角函數(shù)解算單元是一個(gè)具有獨(dú)立功能的芯片,使用時(shí)只要給出函數(shù)值的地址,計(jì)算機(jī)無(wú)需參與函數(shù)的解算過(guò)程,芯片就能獨(dú)立完成函數(shù)的解算任務(wù),這是其它方法處理函數(shù)無(wú)法比的。創(chuàng)建硬件解算三角函數(shù)的思想,源自采用軟件查表計(jì)算正弦sin(ωτ)和余弦cos(ωτ)函數(shù)的方法,它能顯著提高三角函數(shù)的解算過(guò)程。在軟件查表過(guò)程中,把函數(shù)值由小到大按順序排列,根據(jù)函數(shù)值設(shè)計(jì)相應(yīng)的地址,當(dāng)計(jì)算某一函數(shù)值時(shí),只要計(jì)算出函數(shù)值的地址就可獲得其函數(shù)值,這是軟件查表解算三角函數(shù)的方法。如果將軟件查表實(shí)現(xiàn)三角函數(shù)的解算變?yōu)橛布楸韺?shí)現(xiàn),無(wú)疑將極大提高三角函數(shù)的解算速度,這就需要建立獨(dú)立的三角函數(shù)解算芯片,幸運(yùn)的是我們?cè)诠ぷ髦袑?duì)三角函數(shù)解算的硬件實(shí)現(xiàn),找到了簡(jiǎn)單實(shí)現(xiàn)的方法。
關(guān)于三角函數(shù)的硬件解算有沒(méi)有現(xiàn)成的芯片,在學(xué)術(shù)層面上還沒(méi)有見(jiàn)到報(bào)道,國(guó)外有可能限于軍事性質(zhì)已有,但不便公開(kāi)。因此,我們研究三角函數(shù)硬件解算意義重大,越快越好。
我們知道在火控系統(tǒng)跟蹤中,每一個(gè)跟蹤目標(biāo)都有大量的正弦、余弦函數(shù)運(yùn)算,而函數(shù)運(yùn)算在計(jì)算機(jī)中是采用泰勒級(jí)數(shù)方法求取的,極其費(fèi)時(shí),將函數(shù)的軟件查表法通過(guò)硬件查表實(shí)現(xiàn),從而取代目標(biāo)運(yùn)動(dòng)參數(shù)中函數(shù)的解算,這是我們的目的。
要求三角函數(shù)解算單元芯片,只需給出函數(shù)值的地址,芯片就能自動(dòng)獲取該角度的函數(shù)值來(lái)。芯片完成操作,只用兩條指令,寫(xiě)指令負(fù)責(zé)將角度值送到芯片端口去,然后芯片進(jìn)行函數(shù)值的查表計(jì)算,再由讀指令負(fù)責(zé)將轉(zhuǎn)換完的函數(shù)值讀取到計(jì)算機(jī)的累加器A中。函數(shù)的地址,由計(jì)算機(jī)根據(jù)所求角度計(jì)算??蓪?duì)0到90度的自由變量進(jìn)行正弦函數(shù)求解,查表精度為0.001°。如果精度要求高,也可設(shè)置的再高一些。
具有三角函數(shù)解算的芯片由EPROM和地址譯碼器組成,EPROM可寫(xiě)入0°到90°的正弦數(shù)據(jù)表,地址譯碼器負(fù)責(zé)函數(shù)值地址單元的選擇。正弦數(shù)據(jù)表是利用計(jì)算機(jī)程序求出0到90度,步進(jìn)間隔0.001°的90 000個(gè)正弦函數(shù)值,再將每一步的函數(shù)值乘以2的16次方(字長(zhǎng)16位)所獲得的二進(jìn)制數(shù),按順序由小到大排列成的數(shù)據(jù)表。函數(shù)值在EPROM中的地址是以角度值乘以1 000而設(shè)計(jì)的,因此,每0.001°存放一個(gè)單元(字長(zhǎng)為十六位),一個(gè)單元只存放一個(gè)二進(jìn)制表示的函數(shù)值。這樣0度到90度共占90 000個(gè)單元。所以,0度的函數(shù)值0000H在地址0H, 90度的函數(shù)值FFFFH的地址在90000,化為十六進(jìn)制15F90H。見(jiàn)表1。
表1 EPROM中數(shù)據(jù)排放
芯片中的EPROM設(shè)計(jì),如圖1所示,存儲(chǔ)器芯片內(nèi)部有128 K個(gè)16位的存儲(chǔ)單元,即存儲(chǔ)容量為128 K×16位,有17根地址線,16根數(shù)據(jù)線,讀/寫(xiě)控制線,片選線等。
圖1 正弦函數(shù)芯片
每一個(gè)存儲(chǔ)器芯片內(nèi)部的存儲(chǔ)單元都有2個(gè)地址,一個(gè)是芯片內(nèi)部地址,一個(gè)是系統(tǒng)地址。內(nèi)部地址是與外部連線無(wú)關(guān)的,每一個(gè)芯片內(nèi)部地址范圍都是從0000H~20000H。而系統(tǒng)地址取決于外部連線芯片中的譯碼器設(shè)計(jì)用17位地址線通過(guò)內(nèi)部譯碼器選擇存儲(chǔ)單元。地址范圍在00000H~20000H,實(shí)際使用范圍是0000H~15F90H。
將所求的正弦函數(shù)的自變量乘以1 000,就是該函數(shù)自變量的函數(shù)值的地址,由于每個(gè)函數(shù)值占一個(gè)單元,字長(zhǎng)十六位,芯片的地址范圍00000~15F90。
例如求取30°的函數(shù)值,先計(jì)算自變量30°的地址,方法是:把30乘以1 000,等于30 000,化為十六進(jìn)制:7530H,即自變量30度的EPROMDE 的地址。通過(guò)寫(xiě)指令將地址7530H送到芯片端口,芯片就可根據(jù)地址獲取7530H中的內(nèi)容:8000H,即30°的函數(shù)值。然后,再由讀指令讀取芯片中的函數(shù)值到累加器A中。
為了驗(yàn)證三角函數(shù)單元芯片中數(shù)據(jù)的正確性,我們將芯片中的數(shù)據(jù)讀出,以正弦曲線表示。為此,我們從芯片中取數(shù)據(jù),設(shè)計(jì)正弦周期長(zhǎng)20秒,每間隔2.5毫秒取一個(gè)點(diǎn),共取8 000個(gè)點(diǎn),繪制一條正弦曲線圖。由圖的運(yùn)動(dòng)軌跡看以芯片中的數(shù)據(jù)做出的曲線符合正弦規(guī)律,數(shù)據(jù)在4個(gè)象限的曲線非常平滑,表明EPROM中的數(shù)據(jù)是正確的,正弦查表計(jì)算是可行的。這里給出的正弦曲線只是設(shè)計(jì)的一種情況,其它情況也可得到驗(yàn)證。需要說(shuō)明的是,正弦芯片中數(shù)據(jù)的逐點(diǎn)驗(yàn)證,需要圖形較大不便在論文中表示。
圖2 根據(jù)正弦芯片中的數(shù)據(jù)所作的正弦曲線
快速算法(軟件查表法)在搖擺信號(hào)發(fā)生器中得到應(yīng)用,對(duì)于三角函數(shù)的正弦芯片設(shè)計(jì),人們想知道它的速度如何,為此,我們通過(guò)計(jì)算機(jī)編程實(shí)驗(yàn),列出常用的正弦函數(shù)調(diào)用法與快速算法和硬件查表法三著差異。表格中的數(shù)據(jù),說(shuō)明它們之間的速度關(guān)系:
這是在不限定機(jī)型條件下的獲取的數(shù)據(jù)??梢哉f(shuō)明,無(wú)論什么條件下,硬件查表速度最快。
表3 3種算法比較
有關(guān)正弦函數(shù)芯片的設(shè)計(jì),完全可以依據(jù)函數(shù)的快速算法來(lái)實(shí)現(xiàn)。我們把單片機(jī)的功能劃分為相位累加器,相位寄存器,加法器,地址寄存器、比較器、控制器等幾個(gè)部分,加上存儲(chǔ)器,相關(guān)的集成電路制造商即可根據(jù)功能進(jìn)行設(shè)計(jì)和制造。有了這樣功能的芯片,函數(shù)解算時(shí),計(jì)算機(jī)只需給芯片一個(gè)輸入值,芯片就可以在十幾個(gè)納秒內(nèi),給出函數(shù)值。如果把這個(gè)函數(shù)芯片,應(yīng)用到火控計(jì)算機(jī)中的公式解算,那么,公式中頻繁的正弦余弦函數(shù)運(yùn)算被函數(shù)芯片取代,計(jì)算機(jī)就會(huì)節(jié)省到大量的時(shí)間,火控計(jì)算機(jī)就有充分的時(shí)間對(duì)幾百個(gè)運(yùn)動(dòng)目標(biāo)實(shí)現(xiàn)跟蹤和解算。
有了三角函數(shù)的快速解算方法,火控系統(tǒng)中關(guān)于函數(shù)的運(yùn)算就應(yīng)重新設(shè)計(jì)。把大量的sin(β),cos(ε)正弦、余弦函數(shù)運(yùn)算從計(jì)算機(jī)中分離出來(lái),建立以正弦三角函數(shù)單元為計(jì)算單元的函數(shù)處理系統(tǒng)。這里,余弦的算法,無(wú)需另外設(shè)計(jì),由于它們相位相差是90度,正弦數(shù)據(jù)表的反向就是是余弦,即余弦的0°值是正弦的90°值,正弦余弦可以合用一種芯片,取值方法是:一個(gè)由0到90°,而另一個(gè)則由90到0°。
怎樣重建,應(yīng)該根據(jù)跟蹤系統(tǒng)的要求,在系統(tǒng)中設(shè)計(jì)合理的三角函數(shù)解算單元陣列。
目前,發(fā)達(dá)國(guó)家的火控處理系統(tǒng)可以同時(shí)跟蹤處理400多個(gè)目標(biāo),我們應(yīng)該以這個(gè)為目標(biāo)設(shè)計(jì)我們的目標(biāo)跟蹤處理系統(tǒng)。從目標(biāo)跟蹤處理的過(guò)程看,火控計(jì)算機(jī)的任務(wù)大致歸結(jié)為四點(diǎn):確定目標(biāo)現(xiàn)在點(diǎn),求取目標(biāo)運(yùn)動(dòng)參數(shù),計(jì)算目標(biāo)提前點(diǎn)坐標(biāo)(解命中),求取射擊諸元。 見(jiàn)公式(1),(2),(3),(4),這些運(yùn)算包含了大量的正弦和余弦函數(shù)的運(yùn)算。
(1)
目標(biāo)運(yùn)動(dòng)參數(shù)公式:
(2)
相對(duì)運(yùn)動(dòng)情況下求取目標(biāo)運(yùn)動(dòng)參數(shù)公式。
計(jì)算提前點(diǎn)坐標(biāo):
(3)
加了各種修正量后目標(biāo)運(yùn)動(dòng)參數(shù)求解。
其中:
(4)
從目標(biāo)計(jì)算的公式可見(jiàn),正弦、余弦函數(shù)參與的運(yùn)算很多,這里如果采用三角函數(shù)單元解算,通過(guò)硬件實(shí)現(xiàn)三角函數(shù)就可以加快函數(shù)的計(jì)算過(guò)程。我們可以根據(jù)系統(tǒng)的技術(shù)指標(biāo),建立多個(gè)三角函數(shù)解算單元,每一個(gè)單元負(fù)責(zé)一個(gè)正弦或余弦三角函數(shù)的解算,在計(jì)算機(jī)系統(tǒng)中建立8或16個(gè)三角函數(shù)解算單元,就可實(shí)現(xiàn)多個(gè)目標(biāo)跟蹤的快速處理。
為了加快三角函數(shù)的解算,在系統(tǒng)中設(shè)計(jì)8到16個(gè)三角函數(shù)單元進(jìn)行正弦、余弦函數(shù)的解算,為此,在系統(tǒng)中設(shè)計(jì)一個(gè)譯碼器電路,用于計(jì)算機(jī)指定某一個(gè)三角函數(shù)單元(正弦芯片單元)進(jìn)行三角函數(shù)計(jì)算,見(jiàn)圖3 ,三角函數(shù)解算單元的選擇電路圖。
圖3 譯碼器選擇其中一個(gè)三角函數(shù)單元的線路
有了多個(gè)三角函數(shù)解算單元,它們就可以同時(shí)進(jìn)行多個(gè)正弦函數(shù)的解算,實(shí)現(xiàn)對(duì)多個(gè)目標(biāo)的跟蹤。
在系統(tǒng)中增加三角函數(shù)單元解算正弦和余弦函數(shù),不會(huì)產(chǎn)生其它影響,因?yàn)楹瘮?shù)解算單元是獨(dú)立的芯片,它通過(guò)譯碼器電路進(jìn)行選擇,地址設(shè)計(jì)選擇計(jì)算機(jī)中可用字段,陣列中的芯片被選中后,獨(dú)立工作,互不影響,計(jì)算機(jī)與正弦芯片是并行工作狀態(tài)。
如果火控系統(tǒng)進(jìn)行目標(biāo)跟蹤,假定現(xiàn)在火控系統(tǒng)進(jìn)行速度分量的解算,見(jiàn)計(jì)算公式(5):
ωβDsinε·sinβ+ωβDcosε·cosβ
ωβDsinε·cosβ-ωβDcosε·sinβ
(5)
我們可以根據(jù)公式(5),將需計(jì)算的sin(ε),sin(β),cos(β)和cos(ε)4個(gè)函數(shù)值,分別指定4個(gè)三角函數(shù)單元解算,方法是:先把正弦的自變量β,ε換算成相應(yīng)的地址,再把這個(gè)地址送到指定芯片上。然后,再由讀指令即可獲得該自變量β和ε的函數(shù)值。為了方便說(shuō)明,這里假設(shè)β等于30°,ε等于45°,根據(jù)上述地址換算公式,可得它們的函數(shù)地址分別是30 000和45 000,以十六進(jìn)制數(shù)表示為:7530H和AFC8H,余弦的地址是EA60H和 AFC8H,再用寫(xiě)指令將這些地址分別指定給4個(gè)正弦芯片,就可解算出正弦30度和45度,余弦30度和45度的函數(shù)值。顯然,正弦芯片的工作是與計(jì)算機(jī)CPU并行的。因?yàn)?,正弦芯片在自行解算函?shù)值的同時(shí),它不占用CPU,這時(shí),計(jì)算機(jī)可進(jìn)行其它工作,這樣就加快了目標(biāo)跟蹤中三角函數(shù)的解算,所以,速度分量vx,vy,vH的計(jì)算CPU只需完成加減乘的計(jì)算,復(fù)雜的函數(shù)計(jì)算無(wú)需參加。
由于三角函數(shù)解算單元可以快速的解算三角函數(shù)值,這就使目標(biāo)解算過(guò)程中求解三角函數(shù)的計(jì)算耗時(shí)極短,如果在系統(tǒng)中設(shè)立多個(gè)三角函數(shù)單元,使它們各自獨(dú)立工作,我們就可實(shí)現(xiàn)對(duì)多個(gè)跟蹤目標(biāo)的處理,三角函數(shù)解算單元越多,目標(biāo)跟蹤的數(shù)量就可大大增加,
在火控計(jì)算機(jī)中采用硬件解算三角函數(shù),實(shí)現(xiàn)正弦、余弦函數(shù)的快速解算,目的是加快三角函數(shù)的解算,提高火控計(jì)算機(jī)的處理能力。雖然只是設(shè)想,但實(shí)踐表明,這是實(shí)現(xiàn)三角函數(shù)解算的最簡(jiǎn)單方法和途徑。今后的研究方向是直接在內(nèi)存中開(kāi)辟一段儲(chǔ)存區(qū),把正弦函數(shù)值依順序排列在存儲(chǔ)區(qū)中,解算三角函數(shù)值時(shí),由讀指令根據(jù)函數(shù)值的地址直接從這段存儲(chǔ)存區(qū)(EPPROM)中讀取函數(shù)值,這樣三角函數(shù)解算就只需一條讀指令即可完成。這實(shí)際上是在火控系統(tǒng)中建立了一個(gè)函數(shù)解算單元,遇到函數(shù)解算就用這個(gè)函數(shù)解算單元進(jìn)行處理。我們認(rèn)識(shí)到火控系統(tǒng)的創(chuàng)新應(yīng)該從正弦函數(shù)解算的方法上入手,改進(jìn)正弦的算法才是出路。不然,火控系統(tǒng)的計(jì)算僅依靠計(jì)算機(jī)處理,大家就都處在同一水平,誰(shuí)也難有超越對(duì)方的可能。這一算法不僅在目標(biāo)跟蹤中有顯著意義,實(shí)際凡是用到三角函數(shù)解算的地方都有用,特別是在潛艇水下目標(biāo)監(jiān)聽(tīng)和識(shí)別,也大量存在三角函數(shù)的解算,這里更應(yīng)該使用這一算法,以提高潛艇早期發(fā)現(xiàn)早期識(shí)別目標(biāo)的能力。
[1] 袁岐川,袁 野.新型指揮儀模擬器的分析與研究[A].中國(guó)計(jì)算機(jī)自動(dòng)測(cè)量與控制技術(shù)協(xié)會(huì)[C].第二十屆全國(guó)測(cè)試與故障診斷技術(shù)研論文集,2011.
[2] 袁岐川,康建斌. 一種面向查表方式的正弦函數(shù)快速算法及應(yīng)用[A]. Edited by Prof.Yong JIANG,Dr.Kai Liu,Second International Conference on Information and Computing Science (ICIC2009) Volume 5[C].英國(guó)·曼徹斯特大學(xué),World Academic Union,2009,5:103-107.
[3] 董志榮.指控系統(tǒng)發(fā)展的哲學(xué)視野[J].指揮控制與仿真,2008(4):1-5.
[4] 董志榮.目標(biāo)運(yùn)動(dòng)分析新論[Z].連云港 :江蘇自動(dòng)化研究所,2005.
AHardwareSolutionMethodofTrigonometricFunctioninComputer
Yuan Qichuan, Long Weijie, Li Jianfeng
(CSIC 716 Research Institute, Lianyungang 222006,China)
Aiming at the existence of target tracking in a large number of trigonometric function calculations, puts forward to establish trigonometric functions in the fire control computer calculating unit, trigonometric function is realized by using hardware decoding. And trigonometric function calculating unit is a kind of sine function calculating chip. Its core design is based on Angle value address, through hardware look-up table, Value of 0 to 90 degrees of sine function, look-up table. Table look up precision can design to 0.001°, maximum look-up table time is the function of calculating time. Look-up table of time is the biggest function value calculation of time. Cosine look-up table calculation is to use sine the same chip, can look up table according to the relationship between phase difference of 90 degrees. Practice shows that trigonometric function of hardware decoding speed fast, high precision, the common method of the function calculating can be replaced. So, if in the fire control system, design an address decoder circuit, can create multiple trigonometric function calculating unit chip, Through computer data, instructions, the realization of parallel computing for multiple trigonometric function value, thus improve the system of multiple target fast track processing capacity.
trigonometric functions; sine algorithm; chip design; fire control computer
2017-04-05;
2017-05-15。
袁岐川(1958-),四川名山人,高級(jí)工程師,主要從事計(jì)算機(jī)檢測(cè)與虛擬儀器技術(shù)的應(yīng)用開(kāi)發(fā)方向的研究。
1671-4598(2017)11-0120-03
10.16526/j.cnki.11-4762/tp.2017.11.031
TP274
A