上一篇講到了Idelay,那么SERDES(Serialization/De-serialization)也可以順帶介紹一下。高速信號傳輸過程中,并行傳輸因為線路同步難,抗干擾性差等缺點逐漸被串行技術(shù)取代;通過提高傳輸速率的方法,串行傳輸也可以實現(xiàn)很高的傳輸速度。
但是,在內(nèi)部處理信號時,數(shù)據(jù)信號往往是多bit信號,而傳輸過程中需要用到單bit串行傳輸技術(shù),所以,中間需要有一個轉(zhuǎn)換器,實現(xiàn)并串轉(zhuǎn)換,這就需要用到SERDES技術(shù)。
從Virtes-4系列FPGA開始,Xilinx公司的FPGA支持LVDS電平和內(nèi)置的SERDES原語,所以本文適用Virtes-4及后續(xù)系列FPGA。
本文將介紹ISERDES的IP核生成,ISERDES原語介紹,Bitslip使用以及最終的仿真結(jié)果。
這次我們可以使用IP核簡化ISERDES原語的配置,找到SelectIO IP核的配置,然后使用簡化設(shè)置,如下:
數(shù)據(jù)總線設(shè)置
簡單來說,
Interface Template:接口模板,本次數(shù)據(jù)傳輸并不符合預(yù)設(shè)的協(xié)議,所以選擇Custom
Data BUS Direction:接收數(shù)據(jù)-> input
Data Rate: 數(shù)據(jù)總線是SDR還是DDR,DDR內(nèi)容可以看(LVDS差分信號簡單處理)2. DDR信號的處理
Serialization Factor: 串化因子,也就是需要把串行信號轉(zhuǎn)換成多少bit的并行數(shù)據(jù);
SDR Rate:可設(shè)為2,3,4,5,6,7,8; DDR Rate:可設(shè)為4,6,8,10,14;
External Data Width: 外部輸入數(shù)據(jù)的位寬,默認(rèn)設(shè)1
I/O signaling:設(shè)置差分還是單端以及IO電壓標(biāo)準(zhǔn)
時鐘設(shè)置
簡單來說,
Clock Signaling:
時鐘信號是差分還是單端以及IO電壓標(biāo)準(zhǔn)
Clock Strategy:
External Clock:
IP核內(nèi)部產(chǎn)生并行時鐘
Internal Clock:
IP核需要手動輸入并行時鐘
在xilinx的UG471文檔的P152中,提到了ISERDES的時鐘要求,可以說是要求串行鐘和并行鐘要求相位對齊,需要注意
數(shù)據(jù)和延時設(shè)置
數(shù)據(jù)延時部分,這個地方先不做設(shè)置。
Summary
生成IP核之后,可以找到IP核最底層的verilog文件,它的內(nèi)部實現(xiàn)的核心部分是ISERDES2,為此我們需要知道ISERDES2的參數(shù)內(nèi)容;
ISERDES2的屬性中,重點關(guān)注的是以下幾個:
DATA_RATE: 數(shù)據(jù)速率還是SDR還是DDR
DATA_WIDTH:參考上面數(shù)據(jù)總線設(shè)置的內(nèi)容
INTERFACE_TYPE:接口類型,默認(rèn)使用"NETWORKING"
NUM_CE: 時鐘使能數(shù)量,默認(rèn)使用2
SERDES_MODE:當(dāng)使用級聯(lián)ISERDES時,數(shù)據(jù)從Master ISERDES輸入,使用一個ISERDES設(shè)為"MASTER",兩個ISERDES級聯(lián)使用,另一個為"SLAVE";詳細可見下面講到級聯(lián)時的內(nèi)容
其他的屬性可以保持默認(rèn)
UG471 Figure 3-2
ISERDES2重要端口設(shè)置:
Q1-Q8: 數(shù)據(jù)輸出;注意當(dāng)級聯(lián)時,"SLAVE" ISERDES的Q3-Q8為并行數(shù)據(jù)的第8-13位;
SHIFTOUT:級聯(lián)時使用,詳見下文
SHIFTIN:級聯(lián)時使用,詳見下文
D:從IOB來的數(shù)據(jù)
DDLY:從Idelay2來的數(shù)據(jù),D端口從輸入引腳接入后沒經(jīng)過處理,DDLY經(jīng)過Idelay2處理;Idelay詳見(LVDS差分信號簡單處理)3. Idelay對時序的補救
CLK,CLKB:串行時鐘,快鐘,CLKB是CLK取反處理
CE1,CE2:快慢鐘的使能
RST:原語復(fù)位,高復(fù)位
CLKDIV:并行鐘,慢鐘
BITSLIP:bit移位功能,詳見下文
時鐘部分說明:
SDR下:假設(shè)接收的串行數(shù)據(jù)時鐘為256MHz,解串因子為8,則CLKDIV為32MHz;
CLKDIV = CLK/DATA_WIDTH
DDR: CLKDIV = 2 * CLK/DATA_WIDTH
注意CLK和CLKDIV要相位對齊;
在NETWORKING模式下,ISERDES輸出要晚于輸入2個CLKDIV周期;
BITSLIP功能說明:
數(shù)據(jù)串轉(zhuǎn)并的過程中,如果沒有確定好數(shù)據(jù)邊界,解串的數(shù)據(jù)也不是正確的,這個時候就需要使用BITSLIP功能:
在SDR和DDR下,bitslip移位的位數(shù)并不一樣:
SDR下,一個bitslip脈沖使數(shù)據(jù)左移一位;DDR下,一個bitslip脈沖使數(shù)據(jù)右移一位或左移三位;
BITSLIP時序 UG471 Figure 3-12
可以從上圖看出,BITSLIP在CLKDIV時鐘下,一個完整的脈沖可以使輸出數(shù)據(jù)產(chǎn)生相應(yīng)的變化;
所以在某些傳輸過程中,可以先開始傳輸預(yù)設(shè)值,等待接收方調(diào)整Idelay和BITSLIP解出正確的預(yù)設(shè)值后,開始傳輸真正的數(shù)據(jù)。
ISERDES級聯(lián)使用:
SDR Rate下,一個ISERDES能夠解串的最大數(shù)據(jù)寬度為8;在某些ADC中,其并行數(shù)據(jù)寬度大于8位,這個時候可以使用上ISERDES的級聯(lián)功能:
級聯(lián)示意圖 UG471 Figure 3-8
首先 設(shè)置一個ISERDES的SERDES_MODE屬性為"MASTER",另一個為"SLAVE";
設(shè)置"MASTER"和"SLAVE" ISERDES2的DATA_WIDTH數(shù)據(jù)寬度為同一個數(shù)(10或14);
將"MASTER"的SHIFTOUT1,2連接至"SLAVE"的SHIFTIN1,2
DATA_WIDTH為10時,"SLAVE"的Q3-4為第8-9位;DATA_WIDTH為14時,"SLAVE"的Q3-8為第8-13位。
仿真結(jié)果:
找到預(yù)設(shè)值才開始傳輸真正的數(shù)據(jù)
注意,獨立使用VCS,VERDI仿真ISERDES時,需要使用某些設(shè)置才能仿真成功,具體請參考VCS獨立仿真Vivado IP核的一些方法總結(jié)
總結(jié):
ISERDES2可以使用SelectIO IP核設(shè)置簡化原語設(shè)置流程;但ISERDES2原語設(shè)置會更加精細
BITSLIP功能很有用,需要用它找到數(shù)據(jù)的正確邊界。
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1630文章
21782瀏覽量
604982 -
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8741瀏覽量
147664 -
DDR
+關(guān)注
關(guān)注
11文章
712瀏覽量
65434 -
SerDes
+關(guān)注
關(guān)注
6文章
200瀏覽量
34983 -
數(shù)據(jù)總線
+關(guān)注
關(guān)注
2文章
58瀏覽量
17601
發(fā)布評論請先 登錄
相關(guān)推薦
評論