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 的語法如下
其中 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 gen
initial begin
clk=1'b0;
rst_n=1'b0;
#100
rst_n=1'b1;
end
always #5 clk=~clk;
//data read
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 文件