芯片型号:XC7A100T
摄像头型号:OV5640
采用分辨率:320*240
BRAM类型:single dual port bram
要做的事情是VGA显示器显示摄像头数据
方案是先通过FPGA逻辑把读取到的摄像头数据放到BRAM里面,然后把BRAM中的数据显示到显示到VGA上面。
有时候需要用coe文件对BRAM进行初始化,我这里是先调试下VGA显示屏显示BRAM中的数据,所以需要用数据初始化BRAM
coe : Coefficient
coe 文件有一定的格式,格式如下:
memory_initialization_radix = 10;
memory_initialization_vector = 1,2,3,4,5,6,…,99
其中:
memory_initialization_radix 是数值格式
memory_initialization_vector 是初始化的数值向量,分别对应各个深度
在verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”filename”中的路径要用反斜杠’/’,而不是斜杠’\’。如
$readmemh("F:/mydesigen/re_input.txt",re_input);
上面的语句是正确的,而如果用斜杠就有问题,如
$readmemh("F:\mydesigen\re_input.txt",re_input);
对于需要的txt文件,其格式为每行一个数据,例如用matlab产生文件则可以这样写
fid0 = fopen('F:\mydesigen\re_input.txt','w+');
fprintf(fid0,'%x \n',real(info));
其中的换行符是必须的。同时,在matlab中,路径语句的斜杠’\’或是反斜杠’/’都没有问题。
module memory();
reg [7:0] my_mem [0:255];
initial
begin
/*$readmemh("file",mem_array,start_addr,stop_addr);*/
$readmemh("mem.list", my_mem);
$display("0x00: %h", my_mem[8'h00]);
$display("0x01: %h", my_mem[8'h01]);
$display("0x55: %h", my_mem[8'h55]);
$display("0x56: %h", my_mem[8'h56]);
end
endmodule
/*
//comments are allowed
0xab //addr 8'h00
0xba //addr 8'h01
@55 //jump to 8'h55
0x55 //addr 8'h55
0xaa //addr 8'h56
*/
我常用的是:
a0=funcCensusOneImage('im0.pgm',3);
fid0=fopen('G:\data.txt','wt');
fprintf(fid0,'%x\n',a0);
fclose(fid0);
向G:\data.txt文件写入经过ct变换的8位16进制数据,且每一个数据占一行,符合modelsim仿真时将data.txt数据读入存储器寄存器的规范。
参考文献:
https://www.cnblogs.com/woshitianma/archive/2012/12/19/2825547.html