OSERDES實(shí)現(xiàn)并串轉(zhuǎn)換,只需要管發(fā)送并不需要管接收到的數(shù)據(jù)如何,所以它的操作相對(duì)于ISERDES來說簡單;
本文將介紹OSERDES的IP核生成,OSERDES原語介紹,OSERDES級(jí)聯(lián)使用以及ISERDES,Idelay接收串行數(shù)據(jù)的幾種方法。
與上一篇文章的結(jié)構(gòu)對(duì)應(yīng),這篇也將從可視化的SelectIO的設(shè)置講起,從簡單到復(fù)雜;
在IP Catalog里面找到"SelectIO",接下來跟著這般操作:
數(shù)據(jù)總線設(shè)置
參數(shù)的意義如下:
- Interface Template:接口模板,本次數(shù)據(jù)傳輸并不符合預(yù)設(shè)的協(xié)議,所以選擇Custom
- Data BUS Direction:這一次需要發(fā)送數(shù)據(jù),選擇Output
- Data Rate: 數(shù)據(jù)總線是SDR還是DDR,DDR內(nèi)容可以看(LVDS差分信號(hào)簡單處理)2. DDR信號(hào)的處理
- Serialization Factor: 串化因子,也就是IP核的輸入并行數(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í)鐘設(shè)置
這一部分的內(nèi)容可以參考使用ISERDES接收高速串行數(shù)據(jù),內(nèi)容一樣;
數(shù)據(jù)和延時(shí)設(shè)置
這個(gè)地方不做設(shè)置的原因是因?yàn)椋覀冊(cè)跍y試ISERDES和OSERDES,需要排除使用Idelay的影響,因此這個(gè)地方不做任何延時(shí);
最后一鍵OK,OSERDES的相關(guān)IP核就生成好了。從IP核最底層的verilog文件可以看到,它的實(shí)現(xiàn)跟OSERDES2原語有關(guān),從UG471我們可以知道OSERDES2的相關(guān)內(nèi)容;
首先關(guān)注OSEDES2的屬性內(nèi)容,它的重要屬性決定的因素如下:
- DATA_RATE_OQ:決定OQ端口輸出的數(shù)據(jù)速率,可選SDR或DDR;
- DATA_RATE_TQ:決定TQ端口輸出的數(shù)據(jù)速率,可選BUF, SDR或DDR;
- DATA_WIDTH: 根據(jù)"DATA_RATE_OQ"確定具體數(shù)值;SDR Rate:可設(shè)為2,3,4,5,6,7,8;DDR Rate:可設(shè)為4,6,8,10,14;
- SERDES_MODE:確定OSERDES是主模塊還是從模塊,這跟OSERDES級(jí)聯(lián)使用有關(guān),具體內(nèi)容請(qǐng)看下面的內(nèi)容;
- TRISTATE_WIDTH:這跟"DATA_RATE_TQ"有關(guān),大多情況都設(shè)為1,它的具體設(shè)置關(guān)系如下:
TRISTATE_WIDTH設(shè)置參數(shù)表 UG471 Table 3-8
OSERDES原語圖 UG471 Figure 3-14
OSERDES原語的端口定義如上圖所示,其中重要的端口設(shè)置如下:
- OQ:串行數(shù)據(jù)輸出,直接到IOB,也就是直接連接到IOBUF,ODELAY等特殊結(jié)構(gòu)
- SHIFTOUT1/2:級(jí)聯(lián)時(shí)使用,詳見下文
- CLK:高速時(shí)鐘,串行數(shù)據(jù)時(shí)鐘輸入
- CLKDIV:慢速時(shí)鐘,并行數(shù)據(jù)時(shí)鐘輸入
- D1 to D8:并行數(shù)據(jù)輸入,當(dāng)并行數(shù)據(jù)多于8bit不超過14bit,可以使用OSERDES級(jí)聯(lián),級(jí)聯(lián)的使用方法詳見下文
- OCE:串行數(shù)據(jù)時(shí)鐘使能信號(hào)輸出
- RST:高復(fù)位信號(hào)輸入
- SHIFTIN1/2: 級(jí)聯(lián)時(shí)使用,詳見下文
其他沒有提到的輸入信號(hào)可以設(shè)為0,輸出信號(hào)可以不用連接;
CLKDIV與CLK的聯(lián)系:
假設(shè)接收的串行數(shù)據(jù)時(shí)鐘為256MHz,串化因子為8,則CLKDIV為32MHz;
SDR:CLKDIV = CLK/DATA_WIDTH
DDR: CLKDIV = 2 * CLK/DATA_WIDTH
注意CLK和CLKDIV不一定是相位對(duì)齊的;
OSERDES2數(shù)據(jù)時(shí)延:
雖然與ISERDES2相比,沒有"Mode"屬性設(shè)置,但CLK和CLKDIV不一定是相位對(duì)齊的,它的輸出數(shù)據(jù)相對(duì)于輸入數(shù)據(jù)也有相應(yīng)的時(shí)延,具體的延時(shí)與DATA_WIDTH,DATA_RATE_OQ,DATA_RATE_TQ有關(guān);關(guān)系如下:
OSERDES時(shí)延參數(shù)對(duì)照表 UG471 Table 3-11
以最簡單的2:1 SDR串化為例:
2:1 SDR UG471 Figure 3-16
- Event1時(shí),數(shù)據(jù)從FPGA其他部分邏輯傳到OSERDES2的D1-2端口
- Event2時(shí),數(shù)據(jù)在CLKDIV上升沿被OSERDES2采樣
- Event3時(shí),OQ端口產(chǎn)生相應(yīng)的輸出串行數(shù)據(jù)
所以,是不是也可以推出下圖Event所發(fā)生的事情呢?條件為8:1 DDR。
8:1 DDR UG471 Figure 3-17
OSERDES級(jí)聯(lián)使用:
當(dāng)并行數(shù)據(jù)多于8bit不超過14bit時(shí),可以采用兩個(gè)OSERDES2級(jí)聯(lián)的使用方法,示意圖如下,
擴(kuò)展并行輸入數(shù)據(jù)位寬 UG471 Figure 3-15
上圖已經(jīng)示意的比較清楚,操作步驟可分為三步。
- 兩個(gè)OSERDES2的"SERDES_MODE"設(shè)置,一個(gè)需要設(shè)為"MASTER",另一個(gè)設(shè)為"SLAVE";
- 將"SLAVE"的"SHIFTOUT1/2"連接至"MASTER"的"SHIFTIN1/2";
- "MASTER"的D1-D8輸入并行數(shù)據(jù)的低8位,"SLAVE"的D3-D8可以連接輸入并行數(shù)據(jù)的高6位;
我在調(diào)試一款AD的過程中接觸到了SelectIO中的相關(guān)知識(shí),由表及里,看過一些I/OSERDES接收數(shù)據(jù)的調(diào)節(jié)方法:
- 首先讓發(fā)送方發(fā)送特殊字符,接收方接收數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),調(diào)節(jié)Idelay的參數(shù),直到出現(xiàn)穩(wěn)定的結(jié)果(不一定是發(fā)送的特殊字符),Idelay參數(shù)記為C1;
- 繼續(xù)調(diào)節(jié)Idelay的參數(shù),直到結(jié)果不再穩(wěn)定,Idelay參數(shù)記為C2;
- Idelay參數(shù)設(shè)為(C1+C2)/2 ,此時(shí)接收的并行數(shù)據(jù)穩(wěn)定為一個(gè)定值;
- 如果穩(wěn)定的輸出結(jié)果不是約定的特殊字符,調(diào)節(jié)Bitslip移動(dòng)字符的邊界,直至輸出結(jié)果為約定的特殊字符;
- 利用其他的通信方式或方法,告知發(fā)送方可以正常發(fā)送數(shù)據(jù);
更有甚者直接使用ISERDES,Idelay調(diào)節(jié)CLK,
- 將CLK作為串行數(shù)據(jù),使用ISERDES轉(zhuǎn)為并行數(shù)據(jù)后,調(diào)節(jié)Idelay;
- 記錄最后一次并行數(shù)據(jù)全為0的時(shí)候的Idelay參數(shù)C1;
- 繼續(xù)調(diào)節(jié),記錄第一次并行數(shù)據(jù)全為1的時(shí)候的Idelay參數(shù)C2;
- Idelay參數(shù)設(shè)為(C1+C2)/2 ,此時(shí)CLK的時(shí)鐘對(duì)應(yīng)數(shù)據(jù)的位置裕量充足;
仿真結(jié)果可以參看使用ISERDES接收高速串行數(shù)據(jù)
總結(jié):
- OSERDES2可以使用SelectIO IP核設(shè)置簡化原語設(shè)置流程;但OSERDES2原語設(shè)置會(huì)更加精細(xì)。
- OSERDES的數(shù)據(jù)時(shí)延以及級(jí)聯(lián)使用方面見上面的內(nèi)容。
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26470 -
DDR
+關(guān)注
關(guān)注
11文章
706瀏覽量
65176 -
SDR
+關(guān)注
關(guān)注
7文章
233瀏覽量
50390 -
RST
+關(guān)注
關(guān)注
0文章
31瀏覽量
7375 -
CLK
+關(guān)注
關(guān)注
0文章
127瀏覽量
17105
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論