《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種用于導(dǎo)航芯片設(shè)計(jì)的高精度運(yùn)算處理器
一種用于導(dǎo)航芯片設(shè)計(jì)的高精度運(yùn)算處理器
來(lái)源:電子技術(shù)應(yīng)用2012年第9期
李 慧,閆宏偉,李金城
北京交通大學(xué) 電子信息工程學(xué)院,北京100044
摘要: 設(shè)計(jì)了一種專(zhuān)用于衛(wèi)星導(dǎo)航芯片設(shè)計(jì)的高精度運(yùn)算處理器,可完成衛(wèi)星導(dǎo)航定位計(jì)算涉及的所有運(yùn)算。該處理器用5個(gè)字節(jié)(40 bit)定義自己的數(shù)據(jù)格式,并針對(duì)這種數(shù)據(jù)格式實(shí)現(xiàn)了加、減、乘、除和階乘等基礎(chǔ)運(yùn)算。利用這些基礎(chǔ)運(yùn)算和適當(dāng)?shù)臄?shù)據(jù)調(diào)度實(shí)現(xiàn)了導(dǎo)航定位計(jì)算所涉及的各種函數(shù)運(yùn)算,精度達(dá)到了10-7。通過(guò)FPGA驗(yàn)證,該處理器具有運(yùn)算速度快和計(jì)算準(zhǔn)確的特點(diǎn),同時(shí)具有很強(qiáng)的擴(kuò)展能力。
中圖分類(lèi)號(hào): TP332; TN492
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)星導(dǎo)航系統(tǒng)作為先進(jìn)的測(cè)量手段和新的生產(chǎn)力,已經(jīng)廣泛用于國(guó)防建設(shè)和社會(huì)發(fā)展的各個(gè)領(lǐng)域[1]。作為比較成熟的衛(wèi)星導(dǎo)航系統(tǒng),全球定位系統(tǒng)(GPS)在人們的日常生活中發(fā)揮著重要的作用[2]。我國(guó)的北斗衛(wèi)星導(dǎo)航系統(tǒng)也將在未來(lái)的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)算一般都是通過(guò)ARM處理器[7]或通用DSP芯片[8]進(jìn)行。雖然這些通用處理器功能完善,但是資源龐大,結(jié)構(gòu)復(fù)雜,對(duì)于導(dǎo)航定位運(yùn)算來(lái)說(shuō)會(huì)占用很多冗余資源,不僅造成資源浪費(fèi),而且功耗和成本也都大大提高。
    本文針對(duì)衛(wèi)星導(dǎo)航定位計(jì)算,設(shè)計(jì)了一種專(zhuān)用高精度運(yùn)算處理器。該處理器基于自己的數(shù)據(jù)格式,不僅能夠?qū)崿F(xiàn)加減乘除等基礎(chǔ)運(yùn)算,而且通過(guò)數(shù)據(jù)調(diào)度和運(yùn)算管理還能夠計(jì)算導(dǎo)航計(jì)算中用到的各種函數(shù)(如sin(x)、cos(x)、arctan(x)等)。FPGA驗(yàn)證表明,該專(zhuān)用處理器運(yùn)算速度快且精度高,同時(shí)具有很強(qiáng)的編程擴(kuò)展能力。
1 數(shù)據(jù)格式和基礎(chǔ)運(yùn)算
    本論文定義的數(shù)據(jù)格式把一個(gè)數(shù)通過(guò)二進(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ù)的表示方法類(lèi)似,不僅能用較少的位數(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)算。下面以加法、乘法、取模和階乘為例,分別說(shuō)明處理器基礎(chǔ)運(yùn)算的實(shí)現(xiàn)方式及精度保證措施。
    (1)加法運(yùn)算:首先判斷參與運(yùn)算的兩個(gè)數(shù)指數(shù)是否相同,如果相同,則將兩數(shù)的有效值直接相加;否則將兩數(shù)的有效值進(jìn)行移位使兩數(shù)指數(shù)相同,然后再將有效值相加。
    對(duì)有效值進(jìn)行移位的過(guò)程是,首先判斷指數(shù)較大數(shù)據(jù)(例如1大于-3)的有效值絕對(duì)值部分最高位是否為1,如果不為1,則將有效值左移1位,相應(yīng)的指數(shù)減1,依此法重復(fù),直到兩數(shù)的指數(shù)相同為止;如果為1,則將指數(shù)較小數(shù)據(jù)的有效值絕對(duì)值部分無(wú)條件地右移1位,同時(shí)其指數(shù)加1,直到兩數(shù)的指數(shù)相同為止。
    指數(shù)相同時(shí),有效值相加的過(guò)程是,首先判斷有效值符號(hào)位是否相同,如果相同則有效值絕對(duì)值部分直接相加,符號(hào)位保持不變;否則判斷有效值絕對(duì)值的大小,然后令大數(shù)減小數(shù),相減結(jié)果的符號(hào)位與絕對(duì)值大的數(shù)據(jù)保持一致。減法的運(yùn)算過(guò)程與加法類(lèi)似。
    (2)乘法運(yùn)算:運(yùn)算原則是指數(shù)相加,有效值相乘。指數(shù)相加過(guò)程是,首先判斷指數(shù)符號(hào)位是否相同,如果相同,則將指數(shù)絕對(duì)值直接相加,符號(hào)位保持不變;如果不同,則判斷指數(shù)絕對(duì)值部分大小,然后大數(shù)減小數(shù),符號(hào)位與指數(shù)絕對(duì)值較大數(shù)的指數(shù)符號(hào)位保持一致。有效值相乘的過(guò)程是,首先判斷兩數(shù)有效值符號(hào)位是否相同,如果相同則令計(jì)算結(jié)果的有效值符號(hào)位為0,否則為1,然后再將有效值絕對(duì)值部分相乘。除法的運(yùn)算原則與乘法類(lèi)似。
    (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)算思想與取模類(lèi)似。
    (4)階乘運(yùn)算:采用直接查表法。由于在導(dǎo)航定位運(yùn)算中會(huì)用到階乘運(yùn)算,一般計(jì)算到20的階乘就能達(dá)到足夠的精度,所以用case語(yǔ)句實(shí)現(xiàn)20以?xún)?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)算,通過(guò)數(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寄存器用來(lái)存儲(chǔ)操作數(shù)據(jù),D寄存器存儲(chǔ)運(yùn)算結(jié)果數(shù)據(jù);32×40 bit RAM是數(shù)據(jù)存儲(chǔ)器,用來(lái)存儲(chǔ)運(yùn)算過(guò)程中會(huì)反復(fù)用到的中間值數(shù)據(jù);1 300×8 bit RAM是函數(shù)子程序存儲(chǔ)器,用于存儲(chǔ)子函數(shù)程序。函數(shù)子程序存儲(chǔ)器中存放導(dǎo)航定位運(yùn)算中需要用到的所有函數(shù)的子程序。函數(shù)子程序通過(guò)控制基本指令集模塊反復(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é)束指令,使程序指針停止增加,可通過(guò)外部指令喚醒;(9)基礎(chǔ)運(yùn)算指令(集),包括加法指令、減法指令、乘法指令、除法指令、取模指令、取余指令、階乘指令和二次階乘指令。為了便于硬件測(cè)試,還專(zhuān)門(mén)增加了將運(yùn)算結(jié)果通過(guò)USB上傳到PC的指令,該指令只用于開(kāi)發(fā)階段,把硬件計(jì)算結(jié)果返回到PC以便分析。
    函數(shù)子程序存儲(chǔ)器中存儲(chǔ)的函數(shù)子程序指令包括:sin(x)指令、cos(x)指令、arcsin(x)指令、arccos(x)指令、tan(x)指令、cot(x)指令、arctan(x)指令、arccot(x)指令和開(kāi)方指令等。這些指令都接受一個(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í)行過(guò)程中會(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)算處理器是專(zhuān)用于導(dǎo)航定位計(jì)算的,沒(méi)有其他冗余電路,所以占用硬件資源少,功耗低,其硬件實(shí)現(xiàn)也使得處理器速度很快。下面將主要針對(duì)處理器的精度進(jìn)行測(cè)試。
    將運(yùn)算處理器的Verilog HDL代碼編譯后,下裝到FPGA開(kāi)發(fā)板里,然后通過(guò)USB向運(yùn)算處理器發(fā)送宏指令,運(yùn)算處理器接到指令進(jìn)行處理,指令執(zhí)行完畢后將得到的結(jié)果通過(guò)USB上傳給PC,即可判斷計(jì)算結(jié)果的正確性和計(jì)算精度。

 


    以sin(x)計(jì)算為例,要想用基礎(chǔ)運(yùn)算來(lái)實(shí)現(xiàn)sin(x),則需要將sin(x)進(jìn)行泰勒展開(kāi)
    
    由于所有三角函數(shù)和反三角函數(shù)都可以用泰勒級(jí)數(shù)展開(kāi)的形式或者相互之間的算術(shù)關(guān)系來(lái)實(shí)現(xiàn),而開(kāi)方也可以用快速收斂的簡(jiǎn)單迭代公式y(tǒng)=(y2+x)/2x來(lái)實(shí)現(xiàn),所以利用基本運(yùn)算組合即可實(shí)現(xiàn)所有所需函數(shù)的運(yùn)算。當(dāng)然,在硬件支持的范圍內(nèi),通過(guò)算法調(diào)度,用戶(hù)也可以采用更好的算法實(shí)現(xiàn)函數(shù)計(jì)算。
    本文設(shè)計(jì)了一個(gè)專(zhuān)用于導(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ì)算的要求。由于它是專(zhuān)門(mén)針對(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.

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