0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用ISERDES接收高速串行數據

冬至配餃子 ? 來源:Bug記錄 ? 作者:woodfan ? 2022-08-20 11:11 ? 次閱讀

上一篇講到了Idelay,那么SERDES(Serialization/De-serialization)也可以順帶介紹一下。高速信號傳輸過程中,并行傳輸因為線路同步難,抗干擾性差等缺點逐漸被串行技術取代;通過提高傳輸速率的方法,串行傳輸也可以實現很高的傳輸速度。

但是,在內部處理信號時,數據信號往往是多bit信號,而傳輸過程中需要用到單bit串行傳輸技術,所以,中間需要有一個轉換器,實現并串轉換,這就需要用到SERDES技術。

從Virtes-4系列FPGA開始,Xilinx公司的FPGA支持LVDS電平和內置的SERDES原語,所以本文適用Virtes-4及后續(xù)系列FPGA。

本文將介紹ISERDES的IP核生成,ISERDES原語介紹,Bitslip使用以及最終的仿真結果。

這次我們可以使用IP核簡化ISERDES原語的配置,找到SelectIO IP核的配置,然后使用簡化設置,如下:

poYBAGMAT5qAZrqeAADnpn94iPQ316.png

數據總線設置

簡單來說,

Interface Template:接口模板,本次數據傳輸并不符合預設的協議,所以選擇Custom

Data BUS Direction:接收數據-> input

Data Rate: 數據總線是SDR還是DDR,DDR內容可以看(LVDS差分信號簡單處理)2. DDR信號的處理

Serialization Factor: 串化因子,也就是需要把串行信號轉換成多少bit的并行數據;

SDR Rate:可設為2,3,4,5,6,7,8; DDR Rate:可設為4,6,8,10,14;

External Data Width: 外部輸入數據的位寬,默認設1

I/O signaling:設置差分還是單端以及IO電壓標準

poYBAGMAT7KAJlKoAADsEvN8sq4065.png

時鐘設置

簡單來說,

Clock Signaling:

時鐘信號是差分還是單端以及IO電壓標準

Clock Strategy:

External Clock:

IP核內部產生并行時鐘

Internal Clock:

IP核需要手動輸入并行時鐘

在xilinx的UG471文檔的P152中,提到了ISERDES的時鐘要求,可以說是要求串行鐘和并行鐘要求相位對齊,需要注意

pYYBAGMAT9uAXD2aAACGvbMTJsU209.pngpYYBAGMAT-CAS1ySAADgL_BGwlA125.png

數據和延時設置

數據延時部分,這個地方先不做設置。

pYYBAGMAT_-AT4nyAADI2TdmbLU992.png

Summary

生成IP核之后,可以找到IP核最底層的verilog文件,它的內部實現的核心部分是ISERDES2,為此我們需要知道ISERDES2的參數內容;

ISERDES2的屬性中,重點關注的是以下幾個:

DATA_RATE: 數據速率還是SDR還是DDR

DATA_WIDTH:參考上面數據總線設置的內容

INTERFACE_TYPE:接口類型,默認使用"NETWORKING"

NUM_CE: 時鐘使能數量,默認使用2

SERDES_MODE:當使用級聯ISERDES時,數據從Master ISERDES輸入,使用一個ISERDES設為"MASTER",兩個ISERDES級聯使用,另一個為"SLAVE";詳細可見下面講到級聯時的內容

其他的屬性可以保持默認

poYBAGMAUBuAZXzHAADMO-sOBo4557.png

UG471 Figure 3-2

ISERDES2重要端口設置:

Q1-Q8: 數據輸出;注意當級聯時,"SLAVE" ISERDES的Q3-Q8為并行數據的第8-13位;

SHIFTOUT:級聯時使用,詳見下文

SHIFTIN:級聯時使用,詳見下文

D:從IOB來的數據

DDLY:從Idelay2來的數據,D端口從輸入引腳接入后沒經過處理,DDLY經過Idelay2處理;Idelay詳見(LVDS差分信號簡單處理)3. Idelay對時序的補救

CLK,CLKB:串行時鐘,快鐘,CLKB是CLK取反處理

CE1,CE2:快慢鐘的使能

RST:原語復位,高復位

CLKDIV:并行鐘,慢鐘

BITSLIP:bit移位功能,詳見下文

時鐘部分說明:

SDR下:假設接收的串行數據時鐘為256MHz,解串因子為8,則CLKDIV為32MHz;

CLKDIV = CLK/DATA_WIDTH

DDR: CLKDIV = 2 * CLK/DATA_WIDTH

注意CLK和CLKDIV要相位對齊;

在NETWORKING模式下,ISERDES輸出要晚于輸入2個CLKDIV周期;

BITSLIP功能說明:

數據串轉并的過程中,如果沒有確定好數據邊界,解串的數據也不是正確的,這個時候就需要使用BITSLIP功能:

在SDR和DDR下,bitslip移位的位數并不一樣:

poYBAGMAUC6AIAPVAAC7M4TOYXg066.png

SDR下,一個bitslip脈沖使數據左移一位;DDR下,一個bitslip脈沖使數據右移一位或左移三位;

poYBAGMAUEOAByVdAACnxkrc8q0228.png

BITSLIP時序 UG471 Figure 3-12

可以從上圖看出,BITSLIP在CLKDIV時鐘下,一個完整的脈沖可以使輸出數據產生相應的變化;

所以在某些傳輸過程中,可以先開始傳輸預設值,等待接收方調整Idelay和BITSLIP解出正確的預設值后,開始傳輸真正的數據。

ISERDES級聯使用:

SDR Rate下,一個ISERDES能夠解串的最大數據寬度為8;在某些ADC中,其并行數據寬度大于8位,這個時候可以使用上ISERDES的級聯功能:

pYYBAGMAUFmAIgglAACKQT3pTTs288.png

級聯示意圖 UG471 Figure 3-8

首先 設置一個ISERDES的SERDES_MODE屬性為"MASTER",另一個為"SLAVE";

設置"MASTER"和"SLAVE" ISERDES2的DATA_WIDTH數據寬度為同一個數(10或14);

將"MASTER"的SHIFTOUT1,2連接至"SLAVE"的SHIFTIN1,2

DATA_WIDTH為10時,"SLAVE"的Q3-4為第8-9位;DATA_WIDTH為14時,"SLAVE"的Q3-8為第8-13位。

仿真結果:

poYBAGMAUG6ASpBTAAA8hdr4v4M699.png

找到預設值才開始傳輸真正的數據

注意,獨立使用VCS,VERDI仿真ISERDES時,需要使用某些設置才能仿真成功,具體請參考VCS獨立仿真Vivado IP核的一些方法總結

總結:

ISERDES2可以使用SelectIO IP核設置簡化原語設置流程;但ISERDES2原語設置會更加精細

BITSLIP功能很有用,需要用它找到數據的正確邊界。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1625

    文章

    21637

    瀏覽量

    601317
  • 轉換器
    +關注

    關注

    27

    文章

    8607

    瀏覽量

    146744
  • DDR
    DDR
    +關注

    關注

    11

    文章

    706

    瀏覽量

    65176
  • SerDes
    +關注

    關注

    6

    文章

    197

    瀏覽量

    34821
  • 數據總線
    +關注

    關注

    2

    文章

    57

    瀏覽量

    17539
收藏 人收藏

    評論

    相關推薦

    80SJNB Advanced 均衡和串行數據分析方法

    和其它8000 系列采樣示波器上使用。關閉的眼圖、接收端均衡和發(fā)送端目前,大量的串行數據鏈路設計和標準進入了信道(互連)嚴重限制高速信號、使接收端一端眼圖關閉的時代。經過鏈路傳輸后可
    發(fā)表于 11-26 10:44

    多FPGA系統(tǒng)中自定義高速串行數據接口設計

    多FPGA系統(tǒng)中自定義高速串行數據接口設計.pdf
    發(fā)表于 03-21 17:28

    多FPGA系統(tǒng)中自定義高速串行數據接口設計

    多FPGA系統(tǒng)中自定義高速串行數據接口設計為方便多FPGA系統(tǒng)中主從FPGA之間的命令與數據傳輸,節(jié)省連接的引腳數量,設計了一種基于FPGA的自定義高速
    發(fā)表于 08-11 11:49

    Sync_Header Bits如何從串行數據中獲取正確的Header Bits?

    嗨,我正在使用XILINX IP-Core Generator的GTX。我正在使用Kintex-7。在接收器中,接收接收串行數據并轉換成并行數據
    發(fā)表于 07-23 08:14

    怎么實現基于FPGA的具有流量控制機制的高速串行數據傳輸系統(tǒng)設計?

    本文介紹了基于Xilinx Virtex-6 FPGA的高速串行數據傳輸系統(tǒng)的設計與實現,系統(tǒng)包含AXI DMA和GTX串行收發(fā)器,系統(tǒng)增加了流量控制機制來保證高速
    發(fā)表于 05-25 06:45

    高速CAN通訊總線接收到無效串行數據是何原因?怎么解決呢?

    高速CAN通訊總線接收到無效串行數據是何原因?怎么解決呢?
    發(fā)表于 05-09 10:39

    【verilog每日一練】位拼接符的應用:如何實現串行數據接收與輸出

    若1bit串行信號data_in按高位先發(fā)的順序傳輸一個8bit的數據,data_en為使能信號,請用位拼接符實現串行數據接收并輸出接收
    發(fā)表于 08-07 16:05

    串行數據轉換為并行數據

    。。。。。。串行數據轉換為并行數據。。。。。。。
    發(fā)表于 11-10 10:01 ?9次下載

    行數據轉換為串行數據.hex

    。。。。。。并行數據轉換為串行數據。。。。。。。
    發(fā)表于 11-10 10:00 ?0次下載

    多FPGA系統(tǒng)中自定義高速串行數據接口設計

    多FPGA系統(tǒng)中自定義高速串行數據接口設計
    發(fā)表于 05-10 11:24 ?24次下載

    基于8051的Proteus仿真-串行數據轉換為并行數據

    基于8051的Proteus仿真-串行數據轉換為并行數據
    發(fā)表于 09-01 23:32 ?10次下載

    高速串行數據挑戰(zhàn)與TDR阻抗測試和高速串行鏈路的分析

    本文介紹了TDR阻抗測試和高速串行鏈路分析,首先介紹了高速串行數據鏈路的挑戰(zhàn),然后對高速串行數據
    發(fā)表于 10-12 16:42 ?8次下載
    <b class='flag-5'>高速</b><b class='flag-5'>串行數據</b>挑戰(zhàn)與TDR阻抗測試和<b class='flag-5'>高速</b><b class='flag-5'>串行</b>鏈路的分析

    使用ISERDES接收高速串行數據

    高速信號傳輸過程中,并行傳輸因為線路同步難,抗干擾性差等缺點逐漸被串行技術取代;通過提高傳輸速率的方法,串行傳輸也可以實現很高的傳輸速度。
    發(fā)表于 06-16 14:11 ?1984次閱讀
    使用<b class='flag-5'>ISERDES</b><b class='flag-5'>接收</b><b class='flag-5'>高速</b><b class='flag-5'>串行數據</b>

    使用OSERDES發(fā)送高速串行數據

    OSERDES實現并串轉換,只需要管發(fā)送并不需要管接收到的數據如何,所以它的操作相對于ISERDES來說簡單;
    的頭像 發(fā)表于 06-16 14:14 ?1187次閱讀
    使用OSERDES發(fā)送<b class='flag-5'>高速</b><b class='flag-5'>串行數據</b>

    測量串行數據信號:選擇合適的示波器帶寬

    1.考慮測量帶寬的高速串行數據 在測量高速串行數據信號和設備時,無論是為了合規(guī)性、設計還是為了故障排除,測量帶寬都是一個重要的考慮因素。相對于信號的頻率成分,測量示波器可以有一個或大或
    的頭像 發(fā)表于 07-19 11:04 ?372次閱讀
    測量<b class='flag-5'>串行數據</b>信號:選擇合適的示波器帶寬