FC2カウンター FPGAの部屋 Spartan3Aのプログラマブル遅延素子2
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Spartan3Aのプログラマブル遅延素子2

”Spartan3Aのプログラマブル遅延素子1”でクロックにIBUF_DLY_ADJプリミティブを入れたらBUFGが入らなくなってしまった。とりあえず、BUFGを明示的に入れてみようと思う。下がソース。

`timescale 1ns / 1ps

module IOB_Delay_test(
    input clk,
    input reset,
    input testin,
    output testout
    );
    
    reg in_ff, in2_ff;
    wire ibuf_out, clk_bufg;

    IBUF_DLY_ADJ  #(
        .DELAY_OFFSET("OFF"),      //  Enable  Initial  Delay  Offset,  "OFF"  or  "ON"
        .IOSTANDARD("DEFAULT")    //  Specify  the  input  I/O  standard
    )IBUF_DLY_ADJ_inst  (
        .O(ibuf_out),      //  Buffer  output
        .I(clk),      //  Buffer  input  (connect  directly  to  top-level  port)
        .S(3'b000)        //  3-bit  buffer  delay  select  input
    );    
    
    BUFG BUFG_inst (
        .O(clk_bufg),
        .I(ibuf_out)
    );
    
    always @(posedge clk_bufg) begin
        if (reset) begin
            in_ff <= 1'b0;
            in2_ff <= 1'b0;
        end else begin
            in_ff <= testin;
            in2_ff <= in_ff;
        end
    end
    
    assign testout = in2_ff;
endmodule


これでインプリメントして、Timing Analyzerで見るとBUFGが入っているのがわかる。
Spa3A_IDEALY_6_090304.png

これでいろいろなIBUF_DELAY_VALUEの値を調べてみる。これは、clock pathのTiopidを比較することによって行う。

上のソースで、IBUF_DLY_ADJのS(3'b000)の値を変化させて、Timing Analyzer を見ているのだが遅延は変化がない。しかも、セットアップ時間で見たTiopidの値とclock to output時間でみたTiopidの値が違う。上のセットアップ時間のTiming AnalyzerではTiopidは1.495ns だが、下のclock to output時間では1.869nsとなっている。
Spa3A_IDEALY_7_090304.png

どうしてこうなるかわからないがFPGA Editorで見てみると、S()の値を変化してもIBUF_DELAYはDLY1のままで変化がないことがわかった。やはり動的遅延だからなのだろうか?Timing Analyzerで解析していないのだろうか?
そうかわかりました、セットアップ時間で見たTiopidの値はMinimum path、clock to output時間でみたTiopidの値はMaximum pathだった。より厳しい値を使っている。当然か。。。

それでは、”Spartan3Aのプログラマブル遅延素子1”の一番最初のソースに戻して、FPGA EditorでIOパッドのIBUF_DELAYのDLYを変更して、Timing Analyzerで見てみることにする。

下に結果を示す。
Spa3A_IDEALY_8_090304.png

DLY9のところでCoarse Delay が入るので、DLY8よりも遅延が減るようだ。DLYの量が増えるほど、MAXとMINの差が開く。大体300ps~550ps位の遅延タップのようだ。(FPGAはSpartan3Aのxc3s700a-4fg484)
  1. 2009年03月05日 06:38 |
  2. FPGAチップ内の配線方法
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1054-a2846cec
この記事にトラックバックする(FC2ブログユーザー)