vivado读写文件

        在平时对代码进行仿真的过程中经常会需要对数据进行处理,特别是对信号处理方面的内容来说很多数据在FPGA中并不能够直接的观察到需要导出后另外处理观察。所以在仿真中添加对文件的读写有利于解决问题。

1:读文件

reg	[4:0]	din;

parameter		data_length=199; //读取长度

integer i;   //数组坐标
reg [4:0] rd_dat [data_length:0];  

initial 
begin
    $readmemh("C:/FPGA/csdn/gongcheng/vivado/pro_18_3_wr_file/wr_file/data0_rd.txt", rd_dat);  //将txt文件中的数据存储在数组中  readmemh(按16进制读取) readmemb(按2进制读取)
    i = 0;
    repeat(data_length) begin   
        din = rd_dat[i];
		i = i + 1;		
        #20;         //读取间隔时间
    end
end    

        读文件需要先定义一个数组,数组宽度是需要读取数据的最大宽度,数组的长度是需要读取数据的长度,通过$readmemh或者是$readmemb来将文件中的数据存储到定义的数组中,他们的区别在于前者是读取16进制文件,后者是读取2进制文件。

2:写文件

wire data_vld0;

reg [15:0] data_gain_cnt=0;


assign data_vld0=w_file_vld;

integer   fid_data0;


initial begin
	#10;
	
	fid_data0 = $fopen("C:/FPGA/csdn/gongcheng/vivado/pro_18_3_wr_file/wr_file.txt");


	#5000000
	$fclose(fid_data0);
end

always @(posedge clk)
begin
	if((data_vld0 == 1'b1) && data_gain_cnt<3100)
		begin
			if(data_gain_cnt<100)
			data_gain_cnt<=data_gain_cnt+1;
			else if(data_gain_cnt<3100)
			begin
			$fdisplay(fid_data0,"%d %d",$signed(w_file_data_1),$signed(w_file_data_2));
			data_gain_cnt<=data_gain_cnt+1;
			end
		end

end

        这里的写文件将信号的有效信号也引进来方便控制,用integer定义文件参数,用$fopen打开指定路径的文件,$fclose是关闭对应文件。$fdisplay是写对应的文件。

        在仿真文件中如果想要引用调用的模块中的寄存器,可以通过如下方式引用:

                                                            模块名.需要引用的寄存器变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值