數(shù)據(jù)采集系統(tǒng)是通過采樣電路將輸入的模擬信號轉(zhuǎn)換成離散信號,并送入CPU、MCU或DSP進(jìn)行處理?,F(xiàn)在流行的基于PCI總線設(shè)計(jì)的采集卡是數(shù)據(jù)采集系統(tǒng)的主流,其優(yōu)點(diǎn)是可以利用PCI總線的研究成果快速的開發(fā)系統(tǒng)軟件,整體運(yùn)行速度快,能夠?qū)崿F(xiàn)實(shí)時(shí)采集實(shí)時(shí)處理。但在一些工業(yè)測控現(xiàn)場檢測大型設(shè)備時(shí),從現(xiàn)場到機(jī)房有一定的距離,模擬信號傳到安裝在PC內(nèi)的PCI數(shù)據(jù)采集卡會有不同程度的衰減,且易受工業(yè)環(huán)境的干擾。而單純用由微控制器(MCU)為核心的數(shù)據(jù)采集系統(tǒng)時(shí),把數(shù)據(jù)采集器置于被監(jiān)測的設(shè)備處,雖然可以避免模擬信號的衰減和被干擾,但在這種數(shù)據(jù)采集系統(tǒng)中,A/D轉(zhuǎn)換器的啟動、讀取數(shù)據(jù)并存入到存儲器的整個過程由MCU來參與控制,由于受MCU執(zhí)行指令時(shí)間的限制,采集的速率較低,難以適應(yīng)高速信號采集的需要。本文利用ARM微處理器和CPLD器件組成的現(xiàn)場數(shù)據(jù)采集系統(tǒng),然后通過以太網(wǎng)接口于上位機(jī)相連,就可以有效解決上述問題。
系統(tǒng)的設(shè)計(jì)方案
整個數(shù)據(jù)采集系統(tǒng)如圖1所示。數(shù)據(jù)采集系統(tǒng)首先對采集的信號進(jìn)行前端處理,如信號放大、濾波等預(yù)處理。采用的CPLD器件實(shí)現(xiàn)整個系統(tǒng)的控制邏輯,它控制著采集通道的切換、A/D轉(zhuǎn)換的起/停、轉(zhuǎn)換后的數(shù)據(jù)存放在存儲單元的地址發(fā)生器、產(chǎn)生中斷請求以通知ARM讀取存放在存儲器中的數(shù)據(jù),由ARM微處理器進(jìn)行快速的處理和傳輸。
圖1 數(shù)據(jù)采集系統(tǒng)框圖
1 信號調(diào)理模塊
在信號進(jìn)行數(shù)模轉(zhuǎn)換前,在保證被采集信號不失真的前提下,對輸入的信號進(jìn)行放大、濾波等預(yù)處理。高速數(shù)據(jù)采集系統(tǒng)的輸入信號通常為高頻信號,需要進(jìn)行阻抗匹配和前置放大,可以選用高速低噪聲信號前置放大器和信號變壓器。信號前置放大器的優(yōu)勢是:放大系數(shù)可變,信號輸入的動態(tài)范圍大,還可以配置成有源濾波器。但放大器的最高工作頻率和工作寬帶必須滿足系統(tǒng)設(shè)計(jì)的需要,避免信號失真,同時(shí)應(yīng)該考慮放大器引入的噪聲損失,為避免對A/D轉(zhuǎn)換器性能的不利影響,前置放大器的信噪比應(yīng)遠(yuǎn)大于A/D轉(zhuǎn)換器的信噪比。當(dāng)頻率遠(yuǎn)遠(yuǎn)大于100MHz時(shí),盡可能采用信號變壓器,其性能指標(biāo)(如最高工作頻率和工作帶寬)優(yōu)于信號放大器,而且信號失真很小,但信號放大系數(shù)固定,輸入信號的幅度受到限制。該設(shè)計(jì)中采用前置放大器,其前端的信號調(diào)理電路如圖2所示。
圖2 信號調(diào)理電路
2 A/D轉(zhuǎn)換模塊
將連續(xù)信號轉(zhuǎn)換成離散信號進(jìn)而轉(zhuǎn)換成數(shù)字信號以適用于處理的重要芯片是A/D轉(zhuǎn)換器。一般的逐次逼進(jìn)型A/D轉(zhuǎn)換芯片的轉(zhuǎn)換速度最多在每秒鐘幾萬次,不能滿足高速采樣的要求。該設(shè)計(jì)中選擇TI公司的TLC5540高速模數(shù)轉(zhuǎn)換芯片,其具有8位分辨率,內(nèi)置采樣和保持電路,該芯片采用一種改進(jìn)的半閃結(jié)構(gòu)、CMOS工藝制造,因而大大減少了器件中比較器的數(shù)量,而且在高速轉(zhuǎn)換的同時(shí),能夠保持低功耗,轉(zhuǎn)換速率可達(dá)40Mb/s。
TLC5540以流水線的工作方式進(jìn)行工作,在每一個CLK周期均啟動一次采樣,完成一次采樣,每次啟動采樣是在CLK的下降沿進(jìn)行,第n次采樣的數(shù)據(jù)經(jīng)過3個時(shí)鐘周期的延遲之后,送到內(nèi)部數(shù)據(jù)總線上,所以系統(tǒng)剛啟動時(shí)讀取的3個數(shù)據(jù)是無效數(shù)據(jù),在軟件設(shè)計(jì)時(shí),必須拋棄系統(tǒng)啟動時(shí)讀取的前3個數(shù)據(jù)。
3 CPLD模塊
該設(shè)計(jì)中采用ALTERA公司的EPM7128S, 它實(shí)現(xiàn)整個系統(tǒng)的控制邏輯。主要有下面幾個控制模塊電路構(gòu)成:
- 時(shí)鐘控制電路,提供A/D轉(zhuǎn)換器的時(shí)鐘信號(ACLK),該信號同時(shí)提供了給存儲器的WR,以控制整個系統(tǒng)的采樣頻率。
- 地址產(chǎn)生電路,生成SRAM的地址控制信號,每寫完一次SRAM, 地址自動加1。
- 地址總線切換電路,對內(nèi)部地址發(fā)生器和LPC2214產(chǎn)生的兩組地址進(jìn)行切換,提供給存儲器。當(dāng)處于寫存儲器時(shí),存儲器的地址由內(nèi)部地址發(fā)生器發(fā)生;當(dāng)處于LPC2214讀存儲器時(shí),存儲器的地址由LPC2214的地址總線提供。
- 數(shù)據(jù)總線切換電路,對A/D的數(shù)據(jù)線和LPC2214的數(shù)據(jù)總線進(jìn)行切換,當(dāng)寫數(shù)據(jù)時(shí),使數(shù)據(jù)從A/D輸出到存儲器,讀數(shù)據(jù)時(shí),使數(shù)據(jù)從存儲器讀到LPC2214的數(shù)據(jù)總線。
- 地址譯碼及邏輯控制電路,完成對系統(tǒng)地址總線的譯碼,產(chǎn)生各種必須的控制信號。
4 MCU模塊
該設(shè)計(jì)中采用Philips公司的LPC2214的微處理器,用它來對采集到的數(shù)據(jù)進(jìn)行存儲、顯示、處理操作,并作為系統(tǒng)與上位機(jī)溝通的橋梁。LPC2214是基于ARM7TDMI核的RISC微處理器,ARM7TDMI為低功耗、高性能的16/32位核,最適合對價(jià)格及功耗敏感的場合。LPC2214在ARM7TDMI核的基礎(chǔ)上擴(kuò)展了一系列通用外圍器件,使其特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制,由于內(nèi)置了寬范圍的串行通信接口,使其也非常適用于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、嵌入式軟MODEM以及其他類型的應(yīng)用。
5 ARM與網(wǎng)卡芯片接口設(shè)計(jì)
為使采集到的數(shù)據(jù)或處理后的數(shù)據(jù)傳送到上位機(jī),需在系統(tǒng)中增加以太網(wǎng)接口,通常有兩種方法:(1)ARM微處理器+網(wǎng)絡(luò)控制器,這種方法對處理器沒有特殊的要求,只要把以太網(wǎng)芯片連接到處理器的總線上即可,此方法的通用性較強(qiáng),不受處理器的限制;(2)采用帶以太網(wǎng)接口的ARM微處理器,但通常這種處理器往往是面向網(wǎng)絡(luò)應(yīng)用而設(shè)計(jì)的,不是特別適用于工業(yè)領(lǐng)域。故該設(shè)計(jì)中選用第一種方法。
網(wǎng)路控制器RTL8019AS是目前比較常用的10Mb/s嵌入式以太網(wǎng)控制芯片,在芯片內(nèi)部集成了DMA控制器,ISA總線控制器和16KB SRAM,網(wǎng)路PHY收發(fā)器。用戶可以通過DMA方式把需要發(fā)送的數(shù)據(jù)寫入片內(nèi)SRAM中,讓芯片自動將數(shù)據(jù)發(fā)送出去;而芯片在接受到數(shù)據(jù)后,用戶也可以通過DMA方式將其讀出。
系統(tǒng)基本工作原理
數(shù)據(jù)采集器置于被監(jiān)控的設(shè)備處,對傳送過來的模擬信號進(jìn)行信號調(diào)理,LPC2214啟動系統(tǒng)數(shù)據(jù)采集,CPLD控制器輸出一個脈沖給A/D轉(zhuǎn)換器的CLK端,使其開始第n次A/D轉(zhuǎn)換,同時(shí)將CPLD內(nèi)部地址發(fā)生電路產(chǎn)生的地址信號經(jīng)地址選擇器直接送到存儲器,A/D轉(zhuǎn)換器所采集到的第n-3次的數(shù)據(jù)經(jīng)數(shù)據(jù)總線直接輸入到存儲器中保存。
由于采樣頻率高,用CPLD將采樣數(shù)據(jù)存儲到兩路同步動態(tài)存儲器(SDRAM)中。CPLD先把采集到的數(shù)據(jù)以DMA的方式存儲到A路SDRAM中。 等數(shù)據(jù)寫滿A路SDRAM后,由CPLD器件引起LPC2214外部中斷,LPC2214進(jìn)入中斷處理程序,讀取SDRAM中的數(shù)據(jù),并進(jìn)行處理,同時(shí)CPLD將接下來采集到的數(shù)據(jù)以DMA的方式存儲到B路SDRAM中, 等存儲器B數(shù)據(jù)裝滿后,CPLD器件引起LPC2214外部中斷,LPC2214進(jìn)入中斷處理程序,讀取B路SDRAM中的數(shù)據(jù),并進(jìn)行處理,如此循環(huán)下去,完成數(shù)據(jù)的接收和傳輸并行。
可以看到ARM微處理器只控制數(shù)據(jù)采集的啟動和對采集到的數(shù)據(jù)進(jìn)行快速處理和傳輸,在數(shù)據(jù)采集的過程中,ARM微處理器不對采集通道進(jìn)行任何控制,完全由硬件自動實(shí)現(xiàn)數(shù)據(jù)采集的全過程,實(shí)現(xiàn)了高速數(shù)據(jù)采集的目的。
系統(tǒng)軟件設(shè)計(jì)
軟件部分要分別編寫LPC2214的處理模塊程序和CPLD的控制模塊程序,LPC2214的程序包括嵌入式操作系統(tǒng)μC/OS-II和各應(yīng)用程序的編寫,CPLD控制模塊程序用VHDL語言來實(shí)現(xiàn)。
在編寫處理器的處理程序時(shí),如采用單任務(wù)順序機(jī)制,系統(tǒng)的安全性差,這對于穩(wěn)定性、實(shí)時(shí)性要求高的數(shù)據(jù)采集系統(tǒng)是不允許的,因此根據(jù)整個裝置實(shí)現(xiàn)的功能和對它的要求進(jìn)行系統(tǒng)任務(wù)的分割,并分配優(yōu)先級,由操作系統(tǒng)來進(jìn)行管理調(diào)度。本設(shè)計(jì)選用μC/OS-II操作系統(tǒng),μC/OS-II V2.52已通過美國航空航天管理局(FAA)的安全認(rèn)證,其采用優(yōu)先級調(diào)度算法完成任務(wù)間的調(diào)度,支持搶占式調(diào)度,具有執(zhí)行效率高、占有空間小、實(shí)時(shí)性能優(yōu)良和擴(kuò)展性強(qiáng)等特點(diǎn),其內(nèi)核還提供信號量、消息郵箱、消息隊(duì)列、內(nèi)存管理等系統(tǒng)服務(wù)。程序架構(gòu)如圖3所示。
圖3 程序架構(gòu)圖
根據(jù)應(yīng)用,本系統(tǒng)分為以下幾個任務(wù):軟復(fù)位任務(wù)(程序?qū)ο到y(tǒng)初始狀態(tài)進(jìn)行重新設(shè)定),對SDRAM的讀取、與上位機(jī)的TCP/IP通信、顯示任務(wù)、鍵盤管理任務(wù)和數(shù)據(jù)處理任務(wù),任務(wù)間的通信通過消息隊(duì)列來完成。系統(tǒng)中的每個任務(wù)包括應(yīng)用程序、任務(wù)堆棧和任務(wù)控制塊三部分。任務(wù)控制塊是一個數(shù)據(jù)結(jié)構(gòu),當(dāng)任務(wù)的CPU使用權(quán)被剝奪時(shí),μC/OS-II用它來保存該任務(wù)的狀態(tài),當(dāng)任務(wù)重新獲得CPU的使用權(quán)時(shí),任務(wù)控制塊能確保任務(wù)從被中斷的那一點(diǎn)執(zhí)行下去,操作系統(tǒng)可以通過查詢?nèi)蝿?wù)控制塊的內(nèi)容從而對任務(wù)進(jìn)行調(diào)度管理。
在用μC/OS-II作為內(nèi)核來編寫數(shù)據(jù)采集系統(tǒng)系統(tǒng)的應(yīng)用軟件之前,必須完成μC/OS-II在微處理器的移植工作,由于μC/OS-II在設(shè)計(jì)之初就充分考慮了在不同處理器上的移植問題,其結(jié)構(gòu)化設(shè)計(jì)把與處理器相關(guān)的部分分離出來,因此在任何處理器上的移植 μC/OS-II都只需要關(guān)心三個文件:頭文件OS_CPU.H、文件OS_CPU_C.C和匯編文件OS_CPU_A.ASM。
為了滿足系統(tǒng)與以太網(wǎng)直接交換信息的需要,本設(shè)計(jì)在μC/OS-II中移植了LWIP(Light Weight IP輕型IP協(xié)議)協(xié)議棧。LWIP是瑞士計(jì)算機(jī)科學(xué)院Adam Dunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。LWIP可以移植到操作系統(tǒng)上,也可以在無操作系統(tǒng)的情況下運(yùn)行,LWIP實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,一般它只需要幾十字節(jié)的RAM和40Kb左右的ROM就可以了。
LWIP可以很容易地在μC/OS-II的調(diào)度下,為系統(tǒng)增加網(wǎng)絡(luò)通信和網(wǎng)絡(luò)管理功能。LWIP把所有與硬件、操作系統(tǒng)、編譯器相關(guān)的部分獨(dú)立出來,放在/src/arch目錄下,因此LWIP在 μC/OS-II上的移植修改這個目錄下的文件即可。
結(jié)論
在ARM微處理器中移入嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II,使系統(tǒng)的穩(wěn)定性、實(shí)時(shí)性得到保證,實(shí)時(shí)操作系統(tǒng)將應(yīng)用分解成多任務(wù),簡化了應(yīng)用系統(tǒng)軟件的設(shè)計(jì);采用CPLD器件集成了電路的全部控制功能,擺脫了單純用由微控制器為核心的數(shù)據(jù)采集系統(tǒng)時(shí)的速度瓶頸,極大提高了數(shù)據(jù)采集速度。整個系統(tǒng)具有速度高、實(shí)時(shí)性好、抗干擾能力強(qiáng)、性價(jià)比高等特點(diǎn)。