數(shù)字信號(hào)處理的出現(xiàn)改變了信息與信號(hào)處理技術(shù),而數(shù)據(jù)采集作為數(shù)字信號(hào)處理的前期工作,在整個(gè)數(shù)字系統(tǒng)中起到關(guān)鍵性作用。數(shù)據(jù)采集是指對(duì)設(shè)備被測(cè)的模擬或數(shù)字信號(hào),自動(dòng)采集并送到上位機(jī)中進(jìn)行分析、處理。數(shù)據(jù)采集卡,即實(shí)現(xiàn)數(shù)據(jù)采集功能的計(jì)算機(jī)擴(kuò)展卡,可以通過(guò)USB、PXI、PCI、PCI Express、火線(xiàn)(1394)、PCMCIA、ISA、Compact Flash、485、232、以太網(wǎng)、各種無(wú)線(xiàn)網(wǎng)絡(luò)等總線(xiàn)接入計(jì)算機(jī)。本文介紹了一種基于FPGA設(shè)計(jì)的數(shù)據(jù)采集卡。
1.數(shù)據(jù)采集系統(tǒng)
數(shù)據(jù)采集是指從待測(cè)設(shè)備中自動(dòng)采集信息的過(guò)程。圖1顯示了基于PC機(jī)的典型數(shù)據(jù)采集系統(tǒng)的各項(xiàng)組成部分。選用PC機(jī)作為控制系統(tǒng)操作平臺(tái),為了能和外部設(shè)備通信,PC機(jī)提供了外置的USB、串口、并口及內(nèi)置的ISA、PCI等接口。PCI總線(xiàn)接口速度快、系統(tǒng)占用率低,有完備的即插即用管理體制,是目前計(jì)算機(jī)插卡式外設(shè)總線(xiàn)的事實(shí)標(biāo)準(zhǔn)。本文利用FPGA通過(guò)PCI接口芯片與計(jì)算機(jī)進(jìn)行通信,F(xiàn)PGA外接FIFO存儲(chǔ)器,A/D轉(zhuǎn)換數(shù)據(jù)直接存儲(chǔ)在FIFO中,實(shí)現(xiàn)了數(shù)據(jù)的高速采集與連續(xù)穩(wěn)定數(shù)據(jù)流的輸出。
圖1 典型數(shù)據(jù)采集系統(tǒng)
2.數(shù)據(jù)采集硬件設(shè)計(jì)
PCI數(shù)據(jù)采集板卡的硬件整體框架如圖2所示。
圖2 系統(tǒng)硬件框圖
2.1PCI總線(xiàn)接口設(shè)計(jì)
PCI總線(xiàn)是一個(gè)地址/數(shù)據(jù)、命令/字節(jié)選擇信號(hào)復(fù)用的總線(xiàn)。它采用主從信號(hào)雙向握手的方式來(lái)控制數(shù)據(jù)的傳輸,其接口電路設(shè)計(jì)和傳統(tǒng)總線(xiàn)接口電路設(shè)計(jì)有較大的差別,所以必須嚴(yán)格遵守PCI總線(xiàn)規(guī)范所規(guī)定的技術(shù)規(guī)范。本文采用PLX公司的PC19054作為PCI總線(xiàn)的接口控制器。PCI9054是專(zhuān)用的PCI接口芯片,它主要是將復(fù)雜的PCI時(shí)序轉(zhuǎn)換為簡(jiǎn)單的時(shí)序。
2.2FPGA設(shè)計(jì)
FPGA設(shè)計(jì)用超高速集成電路硬件描述語(yǔ)言(VeryHighSpeedIntegratedCircuithardwareDessriptionLanguage,VHDL)實(shí)現(xiàn),設(shè)計(jì)軟件選用QuartusII。VHDL設(shè)計(jì)主要分為:總線(xiàn)讀寫(xiě)設(shè)計(jì),A/D控制設(shè)計(jì),D/A控制設(shè)計(jì),定時(shí)/計(jì)數(shù)器設(shè)計(jì)及DIO設(shè)計(jì)。
(1)總線(xiàn)讀寫(xiě)設(shè)計(jì)
總線(xiàn)讀寫(xiě)設(shè)計(jì)是FPGA設(shè)計(jì)的頂層模塊,主要完成PCI9054與本地的通信,實(shí)現(xiàn)數(shù)據(jù)的正確傳輸。PCI9054單周期讀、寫(xiě)和DMA讀的VHDL語(yǔ)言時(shí)序控制狀態(tài)機(jī)如圖3所示。狀態(tài)0為空閑狀態(tài),狀態(tài)1為總線(xiàn)保持狀態(tài),狀態(tài)2為DMA讀狀態(tài),狀態(tài)3為單周期寫(xiě)狀態(tài),狀態(tài)4為讀寫(xiě)操作完成狀態(tài)。
圖3 本地總線(xiàn)狀態(tài)機(jī)設(shè)計(jì)
(2)控制信號(hào)說(shuō)明
ADS#:地址選通信號(hào),雙向。表示地址有效及新的總線(xiàn)訪(fǎng)問(wèn)周期的開(kāi)始,在總線(xiàn)訪(fǎng)問(wèn)周?chē)牡谝粋€(gè)時(shí)鐘周期有效。BLAST#:突發(fā)傳輸結(jié)束信號(hào),雙向。由當(dāng)前本地總線(xiàn)主動(dòng)方驅(qū)動(dòng),用來(lái)表明總線(xiàn)傳輸?shù)淖詈笠粋€(gè)數(shù)據(jù)傳輸。LW/R#:寫(xiě)/讀信號(hào),雙向。低位讀,高為寫(xiě)。LHOLD:保持總線(xiàn)請(qǐng)求,輸出。請(qǐng)求使用本地總線(xiàn)。當(dāng)控制可以實(shí)現(xiàn)時(shí),本地總線(xiàn)仲裁回應(yīng)LHOLDA。
(3)A/D控制設(shè)計(jì)
A/D控制是數(shù)據(jù)采集卡的主要部分,設(shè)計(jì)主要包括:A/D采樣時(shí)鐘的產(chǎn)生,分組采集控制,觸發(fā)設(shè)置及FIFO讀寫(xiě)控制等。
(a)A/D采樣時(shí)鐘的產(chǎn)生。采樣時(shí)鐘的產(chǎn)生主要是根據(jù)設(shè)定的采樣頻率產(chǎn)生具有一定低脈寬的信號(hào),這是為了在轉(zhuǎn)換完成時(shí)能正確地讀出轉(zhuǎn)換數(shù)據(jù)。值得注意的是,在FIFO溢出的情況下及分組采集的組間間隔時(shí)間段內(nèi)要停止輸出采集脈沖。
(b)分組采集控制。分組采集是按照內(nèi)外時(shí)鐘源分別進(jìn)行設(shè)計(jì)的。首先根據(jù)組循環(huán)次數(shù)及首末通道設(shè)置計(jì)算出一組內(nèi)總共要采集的點(diǎn)數(shù),即:一組內(nèi)總共要采集的點(diǎn)數(shù)=(末通道-首通道+1)*組循環(huán)次數(shù)。
在內(nèi)時(shí)鐘模式下,啟動(dòng)A/D轉(zhuǎn)換后,在每次轉(zhuǎn)換完成后采集點(diǎn)數(shù)加1,直至加到一組內(nèi)總共要采集點(diǎn)數(shù)為止,此時(shí)停止輸出轉(zhuǎn)換脈沖,而后進(jìn)入組問(wèn)間隔時(shí)間,開(kāi)始對(duì)基準(zhǔn)時(shí)鐘進(jìn)行計(jì)數(shù),計(jì)到設(shè)定的組間間隔值后輸出轉(zhuǎn)換脈沖,再次進(jìn)入轉(zhuǎn)換計(jì)數(shù)周期,依此重復(fù)下去。
在外時(shí)鐘模式下,當(dāng)檢測(cè)到外時(shí)鐘下降沿時(shí)開(kāi)始輸出轉(zhuǎn)換脈沖并在轉(zhuǎn)換完成后進(jìn)行計(jì)數(shù),直至加到一組內(nèi)總共要采集的點(diǎn)數(shù)為止,此時(shí)停止輸出轉(zhuǎn)換脈沖,當(dāng)再次出現(xiàn)外時(shí)鐘的下降沿時(shí),便開(kāi)始新的一組分組采集。
(c)觸發(fā)設(shè)置。觸發(fā)設(shè)置是根據(jù)板卡控制字中的觸發(fā)源、觸發(fā)方向及觸發(fā)類(lèi)型共同決定的。
(d)FIFO讀寫(xiě)控制。FIFO的讀是由PCI9054發(fā)起的,在PCI9054讀周期,在滿(mǎn)足地址條件的情況下,產(chǎn)生FIFO的讀信號(hào),將A/D數(shù)據(jù)傳輸?shù)街鳈C(jī)。
FIFO的寫(xiě)信號(hào)是由A/D芯片的STS信號(hào)控制的,當(dāng)STS信號(hào)由高變?yōu)榈蜁r(shí)表示本次轉(zhuǎn)換完成,且數(shù)據(jù)線(xiàn)上數(shù)據(jù)有效,而FIFO是在下降沿啟動(dòng)寫(xiě)周期,上升沿將數(shù)據(jù)打入FIFO中,因此只需將STS信號(hào)取反后賦給FIFO的寫(xiě)信號(hào)。
3.硬件設(shè)計(jì)的測(cè)試
在板卡的設(shè)計(jì)過(guò)程中,硬件設(shè)計(jì)的測(cè)試是按如下步驟進(jìn)行的:首先通過(guò)功能仿真及時(shí)序仿真排除設(shè)計(jì)上的大部分錯(cuò)誤;其次通過(guò)PCItree軟件進(jìn)行測(cè)試,通過(guò)簡(jiǎn)單的功能測(cè)試,如開(kāi)關(guān)量輸入輸出;然后通過(guò)簡(jiǎn)易演示程序測(cè)試;最后通過(guò)高級(jí)程序的全面測(cè)試。在不同的測(cè)試階段會(huì)發(fā)現(xiàn)各種設(shè)計(jì)問(wèn)題,再將設(shè)計(jì)回歸到功能仿真及時(shí)序仿真,反復(fù)修改完善程序,直到最終滿(mǎn)足功能設(shè)計(jì)要求。
結(jié)束語(yǔ)
本文總結(jié)了基于FPGA的PCI數(shù)據(jù)采集卡的設(shè)計(jì)方案,該板卡實(shí)現(xiàn)了查詢(xún)、中斷和DMA等多種方式讀取數(shù)據(jù),可實(shí)時(shí)采集數(shù)據(jù),實(shí)現(xiàn)大容量數(shù)據(jù)的緩存,有效地解決對(duì)數(shù)據(jù)高速采集和傳輸?shù)男枨蟆?芍苯硬逶赑C機(jī)或與之兼容的計(jì)算機(jī)內(nèi)任一PCI插槽中,構(gòu)成各領(lǐng)域的數(shù)據(jù)采集、波形分析和處理系統(tǒng),也可構(gòu)成工業(yè)生產(chǎn)過(guò)程監(jiān)控系統(tǒng)。
電話(huà):18923864027(同微信)
QQ:709211280
〈烜芯微/XXW〉專(zhuān)業(yè)制造二極管,三極管,MOS管,橋堆等,20年,工廠(chǎng)直銷(xiāo)省20%,上萬(wàn)家電路電器生產(chǎn)企業(yè)選用,專(zhuān)業(yè)的工程師幫您穩(wěn)定好每一批產(chǎn)品,如果您有遇到什么需要幫助解決的,可以直接聯(lián)系下方的聯(lián)系號(hào)碼或加QQ/微信,由我們的銷(xiāo)售經(jīng)理給您精準(zhǔn)的報(bào)價(jià)以及產(chǎn)品介紹