0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Xilinx高質量時鐘輸出ODDR原語的概述及使用方法

冬至子 ? 來源:FPGA探索者 ? 作者:FPGA探索者 ? 2023-06-27 10:21 ? 次閱讀

一、ODDR概述及使用方法

ODDR(Output Double Data Rate,輸出雙倍數(shù)據(jù)速率):

在DDR接口中,ODDR用于發(fā)送時鐘和數(shù)據(jù);

SDR接口中,ODDR轉發(fā)時鐘(仍在時鐘樹內(nèi)),輸出端要直連到輸出port,不可加邏輯,連接方式:輸出時鐘連接ODDR的C引腳,D1固定值1'b1, D2固定值1'b0,CE固定值1’b1,ODDR的輸出Q連接到OBUF;

圖片

時鐘輸入有限制,需要從SRCC或者MRCC專用時鐘輸入引腳輸入,時鐘輸出可以在任何引腳上輸出。當輸出時鐘時,即使使用的是時鐘專用輸入管腳去輸出時鐘,也等同于使用普通的GPIO管腳輸出時鐘。

輸出時鐘的最佳方法是使用ODDR來轉發(fā)時鐘 (假設輸出的時鐘是一個專用時鐘網(wǎng)絡上的時鐘)。每個IOB(IO Bank)都具有ODDR功能。

這樣做時,內(nèi)部時鐘一直停留在專用的時鐘網(wǎng)絡上,直到ODDR,永遠不需要進入一般的路由結構。不建議直接將時鐘帶到OBUF,因為這需要內(nèi)部時鐘離開專用時鐘網(wǎng)絡,通過一般的fabric路由線路路由到OBUF。

對Spartan6里面,必須用ODDR寄存器輸出。

二、時鐘配置

加入ODDR代碼,D1接高電平,D2接低電平,C接時鐘,Q輸出。

wire user_clk;
IBUFDS IBUFDS_inst_user_clk(
    .O(user_clk), // Buffer output
    .I(USRCLK_P_I), // Diff_p buffer input
    .IB(USRCLK_N_I) // Diff_n buffer input
);   

wire user_clk_bufg;
BUFG BUFG_inst_user_clk (
      .O(user_clk_bufg), // 1-bit output: Clock output
      .I(user_clk)
);

wire user_clk_bufg_oddr;
ODDR #(
      .DDR_CLK_EDGE("OPPOSITE_EDGE"), //"OPPOSITE_EDGE" or "SAME_EDGE"
      .INIT(1'b0),    // Initial value of Q: 1'b0 or 1'b1
      .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
 ) ODDR_out_clock_inst_user_clock (
     .Q(user_clk_bufg_oddr),   // 1-bit DDR output
     .C(user_clk_bufg),   // 1-bit clock input
     .CE(1'b1), // 1-bit clock enable input
     .D1(1'b1), // 1-bit data input (positive edge)
     .D2(1'b0), // 1-bit data input (negative edge)
     .R(),   // 1-bit reset
     .S()    // 1-bit set
);

 OBUFDS OBUFDS_inst_user_clock (
    .O (USER_SMA_CLOCK_P_O
    .OB(USER_SMA_CLOCK_N_O),     // Diff_n output
    .I (user_clk_bufg_oddr)      // Buffer input
 )

不加ODDR,布局布線后RTL圖如下:

圖片

加ODDR,布局布線后RTL圖如下:

圖片

布局布線的資源中,下圖左側顯示沒有加ODDR的,右側是加入了ODDR,可見右側輸出時鐘經(jīng)BUFG后先到輸出引腳附近的ODDR(藍線和紫線交匯處),經(jīng)ODDR轉發(fā)后到PAD管腳輸出。

圖片

三、性能對比

按照Xilinx和網(wǎng)上的一些說法,加入ODDR后輸出時鐘的質量會更好。

圖片

輸出DDR可以轉發(fā)一個時鐘副本到輸出。這對于傳播具有相同延遲的時鐘和DDR數(shù)據(jù)、以及生成多個時鐘(其中每個時鐘負載都有惟一的時鐘驅動)非常有用。這是通過將ODDR的D1輸入高電平并且D2輸入低電平來實現(xiàn)的。Xilinx建議使用這種方案將時鐘從FPGA邏輯轉發(fā)到輸出引腳。

如下圖所示是加入ODDR前后的時序裕量和資源消耗對比,可以看到,對 WNS (Worst Negative Slack,最差負時序裕量)和 WHS (Worst Hold Slack,最差保持時序裕量)、資源使用在加入前后沒有明顯的區(qū)別。實測加入ODDR前后誤碼率基本一致,眼圖掃描結果也一致。

圖片

按照Xilinx的推薦,在輸出時鐘時最好還是把ODDR加上 。這個測試用例沒有體現(xiàn)出ODDR的優(yōu)勢,也許在資源使用較多、時鐘頻率更高時才能體現(xiàn)。另外,這里只是輸出了時鐘,沒有輸出使用該時鐘的數(shù)據(jù)。

很多人說時鐘直接從BUFG輸出到管腳會報錯,必須加約束或者ODDR,目前我在ZYNQ7045上沒有發(fā)現(xiàn)此問題。

ODDR****的使用場景還在于 OSERDES、 FPGA 的源同步的系統(tǒng)設計 ,用 ODDR使得隨路時鐘和數(shù)據(jù)在輸出時是嚴格同步的,保證嚴格的相位對齊關系 。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SDR
    SDR
    +關注

    關注

    7

    文章

    232

    瀏覽量

    50320
  • RTL
    RTL
    +關注

    關注

    1

    文章

    384

    瀏覽量

    59534
  • GPIO
    +關注

    關注

    16

    文章

    1177

    瀏覽量

    51555
  • 時鐘驅動器
    +關注

    關注

    0

    文章

    32

    瀏覽量

    13791
收藏 人收藏

    評論

    相關推薦

    protel輸出高質量gerber

    圖文并茂一步一步手把手教你輸出高質量的gerber傻瓜式教學。。。。[hide] [/hide]
    發(fā)表于 12-12 15:43

    高質量C++、C編程指南

    高質量C++、C編程指南
    發(fā)表于 08-06 11:58

    高質量C&C++

    高質量C&C++
    發(fā)表于 08-16 19:45

    高質量C語言編程

    高質量c語言,精,精,精,精華
    發(fā)表于 07-22 13:48

    編寫高質量C語言代碼

    編寫高質量C語言代碼 編寫高質量C語言代碼 編寫高質量C語言代碼
    發(fā)表于 07-31 17:47

    高質量編程

    干貨,《495個C語言問題》、《華為內(nèi)部程序設計編碼規(guī)范》、《C語言:陷阱和缺陷》、《高質量C編程[林銳]》
    發(fā)表于 02-27 19:39

    使用ODDR原語的重要性是什么?

    你好我將virtex5 LX50與具有應根據(jù)standardEIA / TIA-644 LVDS規(guī)范終止的輸出數(shù)據(jù)的設備連接起來我在用著IBUFDS用于將輸入LVDS轉換為LVTTL,OBUFDS用于輸出信號和時鐘這是這樣做的正
    發(fā)表于 06-17 14:59

    Xilinx原語使用方法

    Xilinx原語使用方法
    發(fā)表于 02-22 06:55

    請問怎么才能設計出高質量的印制線路板?

    怎么才能設計出高質量的印制線路板?
    發(fā)表于 04-23 06:57

    xilinx原語使用方法

    xilinx原語的使用,建議有一定經(jīng)驗的參考。
    發(fā)表于 12-17 11:58 ?13次下載

    xilinx 原語使用方法

    xilinx 原語使用方法
    發(fā)表于 10-17 08:57 ?11次下載
    <b class='flag-5'>xilinx</b> <b class='flag-5'>原語</b><b class='flag-5'>使用方法</b>

    xilinx原語使用方法

    xilinx原語使用方法
    發(fā)表于 10-19 08:50 ?15次下載
    <b class='flag-5'>xilinx</b><b class='flag-5'>原語</b><b class='flag-5'>使用方法</b>

    Xilinx原語使用方法有哪些

    Xilinx公司的原語按照功能分為10類,包括:計算組件、I/O端口組件、寄存器和鎖存器、時鐘組件、處理器組件、移位寄存器、配置和檢測組件、RAM/ROM組件、Slice/CLB組件以及G比特收發(fā)器組件。下面分別對其進行詳細介紹
    的頭像 發(fā)表于 02-08 14:01 ?1311次閱讀
    <b class='flag-5'>Xilinx</b><b class='flag-5'>原語</b><b class='flag-5'>使用方法</b>有哪些

    Xilinx原語使用方法

    Xilinx公司的原語按照功能分為10類,包括:計算組件、I/O端口組件、寄存器和鎖存器、時鐘組件、處理器組件、移位寄存器、配置和檢測組件、RAM/ROM組件、Slice/CLB組件以及G比特收發(fā)器組件。下面分別對其進行詳細介紹
    發(fā)表于 03-24 06:14 ?3次下載
    <b class='flag-5'>Xilinx</b><b class='flag-5'>原語</b><b class='flag-5'>使用方法</b>

    Xilinx高質量時鐘輸出ODDR原語

    在SDR接口中,ODDR轉發(fā)時鐘(仍在時鐘樹內(nèi)),輸出端要直連到輸出port,不可加邏輯,連接方式:輸出
    的頭像 發(fā)表于 06-21 14:11 ?1321次閱讀
    <b class='flag-5'>Xilinx</b>的<b class='flag-5'>高質量</b><b class='flag-5'>時鐘</b><b class='flag-5'>輸出</b><b class='flag-5'>ODDR</b><b class='flag-5'>原語</b>