IP コアの紹介と PLL_IP コアの呼び出し


序文

ここ数日、FPGA の IP コアの知識を学んでいましたが、これには多くの方法が含まれているため、その後の復習を容易にするためにブログを書きました。私の現在の理解では、IP コアは、C 言語で学習するヘッダー関数のようなものであり、他の人がカプセル化を実装した方法です. それを導入して、そのインターフェイスを理解する必要があります. 詳細については、以下を参照してください.


1. IP コアとは何ですか?

1. 定義

IP (Intellectual Property) は、知的財産権です。半導体業界では、IPコアは「ASICまたはFPGAで使用される事前に設計された回路機能モジュール」と定義されています。つまり、ここのIPは回路機能モジュールです。

デジタル回路では、一般的に使用される比較的複雑な機能モジュールは、変更可能なパラメーターを持つモジュールとして設計されているため、他のユーザーはこれらのモジュールを直接呼び出すことができます。これが IP コアです。

2.利点

1. FPGA の規模がますます大きくなるにつれて、その設計はますます複雑になります。
2. 設計規模が拡大し、複雑さが増すにつれて、IP コアを使用すると、開発効率が向上し、設計およびデバッグ時間が短縮され、開発プロセスが高速化され、開発コストが削減されます。これは業界の開発傾向です。

3. IPコアの既存形態(製品の配送方法による)

1. HDL 言語形式 - ソフトコア

ハードウェア記述言語、パラメータ調整、強力な再利用性、柔軟なレイアウトと配線、短い設計サイクルと低い設計投資。

2. ネットリスト形式 - ソリッドコア

合成された機能ブロックが完成し、特定の信号を事前配線するか、特定の配線リソースを割り当てることができます。

3. レイアウトフォーム - ハードコア

ハード コアは、柔軟性と移植性に欠けるデザイン マスク (マスク) の最終製品であり、IP コアの保護を実現しやすくなります。

4.短所

1. IP コアは多くの場合、プラットフォーム間で使用できない
2. IP コアは不透明であり、内部コア コードは見えない
3. カスタム IP には追加料金が必要

5. IP コアを呼び出すいくつかの方法

1. Mega Wizard プラグイン マネージャー (一般的に使用)
2. SOPC コンストラクター
3. DSP コンストラクター (一部の IP コアのインスタンス化のみをサポート)
4. Qsys デザイン システムのインスタンス化 (一部の IP コアのインスタンス化のみをサポート)

2. PLL-IP コア

1. PLL-IP コアの紹介

PLL (Phase Locked Loop, Phase Locked Loop) は最も一般的に使用されている IP コアの 1 つで、その性能は強力で、クロック信号入力に対して任意の分周、周波数逓倍、位相調整、およびデューティ サイクル調整を実行できます。 FPGA、それにより所望のクロックを出力します。

  • アルテラでは、使用されるフェーズロック ループはアナログ フェーズロック ループであり、対応するデジタル フェーズロック ループがあります。デジタル フェーズロック ループと比較して、当社のアナログ フェーズロック ループは、信号の安定性が高く、位相を連続的に調整でき、遅延を連続的に調整できます。ただし、温度が高すぎる場合やバッテリーの放射が強すぎる場合は、ロックが失われる可能性があります。

1.動作原理

まず、PLL はフィードバック システムです。位相ロック ループへの ref_clk 入力は基準クロックであり、周波数検出器への入力、FD は周波数検出器、PD は位相検出器です. さらに、周波数検出器への比較クロック入力があります。フィードバッククロックです。入力基準クロックが比較クロックと同じである場合、出力 0 (等しい)、大きい比例値 (より大きい)、小さい比例値 (小さい) を出力します。周波数と位相検出器の信号は LF (ループ フィルター) に出力され、LF は異なる入力値に応じて異なる電圧振幅を出力します。次に、VCO (Voltage Controlled Oscillator) が来ます。VCO に入力される電圧が高いほど、出力信号の周波数が高くなります。複数の比較と調整の後、基準クロック周波数は比較クロック周波数と等しくなり、最終的に出力されます。

ここに画像の説明を挿入

2.乗数

周波数および位相検出器に入力される 2 つの信号は等しくなる傾向があるため、フィードバック中に div を実行すると、出力信号が数倍になります。周波数分割の場合、divはどこに配置する必要があると思いますか?
ここに画像の説明を挿入

3.周波数分割

入力基準クロックの分周信号は、周波数検出器と位相検出器に直接入力され、最終出力信号はフィードバック信号と一致し、周波数検出器と位相検出器では、フィードバック信号はクロスオーバーを実現する分周信号。
ここに画像の説明を挿入

2. PLL-IP コア構成

まず、sim、rtl、prj、doc の 4 つのフォルダーを含む新しいファイル システムを作成する必要があります。prj で新しいプロジェクトを作成します。以下を参照してください:
https://blog.csdn.net/qq_52215423/article/details/128006883

  • IP コアを選択します。

ここに画像の説明を挿入

  • IP コアを検索し、ダブルクリックして構成します。

ここに画像の説明を挿入
- IP コアの格納場所を設定する

prj フォルダーの下に新しい ip_core フォルダーを作成して IP ファイルを保存し、その下にサブファイル pll_ip を作成してターゲット IP を保存します。

  • 設定インターフェイスがポップアップします。
    ここに画像の説明を挿入

  • パラメータ設定:
    ここに画像の説明を挿入

ここでのクロック フィードバック モードは次のとおりです。
1. ソース同期モード
2. 補償なしモード
3. 標準モード
4. ゼロ遅延バッファ モード
5. 確定的遅延補償モード
アルテラ PLL IP コアの 4 つの動作モードの紹介

  • 次をクリックします。
    ここに画像の説明を挿入
  • 次へ続く:
    ここに画像の説明を挿入

このインターフェイスは主に、フェーズロック ループの高度な機能であるスペクトル クロックと帯域幅のプログラマブル機能を拡張するためのものであり、最初は操作しません。

  • 次へ続く:
    ここに画像の説明を挿入

これも高度な属性であり、使用されません。

  • 次へ進み、2 番目の設定インターフェイスに入ります。
    ここに画像の説明を挿入

このインターフェイスはフェーズロック ループの再構成です.主にフェーズロック ループの動的再構成と動的位相再構成に使用されます.これは高度な属性でもあります.これを使用してデフォルトを選択することはできません.

  • 次の出力クロックの設定に進みます。

各 PLL は、以下の 5 つのサブオプションに対応する 5 つのクロックを出力できます。
ここに画像の説明を挿入

  • 設定されているパラメータは次のとおりです。

ここに画像の説明を挿入

  • 次へ進み、eda 設定インターフェイスに入ります。
    ここに画像の説明を挿入

ここで設定する必要があるインターフェイスはありません。次に進みます。

  • 概要設定インターフェイス:

ここに画像の説明を挿入

[完了] をクリックして構成を完了します。

ここに画像の説明を挿入

yes を選択して、IP コアの設定を完了します。

  • 波形グラフを描く:

ここに画像の説明を挿入

  • ip ファイルが pll_ip フォルダーの下に生成されているかどうかを確認します。
    ここに画像の説明を挿入

3. PLL-IP コア呼び出し

  • IP コア (pll_ip_inst) のインスタンス化ファイルを表示します。
pll_ip	pll_ip_inst (
	.inclk0 ( inclk0_sig ),
	.c0 ( c0_sig ),
	.c1 ( c1_sig ),
	.c2 ( c2_sig ),
	.c3 ( c3_sig ),
	.locked ( locked_sig )
	);
  • 最上位ファイルを作成します。
module pll (
    input wire sys_clk,
    output wire clk_mul_2,
    output wire clk_div,
    output wire clk_pha_90,
    output wire clk_duc_20,
    output wire locked
);
pll_ip	pll_ip_inst (
	.inclk0 ( sys_clk ),
	.c0 ( clk_mul_2 ),
	.c1 ( clk_div ),
	.c2 ( clk_pha_90 ),
	.c3 ( clk_duc_20 ),
	.locked ( locked )
	);    
endmodule
  • 最上位ファイルのインポート後にコンパイルを完了します。
    ここに画像の説明を挿入

コンパイルが通りました。

  • 補足: 一時的に IP コアをリセットしたい:
    IP_Component をチェックし
    ここに画像の説明を挿入
    、ダブルクリックして変更します:
    ここに画像の説明を挿入
  • IP コア ファイルを誤って削除します。

右クリックしてファイルを追加

ここに画像の説明を挿入

4. PLL-IP シミュレーション

  • シミュレーション ファイル:
`timescale 1ns/1ns
module tb_pll();
reg sys_clk;

wire clk_mul_2;
wire clk_div;
wire clk_pha_90;
wire clk_duc_20;
wire locked;

initial begin
     sys_clk=1'b1;
end

always #10 sys_clk=~sys_clk;

pll pll_inst(
    .sys_clk    (sys_clk), 
    .clk_mul_2  (clk_mul_2),
    .clk_div    (clk_div),
    .clk_pha_90 (clk_pha_90),
    .clk_duc_20 (clk_duc_20),
    .locked     (locked)
);

endmodule

シミュレーション ファイルを追加し、フル コンパイルを実行してから、シミュレーション設定 (無視) を実行してから、シミュレーションを実行します。

  • シミュレーション波形図:
    ここに画像の説明を挿入

描画された波形図を注意深く比較するか、波形図の周波数、位相、およびデューティ サイクルが設定と一致していることを確認し、シミュレーションに合格します。


3. まとめ

この記事では、主にIPコアとその使用方法の一部を紹介します.さらに、PLL(Phase Locked Loop、Phase Locked Loop)は最も一般的に使用されるIPコアの1つであり、目的のクロックはPLL_IPを介して取得できることを学びました. 他の IP コアの内容は、今後も更新され続けます。

4.参考文献

1. アルテラ PLL IP コアの 4 つの動作モードの紹介
2. Wildfire FPGA シリーズ ティーチング ビデオ

おすすめ

転載: blog.csdn.net/qq_52215423/article/details/128771489