FC2カウンター FPGAの部屋 Spartan-6のお勉強4(DCM_CLKGENのインプリメント)

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

FPGAの部屋

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

Spartan-6のお勉強4(DCM_CLKGENのインプリメント)

今度は、DCM_CLKGENをインプリメントして確かめてみることにした。プリミティブだとインプリメントの仕方がわからないため、CORE GeneratorでDCM_CLKGENコアを生成することにした。

Core Generatorの起動の仕方は、”CORE Generatorで分散RAM(SLICEM)の同期FIFOを生成1”を参照のこと。
1. New Source WizardダイアログでClocking Wizard v1.4を選択する。
DCM_CLKGEN_0_100407.png

2. Clocking Wizardが出てくるので、最初のダイアログで、Clock Manager TypeのModeをManual Selectionに設定すると、下のPrimitiveが選択できる。DCM_CLKGENを選択する。DCM_CLKGENはジッタの低減ができるということなので、Jitter OptimizationをMinimize output jitter(low clock jitter filtering)をチェックしてみる。Input ClockのInput Freq(MHz)を50.00に設定した。
DCM_CLKGEN_1_100407.png

3. Clocking Wizardの2/6。Output Freq(MHz)を25.00に設定した。
DCM_CLKGEN_2_100407.png

4. Clocking Wizardの3/6。I/O and Feedback、デフォルトのままとする。
DCM_CLKGEN_3_100407.png

5. Clocking Wizardの4/6。DCM_CLKGEN Settings、デフォルトのままとする。
DCM_CLKGEN_4_100407.png

6. Clocking Wizardの5/6。Clk Summary、これもそのまま。
DCM_CLKGEN_5_100407.png

ここで、GenerateボタンでDCM_CLKGENを生成する。
Spartan-6のお勉強3(DCMのインプリメント)”のdcm_inst.v を下のように書き換えてDCM_CLKGENをインスタンスした。

// DCM module

`default_nettype none
`timescale 1ns / 1ps

module dcm_inst(clkin, reset, clkout, clkfx, clkdv, locked);
    input clkin;
    input reset;
    output clkout;
    output clkfx;
    output clkdv;
    output locked;
    
    wire clkin;
    wire reset;
    wire clkout;
    wire clkfx;
    wire clkdv;
    wire locked;
    
    wire clkout_node;
    
  DCM_CLKGEN_I DCM_CLKGEN_I_inst
   (// Clock in ports
    .CLK_IN1            (clkin),      // IN 
    .CLK_OUT1           (clkout_node),     // OUT
    .RESET              (reset),        // IN
    .LOCKED             (locked));      // OUT
    assign clkout = clkout_node;
    assign clkfx = clkout_node;
    assign clkdv = clkout_node;
endmodule


これで、ISE11.5でインプリメントして、FPGA Editorで見てみた。
DCM_CLKGEN_7_100408.png

DCM_SPとは違っている。フィードバック入力がないので、遅延はどうなっているのか?と思い、Timing Analyzerでクロックパスの遅延を見てみた。

  Maximum Clock Path at Slow Process Corner: clk to CharDispCtrler_inst/blue_node
    Location             Delay type         Delay(ns)  Physical Resource
                                                       Logical Resource(s)
    -------------------------------------------------  -------------------
    AB12.I               Tiopi                 0.904   clk
                                                       clk
                                                       dcm_inst_0/DCM_CLKGEN_I_inst/clkin1_buf
                                                       ProtoComp48.IMUX
    DCM_X0Y1.CLKIN       net (fanout=1)        2.930   dcm_inst_0/DCM_CLKGEN_I_inst/clkin1
    DCM_X0Y1.CLKFX       Tdmcko_CLKFX          0.350   dcm_inst_0/DCM_CLKGEN_I_inst/dcm_clkgen_inst
                                                       dcm_inst_0/DCM_CLKGEN_I_inst/dcm_clkgen_inst
    BUFGMUX_X2Y3.I0      net (fanout=1)        0.941   dcm_inst_0/DCM_CLKGEN_I_inst/clkfx
    BUFGMUX_X2Y3.O       Tgi0o                 0.209   dcm_inst_0/DCM_CLKGEN_I_inst/clkout1_buf
                                                       dcm_inst_0/DCM_CLKGEN_I_inst/clkout1_buf
    SLICE_X17Y14.CLK     net (fanout=55)       1.383   clkdv
    -------------------------------------------------  ---------------------------
    Total                                      6.717ns (1.463ns logic, 5.254ns route)
                                                       (21.8% logic, 78.2% route)


Spartan-6のお勉強3(DCMのインプリメント)”のDCM_SPと比べてみると一目瞭然だが、DCM_CLKGENは入力クロックの遅延分をキャンセルする機構がないようだ。

DCM_SP、DCM_CLKGEN、PLLの使い分けがよく分からないようだったら、Clocking Wizardに任せた方が良さそうだ。
  1. 2010年04月08日 05:55 |
  2. Virtex-6, Spartan-6
  3. | トラックバック:0
  4. | コメント:2

コメント

spartan6でのdcm

はじめまして。

ブログのほうを拝見させていただきました。

現在spartan6のpapilio duoというものを使ってDCMを使おうといろいろと試行錯誤しているのですが、信号すらでません。
ちなみに実行したいことは、dcmにて100MHzクロックを発生させる、ただこれだけです。
もしよろしければ、ご自信で以前に作成したbit,vhdlファイル等をいただけると幸いです。
よろしくお願いします。
  1. 2017/01/06(金) 15:02:21 |
  2. URL |
  3. アトム #-
  4. [ 編集 ]

>dcmにて100MHzクロックを発生させる
という文が気になります。
DCMは発振器ではなく、クロック変換器ですけど。。。
入力クロックは入れてますよね?
なお、私はpapilio duoは持っていないので、よくわかりません?
  1. 2017/01/06(金) 17:30:04 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/1429-3d1a9a4e
この記事にトラックバックする(FC2ブログユーザー)