摘 要: 實現(xiàn)了基于Nios Ⅱ軟核處理器的通信控制的設(shè)計,以Nios Ⅱ軟核作為中央處理器,利用FPGA的邏輯資源構(gòu)成片上可編程系統(tǒng)(SoPC)來實現(xiàn)光電設(shè)備的通信控制功能。設(shè)計實現(xiàn)了通過RS 422串口和通用IO口來實現(xiàn)對光電設(shè)備中各傳感器的通信控制和信息傳遞功能。該設(shè)計已成功應(yīng)用于某光電偵察設(shè)備,試驗證明,該通信控制性能穩(wěn)定,功能完善,在光電設(shè)備多傳感器的控制領(lǐng)域有著廣泛的應(yīng)用前景。
關(guān)鍵詞: 光電設(shè)備; 通信; Nios Ⅱ; RS 422; SoPC
中圖分類號: TN911.7?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2013)21?0021?02
機載光電偵察設(shè)備已經(jīng)成為直升機、無人機獲得精確全面的現(xiàn)場和目標(biāo)信息的核心裝備。目前機載光電設(shè)備主要裝載紅外和可見光傳感器,實現(xiàn)全天時圖像偵察,配合激光測距儀、伺服控制以及視頻跟蹤器實現(xiàn)對目標(biāo)的定位和自動跟蹤功能。而對整個系統(tǒng)而言,通信控制部分主要實現(xiàn)各傳感器和控制組件之間的信息傳遞。
1 通信控制系統(tǒng)設(shè)計
本設(shè)計構(gòu)建一個片上可編程系統(tǒng)(SoPC)來實現(xiàn)通信控制功能,采用SoPC實現(xiàn)通信系統(tǒng)與以往型號通信控制系統(tǒng)相比可以支持更多串口,能夠滿足多傳感器和控制需求。通信系統(tǒng)通過串口完成與可見光、紅外、激光、記錄儀、控制系統(tǒng)等之間的通信。
1.1 SoPC硬件開發(fā)
采用SoPC Builder GUI來定義硬件系統(tǒng)結(jié)構(gòu),配置部件以及如何指定部件相互連接,并生成系統(tǒng)。在本設(shè)計中,為實現(xiàn)系統(tǒng)通信需求,除配置Nios ⅡCPU外,還需配置的外設(shè)有RS 232、SRAM和PIO等。硬件開發(fā)環(huán)境可以創(chuàng)建高度定制的SoPC。圖1為開發(fā)生成的分組件Avalon總線連接圖。
1.2 CPU設(shè)置、RS 232設(shè)置
本控制系統(tǒng)中Nios Ⅱ處理器為標(biāo)準(zhǔn)型內(nèi)核(Nios Ⅱ/s),需要開發(fā)六個標(biāo)準(zhǔn)RS 232串口,來分別實現(xiàn)對操縱桿、紅外、可見光、激光和記錄儀等傳感器組件的通信控制。系統(tǒng)采用中斷響應(yīng)的方式來同時實現(xiàn)六個串口,表1為六個串口的中斷優(yōu)先級。
1.3 JTAG_UART設(shè)置
Nios Ⅱ處理器的JTAG調(diào)試模塊也是可配置的,根據(jù)系統(tǒng)需求,為Nios Ⅱ處理器配置適當(dāng)?shù)能浖{(diào)試功能。JTAG調(diào)試模塊對處理器的控制是非屏蔽的,而且在調(diào)試程序時也不需要軟件調(diào)試代理(Software Stub)來鏈接測試中的軟件程序。JTAG調(diào)試模塊收集的跟蹤數(shù)據(jù)存放在調(diào)試探針或片內(nèi)的存儲器中。該模塊主要提供以下功能:
將程序下載至存儲器;開始和停止執(zhí)行程序;設(shè)置斷點;硬件觸發(fā);捕獲跟蹤數(shù)據(jù)。
該模塊可以在軟件調(diào)試時通過,形成產(chǎn)品時去掉。
系統(tǒng)CPU和外設(shè)單元按上述步驟配置完成后,為每個外設(shè)分配一個惟一的基地址。最后,為 CPU設(shè)置復(fù)位和異常地址,本設(shè)計中,把復(fù)位和異常地址均設(shè)置為on_chip_memory,創(chuàng)建和編譯生成系統(tǒng)。編譯生成的頂層文件圖如圖2所示。
2 NiosⅡ IDE軟件設(shè)計
系統(tǒng)生成后,可直接使用NiosⅡIDE設(shè)計C應(yīng)用代碼,借助Altera提供的外設(shè)驅(qū)動程序和硬件抽象層,能夠快速、方便實現(xiàn)各項功能。
2.1 串口軟件編程
在本系統(tǒng)設(shè)計中,采用了軟件中斷的方式來響應(yīng)串口通信。設(shè)計六個外部中斷來實現(xiàn)對各分組件的控制。每一個中斷都有一個相應(yīng)的中斷服務(wù)函數(shù)(ISR)與之對應(yīng)。中斷發(fā)生時,軟件中斷會根據(jù)檢測到有效中斷級別,調(diào)用相應(yīng)的中斷服務(wù)函數(shù)。
ISR函數(shù)自行定義,不是HAL系統(tǒng)提供,函數(shù)與普通函數(shù)定義一樣,只是對ISR的函數(shù)原型有特定要求。ISR函數(shù)聲明如下:
void ISR_handler(void* context,alt_u32 id);
context:傳遞給ISR的形參;id:中斷優(yōu)先級別。
本設(shè)計中對六個硬串口中斷的ISR定義如下:
上位機ISR函數(shù):
void UartSW_interrupt(void *context,alt_u32 id);
紅外ISR函數(shù):
void UartIR_interrupt(void *context,alt_u32 id);
可見光ISR函數(shù):
void UartVL_interrupt(void *context,alt_u32 id);
激光ISR函數(shù):
void UartLA_interrupt(void *context,alt_u32 id);
記錄儀ISR函數(shù):
void UartJL_interrupt(void *context,alt_u32 id);
伺服(備份)ISR函數(shù):
void UartSF_interrupt(void *context,alt_u32 id)。
在各分組件ISR函數(shù)中,主要實現(xiàn)相應(yīng)各串口軟件中斷,接受各分組件的串口數(shù)據(jù),按通信協(xié)議完成對命令信息的解釋。其中在上位機中斷服務(wù)函數(shù)中,除完成對上位機發(fā)送命令的解釋外還同時完成對各串口數(shù)據(jù)的發(fā)送。
任何滿足ISR函數(shù)原型的函數(shù)都可以用做ISR,但不是任何滿足ISR函數(shù)原型的函數(shù)都是ISR,只用通過中斷注冊的函數(shù)才是ISR。
通過alt_irq_register ()函數(shù)實現(xiàn)中斷注冊,其函數(shù)原型如下所示:
int alt_irq_register(alt_u32 id,void* context,void(*handler)( void *context,alt_u32 id ));
id:中斷優(yōu)先級,表明所注冊的ISR是為哪個中斷優(yōu)先級的中斷服務(wù)的,中斷優(yōu)先級在SoPC Builder中分配;
context:為所注冊的ISR傳遞參數(shù),可以是NULL;
handler: 中斷服務(wù)函數(shù)ISR的指針。
本設(shè)計中對六個串口中斷的注冊函數(shù)分別為:
alt_irq_register(UART_SW_IRQ,NULL,UartSW_interrupt);
alt_irq_register(UART_OP_IRQ,NULL,UartVL_interrupt);
alt_irq_register(UART_IR_IRQ,NULL,UartIR_ interrupt);
alt_irq_register(UART_LA_IRQ,NULL,UartLA_interrupt);
alt_irq_register(UART_LA_IRQ,NULL, UartSF_interrupt);
2.2 PIO接口的軟件編程
對于升降機構(gòu)的IO控制相對比較簡單,采用API函數(shù)IOWR_ALTERA_AVALON_PIO_DATA()來實現(xiàn)高低電平的輸出,程序如下:
IOWR_ALTERA_AVALON_PIO_DATA(LOAD_BASE,0X0);
IOWR_ALTERA_AVALON_PIO_DATA(LOAD _BASE, 0X1)
LOAD_BASE為升降機構(gòu)IO口地址。
3 結(jié) 論
本通信控制設(shè)計已在某型號光電偵察設(shè)備上成功應(yīng)用,其對各分組件的控制功能、信息傳遞功能均達(dá)到設(shè)備技術(shù)需求。通過該通信控制器的設(shè)計,有效地提高了光電偵察設(shè)備中的通信控制能力,解決了以往型號中串口RS 422數(shù)量對分組件控制的限制。使得通信控制系統(tǒng)得到了大幅度的提高。
參考文獻(xiàn)
[1] 王剛.基于FPGA的SoPC嵌入式系統(tǒng)設(shè)計與典型實例[M].北京:電子工業(yè)出版社,2009.
[2] 蔡偉.Nios Ⅱ軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.
[3] 舒芳.基于SoPC的光纖通道控制器仿真驗證研究[D].武漢:華中科技大學(xué),2007.
[4] 李晉.基于SoPC的遠(yuǎn)程圖像監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2008.
[5] 于海,姚啟桂,虞躍,等.基于SoPC的狀態(tài)監(jiān)測裝置的嵌入式軟硬件協(xié)同設(shè)計[J].現(xiàn)代電子技術(shù),2012,35(22):1?3.
[6] 張君,吳巨紅.基于SoPC的寬帶雷達(dá)偵察信號分選[J].現(xiàn)代電子技術(shù),2011,34(22):20?23.