本系統立足于利用Intemet實現核環境信息的遠程采集。在實現上,采用了基于SOPC技術的嵌入式解決方案,通過在FPGA中嵌入NioslI軟核處理器和所需外設的IP Core(硅知識產權核),然后再配備相應的網絡接口,實現利用互聯網進行信息的傳輸。
另外,通過開發用于控制信息采集子系統的IP核,利用FPGA固有的硬件并行特性,本系統做到了對多個信息源進行真正意義上的并行監控,即在進行α射線探測的同時也可以進行γ射線和溫濕度等信息的獲取。
1 系統硬件設計及實現
在本系統的設計中,硬件上為了做到通用性,在結構上劃分為兩部分,即用于完成現場監控和數據遠程傳輸的通用網絡平臺和用于完成溫濕度、液位、α及γ輻射總量測量等工作的環境信息采集子系統。其結構分別如圖l、圖2所示。兩個子系統通過一條40芯扁平電纜連接。在軟件上,考慮到利用互聯網進行遠程數據傳輸的復雜性,使用嵌入式操作系統和TCP/IP協議棧是必然的選擇,因此硬件上也圍繞這個關鍵點進行設計。
1.1 Niosii軟核CPU
NiosII軟核CPU是A137ERA公司推出的一種通用32位RISC嵌入式處理器,它特別為可編程邏輯進行了優化設計,并配備有功能完善的開發套件,包括C/C++編譯器、集成開發環境(IDE)、JTAG調試器等,是ALTERA公司可編程單芯片系統解決方案的核心。
作為一個軟核處理器,NiosII提供了可配置的硬件及軟件調試特性,包括基本的JTAG的運行控制(運行、停止、單步、存儲器等)、硬件斷點、數據觸發、片內和片外跟蹤、嵌入式邏輯分析儀。這些強大的工具可以在開發階段使用,調試通過后便可以去掉,節省資源。NiosII處理器還提供了高、中、低三種不同性能的內核,通過與ALTERA提供的超過60種IP核(UART、時鐘、DMA、SDRAM、并行I/0等)結合使用,設計師可以方便地針對特定的應用創建一個在處理器、外設、存儲器和I/O接口方面都完美的方案。除此以外,NiosII還有很多其他優秀的特性,如指令定制、硬件加速器等。
1.2 網絡接口單元
以太網接口芯片采用了SMSC公司專門用于嵌入式產品的LAN91C111快速以太網控制器。該芯片內部同時集成了以太網介質訪問控制器(MAC)及物理層收發器(PHY),支持10/100M全雙工傳輸模式、自動協商及流控等功能。其主機接口具有同步總線、異步總線等多種工作模式,可以方便地與各種體系的CPU連接。本設計中使用了異步總線接口模式,并與FLASH共用地址線和數據線,通過FPGA上的適配模塊連接到Avalon片內總線。
1.3 存儲器單元
由于存儲操作系統內核、應用程序代碼、程序數據等的需要,本系統使用了一片型號為AM29LV320D的FLASH芯片。該芯片由AMD公司推出,容量為4MB,支持CFI接口,其與AvMon總線的連接需要FPGA內部的總線適配模塊進行時序匹配。SDRAM用于存儲運行期的程序代碼和數據,HY57V563220B(L)T為現代公司推出的容量達16MB的SDRAM,由于該芯片端口寬度可達32位,因此系統中使用單芯片即可。SDRAM讀寫時序比較復雜,需要在FPGA中集成專用的SDRAM控制器IP核與其對接。
2 總量計數IP核
如圖2所示,α或γ探測器獲得的信號經由兩級放大器串接組成的線性脈沖放大器放大后送至以LM393為核心的甄別電路進行比較,濾掉噪聲,輸出矩形的脈沖信號。對于這個信號的處理,以MCU(微控制器)為核心的傳統核探測儀只能通過MCU上已有的硬件資源(如定時器)結合軟件來實現。
這種方法受制于硬件資源和MCU的速度,難以對多通道信號源進行并行處理。本系統中,總量計數IP核即是針對此問題而專門設計的硬件,使用VHDL語言設計實現,其內部接口符合Avalon片內總線從設備接口規范,可以方便地掛接在Avalon總線上,作為NiosII軟核cPu的一個專用外設。
總量計數IP核是網絡平臺FPGA中子板接口的一部分,其結構如圖3所示。α輻射總量測量與γ輻射總量測量原理類似,下面以α測量為例介紹其工作原理。時鐘源模塊通過對主時鐘分頻產生一個O.1秒的脈沖信號,作為定時器計時的基準源。定時器則按照命令寄存器傳過來的采集時間產生所需的定時信息。
根據定時器的定時信息和命令寄存器的命令,控制計數器對α測量模塊傳過來的脈沖信號進行計數,從而獲得輻射總量的計數值,該計數值被存進FIFO中;而在另一側,NiosIICPU通過Avalon總線向IP核的命令寄存器寫入相應的命令字實現對各通道的控制,例如啟動總量計數、關閉總量計數、設置采集時間及清空FIFO等。
值得注意的是,來自甄別電路的α或γ計數脈沖是與本IP核工作時鐘異步的信號,而計數器的值最終是需要存人。FIF0的,因此對α或γ計數脈沖都以主時鐘進行二次鎖存并整形,使每個異步計數脈沖產生一個只持續一個主時鐘周期的同步脈沖。以該脈沖進行計數,不僅解決了異步信號同步的問題,而且有效地濾除了干擾脈沖,使計敦值準確。
3 系統的軟件結構
為了實現利用Intemet進行遠程數據傳輸,本系統在NiosII上移植了MicroC/OS2實時操作系統和LWIP(輕量級IP協議棧)進而在其上開發信息采集軟件。
3.1 MicroC/OS2及LWIP的移植
此部分工作主要是針對本系統的特定硬件進行移植并編寫如溫濕度傳感器SHT75、總量計數IP核等所需的各種驅動,因此深入了解軟件的各層結構和細節是移植成功的關鍵。
HAL即硬件抽象層,是NiosII開發套件的一部分,由ALTERA公司提供,它封裝了系統中硬件操作的相關細節,驅動程序也作為它的一部分。HAL共抽象了六種器件模型,包括字符模式器件、定時器件、文件子系統、以太網器件、DMA器件和Flash器件,并為每一類器件提供一系列的統一的初始化函數和訪問函數接口,通過這種方式,HAL向上一層提供了一個類POSIX的API接口,即硬件抽象層應用編程界面。
針對NiosII的軟件開發,其實是建立在HAL之上,而非直接面向NiosII硬件本身。本系統測量模塊所對應的各個接口IP核均屬于字符模式器件,因此驅動程序需按HAL中字符模式器件模型來進行編寫。
MicroC/OS2是一個適合于小型、微控制器的可剝奪實時操作系統。它支持56個用戶任務,其內核為占先式,支持信號量、郵箱、消息隊列等多種常用的進程間通信機制,通過它為應用程序提供所需的多任務環境。由于MicroC/OS2自身并沒帶有協議棧,因此需要移植一個TCP/IP協議棧LWIP,從而向上層提供了一個類似UNIX套接字的接口。LWIP支持以下一些網絡協議:IP、ARP、ICMF、UDP、TCP。該協議棧需要20KB的代碼存儲空間及4KB的數據存儲空問,同時在構建系統時還需要添加一個專供其使用的定時器。
圖4為分析得到的系統軟件的啟動流程。在該流程圖中,alt_sys_init()用于初始化系統中的設備,在這個過程中會調用設備驅動程序提供的初始化程序。Lwip_stack_init()用于初始化TCP/IP協議棧。而tcpip_init_done()是一個在協議棧初始化后被調用的函數,通信服務器的任務也在其中創建。有一點需要注意的是。所有基于LWIP的任務,都應該使用sys_thread_new()函數來創建,而不是直接使用OSTaskCreate()。最后,所有的初始化都準備好后,即調用OSStart()來啟動RTOS進行任務調度。
3.2 信息采集程序的設計
本模塊作為一個任務,運行于MicroC/OS2實時操作系統之上,完成對各個探測子系統基于策略或遠程指令的測量控制,獲取的信息被保存到指定的內存緩沖區,并根據要求將結果返回到遠程主機上。對于溫濕度測量,由于SHT75傳感器的濕度輸出呈一定的非線性,為了獲取準確數據,需要根據給定的公式對所獲得的數據進行修正,而溫度輸出則不需進行補償,將數字輸出轉換為實際溫度值即可,詳見SHT75數據手冊。對于總量計數的處理,本模塊只是簡單地將數據打包后交給通信服務器傳回遠程主機。
3.3 通信服務器
本任務通過sys_thread_new()函數創建,作為一個服務器*約定的端口,等待遠程主機的連接,提取遠程主機的命令,通過消息隊列將所獲得的命令發送到信息采集任務;同時也根據要求將信息采集任務獲得的各種數據分類發回遠程主機。
LWP提供了標準的Berkeley套接字編程界面,這個界面提供了三種類型的套接字,在這里使用了流式套接字,這是一個面向連接的可靠的數據傳輸服務,也就是說使用的是TCP協議。通常,服務器接收到并發服務請求,要激活一新進程來處理這個客戶請求,但出于系統資源和簡化設計的考慮,在這里服務器同一時刻只能接受一個連接請求,而這種簡化事實上也是可以滿足設計需要的。
本系統應用基于FPGA的片上系統技術和嵌入式系統技術實現了智能核儀器與互聯網的連接,同時也實現了硬件上的部分可重構,根據需要增加或刪除FPGA中的外設IP核即可實現系統在功能和性能上的改變。目前本系統已經在放射性樣品儲藏室中應用,其功能和性能均滿足實際環境的要求。由于本系統的網絡平臺被設計成一個相對獨立的子系統,因此只需開發特定的探測子系統即可應用于各種相應的需要遠程監控的領域。
評論
查看更多