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

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

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

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

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

?

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

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

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

?

?

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

2 芯片的選擇?

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

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

?

?

2.2 FIFO存儲(chǔ)器?

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

?

?

2.3 可編程邏輯器件CPLD?

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

2.4 鎖相環(huán)?

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

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

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

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

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

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

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

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

?

?

??? 各個(gè)狀態(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)備把信號(hào)讀出去,片選信號(hào)CS變低,。在狀態(tài)7中,AD的讀信號(hào)RD變?yōu)榈碗娖?,?zhǔn)備好把數(shù)據(jù)讀出去,。在狀態(tài)8時(shí),F(xiàn)WR信號(hào)變?yōu)榈碗娖?,要把?shù)據(jù)寫入FIFO中,,故A/D的讀信號(hào)RD要保持為低電平,直到數(shù)據(jù)寫入FIFO中。片選信號(hào)CS,、A/D的讀信號(hào)RD,、FIFO寫信號(hào)FWR都變?yōu)楦唠娖剑谝晃粩?shù)據(jù)讀完,,如果數(shù)據(jù)達(dá)不到要求,,回到狀態(tài)6繼續(xù)讀下一位,每讀一位信號(hào)ADRCON加1,,如果連續(xù)的12個(gè)數(shù)據(jù)依次被讀出,,仍達(dá)不到數(shù)據(jù)的要求,則回到狀態(tài)0,,對(duì)采集到的新的數(shù)據(jù)進(jìn)行存取,,直到數(shù)據(jù)達(dá)到要求時(shí),向CPU申請(qǐng)中斷,,CPU發(fā)出地址信號(hào),,CPLD選通地址,將數(shù)據(jù)存放到該地址,。?

4 仿真結(jié)果?

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

?

?

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

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

參考文獻(xiàn)?

[1] 龍姝穎,汪渤,谷重陽(yáng).一種基于CPLD的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J]. 微計(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)換器在信號(hào)采集系統(tǒng)中的應(yīng)用[J].國(guó)外電子元器件,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)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。