日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

014 Xilinx 原语(千兆以太网相关)

發(fā)布時間:2023/12/29 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 014 Xilinx 原语(千兆以太网相关) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原語是 Xilinx 器件底層硬件中的功能模塊,它使用專用的資源來實現(xiàn)一系列的功能。相比于 IP 核,原語的調(diào)用方法更簡單,但是一般只用于實現(xiàn)一些簡單的功能。 本文主要講解BUFG、BUFIO、IDDR、ODDR、IDELAYE2和IDELAYCTRL。

一、BUFG

BUFG: 全局緩沖,BUFG的輸出到達(dá)FPGA內(nèi)部的IOB、CLB、塊RAM的時鐘延遲和抖動最小。BUFG原語模板如下:

1 BUFG BUFG_inst (
2 .O(O), // 1-bit output: Clock output
3 .I(I) // 1-bit input: Clock input
4 );

View Code

除了 BUFG 外,常用的還有 BUFR, BUFR 是 regional 時鐘網(wǎng)絡(luò),它的驅(qū)動范圍只能局限在一個 clock region的邏輯。BUFR相比BUFG的最大優(yōu)勢是偏斜和功耗都比較小。

二、BUFIO

BUFIO: BUFIO 是 IO 時鐘網(wǎng)絡(luò), 其獨立于全局時鐘資源,適合采集源同步數(shù)據(jù)。 它只能驅(qū)動 IO Block里面的邏輯,不能驅(qū)動CLB里面的LUT,REG等邏輯。BUFIO原語模板如下:

1 BUFIO BUFIO_inst (
2 .O(O), // 1-bit output: Clock output (connect to I/O clock loads).
3 .I(I) // 1-bit input: Clock input (connect to an IBUF or BUFMR).
4 );

View Code

BUFIO 在采集源同步 IO 數(shù)據(jù)時,提供非常小的延時,因此非常適合采集比如 RGMII 接收側(cè)的數(shù)據(jù),但是由于其不能驅(qū)動FPGA的內(nèi)部邏輯,因此需要BUFIO和BUFG配合使用,以達(dá)到最佳性能。如ETH_RXC的時鐘經(jīng)過BUFIO,用來采集端口數(shù)據(jù);ETH_RXC經(jīng)過BUFG,用來作為除端口采集外的其他模塊的操作時鐘。

三、IDDR

IDDR: 在7系列設(shè)備的ILOGIC block中有專屬的registers來實現(xiàn)input double-data-rate(IDDR) registers,將輸入的上下邊沿DDR信號,轉(zhuǎn)換成兩位單邊沿SDR信號。IDDR的原語結(jié)構(gòu)圖如下圖所示:

C:輸入的同步時鐘;
D:輸入的 1 位 DDR 數(shù)據(jù);
Q1 和 Q2:分別是“C”時鐘上升沿和下降沿同步輸出的 SDR 數(shù)據(jù)。
CE:時鐘使能信號;
S/R:置位/復(fù)位信號,這兩個信號不能同時拉高。
IDDR 原語模板如下:

 1 IDDR #(
 2     .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE", "SAME_EDGE"
 3                                                             // or "SAME_EDGE_PIPELINED"
 4     .INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
 5     .INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
 6     .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
 7 ) IDDR_inst (
 8     .Q1(Q1), // 1-bit output for positive edge of clock
 9     .Q2(Q2), // 1-bit output for negative edge of clock
10     .C(C), // 1-bit clock input
11     .CE(CE), // 1-bit clock enable input
12     .D(D), // 1-bit DDR data input
13     .R(R), // 1-bit reset
14     .S(S) // 1-bit set
15 );

View Code

DDR_CLK_EDGE 參數(shù)為 IDDR 的三種采集模式,分別為“OPPOSITE_EDGE”、“SAME_EDGE”和“SAME_EDGE_PIPELINED”模式。OPPOSITE_EDGE模式的時序圖如下圖所示:

OPPOSITE_EDGE 模式下, 在時鐘的上升沿輸出的 Q1, 時鐘的下降沿輸出 Q2。
SAME_EDGE 模式的時序圖如下圖所示:

圖27.1.17 IDDR“SAME_EDGE”模式時序圖

SAME_EDGE 模式下,在時鐘的上升沿輸出 Q1 和 Q2,但 Q1 和 Q2 不在同一個 cycle 輸出。
SAME_EDGE_PIPELINED 模式的時序圖如下圖所示:

SAME_EDGE_PIPELINED 模式下,在時鐘的上升沿輸出 Q1 和 Q2, Q1 和 Q2 雖然在同一個 cycle 輸出,但整體延時了一個時鐘周期。在使用IDDR時,一般采用此種模式。

四、ODDR

ODDR: 通過 ODDR 把兩路單端的數(shù)據(jù)合并到一路上輸出,上下沿同時輸出數(shù)據(jù),上升沿輸出 a 路,下降沿輸出b路;如果兩路輸入信號一路固定為1, 另外一路固定為0,那么輸出的信號實際上是時鐘信號。
ODDR 的原語結(jié)構(gòu)圖如下圖所示:

C:輸入的同步時鐘;
Q:輸出的 1 位 DDR 數(shù)據(jù);
D1 和 D2:分別是“C”時鐘上升沿和下降沿同步輸入的 SDR 數(shù)據(jù)。
CE:時鐘使能信號;
S/R:置位/復(fù)位信號,這兩個信號不能同時拉高。
ODDR 原語模板如下:

 1 ODDR #(
 2     .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
 3     .INIT(1'b0), // Initial value of Q: 1'b0 or 1'b1
 4     .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
 5 ) ODDR_inst (
 6     .Q(Q), // 1-bit DDR output
 7     .C(C), // 1-bit clock input
 8     .CE(CE), // 1-bit clock enable input
 9     .D1(D1), // 1-bit data input (positive edge)
10     .D2(D2), // 1-bit data input (negative edge)
11     .R(R), // 1-bit reset
12     .S(S) // 1-bit set
13 );

View Code

DDR_CLK_EDGE 參數(shù)為 ODDR 的兩種輸出模式,分別為“OPPOSITE_EDGE”和“SAME_EDGE”模式。
OPPOSITE_EDGE 模式的時序圖如下圖所示:

此種模式下, 在 FPGA 內(nèi)部需要兩個反相時鐘來同步 D1 和 D2, 此種模式使用較少。
SAME_EDGE 模式的時序圖如下圖所示:

此種模式下,數(shù)據(jù)可以在相同的時鐘邊沿輸出到 Q,一般采用此種模式。

五、IDELAYE2

IDELAYE2: IO 延時原語,用于在信號通過引腳進(jìn)入芯片內(nèi)部之前,進(jìn)行延時調(diào)節(jié),一般高速端口信號由于走線延時等原因,需要通過IDELAYE2原語對數(shù)據(jù)做微調(diào)。IDELAYE2原語模板如下:

 1 IDELAYE2 #(
 2     .CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
 3     .DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
 4     .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
 5     .IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
 6     .IDELAY_VALUE(0), // Input delay tap setting (0-31)
 7     .PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE
 8     .REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz
 9     .SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal
10 )
11 IDELAYE2_inst (
12     .CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output
13     .DATAOUT(DATAOUT), // 1-bit output: Delayed data output
14     .C(C), // 1-bit input: Clock input
15     .CE(CE), // 1-bit input: Active high enable increment/decrement input
16     .CINVCTRL(CINVCTRL), // 1-bit input: Dynamic clock inversion input
17     .CNTVALUEIN(CNTVALUEIN), // 5-bit input: Counter value input
18     .DATAIN(DATAIN), // 1-bit input: Internal delay data input
19     .IDATAIN(IDATAIN), // 1-bit input: Data input from the I/O
20     .INC(INC), // 1-bit input: Increment / Decrement tap delay input
21     .LD(LD), // 1-bit input: Load IDELAY_VALUE input
22     .LDPIPEEN(LDPIPEEN), // 1-bit input: Enable PIPELINE register to load data input
23     .REGRST(REGRST) // 1-bit input: Active-high reset tap-delay input
24 );

View Code

IDATAIN 為延時前的輸入信號, DATAOUT 為延時后的輸出信號。
REFCLK_FREQUENCY 參數(shù)為 IDELAYCTRL 原語的參考時鐘頻率,一般為 200Mhz;IDELAY_VALUE參數(shù)用來設(shè)置延時的tap數(shù),范圍為1~31,每個tap數(shù)的延時時間和參考時鐘頻率有關(guān)。

和 IDELAYE2 對應(yīng)的還有 ODELAYE2,由于 A7 系列沒有 ODELAYE2 原語, 故此處不做討論。

六、IDELAYCTRL

IDELAYCTRL: IDELAYCTRL 和 IDELAYE2 一般同時使用, IDELAYCTRL 對 IDELAYE2 延時進(jìn)行校準(zhǔn)。

IDELAYCTRL原語如下:

1 (* IODELAY_GROUP = <iodelay_group_name> *)
2 IDELAYCTRL IDELAYCTRL_inst (
3     .RDY(RDY), // 1-bit output: Ready output
4     .REFCLK(REFCLK), // 1-bit input: Reference clock input
5     .RST(RST) // 1-bit input: Active high reset input
6 );

View Code

IODELAY_GROUP 為延時 IO 分組,一般數(shù)據(jù)接口位于多個 BANK 時,才需要分組。
IDELAYCTRL 通過參考時鐘 REFCLK 來校準(zhǔn) IDELAY2 每個 tap 的延時值,可用的 REFCLK 頻率為190Mhz~210Mhz或者290Mhz~310Mhz。時鐘頻率越高對應(yīng)的tap延時平均值越小,即延時調(diào)節(jié)精度越高。
當(dāng)參考時鐘為 200Mhz 時,一個 tap 為 78ps。

七、參考資料

1、1_領(lǐng)航者ZYNQ之FPGA開發(fā)指南_V1.3,以太網(wǎng) ARP 測試實驗




總結(jié)

以上是生活随笔為你收集整理的014 Xilinx 原语(千兆以太网相关)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。