基于AD7762和FPGA的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 為了滿足音頻數(shù)據(jù)采集過(guò)程中對(duì)頻率和分辨率等技術(shù)指標(biāo)的要求,設(shè)計(jì)了一種高速數(shù)據(jù)采集裝置。文中設(shè)計(jì)采用Altera公司的Cvclone系列FPGA芯片EP1C4F400在QuartusⅡ環(huán)境下使用Verilog語(yǔ)言控制ADI公司的AD7762A/D轉(zhuǎn)換器實(shí)現(xiàn)數(shù)據(jù)采集。通過(guò)串口將數(shù)據(jù)傳給上位機(jī),完成數(shù)據(jù)分析和顯示功能FPGA控制整個(gè)系統(tǒng)的采集時(shí)序。
關(guān)鍵詞 數(shù)據(jù)采集;AD7762;FPGA;寄存器控制;串口
隨著通信技術(shù)的發(fā)展,通信業(yè)務(wù)不斷擴(kuò)大,人們?cè)絹?lái)越重視高速數(shù)據(jù)采集和處理技術(shù)。數(shù)據(jù)采集系統(tǒng)主要包括增益放大器、A/D模數(shù)轉(zhuǎn)換器、功能控制端。文中設(shè)計(jì)了一種以FPGA為控制核心,用于控制A/D的轉(zhuǎn)換時(shí)序及數(shù)據(jù)傳輸?shù)母咚贁?shù)據(jù)采集系統(tǒng)。
1 系統(tǒng)總體結(jié)構(gòu)
設(shè)計(jì)系統(tǒng)以FPGA芯片EP1C4F400作為采集系統(tǒng)的核心控制單元,采用模數(shù)轉(zhuǎn)換芯片AD7762作為數(shù)據(jù)采集的核心模塊。由A/D轉(zhuǎn)換后產(chǎn)生的數(shù)字信號(hào)通過(guò)串口傳輸?shù)缴衔粰C(jī),由上位機(jī)對(duì)數(shù)據(jù)進(jìn)行一系列分析。該系統(tǒng)主要南前端處理模塊、A/D轉(zhuǎn)換控制模塊、FIFO緩存模塊及串口模塊組成,系統(tǒng)如圖1所示。
2 硬件設(shè)計(jì)
2.1 模數(shù)轉(zhuǎn)換模塊AD7762
AD7762是ADI公司近年推出的一款高性能、低功耗、并行24位Sigma-Delta模數(shù)轉(zhuǎn)換芯片ADC。寬輸入帶寬,在625 khit·s-1時(shí)信噪比為106 dB的高速Sigma-Delta轉(zhuǎn)換,使得其能夠高速獲得數(shù)據(jù)。片上集成用于信號(hào)緩沖的差分放大器,低通數(shù)字FIR數(shù)字濾波器,需要最少的外圍設(shè)備。另外,AD7762還提供了可編程的采樣速率和可調(diào)整的FIR數(shù)字濾波。AD7762要求在無(wú)復(fù)雜的前后端信號(hào)處理設(shè)計(jì)中有較高的SNR。
在應(yīng)用正常模式下,為實(shí)現(xiàn)指定性能,差分放大器需要被配置為前端平滑濾波器,前端使用低噪聲,高性能的運(yùn)算放大器對(duì)其進(jìn)行配置,實(shí)現(xiàn)單端信號(hào)轉(zhuǎn)差分號(hào),然后驅(qū)動(dòng)AD7762。運(yùn)算放大器使AD8021,差分放大器使用AD8138。信號(hào)由AD8021運(yùn)算放大器輸入端口接入,根據(jù)A/D輸人信號(hào)的幅度標(biāo)準(zhǔn)進(jìn)行輸入信號(hào)幅度的調(diào)整,經(jīng)由AD8138差分放大器進(jìn)行單端轉(zhuǎn)差分處理,之后送入模數(shù)轉(zhuǎn)換器中。其電路實(shí)現(xiàn)如圖2所示。
AD7762有許多用戶可編程寄存器。控制寄存器用于設(shè)置濾波頻率、濾波器配置、時(shí)鐘分頻器等。AD7762使用16位雙向并行接口,該接口受控于。
2.2 主控制FPGA模塊EP1C4F400
系統(tǒng)的主控制器采用Altera公司Cyclone系列的EP1C4F400C8N。Ahera Cyclone系列FPGA從根本上針對(duì)低成本進(jìn)行設(shè)計(jì),具有專業(yè)應(yīng)用特性。器件基于成本優(yōu)化的全銅1.5VSRAM工藝,輸入輸出電源電壓是3.3 V。內(nèi)核供應(yīng)電壓是1.425~1.575 V。Cyclone FPGA綜合考慮了邏輯、存儲(chǔ)器、鎖相環(huán)(PLL)和高級(jí)I/O接口。具有專用外部存儲(chǔ)器接口電路,支持DDRFCRAM和SDRAM器件以及SDR SDRAM存儲(chǔ)器的連接。支持單端I/O標(biāo)準(zhǔn)如3.3 V、2.5 V、1.8 V、LVTTL、LVCMOS、PCI、和SSTL-2/3,滿足當(dāng)前系統(tǒng)需要。通過(guò)LVDS和RSDS標(biāo)準(zhǔn)提供多達(dá)129個(gè)通道的差分I/O技術(shù)支持,每個(gè)LVDS通道信號(hào)數(shù)據(jù)率高達(dá)640 Mb·s-1。FPGA中有兩個(gè)鎖相環(huán)(PLLs),提供6個(gè)輸出和層次時(shí)鐘結(jié)構(gòu),以及復(fù)雜設(shè)計(jì)的時(shí)鐘管理電路。FPCA中包括17個(gè)M4K存儲(chǔ)塊。每塊提供288 kbit的存儲(chǔ)容量,能夠使配置支持多種操作模式,包括RAM、ROM、FIFO及單口和雙口模式。
2.3 系統(tǒng)后端數(shù)據(jù)傳輸模塊
在數(shù)據(jù)傳輸模塊中,設(shè)計(jì)調(diào)用FPGA片上資源實(shí)現(xiàn)FIFO緩存。存儲(chǔ)深度為256×16 bit。由于A/D的采樣頻率和串口的讀寫頻率不同,因此設(shè)計(jì)中采用讀寫時(shí)鐘異步的FIFO。FIFO中的數(shù)據(jù)通過(guò)串口傳輸?shù)缴衔粰C(jī),設(shè)計(jì)中串口芯片采用美信公司專門為RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的單電源電平轉(zhuǎn)換芯片MAX3232芯片,使用+3.3 V單電源供電。
3 軟件設(shè)計(jì)
系統(tǒng)利用Ahera QuartusⅡ軟件完成FPGA程序的編寫。Altera QuartusⅡ軟件提供完整的多平臺(tái)設(shè)計(jì)環(huán)境,能夠直接滿足特定的設(shè)計(jì)需要,為FPGA開(kāi)發(fā)提供全面的設(shè)計(jì)環(huán)境。QuartusⅡ開(kāi)發(fā)軟件支持多種設(shè)計(jì)輸入方式。由于FPGA支持Verilog/VHDL混合開(kāi)發(fā),設(shè)計(jì)主要采用文本形式文件輸入方式和存儲(chǔ)器數(shù)據(jù)文件出入方式,采用的Verilog/VHDL硬件描述語(yǔ)言設(shè)計(jì)輸入,易于實(shí)現(xiàn)自頂向下的設(shè)計(jì)方法,易于模塊劃分和復(fù)用、移植性好、通用性強(qiáng),具有較好的硬件平臺(tái)無(wú)關(guān)性,設(shè)計(jì)不因芯片工藝和結(jié)構(gòu)的改變而改變,利于向ASIC移植。
3.1 A/D轉(zhuǎn)換器的控制寄存器
A/D時(shí)序分為寫時(shí)序和讀時(shí)序。寫時(shí)序控制A/D寄存器的寫操作。寫操作包括兩部分,先寫控制寄存器2,給A/D加電,控制寄存器2的地址是0X0002,高10位全部是0。低6位的內(nèi)容如圖3所示。
設(shè)置A/D的時(shí)鐘分頻比率,CDIV=1,則ICLK=MCLK。CDIV=0,則ICLK=MCLK/2。設(shè)計(jì)硬件電路中連接的時(shí)鐘是MCLK=40 MHz,但A/D中允許的最大的ICLK時(shí)鐘是20 MHz,需要對(duì)外部時(shí)鐘進(jìn)行分頻,因此此位設(shè)為0。D1PD位置高將關(guān)斷片上差分放大器,本設(shè)計(jì)中置0,第二位寫入1。再寫控制寄存器1,設(shè)置A/D的濾波頻率、濾波器長(zhǎng)度位、數(shù)據(jù)輸出頻率等??刂破?的內(nèi)容如表1所示。
控制寄存器1的地址是0X0001,設(shè)計(jì)中控制寄存器1的內(nèi)容設(shè)為0X001B。設(shè)計(jì)中通過(guò)寫控制寄存器1設(shè)置輸出數(shù)據(jù)頻率。讀時(shí)序控制A/D采樣數(shù)據(jù)的輸出。A/D的控制時(shí)序及工作狀態(tài)如圖4所示。
在寄存器寫操作時(shí)始終保持高電平,由控制。在為低電平期問(wèn)依次將兩個(gè)寄存器的地址和內(nèi)容寫入A/D中,控制A/D的工作狀態(tài)。
AD7762串聯(lián)了3個(gè)濾波器。通過(guò)使用不同的濾波頻率、濾波器選擇和全通的結(jié)合,可以獲得大范圍的采樣速率。通過(guò)設(shè)置寄存器1的低3位濾波器的狀態(tài)設(shè)置數(shù)據(jù)輸出速率Rate,A/D中默認(rèn)的濾波特性如表3所示。
表3是在A/D內(nèi)部時(shí)鐘為20 MHz時(shí),可看出當(dāng)rate=3’h3時(shí)→625 kHz;rate=3→312.5 kHz;rate=4→156.25 kHz;rate=5→78.125 kHz。
3.2 A/D讀時(shí)序控制
AD7762的讀時(shí)序如圖5所示。
A/D寄存器寫成功后,A/D會(huì)根據(jù)寄存器設(shè)置的工作狀態(tài)進(jìn)行數(shù)據(jù)采樣和傳輸。當(dāng)一個(gè)新的轉(zhuǎn)換數(shù)據(jù)結(jié)果有效時(shí),A/D的引腳會(huì)產(chǎn)生一個(gè)低脈沖信號(hào)送給FPGA,當(dāng)FPGA接收到這個(gè)低脈沖信號(hào)時(shí)開(kāi)始接收A/D的采樣數(shù)據(jù)。由于AD7762是24位分辨率的A/D轉(zhuǎn)換器,而外部是16位數(shù)據(jù)線,所以從AD7762中讀取一個(gè)轉(zhuǎn)換結(jié)果,需要執(zhí)行兩次16 bit讀數(shù)據(jù)操作。當(dāng)同時(shí)為低電平時(shí),數(shù)據(jù)總線開(kāi)始傳播數(shù)據(jù)。在二次讀操作之間,必須置高一個(gè)ICLK周期的高電平。數(shù)據(jù)傳輸結(jié)束后保持高電平,數(shù)據(jù)線處于高阻態(tài),等待下一次有效數(shù)據(jù)的傳輸。
控制A/D的程序流程圖如圖6所示。程序編譯后生成的A/D轉(zhuǎn)換器的控制模塊如圖7所示。
模塊中ad_data_bus[15.0]與FPGA的IO口進(jìn)行連接。ad_rst_n是A/D的復(fù)位信號(hào),而rst_n是系統(tǒng)的復(fù)位信號(hào)。ad_mclk外接40 MHz晶振,進(jìn)入A/D后經(jīng)過(guò)寄存器設(shè)置進(jìn)行二分頻。ad_sync是同步信號(hào),可以同步多片ADC,此處不操作。
將程序通過(guò)FPGA的JTAG口下載到硬件系統(tǒng),進(jìn)行仿真得到的A/D模塊仿真結(jié)果如圖8所示。
對(duì)A/D進(jìn)行仿真。從仿真圖中可以看出,A/D產(chǎn)生低電平后才開(kāi)始根據(jù)的高低電平控制傳輸數(shù)據(jù)。
3.3 FIFO數(shù)據(jù)緩存模塊
FIFO用于存儲(chǔ)FPGA接收的A/D采集的數(shù)據(jù),F(xiàn)IFO模塊的讀時(shí)鐘受前端A/D模塊巾的data_valid信號(hào)控制,寫時(shí)鐘由后面的串口模塊產(chǎn)生,已達(dá)到FIFO數(shù)據(jù)讀取與串口傳輸?shù)臄?shù)據(jù)一致。保證數(shù)據(jù)準(zhǔn)確地通過(guò)串口傳輸?shù)缴衔粰C(jī)。FIFO的讀寫控制信號(hào)分別由wrfull和rdempty控制,F(xiàn)IFO模缺如圖9所示。
3.4 串口數(shù)據(jù)傳輸模塊
串口模塊的開(kāi)啟和關(guān)閉信號(hào)tx_en受FIFO模塊的讀信號(hào)rdreq控制。
4 結(jié)束語(yǔ)
數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)中,AD7762內(nèi)部設(shè)置差分放大器和靈活設(shè)置的寄存器,使得外部的電路設(shè)計(jì)簡(jiǎn)單且成本低。FPGA控制更為靈活方便,若想改變A/D的工作狀態(tài)只需要更改寄存器的設(shè)置內(nèi)容即可。減少外部控制線的數(shù)量,使系統(tǒng)減小干擾,更為可靠。若將此系統(tǒng)作為音頻信號(hào)分析系統(tǒng)的前端,將使整個(gè)系統(tǒng)的穩(wěn)定度及精確度得到提高。