中國電子科技集團公司第54研究所 陳建國
在設(shè)備的應(yīng)用過程中,監(jiān)控模塊作為必不可少的組成部分,其操作的便利性可以很直觀的體現(xiàn)在用戶面前。因此設(shè)計一款接口豐富,運行高效的嵌入式監(jiān)控平臺尤為重要。豐富監(jiān)控平臺的各種接口,可以滿足其應(yīng)用的多場景化,這不僅可以避免更多的重復(fù)工作,降低新的開發(fā)風(fēng)險還可以大大提高設(shè)備的研發(fā)效率,縮短開發(fā)周期。
傳統(tǒng)的單片機、ARM等芯片外部接口和片內(nèi)存儲單元資源有限,很難滿足監(jiān)控平臺的多接口需求和程序運行高效需求。而隨著FPGA芯片性能的不斷提高及應(yīng)用場景的廣泛性,以片上可編程系統(tǒng)技術(shù)為核心的嵌入式系統(tǒng)在眾多應(yīng)用領(lǐng)域嶄露頭角[1],Altera公司推出的SOPC(System On Programmable Chip)是一種靈活、高效的Soc解決方案,是一種新的軟硬件協(xié)同設(shè)計的系統(tǒng)設(shè)計技術(shù)。它將處理器、存儲器、UART、PLL、I/O接口等功能模塊集成在一個FPGA上,構(gòu)成一個可編程的Soc[2]。本文采用的基于Nios II的軟硬件平臺解決方案是能夠快速地設(shè)計并實現(xiàn)可配置、可裁減的軟核系統(tǒng)[3],此軟核系統(tǒng)具有一系列的優(yōu)點,如配置靈活,成本低廉,開發(fā)者可以在軟核中靈活添加需要的功能模塊,但成本不會隨之增加,性價比極高。
在以往的以太網(wǎng)解決方案中,軟件開發(fā)人員需要在CPU中進行TCP/IP協(xié)議棧的代碼開發(fā),開發(fā)周期長,難度大,不易維護,調(diào)試繁瑣。本方案中,為了實現(xiàn)以太網(wǎng)接口功能,我們采用WIZnet公司開發(fā)的網(wǎng)絡(luò)接口芯片W5300來實現(xiàn),其內(nèi)部集成了MAC和TCP/IP協(xié)議棧,只需在軟核中添加W5300接口模塊即可,避免了設(shè)計人員對代碼的開發(fā),也可提高程序運行的穩(wěn)定性。
本設(shè)計中的嵌入式監(jiān)控硬件平臺選用了一款FPGA芯片作為主控芯片,并采用SOPC builder建立自己需要的軟核。系統(tǒng)功能組成框圖如圖1所示。系統(tǒng)選用一片配置芯片EPCS64,用來存儲FPGA的配置文件。內(nèi)存擴展方面,該平臺外擴一片SDRAM芯片以增加系統(tǒng)的內(nèi)存空間,便于運行較大規(guī)模的程序。系統(tǒng)外掛一片大容量的FLASH,滿足系統(tǒng)文件的掉電存儲需求。設(shè)備的參數(shù)信息在EEPROM中進行存儲。通信接口方面,該平臺提供標準的RS232、RS485串口、IIC接口、10/100M網(wǎng)口;此外該硬件監(jiān)控平臺還提供豐富的用戶交互接口。用戶可通過按鍵和顯示屏對設(shè)備進行操作,平臺還可根據(jù)喇叭和指示燈接口實時了解設(shè)備的狀態(tài)。
圖1 系統(tǒng)功能組成框圖
圖2 NiosII軟核系統(tǒng)組成圖
NiosII嵌入式處理器是由美國的Altera公司推出的第二代32位軟核處理器。與第一代相比,性能有了極大的提升,此外程序代碼的可移植性大大增強, 利用SOPC Builder工具,可以快捷地構(gòu)建所需要的軟核系統(tǒng),在SOPC的系統(tǒng)組件中集成了大部分常用的IP接口,開發(fā)人員只需將其添加到所建的軟核系統(tǒng)中,并能對接口的一些常用屬性進行配置[4];對少部分SOPC元件庫內(nèi)不支持的IP功能模塊,SOPC也有很好的可擴展性,用戶可以將硬件語言開發(fā)的邏輯單元作為新的IP核添加到系統(tǒng)元件庫中,便于在后續(xù)的開發(fā)中進行應(yīng)用。本系統(tǒng)的軟核組成圖如圖2所示。
首先構(gòu)建的是C P U模塊Nios II Processor,對于軟核的類型,本方案選擇了Nios II/f快速型軟核處理器,該處理器功能最多,速度最快。系統(tǒng)除CPU外還包括SDRAM、EPCS、KEY、RS485、RS232、指示燈LED、SPEAKER、FLASH、FLASH、TIMER、IIC、EE-PROM、OLED、W5300_INT、網(wǎng)絡(luò)接口芯片W5300、JTAG_UART等接口。IIC和W5300接口 在SOPC元件庫中沒有對應(yīng)的IP核,是需要我們自定義的模塊,可以根據(jù)其應(yīng)用要求使用硬件語言描述其接口,然后添加到元件庫中進行應(yīng)用。SDRAM是內(nèi)存接口,支持程序的運行。EPCS是FPGA配置芯片的接口,用于存儲FPGA的配置文件。JTAG_UART作為系統(tǒng)調(diào)試串口,可以在開發(fā)時用來打印調(diào)試信息。 KEY和OLED是用戶的操作接口,系統(tǒng)還提供強大的通信接口,通信方式包括 IIC接口、RS485串口、RS232串口、網(wǎng)口,可以滿足工程需要。在數(shù)據(jù)存儲方面,系統(tǒng)提供除了IIC接口將設(shè)備參數(shù)存儲于EEPROM中外,還提供FLASH接口進行大容量的數(shù)據(jù)存儲。此外,系統(tǒng)提供了聲光指示如LED燈和喇叭來實時體現(xiàn)設(shè)備的狀態(tài)。在軟核中添加完上述的功能模塊后,可以利用SOPC Builder對系統(tǒng)中各模塊的基地址進行自動分配,如果有特殊的需要,對基地址也可以進行手動設(shè)置,點擊相應(yīng)的地址,進行手動修改就可以了。分配完基地址以后,要對各模塊的中斷號進行分配,采用同樣的方法即可對中斷號進行自動分配,如果有特殊需要,也可手動更改中斷的優(yōu)先級。但要注意,中斷號不可重復(fù),否則編譯時,系統(tǒng)會報錯。
為了提升設(shè)備響應(yīng)用戶操作的實時性,在軟件框架的設(shè)計上我們采用分層模塊化設(shè)計方案,頂層的應(yīng)用程序完全獨立于底層的驅(qū)動程序,底層程序?qū)?shù)據(jù)進行實時接收,通過中間層進行數(shù)據(jù)處理后,傳送給應(yīng)用層進行數(shù)據(jù)應(yīng)用。這樣開發(fā)人員在進行應(yīng)用層的編碼時,可以不依賴于底層函數(shù),這樣可以提高程序開發(fā)的效率。另外,程序框架進行分層處理后,對代碼的移植,裁剪,重用都比較靈活。本方案軟件框架可以分為應(yīng)用服務(wù)層、數(shù)據(jù)處理層和接口驅(qū)動層。應(yīng)用服務(wù)層可以響應(yīng)用戶的鍵盤操作并提供相應(yīng)的界面顯示;數(shù)據(jù)處理層負責對系統(tǒng)數(shù)據(jù)進行實時高效的處理,并對軟件運行中的各種數(shù)據(jù)進行維護,完成各程序之間數(shù)據(jù)的共享;接口驅(qū)動層負責各接口的底層驅(qū)動,實現(xiàn)各模塊的數(shù)據(jù)收發(fā)及模塊的頂層應(yīng)用需求。軟件的體系結(jié)構(gòu)如圖3所示。
圖3 軟件體系結(jié)構(gòu)
在以太網(wǎng)實現(xiàn)方案中如果采用軟件方法進行實現(xiàn),編碼人員要熟練TCP/IP協(xié)議棧,編碼和調(diào)試工作難度很大,并且網(wǎng)絡(luò)協(xié)議相對復(fù)雜,這必然會影響程序運行的穩(wěn)定性,因此直接采用硬件協(xié)議棧實現(xiàn)網(wǎng)絡(luò)接入具有設(shè)計簡單、應(yīng)用靈活的特點[5]。在本設(shè)計中我們選用了一款專用網(wǎng)絡(luò)芯片W5300,此芯片內(nèi)部集成10/100M以太網(wǎng)控制器,MAC和TCP/IP協(xié)議棧。這樣通過采用專用硬件芯片來實現(xiàn)以太網(wǎng)接入,可以極大提高程序的穩(wěn)定性,降低開發(fā)人員的開發(fā)難度。
在SOPC Builder的系統(tǒng)元件庫中沒有提供W5300的網(wǎng)絡(luò)接口,我們可以根據(jù)W5300的使用手冊,通過硬件描述語言,編寫我們自己的邏輯模塊,然后將該模塊添加到元件庫中。在添加組件時,通過Component Editor對信號進行設(shè)置, W5300組件信號圖如圖4所示。
圖4 W5300組件信號圖
另外要對信號周期進行設(shè)置,根據(jù)W5300的時序要求和系統(tǒng)采用的時鐘,設(shè)置readwait為6個周期,writewait為5個周期其余默認。
將代碼按照軟件設(shè)計方案進行實現(xiàn),并下載到硬件監(jiān)控平臺上,重新上電后進行系統(tǒng)測試。配合顯示屏、按鍵和相關(guān)的接口測試工具檢驗測試結(jié)果。通過網(wǎng)口測試工具,給監(jiān)控平臺發(fā)送一幀網(wǎng)絡(luò)數(shù)據(jù),程序接收到網(wǎng)路數(shù)據(jù)后將數(shù)據(jù)顯示到顯示屏上。再通過按鍵操作,將接收到的數(shù)據(jù)發(fā)送到網(wǎng)口測試工具上。通過此方法可驗證顯示功能、按鍵功能、網(wǎng)口收發(fā)功能正常。同理,配合串口測試工具,可驗證RS232串口、RS485串口收發(fā)正常。IIC接口的測試通過示波器進行驗證,外部程序給IIC接口發(fā)送一個字節(jié),程序接收到數(shù)據(jù)后,顯示到屏幕界面上,再通過按鍵操作,給IIC接口發(fā)送一個字節(jié)的數(shù)據(jù),通過外部的示波器驗證了發(fā)送數(shù)據(jù)的正確性。程序中通過定時器,每秒鐘向數(shù)據(jù)存儲器中寫入一個字節(jié)的數(shù)據(jù),下一秒再從存儲器中將數(shù)據(jù)讀出,將數(shù)據(jù)顯示在屏幕上,同時每秒鐘控制指示燈進行閃爍,喇叭進行鳴響。通過上述系統(tǒng)的測試,驗證了監(jiān)控平臺硬件和軟件系統(tǒng)的正確性。硬件穩(wěn)定可靠,軟件運行流暢。
本文以FPGA芯片為核心,提出了基于Nios II的嵌入式監(jiān)控平臺的設(shè)計方案,該方案提供豐富的設(shè)備監(jiān)控接口和優(yōu)異的軟件體系結(jié)構(gòu),豐富的接口可以滿足眾多工程的需要,可以應(yīng)用到多個工程場景,避免對硬件進行重新開發(fā)。軟件方面進行分層處理,可以根據(jù)需要很方便的進行代碼移植和裁剪,提高軟件開發(fā)效率。