《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種用于導航芯片設計的高精度運算處理器
一種用于導航芯片設計的高精度運算處理器
來源:電子技術應用2012年第9期
李 慧,,閆宏偉,,李金城
北京交通大學 電子信息工程學院,北京100044
摘要: 設計了一種專用于衛(wèi)星導航芯片設計的高精度運算處理器,可完成衛(wèi)星導航定位計算涉及的所有運算,。該處理器用5個字節(jié)(40 bit)定義自己的數(shù)據(jù)格式,并針對這種數(shù)據(jù)格式實現(xiàn)了加,、減,、乘、除和階乘等基礎運算,。利用這些基礎運算和適當?shù)臄?shù)據(jù)調(diào)度實現(xiàn)了導航定位計算所涉及的各種函數(shù)運算,,精度達到了10-7。通過FPGA驗證,,該處理器具有運算速度快和計算準確的特點,,同時具有很強的擴展能力,。
中圖分類號: TP332; TN492
文獻標識碼: A
文章編號: 0258-7998(2012)09-0035-04
A high-precision mathematic processor for navigation ASIC design
Li Hui,Yan Hongwei,,Li Jincheng
School of Electronic and Information Engineering, Beijing Jiaotong University,,Beijing 100044,China
Abstract: This paper proposed a high-precision mathematic processor for satellite navigation ASIC design, which processed almost all of the mathematic calculations involved in satellite navigation and positioning applications.Based on its own 5 B data format,,this processor realized the addition,,subtraction, multiplication,,division,,factorial and other basic mathematic operations,furthermore,,by making full use of these basic operations and proper data scheduling,,it performed various kinds of mathematic functions with 10-7 precision that satellite navigation and positioning applications required.FPGA test proved that the suggested processor not only calculated fast and accurately,but also had strong expansion ability.
Key words : satellite navigation,;processor,; basic operation;function operation

    衛(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。