文獻標識碼: A
文章編號: 0258-7998(2012)09-0035-04
衛(wèi)星導(dǎo)航系統(tǒng)作為先進的測量手段和新的生產(chǎn)力,已經(jīng)廣泛用于國防建設(shè)和社會發(fā)展的各個領(lǐng)域[1]。作為比較成熟的衛(wèi)星導(dǎo)航系統(tǒng),全球定位系統(tǒng)(GPS)在人們的日常生活中發(fā)揮著重要的作用[2]。我國的北斗衛(wèi)星導(dǎo)航系統(tǒng)也將在未來的10年中逐步實現(xiàn)全球覆蓋[3]。因此,設(shè)計具有自主知識產(chǎn)權(quán)的衛(wèi)星導(dǎo)航芯片成為應(yīng)對不斷發(fā)展壯大的衛(wèi)星導(dǎo)航市場的當務(wù)之急。
衛(wèi)星導(dǎo)航接收機可分成RF射頻前端模塊和數(shù)字基帶信號處理模塊兩部分[4]。RF射頻前端模塊把接收到的衛(wèi)星信號轉(zhuǎn)變成數(shù)字中頻信號,然后交給數(shù)字基帶模塊進行處理;數(shù)字基帶模塊對數(shù)字中頻信號進行捕獲和跟蹤,并解調(diào)出導(dǎo)航電文,然后進行導(dǎo)航定位計算[5-6]。
以現(xiàn)有的GPS接收機為例,導(dǎo)航定位運算一般都是通過ARM處理器[7]或通用DSP芯片[8]進行。雖然這些通用處理器功能完善,但是資源龐大,結(jié)構(gòu)復(fù)雜,對于導(dǎo)航定位運算來說會占用很多冗余資源,不僅造成資源浪費,而且功耗和成本也都大大提高。
本文針對衛(wèi)星導(dǎo)航定位計算,設(shè)計了一種專用高精度運算處理器。該處理器基于自己的數(shù)據(jù)格式,不僅能夠?qū)崿F(xiàn)加減乘除等基礎(chǔ)運算,而且通過數(shù)據(jù)調(diào)度和運算管理還能夠計算導(dǎo)航計算中用到的各種函數(shù)(如sin(x)、cos(x)、arctan(x)等)。FPGA驗證表明,該專用處理器運算速度快且精度高,同時具有很強的編程擴展能力。
1 數(shù)據(jù)格式和基礎(chǔ)運算
本論文定義的數(shù)據(jù)格式把一個數(shù)通過二進制有效值和2的指數(shù)這兩個部分的乘積表示,用40 bit表示一個數(shù)據(jù),如圖1所示。低33 bit表示二進制有效值,其中第32位是二進制有效值的符號位(0表示正號,1表示負號),第31~0位表示二進制有效值的絕對值;第39~33位表示二進制指數(shù),其中第39位是指數(shù)的符號位(0表示正號,1表示負號),其余位為指數(shù)絕對值。例如,40’h07_0000_0009表示的十進制實數(shù)為-9×23,如圖2所示。這種數(shù)據(jù)格式的表示方法與浮點數(shù)的表示方法類似,不僅能用較少的位數(shù)表示更大取值范圍的實數(shù),而且計算精度更高。
在這種數(shù)據(jù)格式的基礎(chǔ)上運算處理器能實現(xiàn)的基礎(chǔ)運算包括加法、減法、乘法、除法、取模、取余、階乘(n!)和二次階乘(n?。。?,這些運算都是導(dǎo)航計算所必須的基礎(chǔ)運算。下面以加法、乘法、取模和階乘為例,分別說明處理器基礎(chǔ)運算的實現(xiàn)方式及精度保證措施。
(1)加法運算:首先判斷參與運算的兩個數(shù)指數(shù)是否相同,如果相同,則將兩數(shù)的有效值直接相加;否則將兩數(shù)的有效值進行移位使兩數(shù)指數(shù)相同,然后再將有效值相加。
對有效值進行移位的過程是,首先判斷指數(shù)較大數(shù)據(jù)(例如1大于-3)的有效值絕對值部分最高位是否為1,如果不為1,則將有效值左移1位,相應(yīng)的指數(shù)減1,依此法重復(fù),直到兩數(shù)的指數(shù)相同為止;如果為1,則將指數(shù)較小數(shù)據(jù)的有效值絕對值部分無條件地右移1位,同時其指數(shù)加1,直到兩數(shù)的指數(shù)相同為止。
指數(shù)相同時,有效值相加的過程是,首先判斷有效值符號位是否相同,如果相同則有效值絕對值部分直接相加,符號位保持不變;否則判斷有效值絕對值的大小,然后令大數(shù)減小數(shù),相減結(jié)果的符號位與絕對值大的數(shù)據(jù)保持一致。減法的運算過程與加法類似。
(2)乘法運算:運算原則是指數(shù)相加,有效值相乘。指數(shù)相加過程是,首先判斷指數(shù)符號位是否相同,如果相同,則將指數(shù)絕對值直接相加,符號位保持不變;如果不同,則判斷指數(shù)絕對值部分大小,然后大數(shù)減小數(shù),符號位與指數(shù)絕對值較大數(shù)的指數(shù)符號位保持一致。有效值相乘的過程是,首先判斷兩數(shù)有效值符號位是否相同,如果相同則令計算結(jié)果的有效值符號位為0,否則為1,然后再將有效值絕對值部分相乘。除法的運算原則與乘法類似。
(3)取模運算:首先將兩數(shù)進行除法運算,令運算結(jié)果的有效值符號位與被除數(shù)的有效值符號位相同。由于取模運算即是獲取除法運算結(jié)果的整數(shù)部分,所以判斷除法運算結(jié)果的指數(shù)符號位是否為0,如果為0,則表明除法運算的結(jié)果本身就是整數(shù),即為所求取模運算的結(jié)果;如果為1,表明除法運算的結(jié)果是個小數(shù),需要將除法運算結(jié)果有效值絕對值右移1位,同時指數(shù)加1,重復(fù)此法,直到指數(shù)為0,得到取模運算的結(jié)果。取余運算思想與取模類似。
(4)階乘運算:采用直接查表法。由于在導(dǎo)航定位運算中會用到階乘運算,一般計算到20的階乘就能達到足夠的精度,所以用case語句實現(xiàn)20以內(nèi)正整數(shù)的階乘和二次階乘。這種用邏輯電路產(chǎn)生數(shù)據(jù)的方法,不僅計算速度快,而且避免了存儲器的使用。
以上所有基礎(chǔ)運算的實現(xiàn)方式和數(shù)據(jù)的表示形式都是以誤差最小、精度最高為目標,如果想要獲得更高的精度則需適當?shù)財U展數(shù)據(jù)的表示位數(shù)。
2 處理器架構(gòu)
本運算處理器不僅能完成上述基礎(chǔ)運算,通過數(shù)據(jù)的操作指令和基礎(chǔ)運算指令的配合,還可以完成各種導(dǎo)航計算所涉及函數(shù)的運算,處理器架構(gòu)如圖3所示。
處理器主要由main模塊、基本指令集模塊、4個40 bit寄存器(A、B、C和D)、一個32×40 bit RAM和一個1 300×8 bit RAM構(gòu)成。4個40 bit寄存器中的A、B和C寄存器用來存儲操作數(shù)據(jù),D寄存器存儲運算結(jié)果數(shù)據(jù);32×40 bit RAM是數(shù)據(jù)存儲器,用來存儲運算過程中會反復(fù)用到的中間值數(shù)據(jù);1 300×8 bit RAM是函數(shù)子程序存儲器,用于存儲子函數(shù)程序。函數(shù)子程序存儲器中存放導(dǎo)航定位運算中需要用到的所有函數(shù)的子程序。函數(shù)子程序通過控制基本指令集模塊反復(fù)進行基礎(chǔ)運算和數(shù)據(jù)調(diào)度,實現(xiàn)各種函數(shù)的計算。
基本指令集模塊能夠完成的基本指令包括:(1)置數(shù)指令,對指定寄存器或數(shù)據(jù)存儲器置數(shù);(2)數(shù)據(jù)傳送指令(寄存器到數(shù)據(jù)存儲器),將指定寄存器中的數(shù)據(jù)傳遞給指定數(shù)據(jù)存儲器;(3)數(shù)據(jù)傳送指令(數(shù)據(jù)存儲器到寄存器),將指定數(shù)據(jù)存儲器中的數(shù)據(jù)傳遞給指定寄存器;(4)數(shù)據(jù)互換指令,實現(xiàn)兩個指定寄存器間的數(shù)據(jù)互換;(5)指針跳轉(zhuǎn)指令,使程序指針跳轉(zhuǎn)到子程序存儲器指定位置;(6)定時指令,完成指定時間的延時;(7)比較指令,實現(xiàn)兩數(shù)比較大小,用于收斂判斷等操作;(8)運算結(jié)束指令,使程序指針停止增加,可通過外部指令喚醒;(9)基礎(chǔ)運算指令(集),包括加法指令、減法指令、乘法指令、除法指令、取模指令、取余指令、階乘指令和二次階乘指令。為了便于硬件測試,還專門增加了將運算結(jié)果通過USB上傳到PC的指令,該指令只用于開發(fā)階段,把硬件計算結(jié)果返回到PC以便分析。
函數(shù)子程序存儲器中存儲的函數(shù)子程序指令包括:sin(x)指令、cos(x)指令、arcsin(x)指令、arccos(x)指令、tan(x)指令、cot(x)指令、arctan(x)指令、arccot(x)指令和開方指令等。這些指令都接受一個計算精度參數(shù),當達到精度時即停止迭代,精度最高為10-7。
運算處理器接收的宏指令可以包含上述所有基本指令和函數(shù)指令,main模塊的作用就是接收宏指令,判斷接收到的宏指令是基本指令還是函數(shù)指令。如果是基本指令,則轉(zhuǎn)發(fā)該指令到基本指令集模塊,調(diào)用基本指令集模塊完成操作,并將運算結(jié)果存儲在寄存器D中,指令執(zhí)行完畢。如果是函數(shù)指令,則給出相應(yīng)函數(shù)子程序在函數(shù)子程序存儲器中的起始地址,指針跳轉(zhuǎn)到起始地址,按照函數(shù)子程序里的基本指令順序執(zhí)行。執(zhí)行過程中會反復(fù)調(diào)用基本指令集模塊,以及不斷對寄存器和數(shù)據(jù)存儲器中數(shù)據(jù)進行讀取、存儲或者交換等操作,函數(shù)子程序執(zhí)行完,將得到的運算結(jié)果存儲在寄存器D中,指令執(zhí)行完畢。
下面以置數(shù)指令為例介紹指令傳送格式。首先發(fā)送指令編號字節(jié),每個指令的編號都由一個字節(jié)表示,置數(shù)指令的編號為8’h01;接著發(fā)送指定要賦值的寄存器或數(shù)據(jù)存儲器的編號字節(jié),同樣由一個字節(jié)表示,8’h00~8’h23依次代表數(shù)據(jù)存儲器0~31和寄存器A,B,C,D;最后發(fā)送數(shù)據(jù)字節(jié),數(shù)據(jù)字節(jié)表示將要給寄存器或者數(shù)據(jù)存儲器賦的值,由5個字節(jié)(40 bit)表示,如圖4所示。例如發(fā)送指令字節(jié)為56’h01_21_00_00_00_00_16,其含義則是向寄存器B置十進制數(shù)22。
函數(shù)子程序存儲器的大小是由導(dǎo)航定位運算需要實現(xiàn)的函數(shù)個數(shù)和函數(shù)子程序的大小決定的。如果需要增加函數(shù)個數(shù),可以對函數(shù)子程序存儲器的容量進行相應(yīng)的擴展。
3 FPGA驗證
運算處理器性能的好壞主要由運算速度、精度、功耗、成本等幾方面決定。前面已經(jīng)提到,本文設(shè)計的運算處理器是專用于導(dǎo)航定位計算的,沒有其他冗余電路,所以占用硬件資源少,功耗低,其硬件實現(xiàn)也使得處理器速度很快。下面將主要針對處理器的精度進行測試。
將運算處理器的Verilog HDL代碼編譯后,下裝到FPGA開發(fā)板里,然后通過USB向運算處理器發(fā)送宏指令,運算處理器接到指令進行處理,指令執(zhí)行完畢后將得到的結(jié)果通過USB上傳給PC,即可判斷計算結(jié)果的正確性和計算精度。
以sin(x)計算為例,要想用基礎(chǔ)運算來實現(xiàn)sin(x),則需要將sin(x)進行泰勒展開
由于所有三角函數(shù)和反三角函數(shù)都可以用泰勒級數(shù)展開的形式或者相互之間的算術(shù)關(guān)系來實現(xiàn),而開方也可以用快速收斂的簡單迭代公式y(tǒng)=(y2+x)/2x來實現(xiàn),所以利用基本運算組合即可實現(xiàn)所有所需函數(shù)的運算。當然,在硬件支持的范圍內(nèi),通過算法調(diào)度,用戶也可以采用更好的算法實現(xiàn)函數(shù)計算。
本文設(shè)計了一個專用于導(dǎo)航基帶芯片設(shè)計的運算處理器,不同于ARM等通用微處理器,這種運算處理器采用自己的數(shù)據(jù)格式,并完成了基于這種數(shù)據(jù)格式的基礎(chǔ)運算以及多種數(shù)學(xué)函數(shù)的計算。FPGA驗證表明,處理器計算迅速準確,精度符合導(dǎo)航定位計算的要求。由于它是專門針對導(dǎo)航定位計算優(yōu)化的處理器,因而更節(jié)省硬件資源,可大大降低功耗和成本,在低功耗導(dǎo)航芯片設(shè)計中具有很強的實用價值。
參考文獻
[1] HEGARTY C J,CHATRE E.Evolution of the global navigation satellite system(GNSS)[J].Proc.IEEE,2008,96(12):1902-1917.
[2] RAASAKKA J,HURSKAINEN H,NURMI J.GNSS baseband processing in a multi-core platform[C].International Conference on Localization and GNSS.Tampere,F(xiàn)inland,2011:42-46.
[3] CHEN J C,ZHANG D J,GAO X H.Research of beidou system in electric power system time service[C].China International Conference on Electricity Distribution. Guangzhou,china,2008:1-5.
[4] WU P,HE C,ZONG Z L.A novel correlation architecture of acquisition for GNSS satellite navigation system receiver based on CORDIC algorithm[C].International Conference on Computational Problem-Solving. Chengdu,China,2010:115-121.
[5] ZHAO L,GAO S H,LI P F,et al.The design and validation of RF front-end platform for GPS receiver[C].IEEE International Conference on Information and Automation. Harbin,China,2010:519-522.
[6] ZHUANG W H,TRANQUILLA J.Digital baseband processor for the GPS receiver modeling and simulations[J].IEEE Transactions on Aerospace and Electronic Systems,1993,29(4):1343-1349.
[7] WANG B,DONG J X.The system of GPS navigation based on ARM processor[C].International Forum on Information Technology and Applications.Taiyuan,China,2010:308-312.
[8] ZENG Q X,WANG Q,PAN S G,et al.A GPS L1 software receiver implementation on a DSP platform[C].International Conference on Intelligent Networks and Intelligent System,Nanjing,China,2008:612-615.