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