- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                Verilog图像翻转源代码
组内成员
邹述铭  3014204055
李林楠  3014204035
丁皓南  3014204031
买地努尔3014204040
一、将BMP图片转化为二进制数据,存入TXT
`timescale 1ns/100ps
module Pic;
parameter size=65554;	 
//定义memory存储器大小,前18个存BMP文件信息头,后65536个存数据
reg[23:0] ram[size-1:0],headdata,data; 
 //单个寄存器24位(包括红绿蓝3个字节(一个字节8位)的颜色)   共65536=256*256个像素点
reg clk;	
 //定义时钟
integer file_id,txt_id; 
 //定义BMP图片和txt文本的整型句柄
integer m,i,j,x;
initial
begin
	file_id=$fopen(C:/Users/HP/Desktop/Pic.bmp,rb); 
 //以二进制方式读取图片,将句柄存入file_id
	$fread(ram,file_id);  
//存图片的二进制数据到ram存储器中(ram中的每个单元24位)
	$fclose(file_id);
end
initial 
//为整型变量赋初值
begin
clk=0;i=0;j=0;x=0;
end
always
#5 clk=~clk; 
//定义时钟信号周期为10ns
initial
begin
	txt_id=$fopen(C:/Users/HP/Desktop/Pic_bin.txt); 
//打开建立的空白txt文档,用来存储图片的十六进制数据
	for(m=0;m=17;m=m+1)
	begin
		headdata=ram[m]; 
//把ram中的二进制数据按顺序存入信息头寄存器headdata(17*24个位)中
		$fwrite(txt_id,%b,headdata);
 //把每个ram中的值转换为二进制
	end	
end
always @(posedge clk)	
 //在每个clk时钟上升沿,输入单行像素的信息
if(i=255)	
//按行 顺序读取单个像素信息(一行256个像素)
begin
	for(j=0;j=255;j=j+1) 
//使用for循环顺序输入单个像素(24位)的信息,至data寄存器
	begin
		x=18+256*i+j;
		data=ram[x];
		$fwrite(txt_id,%b,data);
 //将data寄存器中的数据以二进制方式存入Pic_hex.txt文本
	end
i=i+1;	
//每输入完一行后,行数自加一,进行下一行的数据输入
end
else	
//待行数大于256时,跳出循环
$fclose(txt_id);
endmodule
二、VERILOG图像旋转
`timescale 1ns/100ps
module Pic_Turn;
parameter size=65554;			
reg[23:0] ram_turn[size-1:0],datamove,headdata; 
 //datamove用于替换位图单像素数据,headdata用于替换信息头数据     
reg clk;					 
//定义clk为时钟信号
integer txtid1,txtid,p,i,j,n;
initial
begin
clk=0;
i=0;
j=0;
n=0;
end
always #5 clk=~clk;				 
//设置clk时钟频率
initial
begin
txtid1=$fopen(C:/Users/HP/Desktop/Pic_bin.txt,rb); 
$fread(ram_turn,txtid1);
$fclose(txtid1);
txtid=$fopen(C:/Users/HP/Desktop/Pic_turn.txt);
for(p=0;p=17;p=p+1)
begin
	headdata=ram_turn[p];
	$fwrite(txtid,%b,headdata);		
//将信息头数据以十六进制输入至txt文件
end
end
always @(posedge clk)				 
 //在每个clk上升沿时,输入单个像素的信息(256位)
if(i=255)
begin
for(j=0;j=255;j=j+1)
	begin
	n=18+256*j+255-i;
	datamove=ram_turn[n];
	$fwrite(txtid,%b,datamove);
	end
i=i+1;
end
else
$fclos
                 原创力文档
原创力文档 
                        

文档评论(0)