中國電子科技集團公司第54研究所 陳建國
在設備的應用過程中,監控模塊作為必不可少的組成部分,其操作的便利性可以很直觀的體現在用戶面前。因此設計一款接口豐富,運行高效的嵌入式監控平臺尤為重要。豐富監控平臺的各種接口,可以滿足其應用的多場景化,這不僅可以避免更多的重復工作,降低新的開發風險還可以大大提高設備的研發效率,縮短開發周期。
傳統的單片機、ARM等芯片外部接口和片內存儲單元資源有限,很難滿足監控平臺的多接口需求和程序運行高效需求。而隨著FPGA芯片性能的不斷提高及應用場景的廣泛性,以片上可編程系統技術為核心的嵌入式系統在眾多應用領域嶄露頭角[1],Altera公司推出的SOPC(System On Programmable Chip)是一種靈活、高效的Soc解決方案,是一種新的軟硬件協同設計的系統設計技術。它將處理器、存儲器、UART、PLL、I/O接口等功能模塊集成在一個FPGA上,構成一個可編程的Soc[2]。本文采用的基于Nios II的軟硬件平臺解決方案是能夠快速地設計并實現可配置、可裁減的軟核系統[3],此軟核系統具有一系列的優點,如配置靈活,成本低廉,開發者可以在軟核中靈活添加需要的功能模塊,但成本不會隨之增加,性價比極高。
在以往的以太網解決方案中,軟件開發人員需要在CPU中進行TCP/IP協議棧的代碼開發,開發周期長,難度大,不易維護,調試繁瑣。本方案中,為了實現以太網接口功能,我們采用WIZnet公司開發的網絡接口芯片W5300來實現,其內部集成了MAC和TCP/IP協議棧,只需在軟核中添加W5300接口模塊即可,避免了設計人員對代碼的開發,也可提高程序運行的穩定性。
本設計中的嵌入式監控硬件平臺選用了一款FPGA芯片作為主控芯片,并采用SOPC builder建立自己需要的軟核。系統功能組成框圖如圖1所示。系統選用一片配置芯片EPCS64,用來存儲FPGA的配置文件。內存擴展方面,該平臺外擴一片SDRAM芯片以增加系統的內存空間,便于運行較大規模的程序。系統外掛一片大容量的FLASH,滿足系統文件的掉電存儲需求。設備的參數信息在EEPROM中進行存儲。通信接口方面,該平臺提供標準的RS232、RS485串口、IIC接口、10/100M網口;此外該硬件監控平臺還提供豐富的用戶交互接口。用戶可通過按鍵和顯示屏對設備進行操作,平臺還可根據喇叭和指示燈接口實時了解設備的狀態。

圖1 系統功能組成框圖

圖2 NiosII軟核系統組成圖
NiosII嵌入式處理器是由美國的Altera公司推出的第二代32位軟核處理器。與第一代相比,性能有了極大的提升,此外程序代碼的可移植性大大增強, 利用SOPC Builder工具,可以快捷地構建所需要的軟核系統,在SOPC的系統組件中集成了大部分常用的IP接口,開發人員只需將其添加到所建的軟核系統中,并能對接口的一些常用屬性進行配置[4];對少部分SOPC元件庫內不支持的IP功能模塊,SOPC也有很好的可擴展性,用戶可以將硬件語言開發的邏輯單元作為新的IP核添加到系統元件庫中,便于在后續的開發中進行應用。本系統的軟核組成圖如圖2所示。
首先構建的是C P U模塊Nios II Processor,對于軟核的類型,本方案選擇了Nios II/f快速型軟核處理器,該處理器功能最多,速度最快。系統除CPU外還包括SDRAM、EPCS、KEY、RS485、RS232、指示燈LED、SPEAKER、FLASH、FLASH、TIMER、IIC、EE-PROM、OLED、W5300_INT、網絡接口芯片W5300、JTAG_UART等接口。IIC和W5300接口 在SOPC元件庫中沒有對應的IP核,是需要我們自定義的模塊,可以根據其應用要求使用硬件語言描述其接口,然后添加到元件庫中進行應用。SDRAM是內存接口,支持程序的運行。EPCS是FPGA配置芯片的接口,用于存儲FPGA的配置文件。JTAG_UART作為系統調試串口,可以在開發時用來打印調試信息。 KEY和OLED是用戶的操作接口,系統還提供強大的通信接口,通信方式包括 IIC接口、RS485串口、RS232串口、網口,可以滿足工程需要。在數據存儲方面,系統提供除了IIC接口將設備參數存儲于EEPROM中外,還提供FLASH接口進行大容量的數據存儲。此外,系統提供了聲光指示如LED燈和喇叭來實時體現設備的狀態。在軟核中添加完上述的功能模塊后,可以利用SOPC Builder對系統中各模塊的基地址進行自動分配,如果有特殊的需要,對基地址也可以進行手動設置,點擊相應的地址,進行手動修改就可以了。分配完基地址以后,要對各模塊的中斷號進行分配,采用同樣的方法即可對中斷號進行自動分配,如果有特殊需要,也可手動更改中斷的優先級。但要注意,中斷號不可重復,否則編譯時,系統會報錯。
為了提升設備響應用戶操作的實時性,在軟件框架的設計上我們采用分層模塊化設計方案,頂層的應用程序完全獨立于底層的驅動程序,底層程序對數據進行實時接收,通過中間層進行數據處理后,傳送給應用層進行數據應用。這樣開發人員在進行應用層的編碼時,可以不依賴于底層函數,這樣可以提高程序開發的效率。另外,程序框架進行分層處理后,對代碼的移植,裁剪,重用都比較靈活。本方案軟件框架可以分為應用服務層、數據處理層和接口驅動層。應用服務層可以響應用戶的鍵盤操作并提供相應的界面顯示;數據處理層負責對系統數據進行實時高效的處理,并對軟件運行中的各種數據進行維護,完成各程序之間數據的共享;接口驅動層負責各接口的底層驅動,實現各模塊的數據收發及模塊的頂層應用需求。軟件的體系結構如圖3所示。

圖3 軟件體系結構
在以太網實現方案中如果采用軟件方法進行實現,編碼人員要熟練TCP/IP協議棧,編碼和調試工作難度很大,并且網絡協議相對復雜,這必然會影響程序運行的穩定性,因此直接采用硬件協議棧實現網絡接入具有設計簡單、應用靈活的特點[5]。在本設計中我們選用了一款專用網絡芯片W5300,此芯片內部集成10/100M以太網控制器,MAC和TCP/IP協議棧。這樣通過采用專用硬件芯片來實現以太網接入,可以極大提高程序的穩定性,降低開發人員的開發難度。
在SOPC Builder的系統元件庫中沒有提供W5300的網絡接口,我們可以根據W5300的使用手冊,通過硬件描述語言,編寫我們自己的邏輯模塊,然后將該模塊添加到元件庫中。在添加組件時,通過Component Editor對信號進行設置, W5300組件信號圖如圖4所示。

圖4 W5300組件信號圖
另外要對信號周期進行設置,根據W5300的時序要求和系統采用的時鐘,設置readwait為6個周期,writewait為5個周期其余默認。
將代碼按照軟件設計方案進行實現,并下載到硬件監控平臺上,重新上電后進行系統測試。配合顯示屏、按鍵和相關的接口測試工具檢驗測試結果。通過網口測試工具,給監控平臺發送一幀網絡數據,程序接收到網路數據后將數據顯示到顯示屏上。再通過按鍵操作,將接收到的數據發送到網口測試工具上。通過此方法可驗證顯示功能、按鍵功能、網口收發功能正常。同理,配合串口測試工具,可驗證RS232串口、RS485串口收發正常。IIC接口的測試通過示波器進行驗證,外部程序給IIC接口發送一個字節,程序接收到數據后,顯示到屏幕界面上,再通過按鍵操作,給IIC接口發送一個字節的數據,通過外部的示波器驗證了發送數據的正確性。程序中通過定時器,每秒鐘向數據存儲器中寫入一個字節的數據,下一秒再從存儲器中將數據讀出,將數據顯示在屏幕上,同時每秒鐘控制指示燈進行閃爍,喇叭進行鳴響。通過上述系統的測試,驗證了監控平臺硬件和軟件系統的正確性。硬件穩定可靠,軟件運行流暢。
本文以FPGA芯片為核心,提出了基于Nios II的嵌入式監控平臺的設計方案,該方案提供豐富的設備監控接口和優異的軟件體系結構,豐富的接口可以滿足眾多工程的需要,可以應用到多個工程場景,避免對硬件進行重新開發。軟件方面進行分層處理,可以根據需要很方便的進行代碼移植和裁剪,提高軟件開發效率。