精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

xilinx FPGA中oddr,idelay的用法詳解

電子設計 ? 來源:CSDN ? 作者:同年紀_ ? 2020-11-25 14:35 ? 次閱讀

我們知道xilinx FPGA的selectio中有ilogic和ologic資源,可以實現iddr/oddr,idelay和odelay等功能。剛入門時可能對xilinx的原語不太熟練,在vivado的tools-> language templates中搜索iddr idelay等關鍵詞,可以看到A7等器件下原語模板。復制出來照葫蘆畫瓢,再仿真一下基本就能學會怎么用了。

1. oddr

oddr和iddr都一樣,以oddr為例,先去templates里把模板復制出來。


Add simulation source,建立一個簡單的仿真文件。

module simu_oddr(
 
    );
        
    reg clk = 1'd0;
    always
    forever #2 clk = ~ clk;
       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_inst (
       .Q(Q),   // 1-bit DDR output
       .C(clk),   // 1-bit clock input
       .CE(1'd1), // 1-bit clock enable input
       .D1(1'd1), // 1-bit data input (positive edge)
       .D2(1'd0), // 1-bit data input (negative edge)
       .R(1'd0),   // 1-bit reset
       .S(1'd0)    // 1-bit set
    );
    
endmodule

ODDR的使用方法在selectoi中的參考手冊ug471中127頁開始有說明,使用這些資源首先要參考的都是官方的資源手冊。


簡單說明:

CE是使能,C是時鐘,在時鐘的上升沿下降沿分別輸出D1和D2,Q是輸出,S/R是復位,R = 1 Q輸出0,S= 1,Q輸出1,默認情況應該兩個都等于0 ,兩個都等于1時,輸出0。"OPPOSITE_EDGE" or "SAME_EDGE" 手冊中也有說明,指明采樣時刻不同,具體有什么應用上區別我也不知道。


通過仿真,就可以看到輸出是什么情況,在上升沿輸出1,下降沿輸出0,還可以看到輸出有一點滯后。iddr和oddr在rgmii的接口中就可以方便地接收數據,轉為gmii。一般情況要注意下時鐘和數據的對齊問題,采樣時鐘可以相位往后一點,90° 1//4周期,輸出的時候時鐘也相應地滯后一點,就根據實際情況來,125M的DDR還是很容易采樣穩定的。


2.idelay

在ug471告訴我們,只有hp bank才有odelay,在ug475中說明哪些系列有hp bank,簡單說hp bank速度快很多,支持odelay,電壓只能1.2V- 1.8V。其中A7全系是沒有odelay的,K7才有(保留意見,簡單看了一下),所以在language templates中搜索odelay是沒有A系列的原語的。



idelay作用就是實現輸入延遲,實際中應該有更明確的用法,這里只是我自己學習時的一些介紹。同樣在ug471中對idelay也有介紹,有固定延時,可變延時,使用時都要例化idelay ctrl,延時的精度就可idelay ctrl的接入時鐘有關。一個bank 只有1個idelay ctrl,同一個bank 要用idelay或者odelay,延時精度是一樣的,雖然可以idelay ctrl可以接200Mhz,300Mhz,但同一個bank只能接1個,也只需要例化一次。多個bank要用idelay時,就要例化多次。

`timescale 1ns / 1ps
 
module s(
 
    );
    
    reg clk = 1'd0;
    always
    forever #2.5 clk = ~ clk;
    
    
     (* IODELAY_GROUP = "idelay" *)
       IDELAYCTRL IDELAYCTRL_inst (
       .RDY(),       // 1-bit output: Ready output
       .REFCLK(clk), // 1-bit input: Reference clock input
       .RST(1'd0)        // 1-bit input: Active high reset input
    );
 
    
    reg clk2 = 1'd0;
    always @(posedge clk)
        clk2 <= ~clk2;
    
    
    wire DATAOUT;
    
       (* IODELAY_GROUP = "idelay" *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL
    
       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("FIXED"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
          .IDELAY_VALUE(31),                // Input delay tap setting (0-31)
          .PIPE_SEL("FALSE"),              // Select pipelined mode, FALSE, TRUE
          .REFCLK_FREQUENCY(200.0),        // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
          .SIGNAL_PATTERN("DATA")          // DATA, CLOCK input signal
       )
       IDELAYE2_inst (
          .CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output
          .DATAOUT(DATAOUT),         // 1-bit output: Delayed data output
          .C(1'd1),                     // 1-bit input: Clock input
          .CE(1'd0),                   // 1-bit input: Active high enable increment/decrement input
          .CINVCTRL(1'd0),       // 1-bit input: Dynamic clock inversion input
          .CNTVALUEIN(1'd0),   // 5-bit input: Counter value input
          .DATAIN(1'd0),           // 1-bit input: Internal delay data input
          .IDATAIN(clk2),         // 1-bit input: Data input from the I/O
          .INC(1'd0),                 // 1-bit input: Increment / Decrement tap delay input
          .LD(1'd0),                   // 1-bit input: Load IDELAY_VALUE input
          .LDPIPEEN(1'd0),       // 1-bit input: Enable PIPELINE register to load data input
          .REGRST(1'd0)            // 1-bit input: Active-high reset tap-delay input
       );
 
endmodule

這里例化了一個idelay ctrl,是屬于idelay group的,這個聲明還沒有研究過有什么用,不知道是不是指定idelay2和哪個ctrl是綁定的。idelay ctrl端口很簡單,仿真時復位rst接0就好了,實際中推薦接輸入時鐘的pll lock引腳取反,保證在時鐘鎖定前(lock = 0)idelay ctrl處于復位狀態。

idelay2中按推薦配置,從DATAIN還是從IDATAIN輸入區別為是內部延時還是從IO輸入,FIXED固定延時,idelay value先輸入0,,時鐘是200M,其他全部接0。此處,idelay的作用就是把IDATAIN的信號接入ilogic中,延時0個tap再從DATAOUT輸出。可變延時的使用說明ug471上都有,還沒學習,有需要了再去看。

idelay 有0-31個tap,分割200M的半個周期2.5ns,每個tap就是2.5ns/32 = 0.078125 ns

value = 0 可以看到輸出延遲了0.6ns,value = 10時,延時了1.38ns。 0.078125 * 10 + 0.6 = 1.38125,大體相近的。



其實oddr,idelay這些資源應該用起來都比較簡單,可能我實際中就用了一下oddr/iddr,也沒有覺得有多少難以調試的地方,本文簡單介紹了這2個原語的使用方法,從復制原語,看手冊介紹到仿真,其他原語也是類似的,學會如何去學習最重要。

文末再介紹一下generate,一樣的在tools -> language templates中搜索。

   genvar ;
   generate
      for (=0;  <; =+1)
      begin: 

用這個可以很方便地例化出多個相似的模塊。

       genvar i; //genvar i;也可以定義到generate語句里面
       generate
              for(i=0;i<10;i=i+1)
              begin:mymodule
                     assign a[i]=reg[i];
              end
       endgenerate
編輯:hfy

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

    關注

    1626

    文章

    21671

    瀏覽量

    601886
  • Xilinx
    +關注

    關注

    71

    文章

    2164

    瀏覽量

    121013
  • Vivado
    +關注

    關注

    19

    文章

    808

    瀏覽量

    66331
收藏 人收藏

    評論

    相關推薦

    采用Xilinx FPGA的AFE79xx SPI啟動指南

    電子發燒友網站提供《采用Xilinx FPGA的AFE79xx SPI啟動指南.pdf》資料免費下載
    發表于 11-15 15:28 ?0次下載
    采用<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的AFE79xx SPI啟動指南

    Xilinx 7系列FPGA PCIe Gen3的應用接口及特性

    Xilinx7系列FPGA集成了新一代PCI Express集成塊,支持8.0Gb/s數據速率的PCI Express 3.0。本文介紹了7系列FPGA PCIe Gen3的應用接口及一些特性。
    的頭像 發表于 11-05 15:45 ?406次閱讀
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b> PCIe Gen3的應用接口及特性

    詳解FPGA的基本結構

    ZYNQ PL 部分等價于 Xilinx 7 系列 FPGA,因此我們將首先介紹 FPGA 的架構。簡化的 FPGA 基本結構由 6 部分組成,分別為可編程輸入/輸出單元、基本可編程邏
    的頭像 發表于 10-25 16:50 ?715次閱讀
    <b class='flag-5'>詳解</b><b class='flag-5'>FPGA</b>的基本結構

    FPGA | Xilinx ISE14.7 LVDS應用

    今天給大俠帶來 Xilinx ISE14.7 LVDS應用,話不多說,上貨。 最近項目需要用到差分信號傳輸,于是看了一下FPGA上差分信號的使用。Xilinx FPGA
    發表于 06-13 16:28

    xilinx的carry4原語在高云FPGA中用什么原語替代?

    xilinx的carry4原語在高云FPGA中用什么原語替代
    發表于 05-09 16:13

    Xilinx FPGA編程技巧之常用時序約束詳解

    今天給大俠帶來Xilinx FPGA編程技巧之常用時序約束詳解,話不多說,上貨。 基本的約束方法 為了保證成功的設計,所有路徑的時序要求必須能夠讓執行工具獲取。最普遍的三種路徑以及異常路徑為
    發表于 05-06 15:51

    Xilinx 7系列FPGA功能特性介紹

    Xilinx7系列FPGA由四個FPGA系列組成,可滿足一系列系統需求,從低成本、小尺寸、成本敏感的大容量應用到最苛刻的高性能應用的超高端連接帶寬、邏輯容量和信號處理能力。
    發表于 04-22 10:49 ?5036次閱讀
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>功能特性介紹

    Xilinx FPGA編程技巧之常用時序約束詳解

    今天給大俠帶來Xilinx FPGA編程技巧之常用時序約束詳解,話不多說,上貨。 基本的約束方法為了保證成功的設計,所有路徑的時序要求必須能夠讓執行工具獲取。最普遍的三種路徑以及異常路徑為
    發表于 04-12 17:39

    Xilinx fpga芯片系列有哪些

    Xilinx FPGA芯片擁有多個系列和型號,以滿足不同應用領域的需求。以下是一些主要的Xilinx FPGA芯片系列及其特點。
    的頭像 發表于 03-14 16:24 ?3076次閱讀

    AMD Xilinx 7系列FPGA的Multiboot多bit配置

    Multiboot是一種在AMD Xilinx 7系列FPGA上實現雙鏡像(或多鏡像)切換的方案。它允許在FPGA中加載兩個不同的配置鏡像,并在需要時切換。
    的頭像 發表于 02-25 10:54 ?1192次閱讀
    AMD <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>的Multiboot多bit配置

    pythonopen函數的用法詳解

    pythonopen函數的用法詳解 Python的open()函數用于打開文件。它接受文件名和模式作為參數,并返回一個文件對象。文件對象可用于讀取、寫入和管理文件。 open()函
    的頭像 發表于 01-30 15:31 ?1952次閱讀

    FPGA時鐘的用法

    生成時鐘包括自動生成時鐘(又稱為自動衍生時鐘)和用戶生成時鐘。自動生成時鐘通常由PLL或MMCM生成,也可以由具有分頻功能的時鐘緩沖器生成如7系列FPGA的BUFR、UltraScale系列
    的頭像 發表于 01-11 09:50 ?1675次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>中</b>時鐘的<b class='flag-5'>用法</b>

    FPGA設計高級技巧 Xilinx

    FPGA設計高級技巧 Xilinx
    發表于 01-08 22:15

    split在python用法

    split在python用法 split()是Python中一個非常常用的字符串函數,它能夠根據指定的分隔符將一個字符串分割成多個子字符串,并返回一個包含這些子字符串的列表。本文將詳細介紹
    的頭像 發表于 12-25 15:12 ?1969次閱讀

    簡述Xilinx 7系列FPGA芯片相關知識

    Xilinx 7系列 芯片 應用非常廣泛,具有成本低、性能強悍、成熟穩定的特點,目前Xilinx( AMD )已延長該系列芯片的生命周期至少到2035年。 本文主要介紹Xilinx 7系列 F
    的頭像 發表于 11-28 10:20 ?1081次閱讀
    簡述<b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>芯片相關知識