Verilog图像翻转源代码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

laoliuge + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档