文/董衛(wèi)珍 衡總 張磊磊
基于FPGA的多通道采集傳輸模塊的設(shè)計(jì)
文/董衛(wèi)珍 衡總 張磊磊
由于多通道體制的聲納具有高信噪比和高精度等特性,它已經(jīng)成為當(dāng)前聲納的主流。因此,多通道信號(hào)的實(shí)時(shí)、高效采集尤為關(guān)鍵。本文提出了一種基于FPGA的多通道聲納采集模塊,它利用FPGA產(chǎn)生AD芯片的控制信號(hào),并將采集到的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),最后將采集到的數(shù)據(jù)傳至信號(hào)預(yù)處理模塊。該設(shè)計(jì)具有高精度、低噪的特點(diǎn),可同時(shí)對(duì)多路信號(hào)進(jìn)行AD采集、處理和傳輸,采集數(shù)據(jù)有效位數(shù)達(dá)12bit,采樣頻率可達(dá)240Ksps。
FPGA AD7690 采集
對(duì)于多通道采集系統(tǒng)來(lái)說(shuō),其模數(shù)轉(zhuǎn)換的多路擴(kuò)展性、實(shí)時(shí)性和高精度決定著采集系統(tǒng)的性能。一般的信號(hào)采集系統(tǒng)中,常采用單片機(jī)或DSP對(duì)AD轉(zhuǎn)換進(jìn)行控制,單片機(jī)一般用于低速數(shù)據(jù)的轉(zhuǎn)換中,且接口單一,靈活性差;DSP以其高速處理、強(qiáng)大而又靈活的接口和通信能力已應(yīng)用于許多實(shí)際系統(tǒng),但是DSP易受干擾。
FPGA具有硬件可定制的特點(diǎn),所有功能利用硬件實(shí)現(xiàn),能夠有效克服單片機(jī)和DSP的缺點(diǎn)。FPGA的時(shí)鐘頻率高、內(nèi)部延時(shí)小、編程配置靈活等特點(diǎn),使其可以集采樣控制、處理、緩存和傳輸于一個(gè)芯片內(nèi)實(shí)現(xiàn)片上系統(tǒng),從而大大提高系統(tǒng)的可靠性,降低了系統(tǒng)成本。因此,基于FPGA進(jìn)行AD采集的設(shè)計(jì)已成為了近些年的主流方向。
多通道采集模塊實(shí)現(xiàn)對(duì)60路模擬信號(hào)的同步采集和數(shù)據(jù)轉(zhuǎn)換及傳輸。它主要由三部分組成,包括60路Ad轉(zhuǎn)換模塊、FPGA處理模塊和輸出接口模塊。其中:FPGA主要產(chǎn)生AD芯片工作的控制信號(hào),進(jìn)行數(shù)據(jù)串并轉(zhuǎn)化的處理;AD轉(zhuǎn)換電路是將輸入的模擬信號(hào)進(jìn)行采集、量化轉(zhuǎn)換到數(shù)字域,轉(zhuǎn)換后的數(shù)據(jù)送入FPGA進(jìn)行相應(yīng)的處理;輸出接口電路負(fù)責(zé)將處理后數(shù)據(jù)傳至信號(hào)處理板進(jìn)行進(jìn)一步處理。多通道采集模塊的整體框圖如圖1所示。
圖1:多通道采集模塊的整體框圖
多通道采集模塊的FPGA芯片選用的是Xilinx公司Virtex系列的XC5VLX50T,它包含 28800個(gè)CLBs,480個(gè)I/O,2160kb BlockRam,48個(gè)DSP48E Slice;AD芯片選用的是AD7690,它是一款18位、逐次逼近型模數(shù)轉(zhuǎn)換器(ADC),它的最高采樣速率可達(dá)400Ksps,從而滿(mǎn)足項(xiàng)目240Ksps的采樣速率要求。
AD7690內(nèi)置一個(gè)低功耗、高速、18位不失碼的采樣ADC、一個(gè)內(nèi)部轉(zhuǎn)換時(shí)鐘和一個(gè)多功能串行接口,在CNV上升沿、AD7690對(duì)IN+與IN-引腳之間的電壓差進(jìn)行采樣。這兩個(gè)引腳上的電壓擺幅為0V到REF,相位相反?;鶞?zhǔn)電壓(REF)由外部提供,最高可以設(shè)置為電源電壓。
由于AD7690是采用差分輸入的方式,所以需要對(duì)輸入信號(hào)進(jìn)行單端轉(zhuǎn)差分。本設(shè)計(jì)中的單端轉(zhuǎn)差分轉(zhuǎn)換器選用的是ADA4941-1,該芯片是一款低功耗、低噪聲差分驅(qū)動(dòng)器。它具有寬輸入電壓范圍(當(dāng)采用5V單電源時(shí),可達(dá)0V至3.9V)、軌到軌輸出、高輸入阻抗和用戶(hù)可調(diào)增益,非常適合驅(qū)動(dòng)AD7690。
AD7690芯片的控制信號(hào)不是特別復(fù)雜,具體控制信號(hào)的時(shí)序要求如圖2所示。其中信號(hào)的邏輯功能為:
圖2:AD7690的工作時(shí)序
圖3:AD控制模塊的仿真波形圖
(1)CNV 轉(zhuǎn)換輸入。此輸入有多項(xiàng)功能:在它的上升沿,它啟動(dòng)轉(zhuǎn)換過(guò)程并選擇該部分的接口模式(鏈路或者片選)。當(dāng)處于片選模式時(shí),SDO管腳在CNV為低電平時(shí)有效;當(dāng)處于鏈路模式時(shí),數(shù)據(jù)只有在CNV為高電平時(shí)才可以進(jìn)行讀取。
(2)SCK串行時(shí)鐘,邏輯輸入。串行時(shí)鐘輸入提供用于訪問(wèn)AD7690 中的數(shù)據(jù)的串行時(shí)鐘。此時(shí)鐘也用作轉(zhuǎn)換過(guò)程的時(shí)鐘源。
(3)SDO 串行數(shù)據(jù)輸出。轉(zhuǎn)換數(shù)據(jù)以串行數(shù)據(jù)流的方式輸出到該管腳,并且輸出數(shù)據(jù)與SCK同步。
系統(tǒng)的邏輯功能設(shè)計(jì)主要實(shí)現(xiàn)對(duì)AD芯片的控制,將采集數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,并將數(shù)據(jù)進(jìn)行緩存和傳輸?shù)裙δ?。下面將?duì)各部分邏輯功能進(jìn)行詳細(xì)介紹。
本設(shè)計(jì)中,AD7690的接口方式采用的是片選模式,即在CNV為低電平時(shí)才可以進(jìn)行數(shù)據(jù)的讀取。由于芯片的數(shù)據(jù)轉(zhuǎn)換時(shí)間為(0.5~2.1us),本設(shè)計(jì)中設(shè)置CNV的高電平持續(xù)時(shí)間大于2.1us,確保采集數(shù)據(jù)的正確。
控制模塊的工作流程為:當(dāng)接收到同步信號(hào)sys_start后,計(jì)數(shù)器cnt_cnv開(kāi)始計(jì)數(shù),計(jì)數(shù)周期為500個(gè)120MHz時(shí)鐘;在cnt_cnv為1~265時(shí),將CNV信號(hào)置高(保證大于2.1us);在cnt_cnv為266~480時(shí),給出串行時(shí)鐘SCK(選用12MHz)。該模塊的仿真波形圖見(jiàn)圖3。
模擬信號(hào)經(jīng)AD7690轉(zhuǎn)換后得到的是串行數(shù)據(jù),而信號(hào)處理需要的是并行數(shù)據(jù),所以需要將64路信號(hào)進(jìn)行串并轉(zhuǎn)換。AD數(shù)據(jù)處理模塊就是將60路數(shù)據(jù)信號(hào)進(jìn)行串并轉(zhuǎn)換,并將數(shù)據(jù)傳入后端的數(shù)據(jù)緩存模塊,該模塊的邏輯框圖如圖4。
圖4:AD數(shù)據(jù)處理模塊的流程圖
以第一通道為例,描述下具體實(shí)現(xiàn)方式:
(1)在en_sck為高期間,派生以一個(gè)計(jì)數(shù)器cnt_rdad0,同時(shí)對(duì)接收到的串行數(shù)據(jù)進(jìn)行移位寄存,當(dāng)計(jì)數(shù)器計(jì)到18時(shí),將移位寄存器ad_ram0的值取出,該值din_db0即為當(dāng)前通道的串并轉(zhuǎn)換得到的位寬18bit的采樣數(shù)據(jù),該數(shù)值僅在每次轉(zhuǎn)換結(jié)束后才改變(保持一個(gè)采樣周期);
(2)當(dāng)AD數(shù)據(jù)讀取和串并轉(zhuǎn)換(en_ db)完成后:首先派生一個(gè)計(jì)數(shù)器en_cnt_ wr,將60路數(shù)據(jù)分別寫(xiě)入不同的地址addr_ ram,當(dāng)60路數(shù)據(jù)寫(xiě)操作結(jié)束時(shí),將寫(xiě)使能信號(hào)en_wrram拉底。
緩存AD數(shù)據(jù)模塊的功能是將AD采集數(shù)據(jù)存入RAM,并在要求讀取數(shù)據(jù)時(shí),及時(shí)將數(shù)據(jù)讀出。該設(shè)計(jì)中開(kāi)辟了一個(gè)128×18bit的RAM,采取乒乓存儲(chǔ)的方式,以保證讀寫(xiě)數(shù)據(jù)不沖突。其具體實(shí)現(xiàn)方式:
(1)派生了一個(gè)標(biāo)志信號(hào)ping_pang,該標(biāo)志在每次同步信號(hào)到來(lái)時(shí),發(fā)生改變;同時(shí)利用ping_pang和ad_data模塊傳來(lái)的地址信號(hào)addr_ram,作為寫(xiě)入緩存RAM的地址,實(shí)現(xiàn)當(dāng)數(shù)據(jù)寫(xiě)進(jìn)地址(0~59)時(shí),讀取地址(64~123)的數(shù)據(jù),反之亦然。
(2)當(dāng)發(fā)送模塊傳來(lái)的讀數(shù)據(jù)使能信號(hào)en_ram為高時(shí),派生出一個(gè)讀數(shù)據(jù)計(jì)數(shù)器cnt_rdram,用于進(jìn)行緩存RAM中數(shù)據(jù)的讀取。讀取的數(shù)據(jù)采用LVDS--Low Voltage Differential Signal模式傳輸至信號(hào)處理板,進(jìn)行進(jìn)一步的處理,圖5為數(shù)據(jù)緩存模塊的仿真波形圖。
圖5:數(shù)據(jù)緩存模塊波形圖
在ISE軟件環(huán)境下進(jìn)行綜合、布局布線后,首先將程序下載到多通道采集模塊的硬件中;輸入模擬信號(hào)正弦波,使用在線邏輯分析儀ChipScope抓取串并轉(zhuǎn)換后的AD采集結(jié)果;AD采集結(jié)果畫(huà)圖后如圖6所示,可以看出采集模塊的數(shù)據(jù)采集功能是正常的。
圖6:串并轉(zhuǎn)換后的采集數(shù)據(jù)
本文通過(guò)FPGA來(lái)實(shí)現(xiàn)對(duì)AD7690的時(shí)序控制和數(shù)據(jù)傳輸,實(shí)現(xiàn)了對(duì)60路數(shù)據(jù)的同步采集。文中給出了系統(tǒng)部分功能的仿真,驗(yàn)證了FPGA內(nèi)部邏輯程序的正確性;程序在線下載的測(cè)試結(jié)果,也驗(yàn)證了采集模塊的工作正常。通過(guò)仿真和測(cè)試結(jié)果,可以看出系統(tǒng)的正確性和合理性,該設(shè)計(jì)已應(yīng)用于實(shí)際項(xiàng)目當(dāng)中。
[1]楊大偉,楊秀芳,李大偉等.基于FPGA的高速串行AD轉(zhuǎn)換器控制設(shè)計(jì)與實(shí)驗(yàn)研究[J].西安理工大學(xué)學(xué)報(bào),2014(03):91-95.
[2]劉新瑋,韓巍,張泳等.基于FPGA的多通道AD同步采集卡設(shè)計(jì)[J].工程與試驗(yàn),2013(53):75-77.
[3]郭云飛,趙冬娥,張斌等.基于FPGA的高速AD采集設(shè)計(jì)[J].山西電子技術(shù),2013(05):37-39.
[4]黃容蘭.基于FPGA的A/D轉(zhuǎn)換采集控制模塊設(shè)計(jì)[J].數(shù)據(jù)采集與處理,2009(10):237-240.
[5]何永泰.基于FPGA的多路A/D轉(zhuǎn)換控制接口設(shè)計(jì)[J].電子測(cè)量技術(shù),2006(29):78-80.
[6]趙吉成,王智勇.xilinx FPGA設(shè)計(jì)與實(shí)踐教程[M].西安:西安電子科技大學(xué)出版社,2012:26-40.
[7]田耘,徐文波.xilinx FPGA開(kāi)發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008:295-316.
作者單位上海船舶電子設(shè)備研究所 上海市 201108