Verilog读取bmp图片

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-20 04:28:05

在没有开发板的情况下,要使用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格式。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!