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