摘 要: 本文提出了由高速高精度A/D轉(zhuǎn)換芯片、高性能FPGA、PCI總線(xiàn)接口、DB25并行接口組成的高精度數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案及實(shí)現(xiàn)方法。其中FPGA作為本系統(tǒng)的控制核心和傳輸橋梁,采用并行接口和PCI總線(xiàn)接口的兩種數(shù)據(jù)傳輸模式,使系統(tǒng)方便的在兩種傳輸模式下進(jìn)行切換。最后采用QuartusII開(kāi)發(fā)軟件對(duì)FPGA進(jìn)行開(kāi)發(fā)設(shè)計(jì)并通過(guò)VB程序編寫(xiě)了應(yīng)用于PC端的上層控制軟件。
關(guān)鍵字: 數(shù)據(jù)采集;PCI;并行接口;FPGA
1 引言
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和普及,數(shù)據(jù)采集系統(tǒng)也迅速地得到應(yīng)用。在生產(chǎn)過(guò)程中,應(yīng)用這一系統(tǒng)可對(duì)生產(chǎn)現(xiàn)場(chǎng)的工藝參數(shù)進(jìn)行采集、監(jiān)視和記錄,為提高產(chǎn)品質(zhì)量、降低成本提供信息和手段。典型數(shù)據(jù)采集系統(tǒng)的構(gòu)成是由A/D+DSP+FPGA(CPLD)+D/A。本文通過(guò)利用模數(shù)轉(zhuǎn)換芯片AD6644,以及FPGA實(shí)現(xiàn)了可用于兩種接口(PCI、并行接口)傳輸模式下的高精度數(shù)據(jù)采集系統(tǒng)。
2 硬件電路設(shè)計(jì)
2.1 系統(tǒng)設(shè)計(jì)方案
本數(shù)據(jù)采集系統(tǒng)主要由模擬部分,數(shù)字部分和接口部分三大板塊組成,如下圖1所示。其中模擬部分主要包含模擬中頻信號(hào)預(yù)處理模塊和模數(shù)轉(zhuǎn)換模塊;數(shù)字部分除時(shí)鐘產(chǎn)生電路外,其余部分完全在FPGA中設(shè)計(jì)完成;接口部分包含PCI總線(xiàn)接口、DB25并行接口以及SignalTapII邏輯分析儀調(diào)試接口。
本系統(tǒng)的設(shè)計(jì)思路就是:首先通過(guò)模擬中頻信號(hào)預(yù)處理模塊,將調(diào)整后的模擬信號(hào)輸入給A/D轉(zhuǎn)換器,然后經(jīng)模數(shù)轉(zhuǎn)換之后將16bit數(shù)字信號(hào)(AD6644輸出14bit,再加上2個(gè)校驗(yàn)位)直接輸出給FPGA進(jìn)行存儲(chǔ)。在FPGA中設(shè)計(jì)了高速緩沖器DCFIFO和高速存儲(chǔ)器DPRAM以及一系列時(shí)序控制邏輯,以保證在預(yù)定容量下能夠?qū)崟r(shí)的存儲(chǔ)由ADC發(fā)送過(guò)來(lái)的數(shù)據(jù)。同時(shí),在FPGA中還設(shè)計(jì)了2種數(shù)據(jù)傳輸接口,從而使得系統(tǒng)可以在我們選擇的模式下進(jìn)行數(shù)據(jù)傳輸,或通過(guò)并行接口,或通過(guò)PCI總線(xiàn)接口。
[align=center]
圖1 系統(tǒng)總體框圖[/align]
2.2 模擬中頻信號(hào)預(yù)處理模塊
首先,將該輸入信號(hào)通過(guò)兩級(jí)放大器,目的是為了使模擬輸入信號(hào)幅度達(dá)到AD6644輸入幅度的要求和對(duì)模擬輸入信號(hào)進(jìn)行很好的隔離。這里選用AD9618來(lái)實(shí)現(xiàn)對(duì)模擬信號(hào)的放大功能。AD9618的單位增益帶寬和壓擺率的指標(biāo)均較高,能起到對(duì)模擬輸入信號(hào)放大和改善性能的作用。電路圖如圖2所示。
[align=center]
圖2 兩級(jí)AD9618放大器原理圖[/align]
其次,將經(jīng)過(guò)放大處理后的單端信號(hào)通過(guò)AD8138,轉(zhuǎn)換為差分信號(hào)后輸出給AD6644。這么做是因?yàn)樽鳛樾滦偷母咿D(zhuǎn)換速度、大動(dòng)態(tài)范圍的ADC,為保證其性能,AD6644的模擬輸入信號(hào)要求差分形式。在模擬信號(hào)階段使用差分形式,可以有效地濾除偶次諧波分量,同時(shí)對(duì)其它共模雜散信號(hào)(如由電源和地引入的噪聲)及對(duì)晶振的反饋信號(hào)也有很好的抑制作用。如下圖3,使用AD8138對(duì)模擬信號(hào)進(jìn)行調(diào)整。單端模擬信號(hào)(AD9618_out)由AD8138轉(zhuǎn)換為差分模擬信號(hào)(AIN、nAIN),增益為1,然后送AD6644實(shí)現(xiàn)模數(shù)轉(zhuǎn)換。AD8138的直流偏壓VREF由AD6644的精密參考源提供。采用差分輸入比單端輸入大約可以提高信噪比3dB。
2.3 FPGA配置與模數(shù)轉(zhuǎn)換模塊
FPGA部分是本系統(tǒng)的核心模塊,承載了所有的數(shù)字電路部分。在設(shè)計(jì)過(guò)程中,強(qiáng)調(diào)SOC(片上系統(tǒng))的概念,在FPGA平臺(tái)上實(shí)現(xiàn)了系統(tǒng)中所需要的所有數(shù)字邏輯,包括觸發(fā)器、存儲(chǔ)器,緩沖器,PLL(鎖相環(huán)),計(jì)數(shù)器,譯碼器,多路選擇器,DB25接口邏輯,PCI接口邏輯等。從而使得系統(tǒng)中的數(shù)字部分處于完全可編程可調(diào)狀態(tài),只需根據(jù)需求更新FPGA程序即可,具有較強(qiáng)的適應(yīng)性和靈活性?;谏鲜鏊悸?,我們選擇了Altera公司的Cyclone系列FPGA——EP1C6Q240C8。
[align=center]
圖3 AD8138+AD6644連接原理圖[/align]
在本系統(tǒng)中,使用了2種配置方式,即AS方式和JTAG方式。這2種配置方式可以共同使用,只需在板子上放置2套接線(xiàn)柱即可,下載電纜采用ByteBlaster II。首先使用JTAG方式配合Quartus II工具中自帶的在線(xiàn)邏輯分析儀SignalTap II對(duì)FPGA功能及時(shí)序進(jìn)行調(diào)試,成功后再使用AS+EPCS4方式將程序下載到配置芯片EPCS4中,使得每次系統(tǒng)上電后,都能對(duì)FPGA自動(dòng)加載程序。另外要注意,使用這種配置方式時(shí),如果讓JTAG和AS模式同時(shí)開(kāi)始加載,則JTAG模式會(huì)自動(dòng)取得優(yōu)先權(quán)進(jìn)行程序加載,而AS模式則會(huì)自動(dòng)終止。
A/D轉(zhuǎn)換芯片使用的是ADI公司的AD6644。AD6644是高速、高性能的14-bit65MSPS單片模數(shù)轉(zhuǎn)換器,內(nèi)部自帶采樣保持器和參考電壓電路,可以提供完整的轉(zhuǎn)換應(yīng)用解決方案。AD6644是ADI公司Softcell接收器芯片組中的一個(gè)代表芯片,它是專(zhuān)門(mén)為第三代移動(dòng)通信系統(tǒng)設(shè)計(jì)的ADC芯片,特別適用于多通道、多模式接收機(jī)應(yīng)用。同其它芯片相比,由于在奈奎斯特頻率范圍內(nèi),AD6644的無(wú)雜散動(dòng)態(tài)范圍指標(biāo)超過(guò)了100dB,大大增強(qiáng)了從輸入端雜散分量中檢測(cè)有用小信號(hào)的能力,使它更加適用于多模式的數(shù)字接收機(jī)。同時(shí),AD6644的信噪比的典型值也達(dá)到了74dB。AD6644還可以應(yīng)用于單通道數(shù)字接收機(jī)中,如寬通道帶寬系統(tǒng)中,能夠精確變換寬帶模擬信號(hào)(200MHz輸入帶寬)。通過(guò)欠采樣,可以將諧波成分分配到有用頻帶之外,配合使用數(shù)字下變頻芯片可降低有用信號(hào)帶寬內(nèi)的噪聲平臺(tái)。
2.4 時(shí)鐘產(chǎn)生模塊
[align=center]
圖4 雙模前置分頻器MC12013工作原理圖[/align]
本采集系統(tǒng)的時(shí)鐘是通過(guò)外部晶體振蕩器或者時(shí)鐘信號(hào)發(fā)生器產(chǎn)生,然后經(jīng)過(guò)前置分頻后加到FPGA的專(zhuān)用時(shí)鐘引腳輸入端,并使用FPGA中的全局時(shí)鐘網(wǎng)絡(luò)布線(xiàn)。我們采用雙模前置分頻器MC12013進(jìn)行前置分頻。MC12013是超高速雙模前置分頻器,雙極型發(fā)射極耦合晶體管邏輯。模數(shù)比為10/11,由模式控制電平的高低決定分頻比。MC12013是ECL集成電路,最高工作頻率可達(dá)550MHz,并帶有一個(gè)內(nèi)部的ECL到TTL的轉(zhuǎn)換電路。當(dāng)變??刂贫溯敵龈唠娖健?”時(shí),雙模前置分頻器按低模分頻比M工作;當(dāng)輸出低電平“0”時(shí),按高模分頻比M+1工作。這里只使用除10分頻功能,工作原理圖如圖4。
2.5 接口部分設(shè)計(jì)
本系統(tǒng)中使用了2種接口方式,即DB25并行接口和PCI總線(xiàn)接口。雖然2種接口的作用都是將經(jīng)過(guò)模數(shù)轉(zhuǎn)換模塊采集后并存儲(chǔ)到FPGA中的數(shù)據(jù)傳輸至PC機(jī)中,但是2者的工作過(guò)程卻是不同的。
當(dāng)使用DB25并行接口傳輸數(shù)據(jù)時(shí),由于并行接口傳輸率的限制(EPP工作模式下只能達(dá)到1MBps左右),因此當(dāng)A/D轉(zhuǎn)換器進(jìn)行高速采樣時(shí)(如AD6644工作在50MHZ下),并行接口沒(méi)有能力在相同的時(shí)間里把ADC存放到FPGA中的數(shù)據(jù)完全讀取出來(lái)。所以此時(shí)不能實(shí)現(xiàn)實(shí)時(shí)傳輸,只能讓系統(tǒng)工作于存儲(chǔ)轉(zhuǎn)發(fā)的狀態(tài)下,即當(dāng)ADC中的采集數(shù)據(jù)將FPGA中RAM存儲(chǔ)器寫(xiě)滿(mǎn)時(shí),停止數(shù)據(jù)采集工作,進(jìn)而轉(zhuǎn)向數(shù)據(jù)讀取過(guò)程,待DB25將FPGA存儲(chǔ)器中的數(shù)據(jù)完全傳輸至PC機(jī)之后,再重新啟動(dòng)ADC的數(shù)據(jù)采集過(guò)程,如此反復(fù)直到全部數(shù)據(jù)采集、存儲(chǔ)并轉(zhuǎn)發(fā)完畢。
當(dāng)使用PCI總線(xiàn)接口傳輸數(shù)據(jù)時(shí),由于PCI接口的傳輸率很高(本系統(tǒng)中使用33MHZ*32bit的傳輸模式),因此即使當(dāng)A/D轉(zhuǎn)換器進(jìn)行高速采樣時(shí),PCI接口仍然有能力在相同的時(shí)間內(nèi)將ADC存放到FPGA中的數(shù)據(jù)讀入到PC機(jī)中。所以此時(shí)可以在一定程度上實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集和存儲(chǔ)。
3 FPGA與PC端控制軟件設(shè)計(jì)
Altera公司的FPGA產(chǎn)品與其它公司產(chǎn)品的最大區(qū)別是它采用連續(xù)式的互連結(jié)構(gòu),即采用同樣長(zhǎng)度的一些金屬線(xiàn)實(shí)現(xiàn)邏輯單元間的互連。連續(xù)式互連結(jié)構(gòu)消除了FPGA分段式互連結(jié)構(gòu)在傳輸延時(shí)上的差異,在邏輯單元間提供快速、具有固定延時(shí)的通路。這種結(jié)構(gòu)的優(yōu)點(diǎn)是布線(xiàn)速度快且易于仿真,在實(shí)現(xiàn)復(fù)雜大型設(shè)計(jì)時(shí),可以縮短開(kāi)發(fā)周期。開(kāi)發(fā)Altera公司的可編程邏輯器件有兩種軟件,QuartusII和MAX+PLUSII。本設(shè)計(jì)采用QuartusII開(kāi)發(fā)軟件,其提供了一種與結(jié)構(gòu)無(wú)關(guān)的全集成化設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能對(duì)Altera的各種產(chǎn)品系列方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。QuartusII開(kāi)發(fā)系統(tǒng)具有強(qiáng)大的處理能力和高度的靈活性。
在本系統(tǒng)中,F(xiàn)PGA起到的是一個(gè)控制橋梁和傳輸橋梁的作用,通過(guò)來(lái)自于PC主機(jī)的控制信號(hào)和傳輸信號(hào),來(lái)有序的控制ADC的采樣,數(shù)據(jù)的存儲(chǔ)和傳輸過(guò)程。而如何決定整個(gè)系統(tǒng)開(kāi)始工作的時(shí)間,采用何種接口的傳輸模式,數(shù)據(jù)在PC機(jī)中的存儲(chǔ)方式以及如何利用采集后的數(shù)據(jù)來(lái)顯示原始波形,這些任務(wù)都是由安裝在PC端的控制軟件所完成的。
我們通過(guò)VB程序?qū)崿F(xiàn)了這個(gè)控制軟件。在Windows環(huán)境下,數(shù)據(jù)采集系統(tǒng)作為外部設(shè)備,我們將通過(guò)調(diào)用動(dòng)態(tài)鏈接庫(kù)(TVicHW32.DLL)來(lái)完成對(duì)其的讀寫(xiě)操作。TVicHW32.DLL可以對(duì)內(nèi)存、I/O端口、中斷等進(jìn)行直接控制和讀寫(xiě),這里我們使用其部分功能和函數(shù)。
本文作者創(chuàng)新點(diǎn):
本文所設(shè)計(jì)的方案,就是將FPGA作為整個(gè)數(shù)據(jù)采集系統(tǒng)的控制核心和傳輸橋梁。一方面可以根據(jù)上位機(jī)的指令來(lái)完成對(duì)整個(gè)系統(tǒng)工作模式和狀態(tài)的精確時(shí)序控制,另一方面可以通過(guò)FPGA中豐富的宏功能塊資源和可嵌入的IP核資源來(lái)實(shí)現(xiàn)高速緩存和高速數(shù)據(jù)傳輸接口。
參考文獻(xiàn):
[1] 張瑞祥, 趙軍紅. 基于數(shù)據(jù)采集卡的異步電機(jī)故障檢測(cè)系統(tǒng)[J]. 兵工自動(dòng)化, 2006
[2] 徐海軍, 葉衛(wèi)東. FPGA在高性能數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J]. 計(jì)測(cè)技術(shù), 2005
[3] 求是科技. CPLD/FPGA應(yīng)用開(kāi)發(fā)技術(shù)與工程實(shí)踐[M]. 北京:人民郵電出版社, 2005
[4] 趙紅梅,米啟超. 基于DSP與FPGA的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J]. 微計(jì)算機(jī)信息, 2007, 9-2: 197-198