Verilog图像翻转源代码_第1页
Verilog图像翻转源代码_第2页
Verilog图像翻转源代码_第3页
Verilog图像翻转源代码_第4页
Verilog图像翻转源代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Verilog图像翻转源代码组内成员邹述铭3014204055李林楠3014204035丁皓南3014204031买地努尔3014204040一、将BMP图片转化为二进制数据,存入TXTtimescale1ns/100psmodulePic;parametersize=65554;个存数据定义memory存储器大小,前18个存BMP文件信息头,后65536reg23:0ramsize-1:0,headdata,data;/单个寄存器24位(包括红绿蓝3个字节(一个字节8位)的颜色)65536=256*256个像素点regclk;/定义时钟integerfile_id,txt_id;/定义BMP

2、图片和txt文本的整型句柄integerm,i,j,x;initialbeginfile_id=$fopen(C:/Users/HP/Desktop/Pic.bmp,rb);/以二进制方式读取图片,将句柄存入file_id$fread(ram,file_id);/存图片的二进制数据到ram存储器中(ram中的每个单元24位)$fclose(file_id);endinitial/为整型变量赋初值beginclk=0;i=0;j=0;x=0;endalways#5clk=clk;/定义时钟信号周期为10nsinitialbegintxt_id=$fopen(C:/Users/HP/Desktop

3、/Pic_bin.txt);/打开建立的空白txt文档,用来存储图片的十六进制数据for(m=0;m=17;m=m+1)beginheaddata=ramm;/把ram中的二进制数据按顺序存入信息头寄存器headdata(17*24个位)中$fwrite(txt_id,%b,headdata);/把每个ram中的值转换为二进制endendalways(posedgeclk)/在每个clk时钟上升沿,输入单行像素的信息if(i=255)/按行顺序读取单个像素信息(一行256个像素)beginfor(j=0;j=255;j=j+1)/使用for循环顺序输入单个像素(24位)的信息,至data寄存器

4、beginx=18+256*i+j;data=ramx;$fwrite(txt_id,%b,data);/将data寄存器中的数据以二进制方式存入Pic_hex.txt文本endi=i+1;/每输入完一行后,行数自加一,进行下一行的数据输入endelse/待行数大于256时,跳出循环$fclose(txt_id);endmodule二、VERILOG图像旋转timescale1ns/100psmodulePic_Turn;parametersize=65554;reg23:0ram_turnsize-1:0,datamove,headdata;/datamove用于替换位图单像素数据,head

5、data用于替换信息头数据regclk;/定义clk为时钟信号integertxtid1,txtid,p,i,j,n;initialbeginclk=0;i=0;j=0;n=0;endalways#5clk=clk;/设置clk时钟频率initialbegintxtid1=$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)beginheaddata=

6、ram_turnp;$fwrite(txtid,%b,headdata);/将信息头数据以十六进制输入至txt文件endendalways(posedgeclk)/在每个clk上升沿时,输入单个像素的信息(256位)if(i=255)beginfor(j=0;j=255;j=j+1)beginn=18+256*j+255-i;datamove=ram_turnn;$fwrite(txtid,%b,datamove);endi=i+1;endelse$fclose(txtid);endmodule三、旋转后的数据文件处理成BMP位图将位图旋转后的数据转成十六进制,程序如下:timescale1n

7、s/100psmodulePic_Turn;parametersize=65554;reg23:0ram_turnsize-1:0,datamove,headdata;/datamove用于替换位图单像素数据,headdata用于替换信息头数据regclk;定义clk为时钟信号integertxtid1,txtid,p,i,j,n;initialbeginclk=0;i=0;j=0;n=0;endalways#5clk=clk;/设置clk时钟频率initialbegintxtid1=$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)beginheaddata=ram_turnp;$fwrite(txtid,%h,headdata);/将信息头数据以十六进制输入至txt文件endendalways(posedgeclk)/在每个clk上升沿时,输入单个像素的信息(256位)if(i=255)beginfor(j=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论