1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. 【回路設計ヒント】トランシーバのリファレンスクロックをユーザークロックとして使用する方法

TECHブログ

【回路設計ヒント】トランシーバのリファレンスクロックをユーザークロックとして使用する方法

【回路設計ヒント】トランシーバのリファレンスクロックをユーザークロックとして使用する方法

みなさん、こんにちは。
今回はトランシーバのクロック入力端子(MGTREFCLK)に接続されているクロックを、ユーザークロックとして使用する方法を説明します。
本ブログはAMD ザイリンクス社のUltraScale™ アーキテクチャ をベースに執筆しています。

それでは、始めましょう。

目次

ユーザークロックへの分離方法


ユーザークロックへの分離方法

図1. ユーザークロックへの分離方法

Verilogでの記述方法

以下にVerilogでのサンプルコードを記載します。

module REFCLK_USER (
input wire RSTP , // Act-H Reset
input wire MGTREFCLK_P , // MGTREFCLK P
input wire MGTREFCLK_N , // MGTREFCLK N
output wire REFCLK , // Clock for GT
output wire REFCLK_USER // Clock for User
);

wire gtrefclk_user;

IBUFDS_GTE3 #(
.REFCLK_HROW_CK_SEL(2'b00)
) IBUFDS_GTE3 (
.I ( MGTREFCLK_P ),
.IB ( MGTREFCLK_N ),
.CEB ( 1'b0 ),
.O ( REFCLK ),
.ODIV2 ( gtrefclk_user )
);

BUFG_GT BUFG_GT (
.O ( REFCLK_USER ), // 1-bit output: Buffer
.CE (~RSTP ), // 1-bit input: Buffer enable
.CEMASK ( 1'b0 ), // 1-bit input: CE Mask
.CLR ( RSTP ), // 1-bit input: Asynchronous clear
.CLRMASK ( 1'b0 ), // 1-bit input: CLR Mask
.DIV ( 3'b000 ), // 3-bit input: Dynamic divide Value
.I ( gtrefclk_user ) // 1-bit input: Buffer
);

endmodule

パラメータ設定

サンプルコード内の以下のパラメータにより、ユーザークロックを分周して出力することが可能です。

IBUFDS_GTE3

  • REFCLK_HROW_CK_SEL[1:0]

  2’b00 : ODIV2を出力

  2’b01 : ODIV2を2分周したクロックで出力

  2’b10 : ODIV2を0固定

  2’b11 : 予約

BUFG_GT

  • DIV[2:0]

  設定した値でO(出力)の分周率を決定

  DIVの値+1で分周される

  3’b000 : ÷1

  3’b001 : ÷2

  3’b010 : ÷3

 ︙

  3’b110 : ÷7

  3’b111 : ÷8


おわりに

いかがでしたでしょうか。

トランシーバのリファレンスクロックをユーザークロックとして使用する方法をご理解いただけますと幸いです。

最後までご覧いただきありがとうございました。


お問い合わせはこちら

このブログのシリーズ