一、7 系列FPGAs SelectIO 資源
SelectIO,就是I/O接口以及I/O邏輯的總稱?!禪G471--SelectIO》 篇可以分成3部分:第1部分介紹I/O的電氣特性,第2部分介紹I/O邏輯資源,第3部分介紹高級的I/O邏輯資源(serializer/deserializer)。
說到I/O,必須先提到FPGA的BANK。在7系列的FPGA中,BANK分為HR(High-range)BANK和HP(High-performance) BANK。HP BANK只能支持小于等于1.8V電平標(biāo)準(zhǔn)的I/O信號,HR BANK則支持小于等于3.3V電平標(biāo)準(zhǔn)的I/O信號。HP BANK專為高速I/O信號設(shè)計(jì),支持DCI(數(shù)控阻抗),而HR BANK則適合更大眾化的所有I/O信號設(shè)計(jì)。下表列出了HP BANK 和HR BANK的特性。
無論是HR或者HP BNANK,每個(gè)BANK都包含50個(gè)I/O管腳,每個(gè)I/O管腳都可配置成輸入、輸出。每個(gè)BANK的首尾管腳只能作為單端I/O,其余48個(gè)I/O則可配置成24對差分I/O。
二、selectIO的邏輯資源
下圖為HP BANK的IO 模塊,HR BANK與之相比,沒有輸出延遲ODELAYE2;
I/O邏輯資源主要包含5部分:
2.1 ILOGIC
ILOGIC即輸入信號處理邏輯,緊挨著IOB,外界的輸入信號最先經(jīng)過的就是ILOGIC。ILOGIC是由許多的數(shù)據(jù)選擇器和一個(gè)IDDR(input Double Data Rate)觸發(fā)器構(gòu)成。該觸發(fā)器既可以雙沿捕獲輸入數(shù)據(jù)也可以拆分成普通單沿觸發(fā)器。在HP BANK中,ILOGIC被稱為ILOGICE2,在HR BANK中,ILOGIC被稱為ILOGICE3。下圖給出了ILOGICE3的示意圖:
ILOGICE2與ILOGICE3的區(qū)別是:ILOGICE3包含了ZHOLD(Zero Hold) delay。
2.2 IDELAY
IDELAY被稱為信號延遲模塊,它的作用就是把信號延遲一段時(shí)間。對于一些需要對齊的輸入信號來說,這至關(guān)重要。在7系列FPGA中,它被稱為IDELAYE2。IDELAYE2可以將信號延遲0~31節(jié),在這區(qū)間任意可調(diào),并且在參考時(shí)鐘為200M時(shí),每節(jié)的延遲精度為78ps(1/(32×2×FREF),F(xiàn)REF為IDELAYCTRL的參考時(shí)鐘)。下圖為IDELAYE2例化框圖。
IDELAY后文詳細(xì)講解。
2.3 IDELAYCTRL
IDELAYCTRL其實(shí)是個(gè)輔助模塊,這么說吧,只要使用了IDELAY或者ODELAY,IDELAYCTRL必須被使用,要不然就無法正常工作。因?yàn)镮DELAY或者ODELAY的延遲精度是由IDELAYCTRL的輸入時(shí)鐘決定的,一般為200MHz。下圖為IDELAYCTRL例化框圖。
2.4 ODELAY
ODELAY和IDEALY的使用方式差不多,只不過ODELAY是用作輸出信號的延遲。另外,HR BANK內(nèi)沒有ODELAY,HP BANK才有,被稱為ODELAYE2。使用ODELAYE2時(shí)同樣需要例化IDELAYCTRL。下圖為ODELAYE2例化框圖:
2.5 OLOGIC
LOGIC包括2個(gè)部分:一個(gè)用于配置輸出路徑。另外一個(gè)用于配置三態(tài)控制路徑。輸出路徑和三態(tài)控制路徑都可以獨(dú)立配置成沿觸發(fā)器、ODDR以及組合邏輯輸出。
總的來說,I/O邏輯資源就是用來獲取或者輸出信號。對于一般的低速信號而言,I/O邏輯資源體現(xiàn)不出優(yōu)勢,用不用都不影響最終結(jié)果,但是對于高速信號而言,就必須使用I/O邏輯資源了,不能夠正確使用它,整個(gè)FPGA邏輯代碼完全無用。
三、IDELAYE2原語
使用IDELAYE2原語必須例化IDELAYCTRL原語
IDELAYCTRL IDELAYCTRL_inst (
.RDY(RDY), // 1-bit output: Ready output
.REFCLK(REFCLK), // 1-bit input: Reference clock input
.RST(RST) // 1-bit input: Active high reset input
);
再看IDELAYE2原語:
3.1IDELAYE2屬性
3.2IDELAYE2端口
3.2.1延遲控制
1. FIXED模式: 固定模式,延遲值為輸入的VALUE
2. VARIABLE模式:由C,LD,CE,INC 共同控制,如下圖所示:
3. VAR_LOAD模式:由C,LD,CE,INC,CNTVALUEIN共同控制
3.3時(shí)序圖
我們再看一個(gè)VARIABLE模式,加載延時(shí)的時(shí)序圖:
IDELAY屬性如下:
IDELAY_TYPE = VARIABLE,
IDELAY_VALUE = 0,
DELAY_SRC = IDATAIN
時(shí)刻t1:
在C的上升沿,檢測LD為高,加載IDELAY_VALUE,即輸出延時(shí)為tap0;
時(shí)刻t2:
在C的上升沿,檢測到CE &INC同時(shí)為高,由上文延時(shí)控制部分內(nèi)容可知,延時(shí)為當(dāng)前值+1,即輸出延時(shí)為tap1;
時(shí)刻t3:
LD,CE,INC均為0,增加延時(shí)操作完成,輸出延時(shí)保持tap1,直到下一次又檢測到LD,CE,INC。
???????3.4仿真測試
Testbench:例化一個(gè)idelayctrl,再例化一個(gè)idelaye2(VAR_LOAD模式):
IDELAYCTRL IDELAYCTRL_inst (
.RDY(rdy), // 1-bit output: Ready output
.REFCLK(ref_clk),// 1-bit input: Reference clock input
.RST(rst) // 1-bit input: Active high reset input
);
IDELAYE2 #(
.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
.DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
.HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
.IDELAY_TYPE("VAR_LOAD"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
.IDELAY_VALUE(0), // Input delay tap setting (0-31)
.PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE
.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz
.SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal
)
IDELAYE2_inst_frame_delay (
.CNTVALUEOUT(cnt_delay_tap),// 5-bit output: Counter value output
.DATAOUT(rx_frame_delay), // 1-bit output: Delayed data output
.C(ref_clk), // 1-bit input: Clock input
.CE(1'b0), // 1-bit input: Active high enable increment/decrement input
.CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input
.CNTVALUEIN(delay_value), // 5-bit input: Counter value input
.DATAIN(1'b0), // 1-bit input: Internal delay data input
.IDATAIN(rx_frame_buf), // 1-bit input: Data input from the I/O
.INC(1'b0), // 1-bit input: Increment / Decrement tap delay input
.LD(delay_load_en[12]), // 1-bit input: Load IDELAY_VALUE input
.LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input
.REGRST(1'b0) // 1-bit input: Active-high reset tap-delay input
);
可以發(fā)現(xiàn),只要過了idelay,就會(huì)增加0.6ns的延遲;
delay_value = 0;Tdelay=0.6ns;
仿真繼續(xù)往下走,當(dāng)tap=31時(shí),Tdelay=3.018ns=31x78(ps) +0.6ns;
測試驗(yàn)證正確。
四、高級selectIO邏輯資源
為了方便使用I/O邏輯資源,Xilinx公司專門將幾種模塊集中起來,構(gòu)成了功能強(qiáng)大的源語ISERDESE2和OSERDESE2:《UG471》翻譯(2)ISERDESE2原語介紹
審核編輯:符乾江
-
Xilinx
+關(guān)注
關(guān)注
71文章
2167瀏覽量
121298 -
邏輯
+關(guān)注
關(guān)注
2文章
833瀏覽量
29464
發(fā)布評論請先 登錄
相關(guān)推薦
評論