數(shù)字IO卡是采集數(shù)字IO信號的儀器,其功能類似于邏輯分析儀,。北京坤馳科技公司的M2i.7011數(shù)字IO卡有16,、32與64bit版本可選,,且在16bit與32bit版本中高采樣率可達(dá)125MS/s,。板卡具備高2GB板載內(nèi)存,,在FIFO下,,板卡持續(xù)流模式傳輸速度可達(dá)160MS/s,,可滿足大部分使用需求。
在本次應(yīng)用實(shí)驗(yàn)中經(jīng)過對過程中問題的分析,、解決,,實(shí)現(xiàn)了對藍(lán)牙信號的采集。
1environment setup
我們可以根據(jù)m2i.7011的datasheet中的管腳定義,,可以清晰的找到數(shù)字IO信號,、時(shí)鐘CLK信號、數(shù)字地信號GND等,。
基于m2i.7011是大32bit的IO可以使用,用戶需要20bit的數(shù)字IQ信號,,其中包括I路信號10bit,,Q路信號10bit,還有1路clk輸入信號,,外加GND數(shù)字地信號,。
下圖是ADC采集的信號,用xilinx的chipscope軟件抓的ADC芯片量化出來的數(shù)據(jù),,可以看到采集的波形很平滑,。
用Agilent 16822A Logic Analyzer測試ADC量化的10bit信號,如下圖所示,,因?yàn)檫壿嫹治鰞x有電平判決,,ADC 1.8V CMOS電壓也可以兼容,而且可以設(shè)置采樣的邊沿可以選擇rising edge還是falling edge,,再加上邏輯分析儀的電纜線可以做到屏蔽性好,、等長等特性,。
下圖是用邏輯分析儀,直接分析ADC量化的10bit的數(shù)據(jù),,不經(jīng)過FPGA處理,。
2io level
我們可以從m2i.7011數(shù)字IO卡的datasheet中,可以知道,,IO卡對于高低電平的判決是高于2.0V當(dāng)成高電平1來處理,,低于0.8V當(dāng)成低電平0來處理。
The high level ≥2.0V
The low level ≤0.8V
m2i.7011對于高低電平的判決是datasheet寫的是3.3V,,5V的TTL電平標(biāo)準(zhǔn),。
即使我們把輸入阻抗impedance調(diào)節(jié)成110ohm,電壓是2.5V還是不兼容1.8V,。
但是采集藍(lán)牙信號的ADC芯片輸出的是1.8V的CMOS電平,,這樣電平不一致將導(dǎo)致IO卡無法預(yù)知高低電平的信號,一般高電平對于數(shù)字信號來說是1,,低電平是0,。如果無法正確的預(yù)判是1還是0,對于數(shù)字IO卡來說,,就會采集不到正確的0和1的值,。
所以,需要把ADC的數(shù)據(jù)先進(jìn)入FPGA,,進(jìn)行電平轉(zhuǎn)換,,轉(zhuǎn)換成3.3V的電平,為了和IO卡匹配,。轉(zhuǎn)換完之后,,需要把FPGA的的管腳引到IO口的插針上,但是引到IO插針上的時(shí)候,,用Agilent的邏輯分析儀,,采集原理和IO卡一樣,就是多了電平判決和采樣時(shí)鐘沿的選項(xiàng),,這樣可以應(yīng)對許多種IO信號,。m2i.7011卡,電平不可以可選,,m4i.77xx是可以選擇電平標(biāo)準(zhǔn)的,,m2i.7011默認(rèn)是上升沿采集信號,不能使用下降沿采集信號,。
LEADCORE公司的ADC芯片設(shè)計(jì)比較怪異,,因?yàn)橐话鉇DC芯片,TI或者ADI的ADC,,量化ADC數(shù)據(jù)adcdata的時(shí)候,,會有dclk,,所謂dclk就是和adcdata一起同步出來的信號,這樣時(shí)鐘和數(shù)據(jù)都是同步的,,但是LEADCORE公司的ADC芯片只有adcdata,,沒有隨路時(shí)鐘dclk,他們選擇的方式是FPGA這邊直接給1個(gè)16MHz的時(shí)鐘,,16MHz的時(shí)鐘使用xilinx公司的virtex-5信號DCM,,產(chǎn)生同頻率,相位分別為0°,,90°,,180°,270°的16MHz時(shí)鐘,,xilinx virtex-5芯片的DCM產(chǎn)生時(shí)鐘,,報(bào)低能產(chǎn)生32MHz的時(shí)鐘,但是產(chǎn)生16MHz的時(shí)鐘,,拿示波器量確實(shí)是16MHz,,可能是xilinx的一個(gè)bug。
DCM產(chǎn)生的4個(gè)時(shí)鐘里面,,有1個(gè)或者2個(gè),,可以讓dclk和adcdata盡量的滿足setup time和hold time,保證采集的數(shù)據(jù)在時(shí)序上沒有violation,。這樣就能避免出現(xiàn)下圖的現(xiàn)象:
實(shí)際測試,,發(fā)現(xiàn)沒有了IO delay的錯(cuò)誤,反而多了一個(gè)周期性的干擾的毛刺,,而且毛刺的位置非常固定,。拿Agilent Logic Analyzer測試10bit的IO數(shù)據(jù),發(fā)現(xiàn)在1個(gè)周期的sinus波形里有個(gè)周期性的干擾,。
后再拿m2i.7011數(shù)字IO卡,,測試,采集完存成bin文件,,用MATLAB觀察,現(xiàn)象和Agilent的邏輯分析儀現(xiàn)象一致,。
再仔細(xì)觀察突變的位置,,剛好是512左右,我們再分析10bit的數(shù)據(jù)1000000000是512,,也就是說剛好高位從0到1翻轉(zhuǎn)的過程中突變了,,導(dǎo)致1變成0,導(dǎo)致數(shù)據(jù)突然下跌,。
我們知道,,對于數(shù)字電路來說,,10bit的數(shù)據(jù),在邏輯里面如果經(jīng)過D觸發(fā)器,,10bit的數(shù)據(jù)要發(fā)生翻轉(zhuǎn)都在在時(shí)鐘的上升沿或時(shí)鐘的下降沿,,因?yàn)镈觸發(fā)器屬于邊沿觸發(fā)器。對于邊沿比較敏感,。
那10bit的數(shù)據(jù),,就需要10個(gè)D觸發(fā)器,每個(gè)觸發(fā)器存1bit的值,,那如果是由時(shí)鐘邊沿引起的第10bit的數(shù)據(jù),,周期性的翻轉(zhuǎn)受干擾,那我們就用上面DCM產(chǎn)生的4個(gè)相位的時(shí)鐘,,分別試驗(yàn),。
如果4個(gè)時(shí)鐘都是同樣的現(xiàn)象,就可以定位是硬件上的問題了,。
終,,經(jīng)過試驗(yàn),發(fā)現(xiàn)是ADC芯片引出的IO上有問題,,所以更換了IO,,重新采集??梢圆杉狡交膕inus波形,。
3bluetooth signal
使用Agilent基于移動領(lǐng)域的WiMAX矢量信號源MXG,,產(chǎn)生藍(lán)牙信號包,,藍(lán)牙包里可以疊加噪聲。
使用Rohde&Schwarz公司的無線通信CMW270,,可以統(tǒng)計(jì)藍(lán)牙包的誤報(bào)率,。
當(dāng)把一切環(huán)境都搭建好,可以使用m2i.7011采集數(shù)字IO信號了,,數(shù)字IO卡使能的bit數(shù)可以從datasheet知道,。
8bit、16bit,、32bit,,因?yàn)椴杉疘Q兩路總共需要20bit,還需要1bit GND和1bit CLK,,所以需要使能32bit的IO,,采樣時(shí)鐘選擇外時(shí)鐘16MHz。
下圖是使用m2i.7011采集的IQ藍(lán)牙包IO波形,。
同樣用Agilent的邏輯分析儀看到藍(lán)牙包是一包一包出現(xiàn)的,。
我們使用chipscope抓取藍(lán)牙包,,使用MATLAB把采集的32bit的IO數(shù)據(jù)進(jìn)行解析,會看到IQ兩路的藍(lán)牙包,。
藍(lán)牙包根據(jù)不同的疊加噪聲會有不同的時(shí)域表現(xiàn),。
4summary
北京坤馳科技的數(shù)字IO卡基于采集的是數(shù)字IO信號,每個(gè)IO口對應(yīng)1bit的數(shù)據(jù),,其功能類似于邏輯分析儀,,IO卡的優(yōu)點(diǎn)在于體積小,可攜帶,,可插與普通電腦或者便攜式機(jī)的PCIE或PCI插槽使用,,接口形式示采集卡是PCI還是PCIE接口。數(shù)字IO卡支持可編程,,支持多個(gè)IO,,多可使用64個(gè)IO口,相比于Agilent 16822A邏輯分析儀,,邏輯分析儀缺點(diǎn)是數(shù)字IO口少,,只支持16個(gè)數(shù)字IO口和1個(gè)CLK和1個(gè)GND,無法滿足2路IQ產(chǎn)生的20bit數(shù)字信號,。