張建喜,汪 峰,李金海,閻躍鵬
(中國科學院 微電子研究所,北京 100029)
在GPS高動態接收機研制中,要對捕獲、跟蹤及定位等算法進行仿真及驗證,優化算法性能。為得到算法仿真及測試所需的真實數據,需要數據采集系統對GPS信號進行實時采集。目前比較通用的數據采集系統只支持采集信號的實時流盤或暫存在FLASH中的單一模式。本文設計了一套既可實現數據實時傳輸又可在特殊環境下將數據暫存到FLASH中的GPS數據采集系統。
外設與主機的通信接口一般基于PCI總線、RS-232串行總線或通用串行總線(Universal Serial Bus,USB)。PCI總線雖具有較高的傳輸速率,支持“即插即用”,但存在插拔麻煩、擴展槽有限的缺點。RS-232串行總線雖連接簡單,但是傳輸速度慢,且主機串口數目有限。USB具有速率高、易擴展、安裝方便等特點,已成為主流的數據傳輸總線。本文所設計的采集系統基于USB,有效地克服了其它總線的缺點。
GPS數據采集硬件系統主要包括GPS射頻前端、FPGA控制模塊、USB數據傳輸單元(CY7C68013)、FLASH 存儲模塊及EEPROM,系統結構示意圖如圖1所示。
GPS信號經天線接收送至射頻前端,在射頻芯片中經ADC將模擬中頻信號轉化為數字中頻信號送入FPGA中,FPGA對數字信號進行實時處理并緩存到RAM中,在采集系統與主機連接的情況下將數據批量地發送到CY7C68013的FIFO中,通過FIFO將數據送至主機,主機對數據進行實時流盤,完成對GPS信號的采集。在一些特殊環境下,采集系統與主機無法連接,此時,需將RAM中的數據暫時存儲到FLASH中,以后再從FLASH中讀出數據,完成特殊環境下的信號采集。
GPS射頻前端采用SiGe半導體公司的SE4110L芯片,該芯片具有集成度高、功耗低、性能高等優點,廣泛應用于GPS接收機中。SE4110L包括帶通濾波器,低噪聲放大器,自動增益控制器,模數轉換器(ADC)等[1]。L1頻段(1575.42GHz)的GPS信號下變頻到模擬中頻經ADC后進行2 bit量化變成數字中頻信號,采樣頻率為16.368MHz,每個采樣點包括符號位Sign和幅度位Mag。采集系統的工作時鐘也為16.368MHz,每4個采樣點拼接成一個字節,則系統實時傳輸速率達4 Mbit/s。
FPGA作為系統的控制核心,分別與射頻前端、CY7C68013及NAND FLASH接口,產生CY7C68013及NAND FLASH所需的控制信號,完成對信號的采集、數據緩存/傳輸、CY7C68013讀/寫控制、NAND FLASH塊狀態信息管理及FLASH讀寫等功能。
2.2.1 FPGA與 CY7C68013、NAND FLASH的接口設計
FPGA作為主端控制從端CY7C68013芯片,接口管腳連接如圖2所示。其中,IFCLK為CY7C68013同步模式下接口時鐘;FLAGA 、FLAGB、FLAGC、FLAGD為FIFO的工作狀態標志位。在FPGA可控的輸入信號中,SLCS為片選信號;SLOE為輸入使能信號;SLRD為讀使能信號;SLWR為寫使能信號;PKTEND為數據包結束信號,當發送比FIFO小的數據包時,FPGA可通過發送PKTEND信號完成;FIFOADR[1:0]為端點緩沖區選擇信號,00選擇端點EP2,01選擇端點EP4,10選擇端點EP6,11選擇端點EP8;FD[15:0]為FPGA與FIFO之間的數據總線,數據寬度為16位。

圖2 FPGA與CY7C68013之間的接口Fig.2 Interface between FPGA and CY7C68013
NAND FLASH與其它存儲器不同,沒有指定的地址總線和命令總線,只有通用的總線,通過命令鎖存使能和地址鎖存使能,將命令和地址寫入命令寄存器和地址寄存器,來完成FLASH的讀、寫及擦除等各項操作。接口設計如圖3所示。

圖3 FPGA與FLASH之間的接口Fig.3 Interface between FPGA and FLASH
2.2.2 雙緩沖
在采集系統中,普遍存在丟失數據(以下簡稱丟數)現象。由于該系統采樣率和數據傳輸速率非常高,就會導致USB主機沒有及時響應而發生丟數現象,嚴重影響系統的可靠性。為了解決上述問題,采用雙緩沖技術。在FPGA內開辟大塊RAM,分成大小相等的兩部分,進行乒乓操作,使讀出RAM的頻率為寫入RAM頻率的2倍,這樣可以在數據量不變的前提下增加數據包之間的時間間隔,為USB主機預留出更多的響應時間。
在USB傳輸單元中采用Cypress公司 EZ-USB FX2LP系列中的CY7C68013芯片。EZ-USB FX2LP系列芯片集成8051內核及串行接口引擎(SIE),SIE能夠完成數據解碼、位填充、差錯控制等與USB協議相關的工作,減輕增強型8051的負擔,降低了USB固件程序的開發難度[2]。
該系統中選擇CY7C68013的從FIFO(Slave FIFO)工作模式,如圖4所示。在這種工作模式下,外圍控制電路可像對普通FIFO一樣對CY7C68013的端點緩沖區進行讀寫,而不需要8051內核參與,極大提高了傳輸速度。在USB協議中端點為數據的接收器和發送器。CY7C68013中的EP0是唯一的控制端點,大小為64 byte,所有的控制命令通過EP0傳輸。EP2、EP4、EP6、EP8為數據傳輸端點,其中EP2和EP6最大為1024 byte,EP4和EP8最大為512 byte。

圖4 Slave FIFO工作模式Fig.4 Slave FIFO mode
CY7C68013集成I2C總線協議,可外接EEPROM等片外存儲器件。芯片上電時,如果檢測到I2C總線上連接EEPROM,且其首字節為0xC2,則EEPROM提供USB設備描述符及USB固件程序。EEPROM具有掉電時內部數據不丟失的優點,這樣,系統在上電時可以自動加載固件程序到片內RAM。
在采集系統無法與USB主機連接的情況下,采集到的GPS信號要暫存在FLASH中。NAND型FLASH具有容量大、改寫速度快及數據非易失性的特點,在業界得到了廣泛應用。本系統中的NAND FLASH采用Samsung公司的K9K8G08U0A,存儲單元為(1G+32M)×8 bit,共由8192個 block 組成,每個block包含64個page,每個page含有2 k+64個字節,其中2 kbyte為數據存儲區,用來存儲用戶數據;剩余64 byte為輔助存儲區,用來保存壞塊標志位、ECC碼等狀態信息。
NAND型FLASH芯片在出廠時會存在一塊或多塊壞塊以及在使用過程中也會出現壞塊,這在NAND結構的FLASH中無法避免。因為FLASH中的每個block相互隔離,壞塊的存在不影響對其它塊的操作。但是,壞塊會導致數據丟失及誤讀,影響采集數據的有效性和完整性。因此,在進行數據讀寫及擦除操作前需要將壞塊剔除,防止數據的丟失,保證系統的可靠性。在FPGA中建立塊狀態表,將FLASH中的每個block的狀態加以標記,整個流程如圖5所示。FLASH芯片在出廠時會對壞塊進行標記,每一塊的第一頁和第二頁的第2048 byte為非0XFF表示塊無效,0XFF表示塊有效[3]。這些塊信息在讀取之前可能被誤擦除,因此在進行壞塊檢測時,首先判斷當前塊是否有效,若為無效塊則直接在塊狀態表中標記為壞塊;若為有效塊則進行擦除,讀取狀態寄存器IO第0位是否為0,如果為0在塊狀態表中標志為有效塊,否則標記為壞塊,同時在第一頁的第2048 byte寫入0XAA,其時序圖如圖6所示。對FLASH中的每塊狀態標記完后,將塊狀態表寫入FLASH的第一塊中。

圖5 塊狀態表建立流程圖Fig.5 Flowchart of the foundation of block state table

圖6 壞塊標記時序圖Fig.6 Timing diagram of the marking of invalid block
FLASH是按塊擦除,按頁讀寫。在FPGA中用Verilog語言設計狀態機完成對FLASH的操作。對每一塊Block操作之前需要根據塊狀態表判斷當前塊是否有效,如果為壞塊,則把當前塊跳躍過去;如果為有效塊,則按頁進行讀寫操作,以讀數據流程為例,如圖7所示。塊狀態表有效地防止了對壞塊的操作,保證數據的完整不丟失。

圖7 讀取數據流程圖Fig.7 Flowchart of read data
采集系統的軟件設計包括USB固件程序和USB主機控制軟件。CY7C68013芯片根據USB固件程序響應USB請求、中斷處理、端點選擇及數據讀寫。CYPRESS公司為USB主機提供了通用控制函數庫CyAPI.lib,主機調用庫中接口函數便可完成與采集系統之間的數據傳輸。同時,CYPRESS公司還為USB芯片提供通用的驅動程序CYUSB.SYS,可以直接驅動USB芯片。
CYPRESS公司的開發包提供基本的USB固件程序開發包框架,其中頭文件介紹如下:fx2.h為頭文件定義EZ-USB的通用常量、宏、數據類型和庫函數;fx2regs.h定義EZ-USB的寄存器聲明和位標志;EZUSB.lib為EZ-USB的庫文件,提供和外部芯片的控制封裝;dscr.a51為匯編文件定義USB設備的各種描述符;syncdly.h為同步延時的宏定義,用于需要同步延時的寄存器。
開發包中的fw.c為USB固件程序的主文件,包括main函數、任務調度、SETUP命令處理等。periph.c完成USB的初始化和任務處理函數:開發者在TD-Init函數里對CY7C68013芯片的寄存器進行配置,完成芯片的初始化;開發者可添加任務函數,如產生采集系統啟動和停止等控制信號[4]。
本系統中啟用EP6為數據接收端點,配置大小為1024 byte,傳輸模式為異步全自動模式。USB固件程序經I2C總線存儲到EEPROM中,系統上電后自動加載到片內RAM。
USB主機控制軟件是采用MFC設計的一種應用程序,主要完成上位機對USB設備的檢測、系統啟動、數據傳輸、停止采集及系統復位等操作。EZ-USB FX2LP系列芯片的CyAPI控制類函數定義了詳盡的控制接口。MFC利用類的方法把API函數根據用途進行分類封裝,通過分類管理實現對同類函數的調用,從而實現采集系統的控制和通信。主機控制軟件界面如圖8所示。

圖8 主機控制軟件界面Fig.8 Interface of host control software
采集系統經USB傳輸線連接到主機后,主機控制軟件檢測USB設備是否連接,并讀取設備描述符如廠商標號、產品標號及設備名稱。檢測完設備后,輸入所需的樣本數,啟動數據傳輸。主機發送啟動采集命令到USB設備,設備響應命令,將CY7C68013芯片IO管腳PA0電平置低,FPGA檢測該管腳為低時,啟動采集。將采集到的數據經USB總線寫入主機硬盤,實現對數據的實時采集與流盤。當采集完成時,主機程序提示采集已完成。同樣,主機發送停止采集命令到USB設備,將PA0電平置高,FPGA檢測到該電平時進入空閑狀態,即停止采集。
GPS信號是由直接序列擴頻碼對載頻進行二相調制的CDMA信號[5]。直接序列擴頻碼包括粗/截獲碼(C/A碼)和精密碼(P碼),SPS用戶使用C/A碼。GPS系統在軌衛星32顆,每顆衛星有各自專門的擴頻碼。為從GPS信號中解調出衛星導航電文,必須得到C/A碼的碼相位和載波多普勒頻移這兩個重要參數[6]。采集到的數據通常含有多顆衛星信號,每顆衛星的C/A碼相位和載波多普勒頻率各不相同。捕獲過程即是找到每顆衛星的C/A碼相位和載波多普勒頻率。圖9所示為采集數據中3號GPS衛星捕獲結果。跟蹤過程根據捕獲到的C/A碼相位和載波多普勒頻率實現本地信號與輸入信號的精確同步,如圖10所示,碼相位與載波相位已經鎖定,I路輸出為導航數據,Q路輸出只包含噪聲。

圖9 捕獲結果Fig.9 Result of acquisition

圖10 導航數據Fig.10 Navigation data
本文設計的GPS數據采集系統可實現采集數據的實時流盤,也可作為非實時傳輸系統將采集數據暫存在FLASH中。采用雙緩沖技術,有效地解決了采集系統中數據丟失的問題。該系統基于USB總線,具有較高的傳輸速率,系統工作穩定,便于維護和升級,廣泛應用于采集GPS中頻信號,在GPS接收機開發、產品化過程中發揮了重要的作用。
[1] 楊秋波.基于SE4100L設計GPS接收機射頻前端電路[J].電子技術,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控制的高速數據采集系統中的應用[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存儲器檢測系統設計[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的數據通信系統設計[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原理與應用[M].邱致和,王萬義,等,譯.北京:電子工業出版社,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軟件接收機基礎[M].陳軍,潘高峰,等,譯.北京:電子工業出版社,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)