JESD204B IP核作為接收端時,單獨使用,作為發送端時,可以單獨使用,也可以配合JESD204b phy使用。
JESD204B通常配合AD或DA使用,替代LVDS,提供更高的通訊速率,抗干擾能力更強,布線數量更少。
本篇的內容基于jesd204b接口的ADC和FPGA的硬件板卡,通過調用jesd204b ip核來一步步在FPGA內部實現高速ADC數據采集,jesd204b協議和xilinx 的jesd204 IP核相關基本知識已在前面多篇文章中詳細介紹,這里不再敘述~
在該篇中,小青菜哥哥試圖從一個初學者的視角來記錄整個開發流程,力求做到每一個讀者閱讀完該筆記后都能快速開發基于jesd204b接口的FPGA-ADC數據采集,同時也確保幾個月甚至幾年后的本人已經遺忘了jesd204b開發細節后,通過閱讀該筆記能夠快速重新上手。
硬件工作環境
ADC:ADS52J90。FPGA:kintex7。供電:12V/4A 直流電源。該板卡最多外接32通道2Vpp模擬信號以及20路外部觸發信號。數據傳輸接口方式有千兆以太網接口、高速光纖接口以及低速USB串口。需要用到的工具為萬用表、示波器、信號發生器。
圖2:ADC主要特性
該款芯片內置了16個ADC(模數變換器),這16個ADC輸出的數據通過jesd接口輸出。
這16個adc的數據通過2、4、或者8條lane輸出,具體選哪種用戶是可以選擇的。
每條lane的最高線速率是5Gbps。
支持子類0、1和2。
該芯片的采樣率、采樣精度,采樣通道數都有多種模式,用戶可選擇范圍比較大,但必須最終滿足每條lane的數據線速率不能高于5Gbps。
我們再來看看ADC數據的傳輸層數據結構。該ADC手冊描述輸出數據有“NORMAL PACKING MODE”和“ SINGLE CONVERTER PER OCTET MODE”兩種模式,為了提高位傳輸效率,本人選擇了“NORMAL PACKING MODE”,如圖3所示:
圖3:不同的jesd接口操作模式
在實際操作演示時,小青菜哥哥通過ADC配置接口,選擇了固定的ADC基本采樣參數:即ADC的采樣率為80MSPS、采樣精度為12bit、采樣通道為16,所有數據最終通過4條lane輸出到FPGA(4個lane正好對應FPGA的一個GTX quad,比較整齊。。。。技術男強迫癥犯了)。因此,在“NORMAL PACKING MODE”模式下,N=12,N’=12,F=6。
具體的傳輸層數據結構如圖4所示:
圖4:“NORMALPACKING MODE”模式下的傳輸層數據結構
從圖4也可以看出,F=6,采樣數據沒有contro bit 和tail bit填充,這樣就保證了輸出數據100%有效傳輸效率。
那么ADC的幀時鐘是多少呢?手冊上也已經給出了,如圖5所示:幀時鐘頻率和ADC轉換頻率一樣的,這里都為80MHz。
圖5:jesd相關的時鐘頻率
基于以上信息,小青菜哥哥選擇的工作模式的lane線速率就可以確定了:
幀時鐘×幀字節數×每字節的bit數×8b/10b編碼開銷即為lane的工作線速率
80MHz×6×8×10/8=4.8Gbps
另外,還有一種更容易理解的線速率確定方式:
我們知道每條lane傳輸4個ADC的數據,而ADC采樣率為80MHz,采樣精度12bit,沒有控制和tail bit,只要8b/10b編碼,因此每條lane的線速率為:
80MHz采樣率×12bit采樣精度×4個ADC×10/8=4.8Gbps
另外,還有最后一個多幀參數K 需要確認。ADC數據手冊給出了K的范圍,即:Ceil (17 / Number of Octetsper Frame) ≤ Multiframe Size (In Terms of Number of Frames),即Ceil (17 / 6) ≤ K。因此K必須要大于等于3,小青菜哥哥決定K取4。
到現在為止jesd204的參數就確認完畢了,在這里就不一一介紹該芯片的其它功能了,該芯片的詳細中文版介紹可以看小青菜哥哥以前的文章。
接下來我們來打開vivado,一步一步來完成FPGA-ADC數據采集的工程。在工程建立的過程中,小青菜哥哥還會反復提到上述的ADC芯片,因為在建立jesd204鏈路時,FPGA端的參數必須和ADC的參數保持一致~
如圖6所示為新建的vivado工程“jesd204b_ads52j90”,匹配硬件的FPGA型號“xc7k325tffg900-2”,可以看到工程內部還沒有任何文件:
圖6:新建工程
接下里我們來例化jesd204 IP核,如圖7所示:
圖7:例化IP核
雙擊該IP核后打開了jesd204的配置界面,配置界面分成4個子界面:“Configuration”、“Shared Logic”、“Default Link Parameters”以及“JESD204 PHYConfiguration”。我們下面將分別描述:
“Configuration”配置界面
如圖8所示為“Configuration”配置界面,該界面有7個地方是需要用戶來選擇的
圖8:“Configuration”配置界面
1:輸入IP核名字
2:由于是ADC數據采集,因此FPGA的IP核應該設置成“Receive”
3:設置IP核內部的接收數據緩存器的字節長度。數據緩存器主要用來做lane之間的數據對齊和實現確定性延遲功能。字節長度是用戶可選的,選得值越小越節約FPGA邏輯資源,但字節長度必須要超過F*K(本篇為6*4=24),因此選擇了64,如果大家不清楚的話,直接選最大長度,絕對沒問題。
4:lane數量:本篇為4條lane。
5:jesd204 IP核的AXI4-Lite配置時鐘:默認為100MHz。對于ultrascale器件,頻率范圍為10MHz~200MHz,對于7系列器件,如果IP核的模式為“Include Shared Logic inexample design”,則頻率范圍為10MHz~200MHz;如果IP核的模式為“Include Shared Logic incore”,則頻率范圍和Transceiver DRP時鐘頻率范圍相同,本人選擇了80MHz(80MHz為FPGA系統時鐘,可以省去FPGA另外再提供100MHz時鐘);
6:該選項可以選擇sysref信號被core clk的上升沿或下降沿采樣,用于jesd204b子類1的確定性延遲功能。一般來說,外界提供的core clock和sysref是同源且上升沿對齊信號,因此在FPGA端最好選擇在時鐘下降沿采樣sysref比較精確,具體描述可參考pg066的page-60。
7:用戶決定IP核的core clk是否由glbclk(p/n)管腳輸入。當refclk(p/n)頻率不等于core clk時,必須外部輸入core clk。本篇中的線速率為4.8Gbps,因此core clk為120MHz,所以本人將參考時鐘輸入頻率也調成120MHz,這樣IP核只需要一個120MHzd的參考時鐘輸入接口了。
“Shared Logic” 配置界面
如圖9所示為“Shared Logic” 的配置界面:該界面只有兩種選擇,要么選擇“Include Shared Logic in example design”,要么選擇“IncludeShared Logic in core”。對于大部分用戶來說,選擇“Include Shared Logic in core”就可以了,后期使用起來很簡單。對于需要使用“transceiversharing”這種高級功能的特殊用戶來說,就需要選擇“Include Shared Logic in example design”,以便自己可以修改IP核內部的部分代碼。我們選擇“IncludeShared Logic in core”就可以了。
圖9:“SharedLogic” 的配置界面
“Default Link Parameters” 配置界面
如圖10所示為“Default Link Parameters” 的配置界面:該界面5個部分需要用戶設置:
圖10:“DefaultLink Parameters” 的配置界面
1:Default SYSREFAlways:該選項用來配置LMFC計數器是否在每個SYSREF脈沖到來時都復位,或者只在SYSREF的第一個有效脈沖到來時復位,忽略以后的SYSREF信號。這里選擇OFF即可。
2:Default SCR:在ADC端我們禁止了擾碼功能,因此這里也將擾碼功能關閉。擾碼功能有利有弊,小青菜哥哥反正一直都不用該功能的~
3:Default F:從前面的ADC部分描述來看,這里F設置成6
4:Default K:從前面的ADC部分描述來看,這里K設置成4
5:Default SYSREFRequired on Re-Sync:該選項用來選擇每次鏈路重新同步時是否需要sysref信號,我們最好關閉它,默認鏈路同步時不需要該信號,只在SYNC拉高后的下一個LMFC上升沿同步就可以了,這樣就方便許多。
“JESD204 PHY Configuration” 配置界面
如圖11所示為“JESD204 PHY Configuration” 的配置界面:該界面6個部分,只有其中4個部分需要用戶設置:
圖11:“JESD204 PHYConfiguration” 配置界面
1:Transceiver Type:這是由所選FPGA型號決定的,這里不能選擇
2:Line Rate:前面已經計算過,當前需求的數據線速率為4.8Gbps
3:Reference Clock:由于線速率已確定4.8Gbps,而core clk為其1/40,即120MHz。所以為了不使用glbclk(p/n),減少一路時鐘輸入,這里將ReferenceClock 也設置成120MHz ,這樣外部輸入的glbclk(p/n)就可以由Reference Clock代替。
4:這里也沒得選:只能是CPLL
5:DRP Clock Frequency:配置頁面已經提到過,對于七系列器件,DRP clk和AXI4-Lite clock為同一時鐘,所以這里也不可選了,只能為前面定下的80MHz。
6:不需要Transceiver的調試功能
至此,jesd204的IP核就配置完成了。例化該IP核后,其生成的ip核端口信息如下圖12所示(帶信號注釋):
圖12:IP核例化代碼
我們再看看小青菜哥哥建立的工程頂層接口文件,如圖13所示:(帶注釋),接口其實真的很簡單~
圖13:頂層文件接口
小青菜哥哥的FPGA頂層文件主要包括以下8模塊,如圖14所示:
圖14:頂層設計
1:PLL模塊
該模塊利用外部40MHz晶振和FPGA內部的PLL,產生2路時鐘:其中一路10MHz,作為時鐘芯片配置模塊和ADC配置模塊的運行時鐘;另一路100MHz,本打算供給AXI4-lite配置模塊時鐘,后來發現不需要,這里就留著備用了。
2:時鐘芯片配置模塊
沒啥可說的,就是看lmk04826的數據手冊,通過SPI接口協議配置時鐘芯片內的寄存器,產生整個系統所需的時鐘和sysref信號。以前的文章詳細講述過~
3:ADC配置模塊
通過SPI接口協議配置ADC芯片,使其工作在我們需要的jesd204參數狀態,本篇中小青菜哥哥將ADC配置成了累加數,便于輸出測試。以前的文章詳細講述過~
4:jesd204 IP核模塊
調用前面的IP核即可
5:全局時鐘模塊
IP核會輸出一路120MHz的core clk,供給用戶使用。我們將該信號引入全局時鐘模塊,產生120MHz和80MHz全局時鐘,作為ADC數據解析模塊的時鐘。另外80MHz時鐘還可以作為AXI4-lite的配置時鐘。
6:AXI4配置模塊
配置jesd204 IP核的工作參數。這里需要注意的是配置的參數和ADC配置模塊的參數要相同,比如F,K,N等參數。
7:ADC數據解析模塊
由于IP核輸出的數據是128bit位寬,在120MHz的時鐘域下工作。而ADC采樣時鐘是80MHz,所以ADC數據解析模塊的功能就是將總共4 lane的這些數據分離,變成16個ADC的12bit精度的連續采樣數據。每款ADC芯片的數據組織結構(其實就是JESD204B的傳輸層數據結構)不一樣,所以該模塊不具有普適性,只針對本篇的需求~
8:邏輯分析儀
我們通過ILA邏輯分析儀來觀察每一路的ADC采樣數據,看是否正確。
如下圖15所示為小青菜哥哥的jesd204 IP核信號的連接方式,供大家參考:
圖15:IP核頂層代碼
我們再看看數據解析模塊的接口含有哪些信號,如圖16:
圖:16:數據解析模塊頂層
我們再看看邏輯分析儀監測的數據情況,如圖17為IP核輸出的數據時序,這里我們看不出來ADC數據到底對不對,得到的都是ADC采樣數據經過傳輸層分割后的數據。
圖17:jesd IP核數據輸出
進一步的我們看看最終還原的ADC數據到底對不對:由于小青菜哥哥將ADC配置成了發送累加數,所以說如果jesd204鏈路正常工作了,那么觀察到的16路ADC采樣數據肯定也是累加數,如圖18所示:可以看到數據從0累加到4095,然后循環往復,正好對應我們在前面配置的12bit ADC精度。
圖18:ADC累加數據
將ADC的累加數配置更改為采集正常輸入信號后,我們外接了信號發生器,將信號發生器設置成發送正弦波,下圖19是在FPGA內部監測到的一路正弦信號,其他路沒有接信號,是噪聲基線:
圖19:正弦波模擬信號的輸入測試
下圖20是用該板卡和上面描述的方案在試驗現場測試的3種放射源的混合能譜,看上去還可以吧!
圖20:實際放射源測試結果
JESD204B IP核與ADC的實際操作就到這里了,其實只要明白了jesd204協議的基本內容和IP核各個端口的含義,開發起來并不復雜。我們主要還是要仔細閱讀ADC數據手冊,根據手冊給出的參數來確定IP核的工作參數即可。
-
FPGA
+關注
關注
1629文章
21736瀏覽量
603319 -
adc
+關注
關注
98文章
6498瀏覽量
544629 -
JESD204B
+關注
關注
5文章
76瀏覽量
19137
原文標題:JESD204B 使用說明
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論