2.1.6 SelectIO資源
Spartan-6有豐富的I/O資源,包括SelectIO和RocketIO。
Spartan-6每個I/O片(Tile)包含兩個IOB、兩個ILOGIC2、兩個OLOGIC2和兩個IODELAY2,見圖2-37。
在這一小節里,分以下幾個方面介紹Spartan-6的SelectIO資源。
SelectIO的電氣特性。
SelectIO的邏輯資源(ILOGIC2、OLOGIC2)。
SelectIO的高級邏輯資源(ISERDES、OSERDES、Bitslip)。
圖2-37 I/O片結構圖
一、 SelectIO IOB的電氣特性
所有的Spartan-6 FPGA有高性能的可配置SelectIO驅動器與接收器,支持非常廣泛的接口標準。可以通過編程控制I/O的輸出強度、斜率以及片上終端OCT。
每個IOB包含輸入、輸出和三態SelectIO驅動器。這些驅動器可以按照各種I/O標準配置。
單端I/O標準(LVCMOS、LVTTL、HSTL、SSTL、PCI)。
差分I/O標準(LVDS、RSDS、TMDS、差分HSTL和SSTL)。
Xilinx軟件庫提供了很多Spartan-6 I/O的原語,包括用于單端信號的IBUF(輸入緩沖器)、IBUFG(時鐘輸入緩沖器)、OBUF(輸出緩沖器)、OBUFT(三態輸出緩沖器)和IOBUF(輸入/輸出緩沖器);以及用于差分信號的IBUFDS(輸入緩沖器)、IBUFGDS(時鐘輸入緩沖器)、OBUFDS(輸出緩沖器)、OBUFTDS(三態輸出緩沖器)和IOBUFDS(輸入/輸出緩沖器)。
二、 SelectIO的邏輯資源
SelectIO的邏輯資源是指I/O驅動器與接收器之后的邏輯,包含了Spartan-6 FPGA的所有基本I/O邏輯資源,如圖2-38所示。其中包括的資源如下。
組合輸入/輸出。
三態輸出控制。
寄存器輸入/輸出。
寄存器三態輸出控制。
雙倍數據速率(DDR)輸入/輸出。
DDR輸出三態控制。
IODELAY2提供對高分辨率可調延遲單元的控制。
支持NONE、C0和C1三種對齊模式的DDR輸出。
支持NONE、C0和C1三種對齊模式的DDR輸入。
ISERDES。
OSERDES。
圖2-38 I/O片內的SelectIO邏輯資源
一個I/O片(IOI)管理兩個IOB。IOI包含兩個單端輸入/輸出,或者一個差分輸入/輸出的完整電路和一個內部互聯模塊。兩個IOB組合在一起是為支持高速的差分接口。
在單端模式下,主IOB驅動引腳P,從IOB驅動引腳N。在差分模式下,主從IOB組合在一起可以實現串并轉換,其數據速率是單端模式下的1~2倍。每個I/O支持3種配置模式:鎖存型I/O、非鎖型I/O和寄存器型I/O。I/O還可以配置為2:1/3:1/4:1的SERDES。鎖存/寄存器時鐘來自GCLK驅動的全局時鐘網絡或者高速I/O時鐘網絡。
IODELAY2是一種可選資源,設計者可以根據需要在輸入/輸出路徑上加入此延時模塊,IODELAY2的延時是可編程的,可以通過DRP指定或者通過例化IODELAY2原語指定。此延時可以是固定延時,也可以是可變延時。
三、 ILOGIC2資源
圖2-39所示為ILOGIC2邏輯框圖,它可支持以下功能。
邊沿觸發D型觸發器。
IDDR(NONE、C0或C1)模式。
鎖存器。
異步/組合邏輯。
圖2-39 ILOGIC2邏輯框圖
(1) 異步/組合邏輯。
當有下列情況之一時,軟件會自動生成組合通路,使輸入驅動器與FPGA內部邏輯資源直接連接。
FPGA的輸入數據與內部邏輯直接相連,而沒有用寄存器。
“打包I/O寄存器/鎖存器到IOB中”的屬性設置為OFF。
(2) IDDR模式。
Spartan-6器件的ILOGIC2中有專用寄存器來實現輸入雙倍數據速率(DDR)寄存器。可以通過例化IDDR2的原語來使用此功能。
IDDR2的屬性DDR_ALIGNMENT有3種模式:NONE、C0和C1。
在NONE模式下,輸入DDR時序如圖2-40所示。寄存器在C0上升沿將輸入數據D寄存到Q0,C1上升沿將下一輸入數據D寄存到Q1。
圖2-40 DDR_ALIGNMENT=NONE時輸入DDR時序示意圖
在某些情況下,輸入數據必須同步到一個時鐘域里,通常C0同步。但是在頻率比較高的情況下,這種同步相對比較困難,因為有效時間僅為時鐘周期的一半(50%占空比的情況下)。Spartan-6器件中的IDDR2包含了專用的邏輯,可以在ILOGIC2內部進行時鐘域的同步。
當DDR_ALIGNMENT為C0(或C1),信號Q0(Q1)在C1(C0)再次寄存,通過內部互聯將輸入數據同步到同一時鐘域。時序圖如圖2-41所示。
圖2-41 DDR_ALIGNMENT=C0\C1 的輸入DDR
IDDR 的原語如圖2-42 所示。
圖2-42 IDDR2 的原語
四、 OLOGIC2 資源
如圖2-43所示,OLOGIC2主要由兩部分組成,分別是輸出數據路徑和三態控制路徑。
這兩個部分可以配置成以下模式。
邊沿觸發D 型觸發器。
DDR 模式(NONE、C0 或C1 同步方式)。
電平敏感鎖存器。
異步/組合邏輯。
圖2-43 OLOGIC2 邏輯模塊
(1) 組合數據輸出和三態控制路徑。
當有下列情況之一時,軟件會自動生成組合通路,將FPGA 內部數據直接輸出到輸出驅動器或驅動器的控制端。
FPGA 內部邏輯數據直接輸出到輸出驅動器或驅動器的三態控制端,而沒有經過寄存器。
“打包I/O 寄存器/鎖存器到IOB 中”的屬性設置為OFF。
(2) ODDR模式。
Spartan-6器件的OLOGIC2中具有專用寄存器,用來實現DDR輸出寄存器。例化ODDR2原語可以使用此功能。當使用OLOGIC2時,會自動使用多路復用器,多路復用器的控制端產生于時鐘信號,不需要手動控制。ODDR2 有兩個時鐘輸入,相位差180°。
ODDR2 支持以下操作模式。
NONE 模式:允許設計人員在C0 和C1 時鐘的上升沿將兩個數據通過DDR多路復用器送至輸出引腳,如圖2-44所示。
圖2-44 DDR_ALIGNMENT=NONE 下的ODDR2
C0模式:在時鐘C0上升沿時,將兩個數據通過DDR多路復用器送至輸出引腳。
C1模式:在時鐘C1上升沿時,將兩個數據通過DDR多路復用器送至輸出引腳。
ODDR原語如圖2-45所示。
圖2-45 ODDR原語
五、 可編程延遲單元IODELAY2
每個IOB包含一個延時單元,可以配置成輸入延時或者輸出延時,當引腳用作雙向口時,還可以通過T端來控制輸入/輸出延時的切換。Spartan-6中IODELAY2的延時不會自動補償溫度或電壓帶來的延時差異,但是用戶可以通過精確計算,來設置IODELAY2的具體延時值。
圖2-46所示為延時單元的結構圖。8位延時值對應0~255個延時Tap,該延時值最低三位控制RING晶振的起始點。該晶振由輸入信號觸發,經過0~7個Tap的延時之后,其輸出作為時鐘,用來鐘控5位計數器。5位計數器中裝載了延時值的高5位,它會一直在0~31循環,直到它的輸出翻轉到最初輸入到該模塊時的輸入值Data Input。延時精度范圍為1~255TAP。
圖2-46 延時單元的結構圖
此延時單元有兩個局限,第一,延時最大值為1個位周期,超過此限制,接收數據會出錯;第二,在下一個邊沿到來之前,必須完成對第一個邊沿的處理,這種情況會發生在接收高速數據流時。
如何避免上述兩個局限呢?
對于第一個限制,通過確保延時值小于一個輸入數據的位周期(1UI)就可以避免,通常設置為0.5UI,使數據采樣點位于眼圖的中心。
對于第二個限制,可以通過圖2-47所示的兩個延時鏈解決。一個延遲鏈延時輸入數據的正值部分,另一個延時鏈延時輸入數據的負值部分,這個處理機制的價值在于:通過設置兩個延遲鏈的不同延時值,校正了輸入數據的占空比。讀者可以在設計中調用IODRP2原語使用此功能。
圖2-47 每個延時模塊使用兩個延時鏈
六、 SelectIO的高級特性
除了上述SelectIO資源之外,Spartan-6還提供了更高級的邏輯特性,介紹如下。
(1) 串并轉換器ISERDES2。
圖2-48和圖2-49分別為ISERDES2接收串行數據時的邏輯框圖和時序圖,利用ISERDES2將串行數據接收為4位并行數據。從時序圖中可以看到,Bitslip為4位數據的同步使能控制信號。
圖2-48 ISERDES2邏輯框圖
圖2-49 ISERDES2時序圖(1:4)
ISERDES2可以實現1:2、1:3或1:4串并轉換器功能,而且通過級聯的方式還可以實現1:5、1:6、1:7、1:8串并轉換器功能。
(2) 并串轉換器OSERDES2。
圖2-50與圖2-51分別為OSERDES2的邏輯框圖和時序圖,利用OSERDES2將4位并行數據轉換為串行數據輸出。
一個OSERDES2可以實現2:1、3:1、4:1并口轉換功能。當用差分輸出時,相關的2個IOB中的OSERDES2可以級聯,從而可以實現5:1、6:1、7:1和8:1并串轉換功能。
設計者可以在HDL設計中,例化ISERDES2/OSERDES2原語來實現輸入數據解串和輸出數據串行化操作。
利用這些資源,可以很方便地實現高速串行數據的收發,例如用它實現LVDS接口。
更多資料請參考附帶光盤中的《Spartan-6 IO資源用戶手冊》。
圖2-50 OSERDES2邏輯框圖
圖2-51 OSERDES2時序圖(4:1)
評論