所有IP核沒有正確工作,原因一半是時(shí)鐘,一半是復(fù)位。
前言
復(fù)位與初始化部分其實(shí)還挺復(fù)雜,還好GTX已經(jīng)幫我們做好了,不想麻煩的直接跳到文末看結(jié)論~~~不過了解下也挺有意思的~~
同時(shí)GTX復(fù)位也挺隨意的,你想怎么復(fù)位都可以,支持整體復(fù)位,單個(gè)組件復(fù)位。我們也可以不復(fù)位,核不會(huì)因?yàn)槲覀儧]有進(jìn)行軟復(fù)位就不對(duì)核進(jìn)行復(fù)位,在上電之后會(huì)自動(dòng)進(jìn)行一系列的復(fù)位,不隨你的意志而轉(zhuǎn)移。下面我們就來仔細(xì)研究研究GTX的復(fù)位吧!
一、復(fù)位與初始化
在FPGA上電配置之后,必須進(jìn)行初始化才能使用GTX/GTH。(后文全用GTX表示,同樣適用于GTH)GTX的發(fā)送器(TX)和接收器(RX)可以獨(dú)立的同步進(jìn)行初始化。
GTX的TX和RX初始化包含兩步:
1. 初始化相關(guān)的PLL來驅(qū)動(dòng)TX/RX
2. 初始化TX和RX的數(shù)據(jù)路徑(PMA+PCS)
GTX的TX和RX能從QPLL或者CPLL接收一個(gè)時(shí)鐘。所以在TX/RX初始化之前必須對(duì)相關(guān)的PLL(QPLL/CPLL)進(jìn)行初始化。TX/RX使用的任何PLL都是單獨(dú)的進(jìn)行復(fù)位,PLL復(fù)位操作與TX/RX復(fù)位完全獨(dú)立。TX/RX的數(shù)據(jù)路徑復(fù)位必須在相關(guān)的PLL復(fù)位完成,locked之后進(jìn)行。(就跟我們使用PLL IP核一樣,等locked拉高之后,時(shí)鐘穩(wěn)定才能使用)
看圖說話:TX/RX是獨(dú)立的并行的進(jìn)行復(fù)位操作。
GTX的TX和RX使用一個(gè)狀態(tài)機(jī)來控制初始化過程,并被劃分為幾塊來分別復(fù)位。該劃分允許復(fù)位狀態(tài)機(jī)按順序控制復(fù)位過程:PMA可以首先被復(fù)位,PCS可以在TXUSERRDY或者 RXUSERRDY信號(hào)被斷言后進(jìn)行復(fù)位。在需要的時(shí)候,它也同樣允許PMS,PCS,他們內(nèi)部的功能模塊獨(dú)立的進(jìn)行復(fù)位。
GTX提供了兩種復(fù)位類型: initialization 和 component。
? Initialization Reset: 初始化復(fù)位。這種復(fù)位用作GTX完全復(fù)位。必須在設(shè)備上電及配置完成之后。在必要的時(shí)候,TX端口和RX端口的復(fù)位(GTTXRESET 和 GTRXRESET)同樣可被用來重新初始化GTX的TX和RX。
? Component Reset: 模塊復(fù)位。對(duì)TX / RX 單獨(dú)部分進(jìn)行復(fù)位。 TX模塊復(fù)位端口包括TXPMARESET 和TXPCSRESET 。RX 模塊復(fù)位端口包含RXPMARESET,RXDFELPMRESET,EYESCANRESET, RXPCSRESET, RXBUFRESET和 RXOOBRESET。(有木有很多很復(fù)雜。。)
注:
1. 所有的復(fù)位高電平有效。
2. 這些復(fù)位都是異步的。對(duì)這些異步復(fù)位的推薦設(shè)計(jì)是一個(gè)(各自時(shí)鐘域)時(shí)鐘周期的脈沖信號(hào)。
3. 復(fù)位端口不應(yīng)該被用做下電的目的。
兩種復(fù)位類型主要有以下不同:
TX部分:
RX部分:
二、復(fù)位模式
GTX的初始化復(fù)位 (initialization reset) 只能使用順序復(fù)位模式(Sequential mode )。
GTX的TX復(fù)位只能使用順序復(fù)位模式(Sequential mode )。
GTX的RX復(fù)位可以使用兩種復(fù)位模式:
Sequential mode :順序復(fù)位。隨復(fù)位狀態(tài)機(jī)(initialization 或 component)順序復(fù)位各個(gè)部分。
Single mode :單獨(dú)復(fù)位。僅復(fù)位單個(gè)部分(PMA、PCS、內(nèi)部功能塊)。
復(fù)位完成由信號(hào)(TX/RX)RESETDONE表示,由低到高。
復(fù)位模式對(duì)CPLL和QPLL沒有任何影響。GTX也可以被軟件進(jìn)行彈性復(fù)位設(shè)置,不管是哪種模式。
使用GTRESETSEL來選擇復(fù)位模式,RESETOVRD必須驅(qū)動(dòng)為低電平。詳細(xì)見下表:
注:復(fù)位前,GTRESETSEL和RESETOVRD需要300-500ns的有效時(shí)間。
三、CPLL復(fù)位
在相關(guān)時(shí)鐘邊沿信號(hào)被檢測(cè)到之前,CPLL必須使用CPLLPD端口來下電。在CPLLPD被釋放后,CPLL在使用之前必須進(jìn)行復(fù)位。每個(gè)GTX通道都有3個(gè)專用端口用來CPLL復(fù)位。如下圖:
CPLLRESET :CPLL的復(fù)位輸入。推薦設(shè)計(jì)是一個(gè)時(shí)鐘周期。
CPLLLOCK :拉高時(shí),表示CPLL的復(fù)位完成。
內(nèi)部CPLL復(fù)位信號(hào):低有效。但是由GTX內(nèi)部電路產(chǎn)生的真正的CPLL復(fù)位必須比CPLLRESET高脈沖時(shí)間要長。這個(gè)時(shí)間跟帶寬、時(shí)鐘頻率等有關(guān)。
四、QPLL復(fù)位
QPLL復(fù)位大致與CPLL相同。放張圖:
五、GTX TX初始化與復(fù)位
開門見山的說:GTX的TX復(fù)位只能使用順序復(fù)位模式(Sequential mode )。
GTX的TX使用一個(gè)復(fù)位狀態(tài)機(jī)來控制復(fù)位過程。TX復(fù)位分為兩部分:TX PMA和TX PCS。
回憶下(1)GTX基本知識(shí)所介紹的:GTX的TX和RX均有PMA+PCS兩個(gè)子層組成。
在整個(gè)PMA和PCS中,都由這個(gè)復(fù)位狀態(tài)機(jī)按順序執(zhí)行復(fù)位。如下圖:
使用TXPMARESET來對(duì)TX進(jìn)行復(fù)位,TXRESETDONE拉高表示復(fù)位完成。
直到TXUSERRDY被檢測(cè)為高時(shí),TX復(fù)位狀態(tài)機(jī)才對(duì)PCS進(jìn)行復(fù)位。但是,驅(qū)動(dòng)TXUSERRDY為高需滿足以下條件:
1. 所有應(yīng)用到的時(shí)鐘包括TXUSRCLK/TXUSRCLK2必須穩(wěn)定,或者locked(在PLL/MMCM被使用的時(shí)候)
2. 用戶接口已經(jīng)準(zhǔn)備好傳輸數(shù)據(jù)到GTX。
5.1 GTX TX復(fù)位和初始化的端口信號(hào)
5.2 GTX TX復(fù)位對(duì)配置完成的響應(yīng)
TX復(fù)位必須滿足下列條件:
1. 使用順序復(fù)位模式,GTRESETSEL必須為低。.
2. GTTXRESET必須使用。
3. 在復(fù)位完成前(TXRESETDONE拉高),TXPMARESET和TXPCSRESET 必須驅(qū)動(dòng)為低不變。
4. 在PLL locked之前,GTTXRESET不能被驅(qū)動(dòng)為低。
如果加載配置時(shí),復(fù)位模式默認(rèn)為順序復(fù)位模式,在配置加載后等待最少500ns,C/QPLLRESET 和GTTXRESET 就可以被斷言了。
如果復(fù)位模式為single mode,用戶必須:
1. 在配置加載完成后,等待最少500ns。
2. 將復(fù)位模式改為順序復(fù)位模式 Sequential mode。
3. 再等待300-500ns。
4. 斷言 C/QPLLRESET和 GTTXRESET。
推薦的設(shè)計(jì)是使用來自相關(guān)的CPLL或者QPLL的PLLLOCK 來釋放GTTXRESET由高到低。
TX復(fù)位狀態(tài)機(jī)等GTTXRESET拉高,開始TX復(fù)位,直到GTTXRESET被釋放低為止。
如下圖所示:
5.3 GTX TX復(fù)位對(duì)GTTXRESET脈沖的響應(yīng)
GTX允許用戶在任意時(shí)刻對(duì)TX進(jìn)行復(fù)位,只需要給GTTXRESET一個(gè)有效的高脈沖信號(hào)。 TXPMARESET_TIME和 TXPCSRESET_TIME 可以被設(shè)置為靜態(tài)的也可以通過DRP端口來動(dòng)態(tài)設(shè)置以適配在申請(qǐng) GTTXRESET之前要求的復(fù)位時(shí)間。
當(dāng)使用GTTXRESET時(shí)必須滿足以下條件:
1. 使用sequential mode必須將GTRESETSEL置低。
2. 在復(fù)位完成之前,TXPMARESET 和 TXPCSRESET 必須一直為低。
3. 相關(guān) PLL必須 locked。
4. GTTXRESET的推薦設(shè)計(jì)是一個(gè)時(shí)鐘周期脈沖。
5.4 GTX TX 模塊復(fù)位
TX PMA和 TX PCS 可以單獨(dú)進(jìn)行復(fù)位。在 TXPMARESET 或者 TXPCSRESE復(fù)位過程完成之前,TGTTXRESET必須保持為低。驅(qū)動(dòng)TXPMARESET從高到低來啟動(dòng)PMA復(fù)位程序, 在TXPMARESET復(fù)位過程中,TXPCSRESET必須保持為低。
在順序復(fù)位模式,復(fù)位狀態(tài)機(jī)在PMA復(fù)位完成后,(如果TXUSERRDY為高)自動(dòng)開始PCS復(fù)位。如下圖:
當(dāng)TXUSERRDY為高時(shí),驅(qū)動(dòng)TXPCSRESET由高到低來啟動(dòng)PCS復(fù)位程序。在PCS復(fù)位過程中,TXPMARESET 必須保持為低。
在順序復(fù)位模式,復(fù)位狀態(tài)機(jī)僅復(fù)位PCS,如下圖:
六、RX復(fù)位與初始化
已經(jīng)快11點(diǎn)了,累了,溜了溜了,,,放張圖:
結(jié)論
由GTX核分別輸出了發(fā)送端TX和接收端RX的初始化完成信號(hào):
TX: gt0_tx_fsm_reset_done_out(output)
RX: gt0_rx_fsm_reset_done_out(output)
直接使用這兩個(gè)信號(hào)就好,TX復(fù)位完成就可以開始發(fā)送數(shù)據(jù),RX復(fù)位就可以接收數(shù)據(jù)。
也可以加個(gè)信號(hào) GT_RESET_DONE;
assign GT_RESET_DONE = gt0_tx_fsm_reset_done_out && gt0_rx_fsm_reset_done_out;
先用起來,后面再深入研究,不過了解了復(fù)位過程發(fā)現(xiàn)還是有點(diǎn)意思~
OK,前面說了一大堆結(jié)論卻還是很簡單的~
拿去搬磚吧~
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1630文章
21798瀏覽量
606051 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7145瀏覽量
89587 -
Xilinx
+關(guān)注
關(guān)注
71文章
2171瀏覽量
122148
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
xilinx FPGA IOB約束使用以及注意事項(xiàng)
![<b class='flag-5'>xilinx</b> <b class='flag-5'>FPGA</b> IOB約束使用以及注意事項(xiàng)](https://file1.elecfans.com/web3/M00/06/2C/wKgZPGeIdxCAETnhAAAYft3PTWM462.png)
【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】Key-test
Verilog 測(cè)試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開發(fā)指南
基于Xilinx ZYNQ7000 FPGA嵌入式開發(fā)實(shí)戰(zhàn)指南
采用Xilinx FPGA的AFE79xx SPI啟動(dòng)指南
![采用<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的AFE79xx SPI啟動(dòng)指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Xilinx 7系列FPGA PCIe Gen3的應(yīng)用接口及特性
![<b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b> PCIe Gen3的應(yīng)用接口及特性](https://file1.elecfans.com/web2/M00/0A/DF/wKgZomcpzTWANrn1AAPMC10XdL8157.png)
如何申請(qǐng)xilinx IP核的license
![如何申請(qǐng)<b class='flag-5'>xilinx</b> IP核的license](https://file1.elecfans.com/web2/M00/0A/36/wKgZomcbW8KAAwLHAAALYsx2gPs295.jpg)
FPGA | Xilinx ISE14.7 LVDS應(yīng)用
FPGA核心板 Xilinx Artix-7系列XC7A100T開發(fā)平臺(tái),米爾FPGA工業(yè)開發(fā)板
想通過CYUSB3014配置xilinx FPGA,如何下載CYUSB3014的FPGA配置實(shí)用程序工具?
Xilinx 7系列FPGA功能特性介紹
![<b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>功能特性介紹](https://file1.elecfans.com/web2/M00/D4/80/wKgZomYl0O2AB2JlAAAi25OzPNg339.png)
適用于 Xilinx? MPSoC 和 FPGA的可配置多軌PMU TPS650864數(shù)據(jù)表
![適用于 <b class='flag-5'>Xilinx</b>? MPSoC 和 <b class='flag-5'>FPGA</b>的可配置多軌PMU TPS650864數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Xilinx fpga芯片系列有哪些
適用于 Xilinx? MPSoC 和 FPGA 的可配置多軌PMU TPS650864數(shù)據(jù)表
![適用于 <b class='flag-5'>Xilinx</b>? MPSoC 和 <b class='flag-5'>FPGA</b> 的可配置多軌PMU TPS650864數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AMD Xilinx 7系列FPGA的Multiboot多bit配置
![AMD <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>的Multiboot多bit配置](https://file1.elecfans.com/web2/M00/C1/D3/wKgaomXarESANhQGAAAbqHkuJcw730.png)
評(píng)論