楊仕東,黃建國,李 力
(電子科技大學自動化工程學院,四川 成都 611731)
由于經緯度與海拔關系,衛(wèi)星通信地球站ODU基本設置因地而異,氣象條件也會影響信號接收(或發(fā)送)質量,若設備需要在不同的頻段使用,那更是需要不一致的發(fā)射與接收頻點。如果各個地區(qū)的地球站都采用訂制生產的方式,不僅耗費極大人力財力,也對其維護帶來極大的困難。所以ODU的工作狀態(tài)應是可調控的。為了對ODU的工作狀態(tài)進行設置,該文設計了此終端[1]。
通過在FPGA中嵌入Nios II軟核來處理數據,控制不同模塊的動作。相對于其他的處理器,Nios II軟核主要有以下3個優(yōu)勢:(1)靈活性。通過將CPU、外設、存儲器接口和定制硬件外設進行組合,達到每一新設計的特殊要求。(2)低成本。通過將Nios II嵌入到低成本的cyclone II FPGA中,此時FPGA不僅可以具有諸如Intel,ARM等處理器的功能,還可以完成系統(tǒng)邏輯設計的任務。(3)功能強大的開發(fā)工具。通過Quartus II中的SOPC Builder可以在幾分鐘內搭建一個系統(tǒng),通過使用Nios II集成開發(fā)環(huán)境(IDE),加速了軟件的開發(fā)。
系統(tǒng)總體結構如圖1所示,Nios II控制模塊作為該設計的核心模塊,控制著系統(tǒng)的各個模塊的動作;通信模塊完成ODU與監(jiān)控終端的通信,實現兩者之間的數據交換;人機界面完成對ODU工作狀態(tài)的相關參數的設置和顯示;故障判斷是對通信控制模塊讀回的數據進行判斷后定位ODU的故障位置。
Nios II處理器具有完善的開發(fā)軟件,Quartus開發(fā)軟件中提供的SOPC Builder開發(fā)工具,設計人員使用它生成Nios II處理器。然后根據需要,從SOPC Builder的通用外設和接口庫中添加設備,而且可以利用軟件中的用戶邏輯接口向導,將自制的外設添加在Nios II處理器系統(tǒng)中,給其分配地址空間、DMA、中斷等資源并生成相應的硬件驅動模塊。能直接向應用程序提供可使用的接口,配置完成后通過Generate進行系統(tǒng)模塊的生成,并同時自動產生每個模塊的HDL文件和一些必要的邏輯來協調系統(tǒng)中各部件的工作。
圖1 系統(tǒng)總體結構框圖
Nios II控制模塊完成以下功能:
(1)識別按鍵模塊的按鍵信息。輸入端口向Nios II CPU核發(fā)出中斷請求后,CPU核響應中斷請求后接受按鍵模塊送來的按鍵值。
(2)根據按鍵值進行相應的操作。例如,使能通信模塊發(fā)送不同的數據。
(3)完成參數的計算。通信模塊傳遞過來的部分數據需經過計算后才能進行顯示和修改。
該文在SOPC Builder中主要添加了以下組件:
2.1.1 Nios II CPU核
Nios II CUP核有快速的(Nios ii/f)、經濟的(Nios ii/e)和標準的(Nios ii/s)3 種,每種都針對不同的性能范圍和成本。為節(jié)約CPU核所占FPGA的資源,該設計選擇經濟的。
2.1.2 PIO組件
SOPC Builder提供的PIO組件可以完成像控制Led、從開關或鍵盤輸入采集數據、控制顯示設備、與片外器件通信等任務。
PIO組件可以通過SOPC Bulider配置向導來設置不同的功能。該設計中的PIO設置了如下3種不同的工作方式:(1)輸入中斷方式;(2)輸入非中斷方式;(3)輸出方式。
2.1.3 JTAG UART核
SOPC Build中提供的JTAG UART核實現基于FPGA的嵌入式系統(tǒng)與主機之間的串行通信。該設計添加這個組件主要為了方便調試。
該設計的軟件部分是針對Nios II處理器,該處理器具有完善的軟件開發(fā)套件,包括編譯器、集成開發(fā)環(huán)境(IDE)、JTAG 調試器、實時操作系統(tǒng)(RTOS)和TCP/IP協議棧。因此,此次軟件的編寫是在Altera公司所提供的軟件開發(fā)套件Nios II IDE 6.0中進行,采用C語言編寫。
軟件設計的流程圖如圖2所示。當Nios II軟核接收到按鍵模塊的中斷請求后,接收其發(fā)送過來的按鍵值,Nios II再依據按鍵值完成對ODU工作狀態(tài)的設置或監(jiān)控。其中工作狀態(tài)的設置主要完成發(fā)射頻率、接受/發(fā)射衰減等參數的設置。而工作狀態(tài)的監(jiān)控主要完成對頻綜、發(fā)射和接收等模塊的溫度、電流和電壓進行監(jiān)控[1]。
圖2 Nios II軟件流程圖
在程序運行過程中,首先執(zhí)行INITPIO函數,初始化PIO的相關寄存器的值,完成中斷服務函數的聲明。在按鍵中斷產生的時候,程序跳到中斷服務函數KEY_ISR中去,對按鍵中斷標志位置一,并清除邊沿捕獲寄存器的值,為下次中斷產生做準備。完成相應任務后,程序回到中斷之前的位置,完成剩下的任務。下面介紹軟件中4個重要的函數:
(1)INITPIO。初始化PIO,完成PIO的中斷屏蔽寄存器、沿捕獲寄存器等的值的設定。
(2)KEY_ISR。中斷服務函數,在該函數中完成中斷標志位置一和清除邊沿捕獲寄存器的值。
(3)ALT_IRQ_REGISTER。此函數用于聲明中斷服務函數(ISR),在軟件使用ISR之前一定要先聲明。
(4)IOWR_ALTERA_AVALON_PIO_IRQ_MASK。使能中斷函數,是按位來使能的,比如0×f表示4位全部使能,而0×7表示使能低3位中斷。
通信控制邏輯采用的是RS232接口標準的UART[2]。為了簡化電路,增加設計的靈活性,該文在FPGA上設計了UART功能模塊,實現了UART的部分功能[3],滿足了設計的要求。
在RS232接口標準中定義了邏輯“1”、邏輯“0”電壓級數、以及標準的傳輸速率和連接器類型。信號大小在±3~±15V之間。RS232規(guī)定接近零的電平是無效的,邏輯“1”規(guī)定為負電平,邏輯“0”規(guī)定為正電平。由于核心邏輯處理系統(tǒng)FPGA使用的是TTL邏輯電平,所以RS232串口信號需要通過RS232信號收發(fā)器做電平轉換后方可被FPGA正確識別。該設計通過芯片MAX211E來實現這種轉換。
人機界面包括按鍵輸入和數據顯示兩部分。
按鍵模塊采用了矩陣式鍵盤的設計方案[4],主要需要完成以下3個任務:(1)按鍵識別,常用的識別方法有行掃描法和線反轉法;(2)按鍵譯碼;(3)去抖動。根據以上提到的任務,該文用Verilog語言編寫了按鍵識別模塊的程序[5-6],具體設計流程如圖3所示。
圖3 按鍵模塊程序流程圖
由于該設計所應用的環(huán)境條件比較惡劣,所以要求顯示器具有較寬的操作和儲存溫度范圍。故采用avago的HDSP-2112 LED字符顯示器產品,該產品的操作溫度范圍為-55~+70℃。存儲溫度則可達-55~+100℃,完全滿足該設計所要求的溫度范圍。HDSP-2112具有8位顯示字符,每一個顯示字符由5×7點陣組成。在該LED內部包括8字節(jié)的字符RAM、一個字節(jié)的動態(tài)RAM、16×7個字節(jié)的用戶自定義字符(UDC)的字模存儲RAM、一個UDC地址寄存器和一個控制寄存器。對LED的操作實際上是其內部的寄存器的操作,由于LED內有ASCII譯碼器,可以把128個ASCII碼所對應的字符顯示出來。因此,需要數據編碼模塊是把Nios II輸出的待顯示的數編譯ASCII的形式。
LED有23根有用的信號線,FPGA通過這些信號線來驅動LED的工作。其中A[4..0]是地址信號線,通過它來選擇內部不同的寄存器;CLK是時鐘輸入(CLS=0)或輸出腳(CLS=1);CLS用于選擇內部時鐘源或者是外部時鐘源;CE是片選信號,在其上升沿時LED讀入數據線上的數據;RD和WR是讀寫控制信號線,通過其來控制LED的讀寫。對LED進行寫操作的時序如圖4所示,FPGA就是依據圖4對LED進行寫操作的。
該文所設計的監(jiān)控終端能非常方便地對ODU工作狀態(tài)進行設置,對其故障位置進行定位。由于采用的嵌入式Nios II軟核,因而具有設計靈活、實時性強、可重構等優(yōu)點,對產品的功能擴展提供了很大的便利。該設備已應用于某國產ODU中,應用效果良好。
[1] 王忠銘,宋愛民.小型衛(wèi)星地面站ODU測控平臺設計[J].微計算機信息,2008(24):53-54.
[2] 張艷玲,吳思和,吳勇.小型衛(wèi)星地球站中ODU控制器的通信模塊設計[J].微電子學,2003(12):495-498.
[3] 夏宇聞.Verilog數字系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,2003.
[4]李廣軍,林水生.微機系統(tǒng)原理與接口技術[M].成都:成都電子科技大學,2005.
[5] 吳繼華,王誠.Altera FPGA/CPLD設計基礎篇[M].北京:人民郵電出版社,2005.
[6] 吳繼華,王誠.Altera FPGA/CPLD設計高級篇[M].北京:人民郵電出版社,2005.