目前廣泛應用的MIMU/GPS組合導航系統的實現形式,依應用領域的不同而復雜多樣,但是導航計算機板卡負責的工作則相對固定,其主要包括:采集各路傳感器輸入信號;濾波、融合計算;將計算結果輸送給機電控制子系統;提供各種人機交互接口,如LCD,鍵盤等。 長期以來,針對各種應用領域或相同領域的不同場合,由于對控制計算能力、接口電路數據吞吐能力等要求的差異,我們習慣于把功能相對固定的導航計算機子系統設計成不同的實現形式,這就造成了對硬件重復研發,相應軟件重復調整等低效率現狀。 SOPC(System On Programmable Chip)技術是Altera公司提出的一種靈活高效的SOC解決方案。它的宗旨是將處理器、存儲器、I/O口、硬件協處理器或加速器、一般的用戶邏輯等系統的設計需要的功能模塊都集成到一個FPGA芯片里,構建一個可編程的片上系統。它具有硬件上靈活裁剪、擴充和在線升級的優點,而且市場上有豐富的IP 核資源可選,能成功地解決上述問題。 1.組合導航系統硬件電路的實現 硬件框圖如圖1所示,它主要包括以Nios處理器為主體的片內邏輯(圖中虛線包圍部分,下文簡稱片內邏輯)、MIMU與GPS數據采集電路和人機交互接口電路三個部分組成。 1.1片內邏輯的設計 本文采用了Altera公司Cyclone系列FPGA EP1C12Q240、NIOS軟核處理器及其開發和仿真工具(包括 SOPC Builder,DSP Builder,Simulink,Quatus II等)。在設計中利用的IP核里,比如Nios核,片內Boot ROM,用于FIFO的片內雙口RAM,定時器,Avalon片上總線,Avalon三態總線橋,SDRAM接口,JTAG UART等都來自SOPC Builder軟件,在此不必贅述。下面重點討論其他IP核及其接口電路的設計和功用。 圖 1 基于Nios的SOPC組合導航系統設計框圖 6 DSP協處理器 通過定制一些傳統的DSP運算指令或反復出現的計算密集型算法指令,來硬件加速CPU的處理能力。IP核可以通過硬件描述語言自己編寫,也可以借助Simulink和DSP Builder來輔助實現。 7 UART 基于RS232通信協議的串行通路接口。UART-0負責傳遞主控設備的命令(如復位、初始化等)、輸入主控設備提供的電子地圖的庫信息,輸出處理結果等。UART-1則負責導入GPS OEM板的數據。該IP核來自于SOPC Builder軟件。 8 A/D接口 除了片選信號,A/D接口時序基本遵循SPI協議,因此選用了SOPC中相應的IP, 而對于片選信號,在系統中額外添加一個通用I/O口來控制之。這樣每次對A/D的操作分兩步進行:先置低GPIO,再進行SPI操作。 9 同步采樣控制邏輯 負責控制MIMU和GPS信號的同步采集,為數據融合提供準確的輸入。該IP核由設計者自行編制,詳述請見MIMU和GPS信號采集系統的設計部分。 10 VGA控制 基于Avalon流模式的VGA控制器。它主要由VGA時序發生器,FIFO存儲器,Avalon流模式接口組成。該IP由設計者用VHDL語言自行編制,人機接口部分將詳述之。 11 ATA橋 連接CF卡,保存電子地圖信息庫、中英文字符點陣庫等海量信息。該IP核來自于SOPC Builder軟件。 12 GPIO 最常規的外設控制接口,本系統的LCD、LED、鍵盤都是采用該接口進行連接,時序上的驅動控制則是由軟件實現的。該IP核來自于SOPC Builder軟件。 13 ASMI EPCS4系列配置芯片的專門接口。該IP核來自于SOPC Builder軟件。與之相連的Flash存貯空間中有如下內容:一部分是FPGA的配置文件。另一部分作為常規程序存儲器用。采用此方案可以省去片外專門的程序存儲Flash,充分利用了配置芯片的資源。由于串行器件的帶寬限制,我們可以通過將主程序裝載入SDRAM中運行來提高程序的運行速度。 1.2 MIMU和GPS信號采集系統的設計 MIMU的信號采集工作由微型慣性測量組合、采樣/保持器AD1154、多路開關MAX4540、A/D 轉換器完成;而GPS的信號采集工作則主要由GPS接收機完成。接收機采用了Jupiter OEM 板,可輸出位置、速度、偽距、偽距率、載波相位、衛星星歷等數據。系統啟動期間,主控設備通過UART-0向片上邏輯發送命令并獲取信息反饋,對系統導航參數進行初始化;接收的初始化數據可由片上邏輯的UART-1傳遞給GPS接收機,以實現GPS的快速初始化和快速鎖定衛星. 我們所討論的MIMU和GPS信號的同步,是指需要同步的兩個數據源在原始信息更新時刻對齊,而不是在經過計算或A/D轉換延時等不同通信路徑傳輸后,在輸出結果的時刻對齊。GPS接收機解碼轉換后輸出的秒同步脈沖(1PPS,每秒一個脈沖)是與UTC秒點對齊的。接收機嚴格地在每個1PPS脈沖邊沿進行一次偽距、偽距變化率、載波相位、GPS 標準授時、定位等測量,其脈沖沿為GPS數據更新時刻。我們把1PPS脈沖接入FPGA中,由同步采樣控制邏輯保證脈沖到來的同時產生一個SSP(同步采樣脈沖,synchronous sampling pulse),實現MIMU和GPS數據在整秒時刻同步。當然,MIMU數據更新率遠小于1秒,我們可以把1PPS脈沖作為FPGA內部的1秒定時器的標準同步觸發時刻,通過邏輯倍頻產生相應頻率的SSP輸出。在GPS信號丟失的情況下,FPGA內部的秒定時器則作為MIMU采樣信號的時基標準。 1.3人機交互接口的設計 七段數碼管負責標識系統的工作狀態;而鍵盤除了作為初始化參數輸入的備用接口外,還可以負責切換LCD、VGA顯示器等的顯示模式;液晶屏則相應地顯示輸入與輸出的導航參數;VGA接口形象的輸出電子地圖背景、車輛當前位置及運行軌跡等信息。 excalibur.h 頭文件定義了七段數碼管、按鍵數據結構指針na_seven_seg_pio 和na_button_pio通過對指針所指PIO數據結構內的np_piodata數據寄存器操作,來讓數碼管顯示特定的字符或判斷是否有按鍵按下,以及是哪個按鍵。 本文采用型號Optrex 16027的LCD屏,頭文件pio_lcd16027.h定義了九個控制子程序,通過這些程序完成對LCD的控制。標準VGA畫面大小是640*480,每秒60幀左右。像素時鐘高達25.175MHZ。如果每個點都由Nios軟件掃描實現,那么在40ns的間隔內,最多能讓共作在50MHZ的CPU執行兩條指令。所以,我們采用DMA控制器在流模式VGA控制器和SRAM之間建立一條DMA傳送通道,讓硬件完成像素信息的自動讀取,緩解了CPU的工作壓力。VGA時序發生器的設計源程序由VHDL語言實現,下面是部分示意代碼: 2.系統工作原理 系統上電后,串行配置器件EPCS4配置FPGA;然后NIIOS啟動,運行片內ROM中的Bootloader。Bootloader根據選擇端的控制選擇工作模式,模式分為兩種:調試模式和運行模式。在調試模式下,Bootloader啟動GERMS監控程序,我們可以對系統進行開發調試。在運行模式下,Bootloader將EPCS4中存儲的主程序裝載到SRAM中全速運行。然后,程序指針復位指向SRAM中的系統主程序。主程序先初始化并配置系統,然后開始正常工作。 3.軟件設計 由于本控制系統架構龐大,我們在軟件設計時使用實時操作系統microC/OS作為軟件內核。該操作系統具有內核小,代碼公開等優點,而且Altera公司提供了關于此系統移植方面比較詳細的技術文檔,操作起來簡單易行。系統軟件分為三個層次設計:一、驅動層。主要包括了UART驅動,LED驅動,鍵盤驅動,LCD驅動,VGA驅動,SPI總線設備驅動等等。二、內核層。包括系統任務和內核調度。三、應用層。 任務主要有數據采集任務,數據融合任務,數據濾波任務,導航計算任務,顯示任務等。其中還有一些用于控制管理性質的任務,包括錯誤捕捉任務及其相應的處理方程序等。 系統的核心是操作系統的內核調度,負責整個軟件的運作。系統相關的層面是以任務為單位的系統模塊,這些任務模塊負責市實現導航系統的正常運行,負責系統模塊的配置控制和差錯檢測,響應處理用戶的操作。硬件相關的層面以驅動任務為單位,它們作為操作系統和硬件系統中介,直接負責對硬件設備的驅動控制。軟件分層封裝,用任務調度的方法來實現,可以提高軟件設計的效率,降低設計風險,利于移植和升級。 4.結論 NIOS符合工業技術的潮流,即硬件設計軟件化。此設計方法可以對硬件做全面細致的模擬仿真,減少硬件設計的錯誤,有效降低了開發成本,增強了產品的競爭力。而且由于它屬于單片解決方案,不僅提高系統的魯棒性,還可以有效地保護開發者的知識產權。 |