verilog图像旋转200*200的256色图片

bmp图像格式为
(1)位图文件头(bitmap-file header) file header)
(2)位图信息头(bitmap-informationheader)
(3)调色板(color palette) 由biBitCount决定
(4)图片点阵数据(bitmap data) bitmap data)
位图文件头的大小为14byte,开始地址为0000h,结束地址为000Dh。
位图信息头的大小为40byte,开始地址为000Eh,结束地址为0035h。
调色板由biBitCount决定 1,4,8位图像才会使用调色板数据,16,24,32位图像不需要调色板数据,即调色板最多只需要256项。
颜色表的大小根据所使用的颜色模式而定根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节。
当biBitCount=1时,8个像素占1个字节;
当biBitCount=4时,2个像素占1个字节;
当biBitCount biBitCount=8时,1个像素占1个字节;
当biBitCount=24时,1个像素占3个字节;
图片点阵数据是根据图片具体数据大小所决定的,起始位置和结束位置都是不确定的。

本程序是将200200的256色的bmp图片进行顺时针旋转,采用verilog程序。
因为是256色的图片,所以它的调色板占用大小为1024byte,加上前面的54位文件头和信息头数据,一共先要保留前1078位的数据,对点阵数据进行操作。
图片旋转公式为200
j+199-i 具体公式解释可以看我引用的资料。
https://wenku.baidu.com/view/97e77e792e3f5727a4e96203.html

下面是源程序:
`timescale 1ns/1ns
module shunshizhen;
reg [7:0]bmp_data[0:50000];
reg [7:0]bmp_data_xz[0:50000];
reg [7:0]zxc;
integer file_bmp,txt_bmp,xc,bmp_imp;
integer i,j,m,x;
reg clk,rst;
initial begin
file_bmp = $fopen(“C:/Users/JBW/Desktop/test.bmp”,“rb”);
bmp_imp = $fopen(“C:/Users/JBW/Desktop/test1.bmp”,“wb”);
$fread(bmp_data,file_bmp);
$fclose(file_bmp);
end
initial begin
clk =1;
forever #10 clk=~clk;
end
initial begin
for (i=0;i<=1077;i=i+1)
begin
zxc = bmp_data[i];
$fwrite(bmp_imp,"%c",zxc);
end
for(m=0;m<=199;m=m+1)
begin
for(x=0;x<=199;x=x+1)
begin
j=1078+200*x+199-m;
zxc = bmp_data[j];
$fwrite(bmp_imp,"%c",zxc);
end
end
$fclose(bmp_imp);
end
initial begin
i=0;
m=0;
x=0;
j=0;
end
endmodule
该程序可以直接将图片顺时针旋转90度进行显示。
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值