FPGA内蔵のPLLをQuartusでシミュレーションしてみる

FPGA

関連記事 FPGAの記事一覧

スポンサーリンク

前回のおさらい

以前、シンプルに2入力1出力のAND回路を使って、Quartusでシミュレーションを実行してみました。

今回は、今回はFPGAに内蔵されているPLL(Phase Lock Loop)のシミュレーションをQuartusでやってみたいと思います。

FPGA内蔵のPLL

FPGAに内蔵されているPLLを使うと、元の周波数とは異なる周波数を簡単に生成することができます。

Cyclone IV EファミリーのEP4CE22には4チャンネルのPLLが内蔵されているようです。

今回は、PLLを1つ使って50MHzのクロックから40MHzを生成してみたいと思います。

50MHzから40MHzなので周波数を低くしていますが、50MHzから100MHzとか200MHzの高い周波数を生成することもできます。

FPGAの”speed grade”にもよりますが、Cyclone IVのデータシートによると、PLLの最大出力周波数は472.5MHzのようです。

PLLの設定

まずは、回路図上にPLLを配置してみます。

下の画像のように、”IP Catalog”の下に”pll”と入力します。

すると、”ALTPLL”と表示されるので、それを選択します。

作成するPLLに名前を付けて、保存先を指定します。ここでは”PLLtest”と名付けました。

今回は回路図設計で、言語設計(HDL)は使っていないので、”VHDL”と”Verilog”はどちらを選択しても大丈夫です。

次はPLLの設定画面が表示されます。

まず最初の画面では使っているFPGAの”speed grade”と元のクロック周波数の設定を行います。

ここでは”EP4CE22F17C6″という型式のFPGAを設定しており、一番最後の”6″がspeed gradeを示しています。

ですので、”Which device grade will you be using?”の設定は、”6″となります。

また入力クロックの周波数は50MHzとしているので、50MHzを設定しました。

次はPLLの入出力ピンの追加です。

ここではCreate “locked” outputだけチェックをしました。この信号は、PLLがロック状態の時にHighレベルを出力してくれます。

次の画面は変更せずに、そのまま進みます。

次も変更せずに、そのまま進みます。

次もそのままです。

次は重要な設定で、PLLの出力周波数の設定です。

今回は出力周波数を40MHzにすることを目標にしているので、40MHzに設定します。

“clk c1″から”clk c4″は未使用なので、何も変更しません。”clk c0″だけ設定してあげます。

次の画面は変更せずに、そのまま進みます。

次のsummaryですが、”PLLtest.cmp”と”PLLtest.bsf”だけをチェックしておきます。

“PLLtest.bsf”は、symbol fileとなっているので、おそらく、回路図入力する場合のシンボルを生成するためのものです。なので、回路図は使わず、言語設計する方は不要かもしれません。

“Finish”を押すと、作成したPLLをプロジェクトに追加するかを聞かれるのでYesをクリックします。

以上で、PLLの設定は終了です。

PLLを回路図に配置

次は、作成したPLLを回路図に配置します。

まずは、”Symbol tool”のアイコンをクリックします。

以下の画面が表示されるので、作成したPLLの名前(ここでは”PLLtest”)を入力します。

回路図上の配置したい場所でクリックし、作成したPLLを配置します。

次は、入出力ピンを配置し、作成したPLLと接続します。

今回は50MHzの入力ピンと、40MHzの出力ピン、それと”lock”信号の出力ピンが必要なので、合計3本のピンが必要です。

入出力ピンの配置と接続方法の詳細はQuartus入門を参照してください。

入出力ピンの配置と接続が終わったら、入出力ピンに名前を付けます。

ピンへの名前付けは、入出力ピンにカーソルをあわせて右クリックし、Propertiesを選択します。

“Pin name(s)”の項目で名前を入力します。

ここでは、入力ピンには”CLK_50MHz”、出力ピンには”CLK_Out_40MHz”と”PLL_Lock”と名前を付けました。

ピンに名前を付け終わったらコンパイルです。

コンパイルが終わると以下の画面が表示されます。

入出力ピンが154本のI/Oピン中3本が使われ、PLLが4個中1個が使われていることが確認できます。

シミュレーションの実行

コンパイルが終わったらシミュレーションを実行してみます。

まずはシミュレーションするピンを追加します。ピン追加方法の詳細はQuartus入門を参照してください。

ピンの追加が終わったら、クロック信号の作成です。”CLK_50MHz”信号に、50MHzのクロック信号を生成してあげます。

下の画像のように、CLK_50MHzの信号を選択し、”Count value”のアイコンをクリックします。

そしたら周期の設定です。

ここでは何秒で信号レベルを反転させるかを設定します。

50MHzの場合は周期20nsなので、10ns毎に信号を反転させます。

周期設定が終わると以下の画像のように、50MHzの信号が生成されます。

それではシミュレーションを実行します。実行方法の詳細はQuartus入門を参照してください。

入力クロックが動き出してから90ns後に40MHzのクロックが出力されました。

また、それと同じタイミングでPLL_Lock出力がHighレベルになりました!

PLL出力周波数の変更

PLLの出力周波数などの設定を変更したいときは、回路図上のPLLを右クリックして”IP Parameter Editor”を選択します。

すると、設定画面が表示されるので、PLLの設定を変更することができます。

関連記事 FPGAの記事一覧

タイトルとURLをコピーしました