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ツールによってキャプチャされた波形データを再度観察します。
- 知識のポイント:
- ROMメモリIPコアの使用
.mifファイルの作成 - システム内メモリコンテンツエディタメモリ表示ツールの使用
- 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ボードレベルの検証
- 波形は三角形から正弦波に変換されます
【注意】:個人学習メモ、間違いがありましたら、お気軽に教えてください、丁寧です~~~