西華師范大學(xué)物理與空間科學(xué)學(xué)院 雷小英 肖順文 吳靜瑜 陳韻文 鄭瑞
本文設(shè)計(jì)了基于FPGA的8通道12bit分辨率的數(shù)據(jù)采集系統(tǒng),利用FPGA控制ADC128S022芯片進(jìn)行數(shù)據(jù)采集和模數(shù)轉(zhuǎn)換,將采樣到的數(shù)據(jù)與理論值對(duì)比,經(jīng)分析驗(yàn)證,電壓值在誤差范圍內(nèi)。該系統(tǒng)設(shè)計(jì)精簡,可廣泛應(yīng)用于實(shí)時(shí)數(shù)據(jù)采集與轉(zhuǎn)換。
數(shù)據(jù)采集系統(tǒng)是將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),利用計(jì)算機(jī)對(duì)信號(hào)進(jìn)行處理[1]。ADC是數(shù)據(jù)采集中最重要的部分之一,高精度、高速度的ADC已廣泛應(yīng)用于導(dǎo)航、手持終端、無人駕駛等領(lǐng)域[2]?,F(xiàn)場可編程門陣列的出現(xiàn),令系統(tǒng)設(shè)計(jì)擁有高靈活性;與傳統(tǒng)單片機(jī)作比,FPGA具有數(shù)據(jù)處理能力強(qiáng)、開發(fā)設(shè)計(jì)周期短等優(yōu)勢(shì)。本文設(shè)計(jì)了基于FPGA的數(shù)據(jù)采集系統(tǒng),選用具有8通道,12位分辨率的ADC128S022芯片,轉(zhuǎn)換速率可達(dá)200ksps,利用FPGA對(duì)ADC128S022進(jìn)行控制,實(shí)現(xiàn)數(shù)據(jù)采集,不僅可以將數(shù)據(jù)存儲(chǔ)在RAM中,也能將數(shù)據(jù)進(jìn)行處理,最后在PC機(jī)顯示。
ADC128S022中VA/4096是1bit的電壓值,當(dāng)模擬輸入電壓小于它1bit所含電壓值時(shí),輸出數(shù)據(jù)是0000_0000_0000b,當(dāng)輸入電壓比模擬電源VA減去1bit所含電壓值的1.5倍大或相等時(shí),輸出數(shù)據(jù)是1111_1111_1111b。本設(shè)計(jì)電源采用獨(dú)立的模擬供電及數(shù)字供電,數(shù)值為3.3V,模擬電源和數(shù)字電源間用串聯(lián)磁珠來穩(wěn)壓和濾波[3]。數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)框圖如圖1所示。模擬信號(hào)輸入后,電源模塊為各部分供電,在采樣時(shí)鐘下,FPGA對(duì)ADC128S022進(jìn)行控制實(shí)現(xiàn)數(shù)據(jù)采集,通過四線制SPI總線與處理器進(jìn)行通信[4]。FPGA對(duì)數(shù)據(jù)進(jìn)行處理后,根據(jù)需求將部分?jǐn)?shù)據(jù)存儲(chǔ)到RAM中,數(shù)據(jù)也可在PC端顯示。
圖1 數(shù)據(jù)采集系統(tǒng)內(nèi)部設(shè)計(jì)框圖Fig.1 Internal design block diagram of data acquisition system
按串行外設(shè)接口的時(shí)序邏輯來構(gòu)造控制電路。設(shè)備工作頻率是0.8~3.2MHz,將1.92MHz(周期為520ns)設(shè)置為工作頻率。為適配不同頻率需求,設(shè)計(jì)一個(gè)可調(diào)計(jì)數(shù)器,令采樣時(shí)鐘為系統(tǒng)時(shí)鐘的13分頻3.84MHz,即兩倍于SCLK的SCLK2X時(shí)鐘信號(hào)。時(shí)序圖如圖2所示,一個(gè)串行幀在 下降沿的時(shí)候開始轉(zhuǎn)換,在其上升沿結(jié)束[5]。一幀中有16個(gè)上升沿。ADC在前3個(gè)循環(huán)處于采樣,后13個(gè)循環(huán)處于保持狀態(tài),最后轉(zhuǎn)換完成輸出數(shù)據(jù)。DOUT是轉(zhuǎn)換結(jié)構(gòu)輸出腳,在SCLK的下降沿時(shí)輸出。1至4為前導(dǎo)零,5至16是輸出結(jié)果。若處于持續(xù)測(cè)量模式,ADC會(huì)在N×6個(gè)SCLK的上升沿自動(dòng)進(jìn)入采樣模式,在N×16+4個(gè)下降沿進(jìn)入保持或轉(zhuǎn)換模式。DIN有8個(gè)控制寄存器,其中ADD[2∶0]是數(shù)據(jù)輸入時(shí)的通道選擇,輸入通道從IN0~I(xiàn)N7中選擇。根據(jù)線性序列機(jī)的設(shè)計(jì)思想,能夠驗(yàn)證出各個(gè)信號(hào)不同情況下計(jì)數(shù)器對(duì)應(yīng)的值。
圖2 ADC128S022 SPI接口時(shí)序圖Fig.2 SPI interface timing diagram of ADC128S022
設(shè)計(jì)選用8通道及12位分辨率的逐次逼近型的低功耗芯片—ADC128S022。模/數(shù)轉(zhuǎn)換使用逐漸逼近的方式,轉(zhuǎn)換速度雖會(huì)低于并聯(lián)比較型ADC,但高于雙積分型,是中速ADC。且3.3V/5V的輸入電壓均可,和主控制器通過SPI的方式實(shí)現(xiàn)交互通信。其中片選信號(hào)CS_N,ADC的時(shí)鐘信號(hào)SCLK以及地址信號(hào)DIN都是其驅(qū)動(dòng)信號(hào)。ADC128S022內(nèi)部結(jié)構(gòu)框圖如圖3所示,當(dāng)開關(guān)1連接多路復(fù)用器和采樣電容器,開關(guān)2將平衡比較器輸入的時(shí)候,在 下降沿的前3個(gè)周期,ADC128S022處于采樣狀態(tài)。當(dāng)開關(guān)1將采樣電容與模擬地連接,開關(guān)2斷開,保持采樣電壓時(shí)??刂七壿嫊?huì)引導(dǎo)電荷再分配數(shù)模轉(zhuǎn)換器添加或減少固定數(shù)量的電荷,直至比較器平衡。即在 低電平的后13個(gè)周期,ADC128 S022處于保持狀態(tài)。
圖3 ADC128S022內(nèi)部結(jié)構(gòu)功能框圖Fig.3 ADC128S022 interface logic module diagram
本設(shè)計(jì)系統(tǒng)中FPGA控制的ADC模塊的設(shè)計(jì)原理圖如圖4所示,該設(shè)計(jì)利用FPGA控制ADC128S022開始數(shù)據(jù)采樣,并處理采樣數(shù)據(jù),隨后將轉(zhuǎn)換后的數(shù)據(jù)輸出[6]。ADC_Driver產(chǎn)生ADC位寬為1的CS_N、SCLK、DIN以及DOUT驅(qū)動(dòng)信號(hào),且接受ADC的轉(zhuǎn)換數(shù)據(jù)DOUT。User_Ctrl產(chǎn)生3位地址信號(hào)Channel讓驅(qū)動(dòng)選擇八個(gè)輸入通道中的一個(gè)。En_Conv是外部使能信號(hào),使能單次轉(zhuǎn)換,且此信號(hào)單周期有效,高脈沖使能轉(zhuǎn)換一次;為防止轉(zhuǎn)換中Channel的值改變影響數(shù)據(jù),當(dāng)使能轉(zhuǎn)換時(shí),寄存當(dāng)前狀態(tài)通道選擇的Channel值。DIN把3位地址信號(hào)轉(zhuǎn)化為串行的1位DIN。Conv_Done將所有數(shù)據(jù)輸出至驅(qū)動(dòng),驅(qū)動(dòng)接受并產(chǎn)生轉(zhuǎn)換完成信號(hào);若ADC128S022芯片運(yùn)行良好,完成一次轉(zhuǎn)換,就會(huì)將內(nèi)部寄存器r_date的數(shù)據(jù)輸出至輸出端Date。將ADC采樣到的多組數(shù)據(jù)與理論電壓值對(duì)比,經(jīng)驗(yàn)證,誤差合理,ADC模塊正確。
在Quartus II 13.0中與Modelsim進(jìn)行聯(lián)合波形仿真,結(jié)果如圖5所示。當(dāng)控制器的工作時(shí)鐘頻率為50MHz時(shí),控制器先低電平復(fù)位,隨后拉高。在En_Conv高脈沖使能時(shí)進(jìn)行一次轉(zhuǎn)換,若有效,便將使能信號(hào)en置于1,每次使能轉(zhuǎn)換之后,對(duì)SCLK2X時(shí)鐘計(jì)數(shù)[7]。當(dāng)SCLK2X計(jì)數(shù)器值為33d且為高,就輸出一個(gè)高脈沖信號(hào)。代表一次轉(zhuǎn)換結(jié)束。ADC_DIN是FPGA控制采樣時(shí)的通道選擇,由圖5可知,此處每個(gè)循環(huán)輸出均為101b,即通道5。在每個(gè)ADC_SCLK上升沿,ADC_ DOUT都會(huì)輸出一位數(shù)據(jù)。由圖5知,第一次轉(zhuǎn)換中,ADC_ DOUT先輸出四個(gè)前導(dǎo)0,再輸出1000_0000_0000b,即第一個(gè)數(shù)據(jù)800h。在一次轉(zhuǎn)換完成后,輸出并行數(shù)據(jù)Date。連續(xù)進(jìn)行三次轉(zhuǎn)換,輸出數(shù)據(jù)分別為800h、803h、806h。隨后進(jìn)行板級(jí)仿真,在Quartus II中新建頂層文件ADC_test,將ADC128S022、TLV5618模塊例化,生成兩個(gè)ISSP文件形成系統(tǒng),再分配其引腳進(jìn)行全編譯,下載程序,打開ISSP抓取ADC電壓。發(fā)現(xiàn)電壓值均在誤差范圍內(nèi)。符合設(shè)計(jì)需求。
圖5 總體設(shè)計(jì)仿真波形圖Fig.5 Simulation waveform of the overall design
本文用Verilog HDL完成了ADC128S022的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì),不但進(jìn)行了功能仿真設(shè)計(jì),而且進(jìn)行了ADC和DAC的聯(lián)合板級(jí)調(diào)試。考察整個(gè)系統(tǒng)的性能,結(jié)果表明,該設(shè)計(jì)符合預(yù)想。本設(shè)計(jì)采樣精度高,采樣速度較快,能運(yùn)用在航空、軍事、醫(yī)療等領(lǐng)域[8],具有較大的實(shí)用價(jià)值。
引用
[1] 徐智軒.一種16位200Msps的ADC數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[D].合肥:中國科學(xué)技術(shù)大學(xué),2019.
[2] 楊興文,雍珊珊,王新安,等.AETA數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].北京大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,56(4):600-606.
[3] 李海濤,李斌康,阮林波,等.應(yīng)用于高速數(shù)據(jù)采集系統(tǒng)的超低抖動(dòng)時(shí)鐘電路[J].數(shù)據(jù)采集與處理,2020(6):1192-1199.
[4] 范宋杰.多路數(shù)據(jù)采集系統(tǒng)的FPGA方案實(shí)現(xiàn)[J].電子世界,2021(6):170-171.
[5] 趙晨,周義明.基于FPGA的模數(shù)轉(zhuǎn)換芯片AD7705/AD7706控制電路設(shè)計(jì)[J].北京石油化工學(xué)院學(xué)報(bào),2019(4):54-58.
[6] 張?jiān)?陶林偉.基于FPGA與STM32的多通道數(shù)據(jù)采集系統(tǒng)[J].西北工業(yè)大學(xué)學(xué)報(bào),2020(2):351-358.
[7] 丁寧,常玉春,趙健博,等.基于USB 3.0的高速CMOS圖像傳感器數(shù)據(jù)采集系統(tǒng)[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),2018(4):1298-1304.
[8] 王睿.Lidar控制與數(shù)據(jù)采集系統(tǒng)研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2020.