moerjielovecookie

Sawen_Blog

一个普通工科牲的博客网站
x
github
follow
email

Matlabで生成したtxtファイルをVivadoシミュレーションにインポートする

Matlab でデータを処理し、txt ファイルに書き込む#

%% Txt Generate
pre_RS_data=dec2bin(simDataIn,8);       %データを8bitの二進数に変換
fid=fopen("F:\FPGA\Xilinx_vivado\project\dvbstestbench\dbvs\matlab\pre_RS_data.txt","wt");
for i=1:n*nMessages         %データの長さ
    fprintf(fid,"%s\n",pre_RS_data(i,1:8));  %二進数データは8ビットのため、1:8
end
fclose(fid);

fopen 関数を使用してファイル ID を取得します。fopen の構文は以下の通りです

1714036628457.png

ここで、permisson はファイルアクセスの種類で、以下の権限があります

'r'読み取り用のファイルを開く。
'w'書き込み用の新しいファイルを開くまたは作成する。既存の内容を放棄する(ある場合)。
'a'書き込み用の新しいファイルを開くまたは作成する。データをファイルの末尾に追加する。
'r+'読み書き用のファイルを開く。
'w+'読み書き用の新しいファイルを開くまたは作成する。既存の内容を放棄する(ある場合)。
'a+'読み書き用の新しいファイルを開くまたは作成する。データをファイルの末尾に追加する。
'A'現在の出力バッファを自動的にフラッシュせずに追加するためにファイルを開く。
'W'現在の出力バッファを自動的にフラッシュせずに書き込むためにファイルを開く。

💡 テキストモードで開くには、’t’を追加する必要があります

Vivado における testbench の書き方#

`timescale 1ns/1ps

module top_tb();

reg clk;
reg rst_n;
reg [7:0]SEQ_IN_0;
reg [7:0] data_mem[1:1020];
reg [31:0] i;
wire BIN_OUT;
wire ce_out;
wire locked;

//clk & rst_nの生成
initial begin
    clk=1'b0;
    rst_n=1'b0;
    #100
    rst_n=1'b1;  
end
always #5 clk=~clk;

//データ読み込み
initial begin
    $readmemb("F:/FPGA/Xilinx_vivado/project/dvbstestbench/dbvs/matlab/pre_RS_data.txt",data_mem);
  
end

initial begin
    i=1;
    forever @(posedge clk) begin
        if(i<1020)  begin
            i=i+1;
        end
        else 
            i=1;
    end
    $display("%s",data_mem[i]);
end

always @(posedge clk) begin
    SEQ_IN_0<=data_mem[i];
end

top_wrapper top_wrapper_u0(
    .clk_0    (clk),
    .rst_n_0  (rst_n),
    .SEQ_IN_0(SEQ_IN_0),
    .BIN_OUT_0  (BIN_OUT),
    .ce_out_0   (ce_out),
    .locked_0   (locked)
);

endmodule

💡 フォルダ内で直接コピーしたファイルパスは \ ですが、testbench ではすべてのバックスラッシュを / に変更する必要があります。そうしないと、txt ファイルを読み取ることができません。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。