摘 要: 介紹了一種基于PC104總線的多通道高速同步采集卡" title="采集卡">采集卡" title="數(shù)據(jù)采集卡" title="數(shù)據(jù)采集卡">數(shù)據(jù)采集卡">數(shù)據(jù)采集卡的設(shè)計方法, 硬件上采用FPGA進行控制邏輯設(shè)置和數(shù)據(jù)緩存" title="數(shù)據(jù)緩存">數(shù)據(jù)緩存的實現(xiàn), 簡化了硬件電路, 同時也提高了其使用的簡易性和配置的靈活性, 具有準確和快速的特點。
關(guān)鍵詞: 數(shù)據(jù)采集; 現(xiàn)場可編程門陣列; 模數(shù)轉(zhuǎn)換
?
PC104 作為一種國際標準的控制總線, 在測試和控制中得到了廣泛應(yīng)用, 但目前市場上與之配套的同步數(shù)據(jù)采集卡還很少?;赑C104總線的高精度數(shù)據(jù)采集卡的主要功能是把外界模擬信號的電壓參量經(jīng)過A/D" title="A/D">A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,并把轉(zhuǎn)換結(jié)果存儲以便分析處理。本文所述采集卡采用了AD公司推出的高速、低功耗、四通道同步采樣12位并行接口的A/D轉(zhuǎn)換器AD7864,用FPGA進行邏輯功能控制和數(shù)據(jù)緩存,使得該數(shù)據(jù)采集卡硬件電路極為簡單。
1 數(shù)據(jù)采集卡的原理及組成
采集卡包括模擬輸入、A/D 采集、數(shù)據(jù)緩存及基于PC104 接口的數(shù)據(jù)傳輸四部分,其核心設(shè)計是A/D采集、數(shù)據(jù)緩存部分。數(shù)據(jù)采集卡系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
?
該采集卡采用LM324對模擬輸入信號進行隔離,它的功能實現(xiàn)是在濾波器MAX274的每個輸入端前設(shè)計一個跟隨器,使輸入信號在被濾波之前先經(jīng)過隔離,A/D采集模塊主要采用三片AD7864-1來實現(xiàn)12通道的同步采樣。邏輯控制及數(shù)據(jù)緩存模塊是在FPGA內(nèi)部編程實現(xiàn)的。在數(shù)據(jù)送入PC104總線時,74LS245在PC104總線與FPGA之間也起驅(qū)動的作用。在PC104總線與FPGA不進行數(shù)據(jù)傳輸時,74LS245呈高阻狀態(tài),這樣可以防止主機與采集卡間的數(shù)據(jù)相互干擾。
2 硬件電路設(shè)計
整個系統(tǒng)硬件是把12通路的A/D同步采集設(shè)計在一塊電路板上,包括濾波、A/D轉(zhuǎn)換、數(shù)據(jù)緩存、FPGA邏輯控制以及總線接口,本文主要介紹A/D采集電路和FPGA內(nèi)部電路的設(shè)計與實現(xiàn)。
2.1 A/D采集模塊
AD7864是AD公司推出的高速、低功耗、四通道同步采樣12位并行接口的A/D轉(zhuǎn)換器,它可以用于馬達控制、非中斷電源控制、數(shù)據(jù)采集和通訊等。
該器件內(nèi)部具有一個轉(zhuǎn)換時間1.65μs的逐次逼近式A/D轉(zhuǎn)換器,4路跟蹤/保持放大器,2.5V參考電源,片內(nèi)時鐘震蕩器,信號調(diào)整電路及一個高速并行接口。AD7864可對四個通道的模擬輸入信號同步采樣,并將四個通道之間的相對相位和大小信息保存下來,這使得它特別適合于交流電機控制、三相電網(wǎng)電壓檢測等場合。
A/D采集模塊采用三片AD7864-1同時采樣,以滿足12位同步采樣的要求。在A/D轉(zhuǎn)換電路中,三片AD7864-1使用同一個啟動信號/convst,在/convst的上升沿" title="上升沿">上升沿轉(zhuǎn)換開始。無需外部設(shè)置采樣保持電路、參考基準和極性轉(zhuǎn)換電路。在信號/convst的上升沿,BUSY信號被觸發(fā)高電平并一直保持到四個通道都轉(zhuǎn)換結(jié)束,同時所有跟蹤保持器開始工作,將濾波電路輸入的12路模擬信號相位信息保持一致,達到同步的要求。為了提高整個系統(tǒng)的采樣速率,AD7864-1的采集模式是在轉(zhuǎn)換過程中,每通道轉(zhuǎn)換結(jié)束時(/EOC變?yōu)榈仉娖剑╅_始讀出數(shù)據(jù),轉(zhuǎn)換由/convst的上升沿啟動,轉(zhuǎn)換結(jié)束由/EOC的下降沿來表示。此時片選信號/CS端接地,由讀信號/RD讀出數(shù)據(jù)。當讀信號/RD和片選信號/CS同時保持低電平時才可讀數(shù)據(jù),讀操作在工作時要確保寫信號/WR處于高電平。每次讀數(shù)據(jù)操作增加輸出數(shù)據(jù)寄存器指針,讀完最后一個轉(zhuǎn)換數(shù)據(jù)時,將輸出數(shù)據(jù)寄存器指針復(fù)位。寫操作主要完成工作模式的設(shè)置,一般只在初始化或轉(zhuǎn)換通道切換時進行。而進行數(shù)據(jù)采集的操作只要給出啟動命令,啟動設(shè)置的通道進行同步采集,待所有的數(shù)據(jù)轉(zhuǎn)換結(jié)束后自動發(fā)出中斷請求信號,然后進行相應(yīng)通道的數(shù)據(jù)讀取即可。
2.2? FPGA內(nèi)部電路設(shè)計
隨著現(xiàn)場可編程門陣列(FPGA)技術(shù)的飛速發(fā)展,FPGA的應(yīng)用日益廣泛,它具有更高的密度、更快的工作速度和更大的編程靈活性,被廣泛應(yīng)用于各種電子類產(chǎn)品中。系統(tǒng)通過FPGA來實現(xiàn)高速數(shù)據(jù)緩存及邏輯控制。采用的器件是FLEX1K 系列的EP1K30TC144-1器件,其最大工作頻率為40MHz,消耗1 533 個LC,平均編碼時間為20個時鐘周期。FPGA 除了要滿足相應(yīng)的時序要求外, 還要求控制數(shù)據(jù)的位數(shù)和A/D轉(zhuǎn)換器的位數(shù)相匹配。數(shù)據(jù)緩存區(qū)要求既要有與A/D芯片的接口,又要有與系統(tǒng)主機的接口以提高數(shù)據(jù)吞吐率,因此通過EP1K30TC144-1芯片內(nèi)置的先進先出(FIFO)緩沖存儲器實現(xiàn)數(shù)據(jù)高速傳輸。為此設(shè)計了地址譯碼、讀/寫數(shù)據(jù)寄存器、控制通道寄存器、啟動觸發(fā)器和中斷響應(yīng)寄存器,所有的操作都是通過讀寫相應(yīng)的寄存器實現(xiàn)。下面將介紹FPGA內(nèi)部的各個設(shè)計模塊。
2.2.1 向FIFO寫數(shù)據(jù)的電路
首先是六片F(xiàn)IFO,分為三組,即每片A/D對應(yīng)兩個FIFO,本文只以第一片AD7864-1為例來說明FIFO對數(shù)據(jù)的存儲過程,在FPGA內(nèi)部電路圖中截取一組FIFO來進行描述,如圖2所示。
?
圖中in1[11..0]表示第一片A/D轉(zhuǎn)換后的12位數(shù)據(jù)線,分別與兩片F(xiàn)IFO的data[]連接,因為是把A/D轉(zhuǎn)換的數(shù)據(jù)寫入FIFO,A/D的轉(zhuǎn)換模式是轉(zhuǎn)換完一路就向FIFO寫數(shù)據(jù),所以將FIFO 的寫時鐘wrclock與A/D的/eoc連接,當/eoc為低時,表明有一路轉(zhuǎn)換結(jié)束,開始向FIFO寫入數(shù)據(jù)。每片AD7864-1對應(yīng)兩片F(xiàn)IFO A和B,wrfull1a、wrreq1a、rdeq1a、rdemptyla、wrfulllb、wrreq1b、rdreq1b、rdempty1b分別是a和b的寫滿標志位、寫請求信號、讀請求信號、讀空標志位。通過74139譯碼器,使wrfull1a、wrfull1b、rdempty1a、rdempty1b聯(lián)合作用控制FIFO的讀寫操作。譯碼器作用的結(jié)果是只要A的wrfull1a為低,數(shù)據(jù)就一直寫入A中,當wrfull1a為高時,切換數(shù)據(jù)流向,開始向B寫數(shù)據(jù)。當wrfull標志為高電平時,表明FIFO達到半滿,向系統(tǒng)申請中斷,總線響應(yīng)中斷,立即啟動讀FIFO中的數(shù)據(jù),當讀到空時,Empty標志有效,停止讀入操作。
2.2.2 中斷請求發(fā)生電路
在寫數(shù)據(jù)的過程中,當三個FIFO都出現(xiàn)半滿標志時,就需要對主機發(fā)送讀請求信號,在FPGA內(nèi)部通過一組或門、與門組合來產(chǎn)生該請求信號irq9,圖3所示為中斷請求的產(chǎn)生電路。
?
圖3中wrfull1a和 wrfull1b相或, wrfull2a和wrfull2b相或, wrfull3a和wrfull3b相或,這三組相或的結(jié)果通過一個與門之后產(chǎn)生讀請求信號irq9。設(shè)計思想是:只要三組FIFO中每組有一個FIFO的寫滿標志為高,發(fā)送讀請求信號,一旦主機響應(yīng)了該請求,則需要將三片已達到半滿狀態(tài)的FIFO依次讀數(shù)。這里使用一個中斷請求而不是三個中斷請求的原因是由于三個中斷請求會由于優(yōu)先級問題發(fā)生沖突等待,使讀數(shù)據(jù)混亂,不利于數(shù)據(jù)的讀取存儲,還有可能因為等待時間過長而影響了采集速率。
2.2.3 主機讀取數(shù)據(jù)電路
當主機響應(yīng)了讀中斷請求之后,就會開始從FIFO中取數(shù),但是六個FIFO的工作基本保持一致,所以存在主機先從哪一個FIFO中讀取數(shù)據(jù)的問題,因此需要設(shè)計一個數(shù)據(jù)選擇讀取電路,如圖4所示。
?
圖中數(shù)據(jù)選擇電路通過三位地址a0、a1、a2來對六個FIFO的六路數(shù)據(jù)選擇輸出。
2.2.4 A/D轉(zhuǎn)換啟動信號發(fā)生電路
在本電路中還有一個A/D轉(zhuǎn)換啟動信號/convst的產(chǎn)生電路,三片AD7864-1使用同一個啟動信號/convst,在/convst的上升沿轉(zhuǎn)換開始。在第一次啟動A/D芯片時,需要分配一個地址來啟動A/D芯片,一旦啟動成功,下一次的/convst主要由三片AD7864-1的BUSY信號來產(chǎn)生,因為在A/D轉(zhuǎn)換過程中,busy信號都為高電平,當轉(zhuǎn)換結(jié)束后,busy變低電平。所以只要三片AD7864-1的busy信號都為低電平時,表明12路轉(zhuǎn)換結(jié)束,需要再次啟動轉(zhuǎn)換。該局部電路如圖5所示。
?
本設(shè)計的大量工作都是在FPGA內(nèi)部實現(xiàn)的,簡化了硬件電路, 同時也提高了其使用的簡易性和配置的靈活性, 具有準確和快速的特點。
3 仿真結(jié)果
FPGA內(nèi)部電路的設(shè)計采用VHDL 硬件描述語言實現(xiàn),并在ALTERA 公司的MAX+plusⅡ軟件上編譯仿真。采用全局同步時鐘,避免了毛剌的產(chǎn)生,保證了信號的穩(wěn)定性, 本文介紹的兩個FIFO工作原理為乒乓式存儲的原理,采用這種存儲方式,主要是考慮到由于轉(zhuǎn)換通路比較多,若每片A/D只對應(yīng)一片F(xiàn)IFO,當主機不能及時讀走FIFO中的數(shù)據(jù)時,A/D轉(zhuǎn)換就不能正常進行,這就會影響數(shù)據(jù)的傳輸速度,也很容易使數(shù)據(jù)丟失。而采用兩片F(xiàn)IFO的乒乓式存儲之后,寫滿一片F(xiàn)IFO,在主機來不及讀走數(shù)據(jù)時,可以將數(shù)據(jù)打入第二片F(xiàn)IFO,這樣可以起到一個緩沖作用,不會由于數(shù)據(jù)的讀取而影響整個系統(tǒng)的正常工作。該電路的設(shè)計是利用寫滿標志、讀空標志通過74193譯碼進行兩片F(xiàn)IFO的讀寫切換的,其仿真結(jié)果分別如圖6、圖7、圖8所示。
?
?
通過時序仿真證明,采用74193譯碼來控制兩片F(xiàn)IFO的切換是可行的。設(shè)計中采用六片相同規(guī)格的FIFO,它們對數(shù)據(jù)的緩存是同步進行的。所以本設(shè)計中FIFO的讀請求都是由半滿標志產(chǎn)生的,從FIFO向外讀數(shù)據(jù)時,只要rdempty1a不為高就一直保持從FIFO A中讀數(shù),當rdempty1a為高且rdempty1b為低時,開始讀FIFO B中的數(shù)據(jù)。當FIFO的寫滿標志為高時,開始向主機發(fā)送請求。其他兩組的工作原理和第一組相似,這里就不再敘述。
根據(jù)上述原理設(shè)計的12通道數(shù)據(jù)采集卡,其結(jié)構(gòu)完全遵循PC104 總線標準,它可對多達12通道的模擬量進行A/D轉(zhuǎn)換,并對轉(zhuǎn)換的數(shù)據(jù)進行存儲 ,可直接作為PC104 的標準板卡使用。
參考文獻
[1]?張載鴻. 微型機(PC系列)接口控制教程. 北京:清華大學出版社, 1992.
[2]?孫肖子,張企民. 模擬電子技術(shù)基礎(chǔ). 西安:西安電子科技大學出版社,2001.
[3]?丁玉美,高西全. 數(shù)字信號處理(第二版). 西安:西安電子科技大學出版社, 2001.
[4]?高鵬,安濤,寇懷成. Protel 99入門與提高.北京:人民郵電出版社,2000.
[5]?朱明程,董爾令. 可編程邏輯器件原理及應(yīng)用. 西安:西安電子科技大學出版社,2004.
[6]?楮振勇,翁木云. FPGA設(shè)計及應(yīng)用.西安:西安電子科技大學出版社, 2002.