FPGAスタディノート_ROMコアコールとデバッグ

FPGAスタディノート

ROMコア呼び出しとデバッグ

1. ROM存储器IP核的使用
2. 创建.mif文件
3. In system memory content editor内存查看工具的使用
4. Signal tapII工具使用
5. Verilog 代码
6. Modelsim仿真
7. FPGA板级验证

ROMコア呼び出しとデバッグ

  • 目標:Quartusソフトウェアで提供されるROMコアを呼び出し、システム設計を実行します
  • 現象:データセット(三角波形テーブル)は、FPGAのIPコアで構築されたオンチップROMに格納されます。開発ボードの電源がオンになると、システムはROMからデータの読み取りを開始し、データを直接出力します。パラレルポートを介して。信号タップIIソフトウェアを介してパラレルポートのデータをリアルタイムでキャプチャし、表示します(三角波形)。次に、quartusソフトウェアで提供されているシステム内メモリコンテンツエディタツールを使用して、オンラインROMのデータ(正弦波形)を変更し、信号tapIIツールによってキャプチャされた波形データを再度観察します。
  • 知識のポイント:
  1. ROMメモリIPコアの使用
    .mifファイルの作成
  2. システム内メモリコンテンツエディタメモリ表示ツールの使用
  3. Signal tapIIツールは
    、チップノードデータまたは外部IOポートデータを直接キャプチャし、JTAGポートを介してPCに接続できる組み込みロジックアナライザ/オンチップロジックアナライザを使用します。PC上のquatursソフトウェアは、JTAGラインを介してオンチップロジックアナライザと通信し、オンチップロジックアナライザによってキャプチャされた設計のノード情報をPCにリアルタイムで送信するシグナルタップIIソフトウェアを提供します。 PCは単一のTapIIを使用します。ソフトウェアはデータを表示します。

ここに画像の説明を挿入

1.ROMメモリIPコアの使用

  • (1)IPカタログ、ROMの検索、ROMのダブルクリック:1ポート、データ幅、ROMメモリ、その他の情報を要件に応じて設定し、[次へ]をクリックします

ここに画像の説明を挿入

  • (2)必要に応じてレジスタポートを選択し、[次へ]をクリックします

ここに画像の説明を挿入

  • (3).mifファイルを選択し、[次へ]をクリックします

ここに画像の説明を挿入

  • (4)次へをクリックします

ここに画像の説明を挿入

  • (5)[完了]をクリックします

ここに画像の説明を挿入

  • (6).qipファイルを生成し、右クリックして、トップレベルのエンティティとして設定し、分析と合成を行います。

ここに画像の説明を挿入

  • (7)テストベンチの作成、シミュレーション検証機能

2..mifファイルを作成します

  • (1)新しいファイルを作成し、メモリ初期化ファイルを選択して、[OK]をクリックします。

ここに画像の説明を挿入

  • (2)ビット幅とメモリ深度を設定し、[OK]をクリックして次のファイルを生成します

ここに画像の説明を挿入
ここに画像の説明を挿入

  • (3)必要に応じてメモリ値を変更した後、ファイルをクリックし、名前を付けて保存し、名前を設定し、.mifファイルをプロジェクトフォルダに保存すると、.mifファイルの設定が完了します。

ここに画像の説明を挿入
ここに画像の説明を挿入


3.システムメモリコンテンツエディタメモリ表示ツールでの使用

  • (1)。ツール–>システムメモリコンテンツエディタ内

ここに画像の説明を挿入

  • (2)次のインターフェースが表示されます。読み取りをクリックして、ROM内のデータを読み取ります。

ここに画像の説明を挿入

  • (3)ROMを右クリックし、ファイルからデータをインポートを選択します

ここに画像の説明を挿入

  • (4)編集した.mifファイルを選択し、[開く]をクリックします

ここに画像の説明を挿入

  • (5)[書き込み]をクリックすると、ファイル内のデータがROMに書き込まれます

ここに画像の説明を挿入

  • (6)書き込まれたデータは信号tapIIに表示されます

ここに画像の説明を挿入


4.シグナルtapIIツールを使用します

  • (1)新しいファイルを作成するには、シグナルタップロジックアナライザファイルをクリックします

ここに画像の説明を挿入

  • (2)clk信号を順番に追加します

ここに画像の説明を挿入

  • (3)観測する信号を順番に追加する

ここに画像の説明を挿入

  • (4)設定が完了したら、ファイルをクリックし、名前とパスを設定した後、保存します

ここに画像の説明を挿入

  • (5)設計に応じて、ストレージ領域の深さを設定し、.stpファイルを生成します

ここに画像の説明を挿入

  • ロジックアナライザは、サンプリングクロックがサンプリングされる信号のレートよりも高いことを確認します
  • サンプル深度:
    メモリの深度。キャプチャされたデータは内部メモリと同等です。連続キャプチャには観測データが必要です。速度が非常に速いため、観測するすべてのデータを最初にメモリに保存してから、メモリから保存する必要があります。メモリJTAGケーブルを介してコンピュータに送信し、リアルタイムで表示します。そうしないと、JTAG自体があまり高速ではないため、50MHzの直接サンプリングされたデータを送信できません。この保存方法を使用して速度を下げてください。

ここに画像の説明を挿入

  • (6)ロジックアナライザを次の順序で実行します。

ここに画像の説明を挿入

  • (7)連続リアルタイム検出データ

ここに画像の説明を挿入

  • (8)リアルタイムデータ形式を折れ線グラフ表示に設定します。形状は次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入


5.Verilogコード

//----top---------------------------------------
module rom_top(

	input clk,
	input rst_n,
	output [7:0] q
);

	reg [7:0] addr;

rom uut(
		.address(addr),
		.clock(clk),
		.q(q)
	);

	always@(posedge clk or negedge rst_n)
		if(!rst_n)
			addr <= 8'd0;
		else
			addr <= addr + 8'd1;
endmodule

//----testbench------------------------------
`timescale 1ns/1ns
`define clock_period 20

module tb_rom;
	reg clk;
	reg [7:0] addr;
	wire [7:0] q;

	rom uut(
		.address(addr),
		.clock(clk),
		.q(q)
	);
	integer i;
	initial clk = 1;
	always #(`clock_period/2) clk = ~clk;
	
	initial begin
		addr =8'd0;
		for(i=0;i<2550; i=i+1)begin
		#(`clock_period);
		addr = addr + 8'd1;
		end
		#(`clock_period*50);
		$stop;
	end
endmodule


6.Modelsimシミュレーション

  • シミュレーション波形のデバッグ
    信号を右クリックし、フォーマット->アナログ(automatixc)を選択して、信号値をアナログ値に変換しますここに画像の説明を挿入

  • 三角波

ここに画像の説明を挿入

  • 正弦波

ここに画像の説明を挿入

4.FPGAボードレベルの検証

  • 波形は三角形から正弦波に変換されます

ここに画像の説明を挿入

ここに画像の説明を挿入


【注意】:個人学習メモ、間違いがありましたら、お気軽に教えてください、丁寧です~~~


おすすめ

転載: blog.csdn.net/weixin_50722839/article/details/109960391