《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于SoPC汽車安全監(jiān)控系統(tǒng)設(shè)計
基于SoPC汽車安全監(jiān)控系統(tǒng)設(shè)計
摘要: 介紹基于Altera公司SoPC的汽車安全監(jiān)控系統(tǒng),,利用嵌入在FPGA中的Nios處理器軟核CPU,配合GPS和GSM系統(tǒng),,對汽車的停放和運行狀態(tài)進行監(jiān)測和控制,。文中詳細(xì)介紹系統(tǒng)的硬件組成,并給出對GPS和GSM的C語言管理程序,。
Abstract:
Key words :

       引 言

       基于SoPC汽車安全監(jiān)控系統(tǒng)采用Altera公司最新的SoPC(可編程片上系統(tǒng))解決方案——Nios處理器軟核為核心,,配合GPSGSM系統(tǒng),對汽車的停放和運行狀態(tài)進行監(jiān)控,。系統(tǒng)監(jiān)測,、記錄和儲存汽車在行駛過程中的各種數(shù)據(jù),一旦出現(xiàn)安全問題,,立即采用GSM無線通信方式通知相關(guān)人員和單位,,并隨時發(fā)送通過GPS獲得的汽車位置等數(shù)據(jù),為問題的解決提供及時,、準(zhǔn)確和可靠的信息,必要時通過GSM對汽車進行遠(yuǎn)程控制,。

       基于SoPC的汽車安全監(jiān)控系統(tǒng)可廣泛應(yīng)用于汽車的防盜,、日常維護和交通事故的處理,為車輛故障提供有效的測試手段,。

       1 系統(tǒng)硬件組成

     設(shè)計采用Altera公司的SoPC開發(fā)工具,。系統(tǒng)的開發(fā)包括硬件和軟件兩大部分,。使用SoPC Builder生成Nios嵌入式處理器,Nios嵌入式處理器開發(fā)工具允許用戶配置一個或多個Nios CPU,,從標(biāo)準(zhǔn)庫中添加外圍設(shè)備,,綜合處理自定義系統(tǒng),與Quartus II設(shè)計軟件一起編譯系統(tǒng),。軟件開發(fā)的步驟是:利用SoPC Builder生成的軟件文件,,用文本編輯器編寫匯編語言或C/C++源程序,用GNUPro軟件開發(fā)工具進行程序設(shè)計,、連編和調(diào)試,。GNUPro將源程序連編(包括匯編/編譯和連接)成可執(zhí)行程序,通過下載電纜對可執(zhí)行程序進行調(diào)試和運行,。Quartus II設(shè)計軟件提供全面有效的設(shè)計環(huán)境,,將設(shè)計、綜合,、布局和驗證以及第三方EDA工具接口集成在一個無縫的環(huán)境中,。利用集成在Quartus II 3.0中的SoPCbuilder可以創(chuàng)建自己的Nios CPU系統(tǒng)。Nios是Altera公司開發(fā)的16/32位嵌入式處理器軟核,。

* ??蒲谢痦椖?ldquo;基于SOPC的汽車安全監(jiān)控系統(tǒng)”資助。

       Altera公司推出了新一代多種系列FPGA,,本設(shè)計選用低成本的Cyclone系列器件EP1C12,,其具有12 060個邏輯單元,52個M4K RAM塊,,239 616個RAM位和2個鎖相環(huán),,最大用戶I/O引腳249。系統(tǒng)硬件組成框圖由Nios系統(tǒng)和外部設(shè)備兩部分組成,,如圖1所示,。

系統(tǒng)硬件組成框圖


       Nios系統(tǒng)包括CPU(Nios)、存儲器(memory),、定時器(timer),、總線和并/串行接口(key_pio、led_pio,、lcd_pio,、ccs_pio、uart_0和uart_1)等,,并/串行接口分別實現(xiàn)與鍵盤,、LED和LCD顯示器、汽車中控系統(tǒng)以及GPS和GSM系統(tǒng)等外部設(shè)備的連接。Nios系統(tǒng)設(shè)計和設(shè)計結(jié)果分別如圖2和圖3所示,。
 

Nios系統(tǒng)設(shè)計

Nios系統(tǒng)設(shè)計結(jié)果



       Nios系統(tǒng)同鍵盤,、LED和LCD顯示器、汽車中控系統(tǒng)以及GPS系統(tǒng)等外部設(shè)備的連接比較簡單,,GSM系統(tǒng)的連接較為復(fù)雜,,如圖4所示。
 

TC35i GSM系統(tǒng)連接圖


       整個系統(tǒng)的工作過程是:來自汽車中控系統(tǒng)和GPS系統(tǒng)的信息可以顯示在LED和LCD顯示器上,,也可以通過GSM系統(tǒng)進行無線發(fā)送,。用戶可以通過鍵盤對系統(tǒng)進行控制,也可以通過GSM系統(tǒng)對汽車中控系統(tǒng)進行遠(yuǎn)程無線控制,。

       2 系統(tǒng)軟件組成

       系統(tǒng)軟件主要由主程序,、GPS管理子程序和GSM管理子程序等部分組成。

       主程序完成系統(tǒng)的初始化,,以及鍵盤,、LED、LCD顯示器和汽車中控系統(tǒng)的操作管理等,。

       GPS管理子程序主要負(fù)責(zé)從GPS系統(tǒng)接收時間和位置信息,。

       請求GPS系統(tǒng)返回ASCII時間位置信息的二進制命令為:

       @@EqmC

       其中,m為0時,,輸出一次 響應(yīng)信息(查詢),,m為1~255時,每1~255 s輸出一次響應(yīng)信息(連續(xù)),;C為校驗和(Eqm按字節(jié)“異或”),;為回車(十六進制0d);為換行(十六進制0a),;命令長度為8字節(jié),。

       命令的響應(yīng)信息為: 
@@Eq,mm,dd,yy,hh,mm,ss,dd,mm.mmmm,n,ddd,mm.mmmm,w,         shhhhh.h,sss.s,hhh.h,m,t,dd.d,nn,rrrr,aa,CCC

       日期:mm是月(01~12),dd是日(01~31),,yy是年(99~19),。

       世界時間(UTC):hh是時(00~23),mm是分(00~59),,ss是秒(00~59),。

       緯度:dd是度(00~90),mm.mmmm是分(00~59.9999),,n是方向(N是北,,S是南)。

      經(jīng)度:ddd是度(000~180),,mm.mmmm是分(00~59.9999),,w是方向(W是西,,E是東),。
信息長度是96字節(jié),。

      

 

對應(yīng)的管理子程序為:

 

       int eq[8]={'@','@','E','q',1,'C',0x0d,0x0a};
       void gps_txd(int data[], int n) {
       volatile int m,sum=0;
       for(m=0;m       while(~na_uart_0->np_uartstatus & 0x40);
       //等待發(fā)送準(zhǔn)備好
       if(m!=n-3) {
       sum^=data[m];//計算校驗和
       na_uart_0->np_uarttxdata=data[m];//發(fā)送數(shù)據(jù)
       }else
       na_uart_0->np_uarttxdata=sum; //發(fā)送校驗和
       }
       }
       int gps,gps_buf[46];//定義全局變量
       void gps_rxd(int context) {//接收中斷服務(wù)程序
       gps_buf[gps]=na_uart_0->np_uartrxdata; //接收數(shù)據(jù)
       if(gps_buf[gps++]=='q') gps="0"; //數(shù)據(jù)定位
       if(gps>46) gps="46";//忽略無用數(shù)據(jù)
       }

       GSM管理子程序主要負(fù)責(zé)GSM系統(tǒng)的數(shù)據(jù)收發(fā)管理。

       GSM系統(tǒng)的數(shù)據(jù)收 發(fā)以短信形式進行,,選擇短信格式的AT命令為AT+CMGF,,收發(fā)短信的AT命令分別為AT+CMGR和AT+CMGS,對應(yīng)的管理子程序為:

       cmgf[20]={'A','T','+','C','M','G','F','=','1',0x0d};//短信格式void gsm_txd(int data[], int n) {
       volatile int m;
       for(m=0;m       while(~na_uart_1->np_uartstatus & 0x40);
       //等待發(fā)送準(zhǔn)備好na_uart_1->np_uarttxdata=data[m]; //發(fā)送數(shù)據(jù)
       }
       }
       int gsm="2",gsm_buf[18]={'A','T'};
       void gsm_rxd(int context) {
       //接收中斷服務(wù)程序
       gsm_buf[gsm]=na_uart_1->np_uartrxdata; //接收數(shù)據(jù)
       if(gsm_buf[gsm]=='T') gsm="1";
       //數(shù)據(jù)定位
       if(++gsm==18) gsm="2";
       }


       3 設(shè)計調(diào)試方法和設(shè)計結(jié)果

       在Quartus II中使用SignalTapII嵌入式邏輯分析儀可以實時觀測系統(tǒng)中節(jié)點的信號數(shù)據(jù),。被觀察的信號可以多進制數(shù)值顯示也可以用波形顯示,,但它需要占用芯片更多的資源,因此在對某個模塊的測試結(jié)束后,,可以在設(shè)置中把SignalTapII嵌入式邏輯分析儀取消,,并重新編譯生成以減少LE資源占用量。

       實際試用結(jié)果表明:基于SoPC的汽車安全監(jiān)控系統(tǒng)運行正常,,定位準(zhǔn)確,,數(shù)據(jù)傳輸可靠,操作管理方便,。如果再配備上GIS(地理信息系統(tǒng)),,整個系統(tǒng)將如虎添翼。



參考文獻(xiàn)
1 郭書軍,,王玉花,,葛紉秋.嵌入式處理器原理及應(yīng)用.北京:清華大學(xué)出版社,2004
2 Motorola. M12 Oncore Users Guide Supplement, 2000
3 Siemens. TC35 Siemens Cellular Engines Hardware Interface Description, 2001
4 Siemens. TC35 Siemens Cellular Engines AT Command Set, 2002
郭書軍:副教授,,主要研究方向為數(shù)據(jù)通信及其信號處理和嵌入式系統(tǒng),。

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