1,硬件工作環境
ADC:ADS52J90。FPGA:kintex7。供電:12V/4A 直流電源。該板卡最多外接32通道2Vpp模擬信號以及20路外部觸發信號。數據傳輸接口方式有千兆以太網接口、高速光纖接口以及低速USB串口。需要用到的工具為萬用表、示波器、信號發生器。

圖1:硬件PCB
2,邏輯開發環境
Vivado2017.4(但也能夠兼容ise14.7)。
3,工作模式總結
小青菜哥哥開發該ADC的工作模式如下(注:該ADC在8通道模式下只支持LVDS模式下的10bit精度):
3.1 LVDS模式
| 通道數(Channel) | 采樣精度(bit) | 采樣率(MSPS) |
| 8 | 10 | 200 |
| 16 | 10 | 100 |
| 16 | 12 | 80 |
| 16 | 14 | 60 |
| 32 | 10 | 50 |
| 32 | 12 | 40 |
| 32 | 14 | 30 |
3.2 JESD204B模式(該ADC的JESD204B功能不支持8通道模式)
| 通道數(Channel) | 采樣精度(bit) | 采樣率(MSPS) |
| 16 | 10 | 100 |
| 16 | 12 | 80 |
| 16 | 14 | 60 |
| 32 | 10 | 50 |
| 32 | 12 | 40 |
| 32 | 14 | 30 |
4,LVDS_16通道_10bit_100MSPS數據采集開發過程
本篇將介紹該款ADC的16通道/10bit/100MSPS工作模式下的開發過程。開發過程本人按步驟總結了以下6點:
1)熟悉LVDS模式下的16通道工作原理
3)配置該ADC的工作模式為LVDS/16通道/10bit/100MSPS
4)開發FPGA端的ADC數據獲取邏輯
5)在線chipscope調試與測試
6)利用真實信號測試
4.1熟悉LVDS模式下的16通道工作原理
小青菜哥哥在決定開發這款ADC后,首先做的第一件事就是仔細研讀它的數據手冊。該ADC工作在16通道時,其信號輸入部分的采樣原理由下圖2詳細給出了說明:

圖2:16通道信號輸入采樣
該芯片內含16個AD轉換器,從上圖不難發現其工作在16通道模式時,每個AD轉換器負責處理一路輸入信號。并且該AD轉換比較特殊的一點就是:每個AD轉換內部都分為奇采樣和偶采樣,這是其他ADC所沒有的,我想這么做的目的就是為了更好的實現每個AD可以處理2路輸入信號,從而利用16個AD轉換器就可以實現該芯片32通道的數據采集。該模式下的數據輸出結構,在數據手冊中也詳細給出了,如下圖3所示:

圖3:16通道模式LVDS輸出結構
我們可以看到,雖然一個ADC工作時分為奇數和偶數采樣,但最終輸出時已經合二為一,一個通道的采樣數據最終通過一個AD輸出。該模式下,從模擬信號輸入到LVDS串行數據輸出之間詳細的映射關系如下表所示,屬于一一對應:

4.2對時鐘芯片編程,產生100MHz的ADC時鐘
既然ADC工作在100MHz連續采樣下,因此FPGA的處理時鐘也應該設計為100MHz。FPGA利用板載40MHz晶振,產生配置邏輯,對LMK04826時鐘芯片進行編程配置,分別產生ADC采樣和FPGA系統100MHz時鐘。即有輸入時鐘fIN=100MHz,采樣時鐘fSAMP=100MHz,轉換時鐘fc=100MHz,幀時鐘fFCLK=100MHz,位時鐘fbitclk=5*fFCLK=500MHz.
4.3配置該ADC的工作模式為LVDS/16通道/10bit/100MSPS
該ADC芯片可以工作在多種模式下,其默認的工作模式可能不是我們所需要的模式。因此需要通過SPI配置該ADC,配置數據和地址應該嚴格按照數據手冊給出的值確定。該ADC芯片功能很豐富,因此配置寄存器數量比較多,有一些寄存器不需要配置,保持默認值即可。我們需要做的就是了解每個配置寄存器的功能,選擇需要的寄存器配置,這里需要花費大量的時間和精力。該款ADC配置的方面的內容在以前的文章已詳細說明,這里略過。
4.4開發FPGA端的ADC數據獲取邏輯
對于該款ADC的FPGA數據獲取邏輯思路很清晰,其實就是高速源同步數據的獲取,只需要利用FPGA自帶的底層硬件資源ISERDES即可實現。ISERDES就是FPGA自帶的高速串并轉換模塊,其具體定義和功能,小青菜哥哥在以前的文章中已專門說過。該數據采集模塊功能圖如圖4所示:

圖4:數據采集模塊框圖
下面分別介紹各個主要模塊的功能:
1,DCLK模塊
DCK模塊的功能就是通過idelayISERDESBUFIOBUFR產生bitclk和clkdiv,使得bitclk的相位和位時鐘dclk的相位對齊。其內部功能框圖如圖5所示:

圖5:dlck
具體過程就是:首先控制模塊控制Idelay延遲模塊,使得dclk產生一定的延遲量。Idelay的輸出再經過BUFIO和BUFR,進一步產生固定延遲,得到bitclk和clkdiv。Dclk同時還進入ISERDES模塊進行串行轉換,其時鐘就為bitclk。控制模塊一直監視iserdes的并行數據輸出。隨著idelay延遲量的改變,iserdes的輸出也一直在變。當發現iserdes的輸出為既有0又有1的狀態時,說明bitclk和dclk相位對齊了。之后bitclk就可以作為fclk和data的數據采集時鐘了。
2,FCLK模塊
Dclk模塊功能完成之后,只能保證采集到的數據的每一位都是對的,但并不知道一個10bit數據的首尾在哪,fclk模塊就是用來尋找并行數據的正確起始與結束位置,因此業界也稱fclk為幀時鐘,但它并不是用作時鐘,只用來判斷data數據的位置。通過圖3給出的LVDS輸出時序圖,不難發現:fclk進入iserdes進行串并轉換后,如果輸出的10bit數據為1111100000,說明找到了正確的字符邊界,在此狀態下去取data從iserdes輸出的并行10bit數據即可,如圖6所示:

圖6:fclk
fclk工作的原理就是通過bitslip不斷的調節iserdes的輸出,當輸出為1111100000時,該模塊功能完成,bitslip的用法在iserdes的說明里很詳細,前面的文章也具體介紹過~。
3,Data模塊&數據輸出模塊
Dclk和fclk的功能完成后,該模塊就只需要取數就就行了,不需要任何控制操作。然后將取到的數通過fifo同步到系統時鐘域進行后續的處理,如圖7所示:

圖7:data
Fifo1的寫入時鐘為100MHz,用100MHz的系統時鐘讀這個fifo,讀出的數據即為100MSPS采樣率的全局時鐘域下的模擬輸入波形。由于所有的時鐘都同源產生于LMK04826,所以不用擔心fifo的空滿問題,只需要不斷讀就可以~
4.5在線chipscope調試與測試
按照上面的思路和功能模塊編寫好代碼,并利用chipscope觀察輸出信號。首先將ADC配置成ramp測試模式,即測試累加數據(0~1023)會取代正常采樣數據,測試的波形如下圖9,10所示。可以看到FPGA接收到的測試數據無誤。

圖8:ramp測試總體

圖9:ramp測試細節
4.6利用真實信號測試采集功能
接下來,將ADC配置成正常采集模式,利用外接的信號發生器,FPGA獲取到的100MHz采樣波形如圖10,11 ,12所示:

圖10:chipscope抓取正弦波形

圖11:chipscope正弦詳細波形

圖12:信號發生器輸出波形
可以看到,信號發生器給的正弦波形頻率為5MHz(200ns),而chipscope抓取的正弦波形一個周期為20個點,chipscope的觀察時鐘為100MHz (10ns),信號發生器給出的波形和數據采集后波形完全一致。
-
轉換器
+關注
關注
27文章
9419瀏覽量
156399 -
adc
+關注
關注
100文章
7513瀏覽量
556062 -
數據采集
+關注
關注
41文章
8046瀏覽量
120938 -
lvds
+關注
關注
2文章
1238瀏覽量
69864
原文標題:LVDS_16通道_10bit_100MSPS數據采集
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
ADS52J91和ADS52J90是否pin對pin,ADS52J91和能否直接替代ADS52J90?
調試ADS52J90板卡JESD204B接口遇到的問題求解
ADC芯片的采樣率為100MSPS,位寬16位,那么吞吐量是多少?
ADS52J90配置成了test pattern模式,ADC傳輸回來的pattern值出現錯位現象,為什么?
MAX19506 雙通道、8位、100Msps ADC
面向醫療與工業,TI推出8通道100MSPS ADC
ADS54J54四通道14位500MSPS ADC數據表
ADS5263四通道、16位、100MSPS高SNR ADC數據表
ADS816x 8通道、16位1MSPS SAR ADC數據表
ADS52J90 10位、12位、14位多通道低功耗高速ADC數據表
ADS5295低功耗,12位,100MSPS,8通道模數轉換器(ADC)數據表
ADS52J65 8通道16位125MSPS 70mW/通道ADC數據表
ADC ADS52J90的LVDS/16通道/10bit/100MSPS數據采集模式開發筆記
評論