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