上一篇講到了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核的配置,然后使用簡化設置,如下:
數據總線設置
簡單來說,
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電壓標準
時鐘設置
簡單來說,
Clock Signaling:
時鐘信號是差分還是單端以及IO電壓標準
Clock Strategy:
External Clock:
IP核內部產生并行時鐘
Internal Clock:
IP核需要手動輸入并行時鐘
在xilinx的UG471文檔的P152中,提到了ISERDES的時鐘要求,可以說是要求串行鐘和并行鐘要求相位對齊,需要注意
數據和延時設置
數據延時部分,這個地方先不做設置。
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";詳細可見下面講到級聯時的內容
其他的屬性可以保持默認
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移位的位數并不一樣:
SDR下,一個bitslip脈沖使數據左移一位;DDR下,一個bitslip脈沖使數據右移一位或左移三位;
BITSLIP時序 UG471 Figure 3-12
可以從上圖看出,BITSLIP在CLKDIV時鐘下,一個完整的脈沖可以使輸出數據產生相應的變化;
所以在某些傳輸過程中,可以先開始傳輸預設值,等待接收方調整Idelay和BITSLIP解出正確的預設值后,開始傳輸真正的數據。
ISERDES級聯使用:
SDR Rate下,一個ISERDES能夠解串的最大數據寬度為8;在某些ADC中,其并行數據寬度大于8位,這個時候可以使用上ISERDES的級聯功能:
級聯示意圖 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位。
仿真結果:
找到預設值才開始傳輸真正的數據
注意,獨立使用VCS,VERDI仿真ISERDES時,需要使用某些設置才能仿真成功,具體請參考VCS獨立仿真Vivado IP核的一些方法總結
總結:
ISERDES2可以使用SelectIO IP核設置簡化原語設置流程;但ISERDES2原語設置會更加精細
BITSLIP功能很有用,需要用它找到數據的正確邊界。
審核編輯:劉清
-
FPGA
+關注
關注
1625文章
21637瀏覽量
601317 -
轉換器
+關注
關注
27文章
8607瀏覽量
146744 -
DDR
+關注
關注
11文章
706瀏覽量
65176 -
SerDes
+關注
關注
6文章
197瀏覽量
34821 -
數據總線
+關注
關注
2文章
57瀏覽量
17539
發(fā)布評論請先 登錄
相關推薦
評論