使用vivado自带的仿真器进行仿真,验证数据的设计的正确性,读取txt文件数据的代码。注意要将txt文件放到路径下:E:\project_1\project_1.sim\sim_1\behav\xsim。这个路径是点击Run simulation按钮后自动生成的。
`timescale 1ns / 1ps
module read_file;
reg clk;
reg rst_n;
reg [7:0] data_in;
reg data_in_valid;
integer file ,i;
initial begin
clk = 1'b0;
forever begin
#5 clk =~clk;
end
end
initial begin
rst_n = 0;
data_in_valid = 0;
#100
rst_n = 1;
file = $fopen("test_data.txt","rb"); //打开文件
if(file==0)begin //如果文件打开错误,打印log
$display("erro=====");
$stop; //并停止仿真
end
for (i=0;i<784;i=i+1)begin //否则读取数据,文件中有784行
@(posedge clk); //时钟上升沿到来就读取
$fscanf(file,"%c",data_in); //将数据赋给data_in接口
data_in_valid<=1; //数据有效信号拉高
end
data_in_valid<=0; //数据有效信号拉低
$fclose(file); //关闭文件
end
endmodule
另外,对于从txt文件中读取进来的数据,为了避免丢失,需要缓存到ram中。在vivado中可以创建一个ram的ip来缓存,并且可以按地址来找出对应的数据:
图片的灰度流位宽为8位,图片的大小为28*28,一行的数据为28,这个ip主要是缓存图片的一行数据
---晓凡 2022年6月于桂林书