verilog文件操作代码(转)

verilog文件操作代码(转)

一、verilog 读文件,与写文件操作

`timescale 1 ns/1 ns
module FileIO_tb;

integer fp_r, fp_w, cnt;
reg [9:0] reg3;

initial begin
fp_r = $fopen("yuz.txt", "r");//被读取的文件名
fp_w = $fopen("data_out.txt", "w");

while(!$feof(fp_r)) begin
cnt = $fscanf(fp_r, "%b", reg3);
$display("%b",reg3);
$fwrite(fp_w, "%b\n", reg3);
end

$fclose(fp_r);
$fclose(fp_w);
end

endmodule

二、读取文件,用作测试

module word_aligner_test;
reg lock,bypass,nrst,clk;
reg [9:0]datain;
reg [9:0] memory [0:2047];//声明有2048个10位的数据
wire bypass_out,lock_next,comma;
wire [9:0] dataout;
//reg[9:0] datain_rev;
integer i;
word_aligner U0(lock,bypass,datain,clk,nrst,dataout,bypass_out,lock_next,comma);

initial
begin
i=0;
lock=1;
bypass=0;
nrst=0;
clk=0;
#2 nrst=1;
end
always #2 clk=~clk;

initial
begin
//读取存储器文件yuzhen.dat到存储器中的给定地址
$readmemb ("yuzhen_rev.dat",memory);
//显示存储器中的内容
repeat(2)
for (i=0;i<2048;i=i+1)
begin
# 2
begin
$display("Memory[%d]=%b",i,memory[i]);
{datain[0],datain[1],datain[2],datain[3],datain[4],datain[5],datain[6],datain[7],datain[8],datain[9]}=memory[i];
end
end

#30 $stop;
end

endmodule

三、模块输出数据实时存储于文件中

`timescale 1 ns/1 ns
module FileIO_tb;
reg lock,bypass,nrst,clk;
reg [9:0]datain;
reg [9:0] memory [0:2047];//声明有2048个10位的数据
wire bypass_out,lock_next,comma;
wire [9:0] dataout;
//reg[9:0] datain_rev;
integer i;
//初始化对齐模块的输出激励信号
initial
begin
i=0;
lock=1;
bypass=0;
nrst=0;
clk=0;
#2 nrst=1;
end
always #2 clk=~clk;
word_aligner U1(lock,bypass,datain,clk,nrst,dataout,bypass_out,lock_next,comma);

/////////////写指针的定义

integer fp_w;
initial
begin
//读取存储器文件yuzhen.dat到存储器中的给定地址
$readmemb ("yuzhen.txt",memory);
//打开待写入数据文件夹
fp_w = $fopen("data_out.txt", "w");
//显示存储器中的内容
repeat(1)
for (i=0;i<2048;i=i+1)

# 2 begin
$display("Memory[%d]=%b",i,memory[i]);
datain=memory[i];
$display("%b", datain);
$fwrite(fp_w, "%b\n", datain);
end
$fclose(fp_w);
#30 $stop;
end
endmodule


转自:http://hi.baidu.com/aigorenxiu/item/027679162e3382552b3e222f

你可能感兴趣的:(verilog文件操作代码(转))