??? 摘? 要: 采用多通道的模數轉換芯片AD7656,在并行接口模式下,同時進行6路數據采集。通過硬件實現對多路數據采集系統的控制,并用VHDL語言設計的狀態機在QuartusⅡ開發軟件中進行仿真。?
??? 關鍵詞: CPLD; 多路并行數據采集; AD7656; FIFO; 狀態機
?
??? 在許多測控系統中,經常會需要對多路信號進行采集、傳輸、存儲與處理。例如三相電能表的數據采集,通常是用三片單相計量芯片。本文介紹的方案只用一片A/D芯片就可以完成三相信號的同時采集,并用CPLD控制,實現了多路并行數據采集和高速的存儲,這樣可以在很大程度上提高系統的信號采集和處理能力[1]。?
1 系統設計?
??? 本系統要進行多路數據采集,選用了A/D芯片AD7656。AD7656能進行6路數據同時采集,系統要求每20ms采128點,6路信號共采768點,每點為2B,也就是一個周期采1 536×8bit,采集完后寫入存儲器中,FIFO存儲器IDT7203為2K×9bit,所以可以選用IDT7203。本系統除了A/D轉換電路、數據緩存電路、對鎖相環的分頻電路外,還需要有地址譯碼電路??删幊踢壿嬈骷﨏PLD集成了各種門陣列,通過用硬件描述語言寫程序可實現以上各種功能[2]。鎖相環采用4046芯片,CPLD分頻后的信號與輸入信號進行比較,通過鎖相環倍頻,此信號作為采樣信號的同步信號。圖1為系統總體設計方案。?
?
?
??? 此系統中CPLD是主控芯片,它用硬件描述語言VHDL寫程序來控制A/D轉換器的數據采集及向FIFO中存儲數據和讀取數據。當數據達到要求時,給CPU一個信號,通知CPU,待CPU取走數據后,給狀態機一個復位信號,等待下一輪的數據存取。由于CPLD是從數字邏輯角度入手,所以編程要從時序、邏輯兩個角度同時進行考慮。?
2 芯片的選擇?
2.1 A/D轉換器?
??? 系統的A/D轉換芯片采用的是AD7656,它是6通道16位逐次逼近型ADC,在供電電壓為5V,采樣速率為最大即250kS/s時,功耗僅為160mW[3]。而且它有兩種工作模式:串行接口模式和高速的并行接口模式,本系統應用的是并行接口模式。在數據轉換時,有3個轉換信號CONVSTA/B/C,用來控制每對或每4個或每6個ADC同時采樣。3個CONVST管腳可以控制3對獨立的模數轉換器同時采樣。如果將3個CONVST管腳連接在一起后,就可對6個ADC同時進行采樣。其內部轉換時序如圖2所示。?
?
?
2.2 FIFO存儲器?
??? 系統采用IDT7203,它是一種2K×9bit雙端口存儲器,可以實現先進先出算法,它能高速存儲和讀取數據,并且該存儲器的兩個端口時鐘是相互獨立的,所以既能進行異步讀寫操作又能進行同步讀寫操作。當寫信號為低電平時,A/D轉換的數據會不斷存入FIFO中,當讀信號為低電平時,要進行讀操作,將數據讀入CPU。當向FIFO中寫入數據時,利用其各個標志來顯示其數據的溢出或不足。為了防止數據溢出,當最后一個寫信號的上升沿來臨時全滿標志FF變低。存儲空間的一半滿時,下一個寫操作下降沿到來時,半滿標志HF變低。當所有的數據已經從FIFO中讀出,空標志EF變低,禁止更多的讀操作。圖3為FIFO的異步讀寫時序。?
?
?
2.3 可編程邏輯器件CPLD?
??? 系統采用ALTERA公司的MAX7000系列中的EPM7064芯片。采用此芯片除了能控制高速的A/D數據采集、高速的數據存儲和讀取,還能將整個設備電路中的一些譯碼等模塊一并設計進去,從而在很大程度上減小了設備的體積。而且它是可以由用戶進行編程以實現所需邏輯功能的數字集成電路,它具有設計周期短、可靠性高、修改方便等優點。?
2.4 鎖相環?
??? 系統采用MOTOROLA公司的MC14046芯片,把輸入的信號進行倍頻,作為采樣的同步信號。?
3 系統實現?
??? 本系統利用軟件QuartusⅡ完成CPLD程序的編寫,主要是由時鐘模塊和狀態機控制模塊組成。在時鐘的驅動下,狀態機的狀態向下一個狀態轉換。A/D轉換和FIFO的存儲,在CPLD控制下并行執行[4]。?
3.1時鐘產生模塊?
??? 時鐘是由外部晶振產生的,本系統采用20MHz的晶振,由于所設計的狀態機中采樣一個點需要5個狀態,共需0.25μs,也就是最大采樣頻率是4MHz。系統要求20ms采樣128點,輸入50Hz的信號經過鎖相環的128倍頻,輸出頻率為6 400Hz,晶振要經過3 125次分頻才能得到這樣的采樣同步信號。時鐘信號驅動狀態機的各個狀態的轉換,每出現一個同步信號采集一個點。?
3.2 狀態機?
??? 狀態機輸入信號有時鐘信號CLK和CPU發出的通知A/D轉換器和FIFO復位的信號INT0;輸出信號有A/D轉換器的復位信號ADRST、轉換信號ADCONVST、片選信號ADCS、讀信號ADRD及FIFO的寫信號FWR、復位信號FRST、通知CPU取數的信號INT1。?
??? 狀態機在時鐘信號驅動下,完成A/D轉換及數據的存儲和讀取,不斷將下一個狀態中的內容賦值給當前狀態。圖4為其狀態圖。CPU向CPLD發送信號INT0,當INT0為低電平時進入下一個狀態,AD7656及FIFO都復位,準備就緒。本系統把3個CONVST引腳連接在一起,即可對6個通道同時采樣。在AD7656的CONVST信號為低電平時,AD7656準備好要進行轉換,如果CONVST信號又變為高電平時,將啟動AD7656進行轉換,轉換時間是3μs。這也就是說,CONVST信號能保持3μs,轉換就可以完成。轉換開始后,BUSY信號會自動變為高電平,并且一直保持高電平,等待轉換完成后,BUSY信號則會自動變為低電平,此時可以進行讀操作。如果采用并行接口模式并且以字節輸入,轉換完成之后,當片選信號CS一直保持低電平不變時,連續12個讀信號可以依次連續被讀出。當FWR信號為低電平時,可以向FIFO中寫數據。?
?
?
??? 各個狀態的功能用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′;?
??? 從狀態3到狀態5,即數據開始轉換至完成。當進入狀態6,數據轉換完成開始進行準備把信號讀出去,片選信號CS變低。在狀態7中,AD的讀信號RD變為低電平,準備好把數據讀出去。在狀態8時,FWR信號變為低電平,要把數據寫入FIFO中,故A/D的讀信號RD要保持為低電平,直到數據寫入FIFO中。片選信號CS、A/D的讀信號RD、FIFO寫信號FWR都變為高電平,第一位數據讀完,如果數據達不到要求,回到狀態6繼續讀下一位,每讀一位信號ADRCON加1,如果連續的12個數據依次被讀出,仍達不到數據的要求,則回到狀態0,對采集到的新的數據進行存取,直到數據達到要求時,向CPU申請中斷,CPU發出地址信號,CPLD選通地址,將數據存放到該地址。?
4 仿真結果?
??? 本文采用VHDL語言,在QuartusⅡ開發軟件仿真,描述了狀態機是如何實現數據的采集、存儲和讀取的。仿真波形如圖5所示。?
?
?
??? 由圖5可以看到仿真結果完全滿足所要設計的邏輯功能。第3個狀態AD7656開始把模擬信號變為數字信號,等待轉換結束后,第6個狀態到第10個狀態開始采集第一路,連續采集完12路通道中的數據并依次存入FIFO中。?
??? 本文提出了一種基于CPLD的多路數據采集系統的方法,可以方便地實現對模擬輸入信號的采樣傳輸及處理,具有速度快、可靠性高而且可升級性好等優點,其應用領域十分廣泛。?
參考文獻?
[1] 龍姝穎,汪渤,谷重陽.一種基于CPLD的多通道數據采集系統的設計[J]. 微計算機信息,2006,22(20):203-204,136.?
[2]?代芬,張承學.CPLD在高速多通道數據采集中的應用[J]. 電子技術應用,2003,29(2):75-77.?
[3] 陳茹梅,郭建頌.AD7656型模數轉換器在信號采集系統中的應用[J].國外電子元器件,2006(2):67-71.?
[4] 潘松,黃繼業,EDA技術實用教程[M]. 北京:科學出版社,2004.