文獻標識碼: A
文章編號: 0258-7998(2012)09-0035-04
衛(wèi)星導航系統(tǒng)作為先進的測量手段和新的生產(chǎn)力,,已經(jīng)廣泛用于國防建設和社會發(fā)展的各個領域[1],。作為比較成熟的衛(wèi)星導航系統(tǒng),全球定位系統(tǒng)(GPS)在人們的日常生活中發(fā)揮著重要的作用[2],。我國的北斗衛(wèi)星導航系統(tǒng)也將在未來的10年中逐步實現(xiàn)全球覆蓋[3],。因此,設計具有自主知識產(chǎn)權的衛(wèi)星導航芯片成為應對不斷發(fā)展壯大的衛(wèi)星導航市場的當務之急,。
衛(wèi)星導航接收機可分成RF射頻前端模塊和數(shù)字基帶信號處理模塊兩部分[4],。RF射頻前端模塊把接收到的衛(wèi)星信號轉變成數(shù)字中頻信號,然后交給數(shù)字基帶模塊進行處理,;數(shù)字基帶模塊對數(shù)字中頻信號進行捕獲和跟蹤,,并解調(diào)出導航電文,然后進行導航定位計算[5-6],。
以現(xiàn)有的GPS接收機為例,,導航定位運算一般都是通過ARM處理器[7]或通用DSP芯片[8]進行。雖然這些通用處理器功能完善,,但是資源龐大,,結構復雜,對于導航定位運算來說會占用很多冗余資源,,不僅造成資源浪費,,而且功耗和成本也都大大提高。
本文針對衛(wèi)星導航定位計算,設計了一種專用高精度運算處理器,。該處理器基于自己的數(shù)據(jù)格式,,不僅能夠?qū)崿F(xiàn)加減乘除等基礎運算,而且通過數(shù)據(jù)調(diào)度和運算管理還能夠計算導航計算中用到的各種函數(shù)(如sin(x),、cos(x),、arctan(x)等)。FPGA驗證表明,,該專用處理器運算速度快且精度高,,同時具有很強的編程擴展能力。
1 數(shù)據(jù)格式和基礎運算
本論文定義的數(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ù)格式的基礎上運算處理器能實現(xiàn)的基礎運算包括加法,、減法,、乘法、除法,、取模,、取余、階乘(n?。┖投坞A乘(n?。。?,這些運算都是導航計算所必須的基礎運算,。下面以加法、乘法、取模和階乘為例,,分別說明處理器基礎運算的實現(xiàn)方式及精度保證措施,。
(1)加法運算:首先判斷參與運算的兩個數(shù)指數(shù)是否相同,如果相同,,則將兩數(shù)的有效值直接相加,;否則將兩數(shù)的有效值進行移位使兩數(shù)指數(shù)相同,然后再將有效值相加,。
對有效值進行移位的過程是,,首先判斷指數(shù)較大數(shù)據(jù)(例如1大于-3)的有效值絕對值部分最高位是否為1,如果不為1,,則將有效值左移1位,,相應的指數(shù)減1,依此法重復,,直到兩數(shù)的指數(shù)相同為止,;如果為1,則將指數(shù)較小數(shù)據(jù)的有效值絕對值部分無條件地右移1位,,同時其指數(shù)加1,,直到兩數(shù)的指數(shù)相同為止。
指數(shù)相同時,,有效值相加的過程是,,首先判斷有效值符號位是否相同,如果相同則有效值絕對值部分直接相加,,符號位保持不變,;否則判斷有效值絕對值的大小,然后令大數(shù)減小數(shù),,相減結果的符號位與絕對值大的數(shù)據(jù)保持一致,。減法的運算過程與加法類似。
(2)乘法運算:運算原則是指數(shù)相加,,有效值相乘,。指數(shù)相加過程是,首先判斷指數(shù)符號位是否相同,,如果相同,,則將指數(shù)絕對值直接相加,符號位保持不變,;如果不同,,則判斷指數(shù)絕對值部分大小,然后大數(shù)減小數(shù),,符號位與指數(shù)絕對值較大數(shù)的指數(shù)符號位保持一致,。有效值相乘的過程是,首先判斷兩數(shù)有效值符號位是否相同,如果相同則令計算結果的有效值符號位為0,,否則為1,,然后再將有效值絕對值部分相乘。除法的運算原則與乘法類似,。
(3)取模運算:首先將兩數(shù)進行除法運算,,令運算結果的有效值符號位與被除數(shù)的有效值符號位相同。由于取模運算即是獲取除法運算結果的整數(shù)部分,,所以判斷除法運算結果的指數(shù)符號位是否為0,,如果為0,則表明除法運算的結果本身就是整數(shù),,即為所求取模運算的結果,;如果為1,表明除法運算的結果是個小數(shù),,需要將除法運算結果有效值絕對值右移1位,,同時指數(shù)加1,重復此法,,直到指數(shù)為0,,得到取模運算的結果。取余運算思想與取模類似,。
(4)階乘運算:采用直接查表法,。由于在導航定位運算中會用到階乘運算,一般計算到20的階乘就能達到足夠的精度,,所以用case語句實現(xiàn)20以內(nèi)正整數(shù)的階乘和二次階乘,。這種用邏輯電路產(chǎn)生數(shù)據(jù)的方法,不僅計算速度快,,而且避免了存儲器的使用。
以上所有基礎運算的實現(xiàn)方式和數(shù)據(jù)的表示形式都是以誤差最小,、精度最高為目標,,如果想要獲得更高的精度則需適當?shù)財U展數(shù)據(jù)的表示位數(shù)。
2 處理器架構
本運算處理器不僅能完成上述基礎運算,,通過數(shù)據(jù)的操作指令和基礎運算指令的配合,,還可以完成各種導航計算所涉及函數(shù)的運算,處理器架構如圖3所示,。
處理器主要由main模塊,、基本指令集模塊、4個40 bit寄存器(A,、B,、C和D)、一個32×40 bit RAM和一個1 300×8 bit RAM構成。4個40 bit寄存器中的A,、B和C寄存器用來存儲操作數(shù)據(jù),,D寄存器存儲運算結果數(shù)據(jù);32×40 bit RAM是數(shù)據(jù)存儲器,,用來存儲運算過程中會反復用到的中間值數(shù)據(jù),;1 300×8 bit RAM是函數(shù)子程序存儲器,用于存儲子函數(shù)程序,。函數(shù)子程序存儲器中存放導航定位運算中需要用到的所有函數(shù)的子程序,。函數(shù)子程序通過控制基本指令集模塊反復進行基礎運算和數(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)指針跳轉指令,,使程序指針跳轉到子程序存儲器指定位置,;(6)定時指令,完成指定時間的延時,;(7)比較指令,,實現(xiàn)兩數(shù)比較大小,用于收斂判斷等操作,;(8)運算結束指令,,使程序指針停止增加,可通過外部指令喚醒,;(9)基礎運算指令(集),,包括加法指令、減法指令,、乘法指令,、除法指令、取模指令,、取余指令,、階乘指令和二次階乘指令。為了便于硬件測試,,還專門增加了將運算結果通過USB上傳到PC的指令,,該指令只用于開發(fā)階段,,把硬件計算結果返回到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ù)指令,。如果是基本指令,則轉發(fā)該指令到基本指令集模塊,,調(diào)用基本指令集模塊完成操作,,并將運算結果存儲在寄存器D中,指令執(zhí)行完畢,。如果是函數(shù)指令,,則給出相應函數(shù)子程序在函數(shù)子程序存儲器中的起始地址,指針跳轉到起始地址,,按照函數(shù)子程序里的基本指令順序執(zhí)行,。執(zhí)行過程中會反復調(diào)用基本指令集模塊,以及不斷對寄存器和數(shù)據(jù)存儲器中數(shù)據(jù)進行讀取,、存儲或者交換等操作,,函數(shù)子程序執(zhí)行完,將得到的運算結果存儲在寄存器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ù)子程序存儲器的大小是由導航定位運算需要實現(xiàn)的函數(shù)個數(shù)和函數(shù)子程序的大小決定的,。如果需要增加函數(shù)個數(shù),,可以對函數(shù)子程序存儲器的容量進行相應的擴展。
3 FPGA驗證
運算處理器性能的好壞主要由運算速度,、精度,、功耗、成本等幾方面決定,。前面已經(jīng)提到,,本文設計的運算處理器是專用于導航定位計算的,沒有其他冗余電路,,所以占用硬件資源少,,功耗低,其硬件實現(xiàn)也使得處理器速度很快,。下面將主要針對處理器的精度進行測試,。
將運算處理器的Verilog HDL代碼編譯后,下裝到FPGA開發(fā)板里,,然后通過USB向運算處理器發(fā)送宏指令,,運算處理器接到指令進行處理,指令執(zhí)行完畢后將得到的結果通過USB上傳給PC,,即可判斷計算結果的正確性和計算精度,。
以sin(x)計算為例,要想用基礎運算來實現(xiàn)sin(x),,則需要將sin(x)進行泰勒展開
由于所有三角函數(shù)和反三角函數(shù)都可以用泰勒級數(shù)展開的形式或者相互之間的算術關系來實現(xiàn),,而開方也可以用快速收斂的簡單迭代公式y(tǒng)=(y2+x)/2x來實現(xiàn),所以利用基本運算組合即可實現(xiàn)所有所需函數(shù)的運算,。當然,,在硬件支持的范圍內(nèi),通過算法調(diào)度,,用戶也可以采用更好的算法實現(xiàn)函數(shù)計算,。
本文設計了一個專用于導航基帶芯片設計的運算處理器,不同于ARM等通用微處理器,,這種運算處理器采用自己的數(shù)據(jù)格式,,并完成了基于這種數(shù)據(jù)格式的基礎運算以及多種數(shù)學函數(shù)的計算,。FPGA驗證表明,處理器計算迅速準確,,精度符合導航定位計算的要求,。由于它是專門針對導航定位計算優(yōu)化的處理器,因而更節(jié)省硬件資源,,可大大降低功耗和成本,,在低功耗導航芯片設計中具有很強的實用價值。
參考文獻
[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.