在没有开发板的情况下,要使用Verilog做图像处理,就只能仿真了。
这时需要一个激励,让Verlog读取到图片,这里就提供一个例子去读取bmp图片。
`timescale 1ns / 1ns
module bmp_tb;
integer iBmpFileId,iOutFileId,iIndex=0,iCode;
reg [7:0] rBmpData [0:200000];
reg rClk;
reg [7:0] rData;
integer iBmpWidth,iBmpHight,iDataStartIndex,iBmpSize;
initial begin
iBmpFileId = $fopen("G:\\WorkDir\\ProQuestaSim\\bmp_sim\\src\\cat.bmp","rb");
iOutFileId = $fopen("G:\\WorkDir\\ProQuestaSim\\bmp_sim\\src\\output_file.txt","w+");
iCode = $fread(rBmpData,iBmpFileId);
iBmpWidth = {rBmpData[21],rBmpData[20],rBmpData[19],rBmpData[18]};
iBmpHight = {rBmpData[25],rBmpData[24],rBmpData[23],rBmpData[22]};
iDataStartIndex = {rBmpData[13],rBmpData[12],rBmpData[11],rBmpData[10]};
iBmpSize = {rBmpData[5],rBmpData[4],rBmpData[3],rBmpData[2]};
$fclose(iBmpFileId);
$fwrite(iOutFileId,"%p",rBmpData);
end
initial begin
forever begin
rClk=1;
#10 rClk = 0;
#10;
end // forever
end // initial
always@(posedge rClk) begin
rData<=rBmpData[iIndex];
iIndex<=iIndex+1;
end
endmodule
注意:其中iBmpFileId和iOutFileId的路径,需要根据你的文件路径而修改。
经过仿真,可以看出Verlog可以读取到bmp图片的信息,从而得到图片的宽、高。
使用的图片,如下图所示,请保存为.bmp格式。
来源:oschina
链接:https://my.oschina.net/u/4393607/blog/4599740