MGT(Multi-gigabit transceiver)在業(yè)界MGT是高速串行收發(fā)器模塊的簡(jiǎn)稱,xilinx公司在其artix7、kintex7以及virtex7里集成了數(shù)量不同的MGT用于實(shí)現(xiàn)FPGA與外界的高速串行通信,并且根據(jù)支持線速度的不同賦予了它新的名稱。另外,Spartan7里面沒有MGT。 在artix7里面,MGT被稱作GTP;在kintex7里面,MGT被稱作GTX;在virtex7里面,MGT被稱作GTX/GTH/GTZ; GTP最高線速度6.6Gb/s,GTX最高線速度12.5Gb/s,GTH最高線速度13.1Gb/s,GTZ最高線速度28.05Gb/s(太牛逼,沒用過,本篇不做介紹了)。 無論是GTP、GTX還是GTH,都是由3個(gè)模塊構(gòu)成:1、時(shí)鐘模塊2、數(shù)據(jù)發(fā)送模塊3、數(shù)據(jù)接收模塊 首先我們看看GTP的構(gòu)成,如圖1所示:
圖1:GTP結(jié)構(gòu)圖
在artix7中,每個(gè)GTP包含1個(gè)時(shí)鐘模塊、4個(gè)數(shù)據(jù)發(fā)送模塊以及4個(gè)數(shù)據(jù)接收模塊。一個(gè)時(shí)鐘模塊負(fù)責(zé)管理4對(duì)收發(fā)器(1個(gè)發(fā)送模塊和1個(gè)接收模塊合為一對(duì)收發(fā)器)。
時(shí)鐘模塊的輸入端可以接2組差分參考時(shí)鐘,內(nèi)部也有2個(gè)頻率為1.6GHz~3.3GHz的PLL,這樣就允許RX和TX工作在不同的參考時(shí)鐘下。
我們?cè)趤砜纯?/span>GTX/GTH的構(gòu)成,如圖2所示:
圖2:GTX/GTH結(jié)構(gòu)圖
在kintex7/virtex7中,每個(gè)GTX/GTH同樣包含1個(gè)時(shí)鐘模塊、4個(gè)數(shù)據(jù)發(fā)送模塊以及4個(gè)數(shù)據(jù)接收模塊。一個(gè)時(shí)鐘模塊負(fù)責(zé)管理4對(duì)收發(fā)器。但是時(shí)鐘模塊內(nèi)有4個(gè)CPLL,即每個(gè)收發(fā)器都包含一個(gè)。同時(shí)還有一個(gè)QPLL。那么CPLL和QPLL有何不同呢? 在GTX里面,CPLL的頻率范圍為1.6GHz~3.3GHz,支持的最高線速度為6.6Gb/s。在GTH里面,CPLL的頻率范圍為1.6GHz~5.16GHz。當(dāng)收發(fā)器的線速度非常高,其CPLL的頻率范圍已無法滿足需求時(shí),QPLL就出場(chǎng)了。 在GTX里面,QPLL的工作頻率在低波段模式時(shí)為5.93 GHz~8.0GHz,在高波段的工作頻率為9.8GHz~12.5GHz。在GTH里面,QPLL的工作頻率為8.0GHz~13.1GHz。 因此,無論是artix、kintex還是virtex,PLL的頻率范圍決定了收發(fā)器的最高線速度。 咱們?cè)倏纯磾?shù)據(jù)發(fā)送模塊的結(jié)構(gòu),如圖3所示:
圖3:TX模塊
TX模塊的每一個(gè)單元模塊在其datasheet都有詳細(xì)的描述,有興趣的可以仔細(xì)去研究。咱們?cè)谑褂肨X功能時(shí),大概知道其工作原理即可。
正如圖上所標(biāo)識(shí)的,咱們將需要發(fā)送的16/32bit并行數(shù)據(jù)通過內(nèi)部接口fifo“1”傳遞給8/10編碼模塊“2”,模塊“2”的10bit數(shù)據(jù)由于需要跨時(shí)鐘域,因此緩存到fifo“3”后再傳遞到并串轉(zhuǎn)換模塊“4”,“4”輸出的串行數(shù)據(jù)再通過接口5處理,調(diào)整數(shù)據(jù)的電氣性能就通過高速IO口發(fā)送出去了。 咱們?cè)倏纯磾?shù)據(jù)接收模塊的結(jié)構(gòu),如圖4所示:
圖4:RX模塊
RX模塊的使用相對(duì)發(fā)送模塊來說復(fù)雜一點(diǎn)點(diǎn),但僅僅也是一點(diǎn)點(diǎn)而已。其數(shù)據(jù)流通的路徑和TX模塊正好相反,咱們這里就不再細(xì)說。 根據(jù)實(shí)際使用的經(jīng)驗(yàn)來看,RX模塊數(shù)據(jù)接收時(shí),串并轉(zhuǎn)換的時(shí)鐘域、數(shù)據(jù)緩存的時(shí)鐘域、RX與FPGA內(nèi)部邏輯之間的時(shí)鐘域,咱們千萬要注意,只要一混淆,數(shù)據(jù)接收就會(huì)出現(xiàn)莫名的bug。最簡(jiǎn)單的方式就是使用RX接收數(shù)據(jù)的恢復(fù)時(shí)鐘,datasheet也推薦了其他幾種方式,大家也可以研究研究。 另外,RX數(shù)據(jù)的對(duì)齊咱們只要管理好上圖標(biāo)注?的部分,監(jiān)測(cè)其輸出的三兩個(gè)標(biāo)識(shí)信號(hào),就可完成數(shù)據(jù)的正確獲取。
總之GTP、GTX、GTZ的使用沒有想象的復(fù)雜,例化這些IP核時(shí),xilinx官方都給出了帶詳細(xì)注解的源碼例程,咱們少量改動(dòng)就可以用在自己項(xiàng)目上了,其四五百頁(yè)的英文datasheet很多的內(nèi)容都可以走馬觀花,不會(huì)影響咱們使用它的功能。