ADC交流耦合 除錯中的那些坑

2021-10-21 06:24:25 字數 1894 閱讀 1999

ad9250是adi的一款2通道、250msps的adc,勉強算是高速adc吧。這個adc使用的是jesd介面,兩個採集通道分別對應兩條jesd的lane,晶元內部也支援lane的交換,十分靈活。

adi的adc都有乙個快速配置,相較於ti的adc,adi的配置極為方便,很多情況下只需要配置5個以內的暫存器即可完成adc的正常鏈結。

ad9250也是同樣,但是配置時配置完了,讀出的資料就一直不對。。。

ad9250的配置暫存器map和其他adi的晶元類似,配置流程也都是復位、快速配置、關閉擾碼(我一般都關閉擾碼,adi預設是使用擾碼)。

這裡是我的ad9250的配置,非常簡單:

0x0->0x3c;(復位)

0x5f->0x15;(關閉jesd輸出)

0x5e->0x22;(快速配置)

0x6e->0x01;(關閉擾碼)

0x5f->0x14;(開啟jesd輸出)

ad9250的jesd支援子類0和子類1,另外針對不同的同步方式還有乙個0x3a暫存器用於調整。我這裡使用的是子類1,0x3a使用預設配置。

配置完成之後,鏈結很完美的就建立了。

關於jesd的一些時鐘,這裡不細講,回頭再整理乙個通用的。

至此配置部分已經完成,準備輸入訊號進行採集測試。

我本以為鏈結都建立了,採集只是看一下效果,不會有大問題,但卻沒有想到噩夢才剛剛開始…

一般的adc測試都採用的是交流耦合,所以我也沒有多想,訊號發生器產生正弦波,送入單端轉差分之後經過電容直接懟到ad9250輸入端(以前也都是這樣測的),然後採集波形,結果如圖所示……

這一看,這不是就是adc失碼嗎?怎麼會,是不是邏輯有問題。於是使用adc的ramp 測試模式,再次採集資料,結果如圖所示:

沒有任何問題,說明adc的後端jesd部分和fpga羅都沒有問題。

難道是單端轉差分的問題?

於是用示波器差分探頭點了輸入到ad9250輸入端的訊號,發現波形沒有任何問題。那麼問題就只有乙個,難道是adc的數模轉換部分出問題了???

於是我又換了乙個adc晶元,測試後發現結果還是一樣。。。

於是陷入深深的迷茫。。。

這個問題困擾了好幾天,在adi的論壇上也發了貼,但是沒有人給我乙個合理的解釋,直到我看到論壇上有人也有遇到相應的失碼問題,這個帖子最終的問題定位是硬體問題,於是突然就想到,我的或許也是硬體問題?

於是再次仔細審查ad9250的手冊,重點關注模擬輸入部分的說明,於是看到這麼一段話:

ad9250!居!然!沒!有!內!部!拉!偏!,之前使用的adi的幾款晶元如ad9234、ad9694都是有內部拉偏的,所以使用交流耦合的測試時沒有任何問題。但是ad9250居然沒有!

於是去掉電容,使用單端轉差分運放,後加0歐電阻,懟到ad9250,問題迎刃而解!

以後除錯adc的時候一定要注意datasheet裡面有沒有寫內部拉偏。如果沒有,並且還想使用交流耦合測試,那就要事先在硬體電路上留有冗餘設計。

ps:原來共模電壓不滿足要求之後,是這樣的現象啊,頭一次見。

CEF 中的那些坑

cef chromium embedded framework 的大名也聽說很久了,最近因為客戶的需求,簡單地研究了一下。結果遇到了乙個接乙個的坑,且慢慢道來。比之前用qtwebkit的坑還要多和深。1.win32相關的視窗引數和位置設定 2.去除瀏覽器視窗的右鍵選單 這個問題很無奈,經搜尋說是可以...

Numpy中的那些坑點

numpy中的坑點主要來自於shape ndim broadcast幾方面,接下來將做詳細分析 如果兩個矩陣都是1 d的,則相當於 點積 內積 針對1 d x 2 d和2 d x 1d情形,說明如下 x np.arange 16 reshape 4 4 2 d x np.ones 4 1 d 1 d...

C 函式中的那些坑

平時寫程式時,我們可能或多或少對一些用法感到朦朧,下面我對一些易困惑大家,或者易用錯的地方作點介紹。1.函式返回型別不能是陣列型別或函式型別,但可以是指向陣列或函式的指標。2.如果乙個函式永遠不會被用到,那麼可以只有宣告沒有定義。3.c 中建議用引用型別的形參代替指標。使用static關鍵字可以令區...