張建喜,汪 峰,李金海,閻躍鵬
(中國科學(xué)院 微電子研究所,北京 100029)
在GPS高動態(tài)接收機研制中,要對捕獲、跟蹤及定位等算法進行仿真及驗證,優(yōu)化算法性能。為得到算法仿真及測試所需的真實數(shù)據(jù),需要數(shù)據(jù)采集系統(tǒng)對GPS信號進行實時采集。目前比較通用的數(shù)據(jù)采集系統(tǒng)只支持采集信號的實時流盤或暫存在FLASH中的單一模式。本文設(shè)計了一套既可實現(xiàn)數(shù)據(jù)實時傳輸又可在特殊環(huán)境下將數(shù)據(jù)暫存到FLASH中的GPS數(shù)據(jù)采集系統(tǒng)。
外設(shè)與主機的通信接口一般基于PCI總線、RS-232串行總線或通用串行總線(Universal Serial Bus,USB)。PCI總線雖具有較高的傳輸速率,支持“即插即用”,但存在插拔麻煩、擴展槽有限的缺點。RS-232串行總線雖連接簡單,但是傳輸速度慢,且主機串口數(shù)目有限。USB具有速率高、易擴展、安裝方便等特點,已成為主流的數(shù)據(jù)傳輸總線。本文所設(shè)計的采集系統(tǒng)基于USB,有效地克服了其它總線的缺點。
GPS數(shù)據(jù)采集硬件系統(tǒng)主要包括GPS射頻前端、FPGA控制模塊、USB數(shù)據(jù)傳輸單元(CY7C68013)、FLASH 存儲模塊及EEPROM,系統(tǒng)結(jié)構(gòu)示意圖如圖1所示。
GPS信號經(jīng)天線接收送至射頻前端,在射頻芯片中經(jīng)ADC將模擬中頻信號轉(zhuǎn)化為數(shù)字中頻信號送入FPGA中,FPGA對數(shù)字信號進行實時處理并緩存到RAM中,在采集系統(tǒng)與主機連接的情況下將數(shù)據(jù)批量地發(fā)送到CY7C68013的FIFO中,通過FIFO將數(shù)據(jù)送至主機,主機對數(shù)據(jù)進行實時流盤,完成對GPS信號的采集。在一些特殊環(huán)境下,采集系統(tǒng)與主機無法連接,此時,需將RAM中的數(shù)據(jù)暫時存儲到FLASH中,以后再從FLASH中讀出數(shù)據(jù),完成特殊環(huán)境下的信號采集。
GPS射頻前端采用SiGe半導(dǎo)體公司的SE4110L芯片,該芯片具有集成度高、功耗低、性能高等優(yōu)點,廣泛應(yīng)用于GPS接收機中。SE4110L包括帶通濾波器,低噪聲放大器,自動增益控制器,模數(shù)轉(zhuǎn)換器(ADC)等[1]。L1頻段(1575.42GHz)的GPS信號下變頻到模擬中頻經(jīng)ADC后進行2 bit量化變成數(shù)字中頻信號,采樣頻率為16.368MHz,每個采樣點包括符號位Sign和幅度位Mag。采集系統(tǒng)的工作時鐘也為16.368MHz,每4個采樣點拼接成一個字節(jié),則系統(tǒng)實時傳輸速率達4 Mbit/s。
FPGA作為系統(tǒng)的控制核心,分別與射頻前端、CY7C68013及NAND FLASH接口,產(chǎn)生CY7C68013及NAND FLASH所需的控制信號,完成對信號的采集、數(shù)據(jù)緩存/傳輸、CY7C68013讀/寫控制、NAND FLASH塊狀態(tài)信息管理及FLASH讀寫等功能。
2.2.1 FPGA與 CY7C68013、NAND FLASH的接口設(shè)計
FPGA作為主端控制從端CY7C68013芯片,接口管腳連接如圖2所示。其中,IFCLK為CY7C68013同步模式下接口時鐘;FLAGA 、FLAGB、FLAGC、FLAGD為FIFO的工作狀態(tài)標(biāo)志位。在FPGA可控的輸入信號中,SLCS為片選信號;SLOE為輸入使能信號;SLRD為讀使能信號;SLWR為寫使能信號;PKTEND為數(shù)據(jù)包結(jié)束信號,當(dāng)發(fā)送比FIFO小的數(shù)據(jù)包時,FPGA可通過發(fā)送PKTEND信號完成;FIFOADR[1:0]為端點緩沖區(qū)選擇信號,00選擇端點EP2,01選擇端點EP4,10選擇端點EP6,11選擇端點EP8;FD[15:0]為FPGA與FIFO之間的數(shù)據(jù)總線,數(shù)據(jù)寬度為16位。
圖2 FPGA與CY7C68013之間的接口Fig.2 Interface between FPGA and CY7C68013
NAND FLASH與其它存儲器不同,沒有指定的地址總線和命令總線,只有通用的總線,通過命令鎖存使能和地址鎖存使能,將命令和地址寫入命令寄存器和地址寄存器,來完成FLASH的讀、寫及擦除等各項操作。接口設(shè)計如圖3所示。
圖3 FPGA與FLASH之間的接口Fig.3 Interface between FPGA and FLASH
2.2.2 雙緩沖
在采集系統(tǒng)中,普遍存在丟失數(shù)據(jù)(以下簡稱丟數(shù))現(xiàn)象。由于該系統(tǒng)采樣率和數(shù)據(jù)傳輸速率非常高,就會導(dǎo)致USB主機沒有及時響應(yīng)而發(fā)生丟數(shù)現(xiàn)象,嚴(yán)重影響系統(tǒng)的可靠性。為了解決上述問題,采用雙緩沖技術(shù)。在FPGA內(nèi)開辟大塊RAM,分成大小相等的兩部分,進行乒乓操作,使讀出RAM的頻率為寫入RAM頻率的2倍,這樣可以在數(shù)據(jù)量不變的前提下增加數(shù)據(jù)包之間的時間間隔,為USB主機預(yù)留出更多的響應(yīng)時間。
在USB傳輸單元中采用Cypress公司 EZ-USB FX2LP系列中的CY7C68013芯片。EZ-USB FX2LP系列芯片集成8051內(nèi)核及串行接口引擎(SIE),SIE能夠完成數(shù)據(jù)解碼、位填充、差錯控制等與USB協(xié)議相關(guān)的工作,減輕增強型8051的負擔(dān),降低了USB固件程序的開發(fā)難度[2]。
該系統(tǒng)中選擇CY7C68013的從FIFO(Slave FIFO)工作模式,如圖4所示。在這種工作模式下,外圍控制電路可像對普通FIFO一樣對CY7C68013的端點緩沖區(qū)進行讀寫,而不需要8051內(nèi)核參與,極大提高了傳輸速度。在USB協(xié)議中端點為數(shù)據(jù)的接收器和發(fā)送器。CY7C68013中的EP0是唯一的控制端點,大小為64 byte,所有的控制命令通過EP0傳輸。EP2、EP4、EP6、EP8為數(shù)據(jù)傳輸端點,其中EP2和EP6最大為1024 byte,EP4和EP8最大為512 byte。
圖4 Slave FIFO工作模式Fig.4 Slave FIFO mode
CY7C68013集成I2C總線協(xié)議,可外接EEPROM等片外存儲器件。芯片上電時,如果檢測到I2C總線上連接EEPROM,且其首字節(jié)為0xC2,則EEPROM提供USB設(shè)備描述符及USB固件程序。EEPROM具有掉電時內(nèi)部數(shù)據(jù)不丟失的優(yōu)點,這樣,系統(tǒng)在上電時可以自動加載固件程序到片內(nèi)RAM。
在采集系統(tǒng)無法與USB主機連接的情況下,采集到的GPS信號要暫存在FLASH中。NAND型FLASH具有容量大、改寫速度快及數(shù)據(jù)非易失性的特點,在業(yè)界得到了廣泛應(yīng)用。本系統(tǒng)中的NAND FLASH采用Samsung公司的K9K8G08U0A,存儲單元為(1G+32M)×8 bit,共由8192個 block 組成,每個block包含64個page,每個page含有2 k+64個字節(jié),其中2 kbyte為數(shù)據(jù)存儲區(qū),用來存儲用戶數(shù)據(jù);剩余64 byte為輔助存儲區(qū),用來保存壞塊標(biāo)志位、ECC碼等狀態(tài)信息。
NAND型FLASH芯片在出廠時會存在一塊或多塊壞塊以及在使用過程中也會出現(xiàn)壞塊,這在NAND結(jié)構(gòu)的FLASH中無法避免。因為FLASH中的每個block相互隔離,壞塊的存在不影響對其它塊的操作。但是,壞塊會導(dǎo)致數(shù)據(jù)丟失及誤讀,影響采集數(shù)據(jù)的有效性和完整性。因此,在進行數(shù)據(jù)讀寫及擦除操作前需要將壞塊剔除,防止數(shù)據(jù)的丟失,保證系統(tǒng)的可靠性。在FPGA中建立塊狀態(tài)表,將FLASH中的每個block的狀態(tài)加以標(biāo)記,整個流程如圖5所示。FLASH芯片在出廠時會對壞塊進行標(biāo)記,每一塊的第一頁和第二頁的第2048 byte為非0XFF表示塊無效,0XFF表示塊有效[3]。這些塊信息在讀取之前可能被誤擦除,因此在進行壞塊檢測時,首先判斷當(dāng)前塊是否有效,若為無效塊則直接在塊狀態(tài)表中標(biāo)記為壞塊;若為有效塊則進行擦除,讀取狀態(tài)寄存器IO第0位是否為0,如果為0在塊狀態(tài)表中標(biāo)志為有效塊,否則標(biāo)記為壞塊,同時在第一頁的第2048 byte寫入0XAA,其時序圖如圖6所示。對FLASH中的每塊狀態(tài)標(biāo)記完后,將塊狀態(tài)表寫入FLASH的第一塊中。
圖5 塊狀態(tài)表建立流程圖Fig.5 Flowchart of the foundation of block state table
圖6 壞塊標(biāo)記時序圖Fig.6 Timing diagram of the marking of invalid block
FLASH是按塊擦除,按頁讀寫。在FPGA中用Verilog語言設(shè)計狀態(tài)機完成對FLASH的操作。對每一塊Block操作之前需要根據(jù)塊狀態(tài)表判斷當(dāng)前塊是否有效,如果為壞塊,則把當(dāng)前塊跳躍過去;如果為有效塊,則按頁進行讀寫操作,以讀數(shù)據(jù)流程為例,如圖7所示。塊狀態(tài)表有效地防止了對壞塊的操作,保證數(shù)據(jù)的完整不丟失。
圖7 讀取數(shù)據(jù)流程圖Fig.7 Flowchart of read data
采集系統(tǒng)的軟件設(shè)計包括USB固件程序和USB主機控制軟件。CY7C68013芯片根據(jù)USB固件程序響應(yīng)USB請求、中斷處理、端點選擇及數(shù)據(jù)讀寫。CYPRESS公司為USB主機提供了通用控制函數(shù)庫CyAPI.lib,主機調(diào)用庫中接口函數(shù)便可完成與采集系統(tǒng)之間的數(shù)據(jù)傳輸。同時,CYPRESS公司還為USB芯片提供通用的驅(qū)動程序CYUSB.SYS,可以直接驅(qū)動USB芯片。
CYPRESS公司的開發(fā)包提供基本的USB固件程序開發(fā)包框架,其中頭文件介紹如下:fx2.h為頭文件定義EZ-USB的通用常量、宏、數(shù)據(jù)類型和庫函數(shù);fx2regs.h定義EZ-USB的寄存器聲明和位標(biāo)志;EZUSB.lib為EZ-USB的庫文件,提供和外部芯片的控制封裝;dscr.a51為匯編文件定義USB設(shè)備的各種描述符;syncdly.h為同步延時的宏定義,用于需要同步延時的寄存器。
開發(fā)包中的fw.c為USB固件程序的主文件,包括main函數(shù)、任務(wù)調(diào)度、SETUP命令處理等。periph.c完成USB的初始化和任務(wù)處理函數(shù):開發(fā)者在TD-Init函數(shù)里對CY7C68013芯片的寄存器進行配置,完成芯片的初始化;開發(fā)者可添加任務(wù)函數(shù),如產(chǎn)生采集系統(tǒng)啟動和停止等控制信號[4]。
本系統(tǒng)中啟用EP6為數(shù)據(jù)接收端點,配置大小為1024 byte,傳輸模式為異步全自動模式。USB固件程序經(jīng)I2C總線存儲到EEPROM中,系統(tǒng)上電后自動加載到片內(nèi)RAM。
USB主機控制軟件是采用MFC設(shè)計的一種應(yīng)用程序,主要完成上位機對USB設(shè)備的檢測、系統(tǒng)啟動、數(shù)據(jù)傳輸、停止采集及系統(tǒng)復(fù)位等操作。EZ-USB FX2LP系列芯片的CyAPI控制類函數(shù)定義了詳盡的控制接口。MFC利用類的方法把API函數(shù)根據(jù)用途進行分類封裝,通過分類管理實現(xiàn)對同類函數(shù)的調(diào)用,從而實現(xiàn)采集系統(tǒng)的控制和通信。主機控制軟件界面如圖8所示。
圖8 主機控制軟件界面Fig.8 Interface of host control software
采集系統(tǒng)經(jīng)USB傳輸線連接到主機后,主機控制軟件檢測USB設(shè)備是否連接,并讀取設(shè)備描述符如廠商標(biāo)號、產(chǎn)品標(biāo)號及設(shè)備名稱。檢測完設(shè)備后,輸入所需的樣本數(shù),啟動數(shù)據(jù)傳輸。主機發(fā)送啟動采集命令到USB設(shè)備,設(shè)備響應(yīng)命令,將CY7C68013芯片IO管腳PA0電平置低,FPGA檢測該管腳為低時,啟動采集。將采集到的數(shù)據(jù)經(jīng)USB總線寫入主機硬盤,實現(xiàn)對數(shù)據(jù)的實時采集與流盤。當(dāng)采集完成時,主機程序提示采集已完成。同樣,主機發(fā)送停止采集命令到USB設(shè)備,將PA0電平置高,FPGA檢測到該電平時進入空閑狀態(tài),即停止采集。
GPS信號是由直接序列擴頻碼對載頻進行二相調(diào)制的CDMA信號[5]。直接序列擴頻碼包括粗/截獲碼(C/A碼)和精密碼(P碼),SPS用戶使用C/A碼。GPS系統(tǒng)在軌衛(wèi)星32顆,每顆衛(wèi)星有各自專門的擴頻碼。為從GPS信號中解調(diào)出衛(wèi)星導(dǎo)航電文,必須得到C/A碼的碼相位和載波多普勒頻移這兩個重要參數(shù)[6]。采集到的數(shù)據(jù)通常含有多顆衛(wèi)星信號,每顆衛(wèi)星的C/A碼相位和載波多普勒頻率各不相同。捕獲過程即是找到每顆衛(wèi)星的C/A碼相位和載波多普勒頻率。圖9所示為采集數(shù)據(jù)中3號GPS衛(wèi)星捕獲結(jié)果。跟蹤過程根據(jù)捕獲到的C/A碼相位和載波多普勒頻率實現(xiàn)本地信號與輸入信號的精確同步,如圖10所示,碼相位與載波相位已經(jīng)鎖定,I路輸出為導(dǎo)航數(shù)據(jù),Q路輸出只包含噪聲。
圖9 捕獲結(jié)果Fig.9 Result of acquisition
圖10 導(dǎo)航數(shù)據(jù)Fig.10 Navigation data
本文設(shè)計的GPS數(shù)據(jù)采集系統(tǒng)可實現(xiàn)采集數(shù)據(jù)的實時流盤,也可作為非實時傳輸系統(tǒng)將采集數(shù)據(jù)暫存在FLASH中。采用雙緩沖技術(shù),有效地解決了采集系統(tǒng)中數(shù)據(jù)丟失的問題。該系統(tǒng)基于USB總線,具有較高的傳輸速率,系統(tǒng)工作穩(wěn)定,便于維護和升級,廣泛應(yīng)用于采集GPS中頻信號,在GPS接收機開發(fā)、產(chǎn)品化過程中發(fā)揮了重要的作用。
[1] 楊秋波.基于SE4100L設(shè)計GPS接收機射頻前端電路[J].電子技術(shù),2007(z3):115-116.YANG Qiu-bo.The Design of Radio Frequency Front Circuit of GPS Receiver Based on SE4100L[J].Electronic Technology,2007(z3):115-116.(in Chinese)
[2] 倪明輝,周軍,楊庚.USB在FPGA控制的高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].計算機測量與控制,2006,14(2):268-271.NI Ming-hui,ZHOU Jun,YANG Geng.Application of USB in High Speed Data Acquisiton System Controlled by FP GA[J].Computer Measurement&Control,2006,14(2):268-271.(inChinese)
[3] 秦麗,何慧珠,張會新.基于USB2.0的通用FLASH存儲器檢測系統(tǒng)設(shè)計[J].電測與儀表,2008,45(4):61-64.QIN Li,HE Hui-zhu,ZHANG Hui-xin.Design of universal check and measure system for flash based on USB2.0[J].Electrical Measurement&Instrumentation,2008,45(4):61-64.(in Chinese)
[4] 徐夏,雷明.基于CY7C68013的數(shù)據(jù)通信系統(tǒng)設(shè)計[J].微計算機信息,2009,25(17):198-200.XU Xia,LEI Ming.Design of data communication system based on CY7C68013[J].Microcomputer Information,2009,25(17):198-200.(in Chinese)
[5] Elliott D Kaplan.GPS原理與應(yīng)用[M].邱致和,王萬義,等,譯.北京:電子工業(yè)出版社,2002:52-59.Elliott D Kaplan.Understanding GPS Principles and Applcation[M].Translated by QIU Zhi-he,WANG Wan-yi,et al.Beijing:Publishing House of Electronics Industry,2002:52-59.(in Chinese)
[6] James Bao-Yen Tsui.GPS軟件接收機基礎(chǔ)[M].陳軍,潘高峰,等,譯.北京:電子工業(yè)出版社,2007:108-153.James Bao-Yen Tsui.Fundamentals of Global Positioning System Receivers A Software Approach[M].Translated by CHEN Jun,PAN Gao-feng,et al.Beijing:Publishing House of Electronics Industry,2007:108-153.(in Chinese)