在高溫、高壓、強放射性等惡劣環境下,由于測量者不能長期置身其中,使得測控非常困難。在Nios II軟核CPU上移植μ c/OS-II實時操作系統和TCP/IP協議棧,容易實現網絡通信,為遠程測控提供了條件。以此為基礎設計的嵌入式系統具有結構小巧、實時性強、穩定性高等特點,在工業測控領域中應用前景廣泛。 1 遠程測控系統的硬件架構 遠程測控系統的硬件架構如圖1所示。從圖中可以看出,Nios II軟核CPU及各種所需的外設IP均通過SOPCBui lder集成在一片FPGA中,構成本系統所需硬件的可重構部分,實現真正的可編程片上系統(SOPC)。 1.1 I P核設計 為了在低成本情況下完成預定功能,選擇了Cyclone FPGA系列器件中的EP1C6。EP1C6無論從邏輯資源還是存儲器均能滿足設計要求。在本系統中,我們設計或選用了如下主要的IP核。 1.1.1 UART帶Avalon接口的通用異步接收器/發送器。UART內核執行RS-232協議,它為FPGA上的嵌入式系統和外部設備提供了串行字符流的通信方式。帶Avalon接口的JTAG-UART內核還提供Nios CPU系統到PC機的連接通路,通過JTAG-UART在PC機上調試NiosCPU所需要的程序,并通過監控程序對整個系統的運行進行控制。 1.1.2 GPIO。并行輸入/輸出內核。它提供Avalon從控制器端口到通用I/O口間的映射接口。該IP核是常規的外設控制接口。通過GPIO,對內控制SOPC系統中的其他部分,對外充當并行I/O接口,讀取開關量,對LED、LCD等外設進行控制。 1.1.3 SDRAM 該IP核是外部存儲器SDRAM的控制接口。通過它完成SDRAM的時序控制。軟件設計中, SDRAM的時序控制對用戶是完全透明的。 1.1.4 EPCS。帶Avalon接口的EPCS設備控制器內核。該IP核允許Nios II系統訪問EPCS串行配置芯片,該芯片主要用于存儲程序代碼或一些非易失性數據。 1.1.5三態總線橋。該IP核是Avalon和Avalon-TriBUS總線以及Avalon和Wishbone總線的橋接控制器,用于連接兩種不同總線。考慮有些外設需要自行開發I2CIP核,這些外設不能直接連到Avalon總線上,需要通過橋接控制器。 1.2 檢測和執行模塊 由于遠程測控系統設計的目的不同,該模塊選用的IP核也不完全相同。SOPC Builder自帶的IP庫中并不包含I2C配置接口模塊,該模塊需要根據配制芯片的寄存器特點和功能進行專門設計,并以I2C核的形式通過SOPCBuilder連接到系統的Avalon總線上。 1.3 傳輸接口模塊 本系統有三種數據傳輸方式:串口、USB接口和以太網接口。串口、USB接口通過UART接Avalon總線。以太網接口芯片選用了SMSC公司的LAN91c11 1芯片,該芯片內部集成了以太網介質訪問(MAC)及物理層收發器(PHY),支持10/1OOM全雙工傳輸模式、自動協商等功能。LAN91C111芯片通過FPGA內的適配器模塊連接到EP1C6內部的Avalon總線上,從而實現系統接入Internet。 2 遠程測控系統的軟件體系 本系統有兩大功能:數據的遠程采集及傳送。考慮到使用互聯網進行遠程數據傳輸的復雜性,在設計中使用嵌入式操作系統和TCP/IP協議棧是必然選擇。 軟件系統體系結構如圖2所示。主要包括嵌入式操作系統的移植;網絡協議棧的實現;應用級代碼編寫等部分。為了方便用戶編程,Nios II IDE提供了設備驅動程序,即硬件抽象層(HAL)系統庫。HAL應用程序接口(API)與ANSI C標準庫綜合在一起,可以使用類似C語言的庫函數來訪問硬件設備或文件,如printf()、fopen()等,而無須關心底層硬件的實現細節。 2.1 移植μC/OS-II和LWIP μC/OS-II是一種可移植、可固化、占先式多任務實時操作系統內核。其規模較小、實時性和可靠性較高,Nios II集成開發環境(IDE)對μ C/OS-II具有良好的支持,故μC/OS-II是嵌入式操作系統的首選。它通過為每個任務分配單獨的任務堆棧來保存任務工作環境,提供任務管理和調度服務。 輕量級網絡協議(Lightweight IP,LWIP)是TCP/IP協議棧的一種實現,它是一種專門針對嵌入式系統應用而設計的網絡通信協議,由于LWIP實現的關鍵在于削減代碼大小和內存消耗,但可以完成傳統的TCP/IP協議的大部分功能,通常只需要大約40K的ROM和幾十K的RAM即可運行,在網絡協議棧初始化后,使用標準套接字API創建新任務訪問網絡協議棧。 2.2 通信服務器 本任務通過sys_thread_new()函數創建,作為服務器*約定的端口,等待遠程主機的連接,提取遠程主機的命令,通過消息隊列將所獲得的命令發送到測控任務。LWIP提供了標準的Berkeley套接字編程界面,這個界面提供了三種類型,這里使用了流式套接字,這是一個面向連接、可靠的數據傳輸服務,數據無差錯、無重復地發送,按發送順序接收。通常服務器接收到并發服務請求后,要激活一個新進程來處理這個客戶請求。 3 遠程測控系統的實現 3.1 系統初始化 系統初始化是指系統上電復位后到運行main()函數前,初始化硬件,構建應用程序運行環境的過程。如圖3所示,Nios II的HAL程序庫為用戶提供了這段代碼,代碼的入口標號是"reset"。 程序先對CPU進行初始化,其功能包括初始化指令和數據Cache,設置堆棧指針(stack Pointer)等,然后調用"alt main()"函數。 alt main()函數對CPU及外設初始化,其功能包括調用alt os int()函數初始化OS,默認情況下完成對μC/OS-II初始化,調用alt_sys_int()函數初始化系統設備及軟件模塊等,然后調用"main()"函數。 3.2 主函數main() 主函數"main()"負責進行網絡*,響應終端的TCP連接請求。若同時要求能與多個終端建立TCP連接和傳輸數據,需要為每個終端的網絡數據處理都開辟一個新的線程,主函數的流程如圖4所示。 服務器為每個客戶端都開一個線程專門與之進行socket通信。Socket數據處理線程主要包括三個方面工作:從套接字上接收數據包;解析并存儲數據包;打包并發送數據包等。 3.3 遠程測控實驗 為驗證設計方案,選用瑞士SENSIRION公司生產的傳感器SHT75,測控溫、濕度,該一體化數字式傳感器將敏感元件、信號放大器、模數轉換器、數字接口電路集成在同一芯片上,使用I2C IP核可以方便地和處理器連接。實驗結果表明,該設計切實可行。 4 結束語 本設計基于SOPC和嵌入式系統技術,實現了遠程測控的要求。此設計可應用于各種惡劣環境,稍加改進,也可適用于網絡信息家電、家庭安全等方面。隨著芯片技術和總線技術的發展,嵌入式遠程網絡化測控在工業中的應用定會更加廣泛。 |