《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 多路數(shù)據(jù)采集系統(tǒng)的設(shè)計

多路數(shù)據(jù)采集系統(tǒng)的設(shè)計

2009-04-08
作者:常鐵原, 王 欣,, 陳文軍

??? 摘? 要: 采用多通道的模數(shù)轉(zhuǎn)換芯片AD7656,,在并行接口模式下,同時進(jìn)行6路數(shù)據(jù)采集,。通過硬件實(shí)現(xiàn)對多路數(shù)據(jù)采集系統(tǒng)的控制,,并用VHDL語言設(shè)計的狀態(tài)機(jī)在QuartusⅡ開發(fā)軟件中進(jìn)行仿真,。?

??? 關(guān)鍵詞: CPLD,; 多路并行數(shù)據(jù)采集,; AD7656; FIFO,; 狀態(tài)機(jī)

?

??? 在許多測控系統(tǒng)中,經(jīng)常會需要對多路信號進(jìn)行采集,、傳輸、存儲與處理,。例如三相電能表的數(shù)據(jù)采集,,通常是用三片單相計量芯片。本文介紹的方案只用一片A/D芯片就可以完成三相信號的同時采集,,并用CPLD控制,,實(shí)現(xiàn)了多路并行數(shù)據(jù)采集和高速的存儲,這樣可以在很大程度上提高系統(tǒng)的信號采集和處理能力[1],。?

1 系統(tǒng)設(shè)計?

??? 本系統(tǒng)要進(jìn)行多路數(shù)據(jù)采集,,選用了A/D芯片AD7656。AD7656能進(jìn)行6路數(shù)據(jù)同時采集,,系統(tǒng)要求每20ms采128點(diǎn),,6路信號共采768點(diǎn),每點(diǎn)為2B,,也就是一個周期采1 536×8bit,,采集完后寫入存儲器中,F(xiàn)IFO存儲器IDT7203為2K×9bit,,所以可以選用IDT7203,。本系統(tǒng)除了A/D轉(zhuǎn)換電路、數(shù)據(jù)緩存電路,、對鎖相環(huán)的分頻電路外,,還需要有地址譯碼電路??删幊踢壿嬈骷﨏PLD集成了各種門陣列,,通過用硬件描述語言寫程序可實(shí)現(xiàn)以上各種功能[2]。鎖相環(huán)采用4046芯片,,CPLD分頻后的信號與輸入信號進(jìn)行比較,,通過鎖相環(huán)倍頻,此信號作為采樣信號的同步信號,。圖1為系統(tǒng)總體設(shè)計方案,。?

?

?

??? 此系統(tǒng)中CPLD是主控芯片,它用硬件描述語言VHDL寫程序來控制A/D轉(zhuǎn)換器的數(shù)據(jù)采集及向FIFO中存儲數(shù)據(jù)和讀取數(shù)據(jù),。當(dāng)數(shù)據(jù)達(dá)到要求時,,給CPU一個信號,,通知CPU,待CPU取走數(shù)據(jù)后,,給狀態(tài)機(jī)一個復(fù)位信號,等待下一輪的數(shù)據(jù)存取,。由于CPLD是從數(shù)字邏輯角度入手,所以編程要從時序,、邏輯兩個角度同時進(jìn)行考慮,。?

2 芯片的選擇?

2.1 A/D轉(zhuǎn)換器?

??? 系統(tǒng)的A/D轉(zhuǎn)換芯片采用的是AD7656,它是6通道16位逐次逼近型ADC,,在供電電壓為5V,,采樣速率為最大即250kS/s時,功耗僅為160mW[3],。而且它有兩種工作模式:串行接口模式和高速的并行接口模式,,本系統(tǒng)應(yīng)用的是并行接口模式。在數(shù)據(jù)轉(zhuǎn)換時,,有3個轉(zhuǎn)換信號CONVSTA/B/C,,用來控制每對或每4個或每6個ADC同時采樣。3個CONVST管腳可以控制3對獨(dú)立的模數(shù)轉(zhuǎn)換器同時采樣,。如果將3個CONVST管腳連接在一起后,就可對6個ADC同時進(jìn)行采樣,。其內(nèi)部轉(zhuǎn)換時序如圖2所示。?

?

?

2.2 FIFO存儲器?

??? 系統(tǒng)采用IDT7203,,它是一種2K×9bit雙端口存儲器,,可以實(shí)現(xiàn)先進(jìn)先出算法,它能高速存儲和讀取數(shù)據(jù),,并且該存儲器的兩個端口時鐘是相互獨(dú)立的,,所以既能進(jìn)行異步讀寫操作又能進(jìn)行同步讀寫操作。當(dāng)寫信號為低電平時,,A/D轉(zhuǎn)換的數(shù)據(jù)會不斷存入FIFO中,,當(dāng)讀信號為低電平時,要進(jìn)行讀操作,,將數(shù)據(jù)讀入CPU,。當(dāng)向FIFO中寫入數(shù)據(jù)時,利用其各個標(biāo)志來顯示其數(shù)據(jù)的溢出或不足,。為了防止數(shù)據(jù)溢出,,當(dāng)最后一個寫信號的上升沿來臨時全滿標(biāo)志FF變低。存儲空間的一半滿時,,下一個寫操作下降沿到來時,,半滿標(biāo)志HF變低,。當(dāng)所有的數(shù)據(jù)已經(jīng)從FIFO中讀出,,空標(biāo)志EF變低,,禁止更多的讀操作。圖3為FIFO的異步讀寫時序,。?

?

?

2.3 可編程邏輯器件CPLD?

??? 系統(tǒng)采用ALTERA公司的MAX7000系列中的EPM7064芯片,。采用此芯片除了能控制高速的A/D數(shù)據(jù)采集、高速的數(shù)據(jù)存儲和讀取,,還能將整個設(shè)備電路中的一些譯碼等模塊一并設(shè)計進(jìn)去,,從而在很大程度上減小了設(shè)備的體積。而且它是可以由用戶進(jìn)行編程以實(shí)現(xiàn)所需邏輯功能的數(shù)字集成電路,,它具有設(shè)計周期短,、可靠性高、修改方便等優(yōu)點(diǎn),。?

2.4 鎖相環(huán)?

??? 系統(tǒng)采用MOTOROLA公司的MC14046芯片,,把輸入的信號進(jìn)行倍頻,作為采樣的同步信號,。?

3 系統(tǒng)實(shí)現(xiàn)?

??? 本系統(tǒng)利用軟件QuartusⅡ完成CPLD程序的編寫,,主要是由時鐘模塊和狀態(tài)機(jī)控制模塊組成,。在時鐘的驅(qū)動下,,狀態(tài)機(jī)的狀態(tài)向下一個狀態(tài)轉(zhuǎn)換。A/D轉(zhuǎn)換和FIFO的存儲,,在CPLD控制下并行執(zhí)行[4],。?

3.1時鐘產(chǎn)生模塊?

??? 時鐘是由外部晶振產(chǎn)生的,,本系統(tǒng)采用20MHz的晶振,由于所設(shè)計的狀態(tài)機(jī)中采樣一個點(diǎn)需要5個狀態(tài),,共需0.25μs,,也就是最大采樣頻率是4MHz。系統(tǒng)要求20ms采樣128點(diǎn),,輸入50Hz的信號經(jīng)過鎖相環(huán)的128倍頻,,輸出頻率為6 400Hz,晶振要經(jīng)過3 125次分頻才能得到這樣的采樣同步信號,。時鐘信號驅(qū)動狀態(tài)機(jī)的各個狀態(tài)的轉(zhuǎn)換,,每出現(xiàn)一個同步信號采集一個點(diǎn)。?

3.2 狀態(tài)機(jī)?

??? 狀態(tài)機(jī)輸入信號有時鐘信號CLK和CPU發(fā)出的通知A/D轉(zhuǎn)換器和FIFO復(fù)位的信號INT0,;輸出信號有A/D轉(zhuǎn)換器的復(fù)位信號ADRST,、轉(zhuǎn)換信號ADCONVST、片選信號ADCS,、讀信號ADRD及FIFO的寫信號FWR,、復(fù)位信號FRST、通知CPU取數(shù)的信號INT1。?

??? 狀態(tài)機(jī)在時鐘信號驅(qū)動下,,完成A/D轉(zhuǎn)換及數(shù)據(jù)的存儲和讀取,,不斷將下一個狀態(tài)中的內(nèi)容賦值給當(dāng)前狀態(tài)。圖4為其狀態(tài)圖,。CPU向CPLD發(fā)送信號INT0,,當(dāng)INT0為低電平時進(jìn)入下一個狀態(tài),AD7656及FIFO都復(fù)位,,準(zhǔn)備就緒,。本系統(tǒng)把3個CONVST引腳連接在一起,即可對6個通道同時采樣,。在AD7656的CONVST信號為低電平時,,AD7656準(zhǔn)備好要進(jìn)行轉(zhuǎn)換,如果CONVST信號又變?yōu)楦唠娖綍r,,將啟動AD7656進(jìn)行轉(zhuǎn)換,,轉(zhuǎn)換時間是3μs。這也就是說,,CONVST信號能保持3μs,,轉(zhuǎn)換就可以完成。轉(zhuǎn)換開始后,,BUSY信號會自動變?yōu)楦唠娖?,并且一直保持高電平,等待轉(zhuǎn)換完成后,,BUSY信號則會自動變?yōu)榈碗娖?,此時可以進(jìn)行讀操作。如果采用并行接口模式并且以字節(jié)輸入,,轉(zhuǎn)換完成之后,,當(dāng)片選信號CS一直保持低電平不變時,連續(xù)12個讀信號可以依次連續(xù)被讀出,。當(dāng)FWR信號為低電平時,,可以向FIFO中寫數(shù)據(jù)。?

?

?

??? 各個狀態(tài)的功能用VHDL表述為:?

??? when st0 => adrst <=′0′;adconvst <=′1′;adcs <=′1′;adrd <=′1′;fwr <=′1′; frst <= ′1′;?

??? when st1 => adrst <=′1′;adconvst <=′1′;adcs <=′1′;adrd <= ′1′;fwr <=′1′; frst <=′0′;?

??? ……?

??? when st10=> adrst <=′0′;adconvst <=′1′;adcs <=′1′;adrd <=′1′;fwr <=′1′; frst <=′1′;?

??? when others=>adrst <=′0′;adconvst <=′1′;adcs <=′1′;adrd <=′1′;fwr <=′1′; frst <= ′1′;?

??? 從狀態(tài)3到狀態(tài)5,,即數(shù)據(jù)開始轉(zhuǎn)換至完成,。當(dāng)進(jìn)入狀態(tài)6,數(shù)據(jù)轉(zhuǎn)換完成開始進(jìn)行準(zhǔn)備把信號讀出去,,片選信號CS變低,。在狀態(tài)7中,AD的讀信號RD變?yōu)榈碗娖?,?zhǔn)備好把數(shù)據(jù)讀出去,。在狀態(tài)8時,F(xiàn)WR信號變?yōu)榈碗娖剑褦?shù)據(jù)寫入FIFO中,,故A/D的讀信號RD要保持為低電平,,直到數(shù)據(jù)寫入FIFO中。片選信號CS,、A/D的讀信號RD、FIFO寫信號FWR都變?yōu)楦唠娖?,第一位?shù)據(jù)讀完,,如果數(shù)據(jù)達(dá)不到要求,回到狀態(tài)6繼續(xù)讀下一位,,每讀一位信號ADRCON加1,,如果連續(xù)的12個數(shù)據(jù)依次被讀出,仍達(dá)不到數(shù)據(jù)的要求,,則回到狀態(tài)0,,對采集到的新的數(shù)據(jù)進(jìn)行存取,直到數(shù)據(jù)達(dá)到要求時,,向CPU申請中斷,,CPU發(fā)出地址信號,CPLD選通地址,,將數(shù)據(jù)存放到該地址,。?

4 仿真結(jié)果?

??? 本文采用VHDL語言,在QuartusⅡ開發(fā)軟件仿真,,描述了狀態(tài)機(jī)是如何實(shí)現(xiàn)數(shù)據(jù)的采集,、存儲和讀取的。仿真波形如圖5所示,。?

?

?

??? 由圖5可以看到仿真結(jié)果完全滿足所要設(shè)計的邏輯功能,。第3個狀態(tài)AD7656開始把模擬信號變?yōu)閿?shù)字信號,等待轉(zhuǎn)換結(jié)束后,,第6個狀態(tài)到第10個狀態(tài)開始采集第一路,,連續(xù)采集完12路通道中的數(shù)據(jù)并依次存入FIFO中。?

??? 本文提出了一種基于CPLD的多路數(shù)據(jù)采集系統(tǒng)的方法,,可以方便地實(shí)現(xiàn)對模擬輸入信號的采樣傳輸及處理,,具有速度快、可靠性高而且可升級性好等優(yōu)點(diǎn),,其應(yīng)用領(lǐng)域十分廣泛,。?

參考文獻(xiàn)?

[1] 龍姝穎,汪渤,谷重陽.一種基于CPLD的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計[J]. 微計算機(jī)信息,2006,22(20):203-204,136.?

[2]?代芬,張承學(xué).CPLD在高速多通道數(shù)據(jù)采集中的應(yīng)用[J]. 電子技術(shù)應(yīng)用,2003,29(2):75-77.?

[3] 陳茹梅,郭建頌.AD7656型模數(shù)轉(zhuǎn)換器在信號采集系統(tǒng)中的應(yīng)用[J].國外電子元器件,2006(2):67-71.?

[4] 潘松,黃繼業(yè),EDA技術(shù)實(shí)用教程[M]. 北京:科學(xué)出版社,2004.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]