JR2BMU logo

FPGAボード Cmod S7を導入してみた(4)

  前回は自己点検型テストベンチの構築をご紹介しました。今回は強力なツールであるIPコアの使い方をご紹介します。

1.IPコアとは

  IPはIntellectual propertyの略のことで、IPコアは機能単位で準備された回路情報でFPGAにプログラムすればその機能を実装できるようになっているものです。 IPが利用できるブロックは自分でコードを書く必要が無いので、効率的に開発することが出来ます。
  IPコアは無償、有償のものがあり、様々な提供元から提供されています。Vivadoにも無償で使えるIPコアが複数インストールされており、デジタル信号処理関連では、代表的な機能ブロックのIPコアが含まれています。

2.Clocking wizardを使ってみる

  Xilinx FPGAではクロック生成としてMMCM(mixed-mode clock manager)とPLL(phase-locked loop)が提供されています(図の引用元)。MMCMは初めて耳にする単語ですが、PLLに分数分周などの機能が加わったもののようです。
cmods7

  これらの機能を用いれば、一つのクロック入力から異なる周波数のクロックを生成できます。これらの設定はClocking wizardで行います。詳細はこちらをご覧ください。
  Clocking wizardを使用する手順は以下の通りです。
    ・Flow navigator --> IP Catalogをクリック(①)
    ・"clocking wizard"を検索(②)し、クリック(③)。ウィザードが表示されます(④)。

cmods7

  Cmod S7ボード上に12MHzの発振器が搭載されているので、入力は12MHzとして、出力120MHzのクロックを生成してみます。以下の写真の手順に従ってください。

cmods7

3.シミュレーション

  生成したモジュールのテンプレートが以下の場所に作成されています。
    \(プロジェクト名)\(プロジェクト名).gen\sources_1\ip\clk_wiz_0\clk_wiz_0.veo
こちらを開くと、SystemVerilogでのモジュール宣言のテンプレートが記載されています。
cmods7

このテンプレートを用いて、モジュール単体のシミュレーションを行ってみます。
    テストベンチ[clock_tb.sv]
プロジェクトにテストベンチを追加し、Run simulation --> run behavioral simulationでシミュレーションを開始してください。
出力が出るまでに数十us掛かります。shift+F2で10usずつ進めることができるので、出力(clk1)が出てくるまで進めてください。
  こちらがシミュレーション結果です。入力(OSC)12MHzに対し出力(clk1)120MHzのクロックが生成されています。
cmods7

4.動作確認

  動作確認には次のファイルをご利用ください。
    HDL file[clock.sv]
    Constraint file[Cmod-S7-25-Master.xdc]
ボード上の12MHz発振器をクロック入力に接続し、9番ピンから出力しています。
  (1)Synthesis、(2)Implementation、(3)Generate bitstream、(4)Programの順番で行います。プログラムが終わったら(帯域の広いオシロスコープ等を接続するか、トランシーバーを近付けてみて)120MHzが出力されていれば成功です。以下に出力スペクトラムを示します。
cmods7

  今回はIPコアの使い方をご紹介しました。次回はIPコアを活用してDDS発振回路を実装します。

©JR2BMU All rights reserved.

inserted by FC2 system