查字典logo
当前位置:查字典 >> 范文 >> modelsim脚本和do文件 modelsim自动生成testbench(五篇)

modelsim脚本和do文件 modelsim自动生成testbench(五篇)

modelsim脚本和do文件 modelsim自动生成testbench篇五

verilog大作业

系名信息工程系 专业电子科学与技术 6010202036-李贝 6010202043-王玉斌 6010202034-解海洋 6010202035-冷健 指导教师史再峰

2012年 10 月 27 日

bmp(全称bitmap)是window操作系统中的标准图像文件格式,可以分成两类:设备相关位图(ddb)和设备无关位图(dib),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,bmp文件所占用的空间很大。bmp文件的图 像深度可选lbit、4bit、8bit及24bit。bmp文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于bmp文件格式是windows环境中交换与图有关的数据的一种标准,因此在windows环境中运行的图形图像软件都支持bmp图像格式。组成

典型的bmp图像文件由四部分组成:

1:位图头文件数据结构,它包含bmp图像文件的类型、显示内容等信息;

2:位图信息数据结构,它包含有bmp图像的宽、高、压缩方法,以及定义颜色等信息;

3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的bmp)就不需要调色板;

4:位图数据,这部分的内容根据bmp位图使用的位数不同而不同,在24位图中直接使用rgb,而其他的小于24位的使用调色板中颜色索引值。对应的数据结构

1:bmp文件组成

bmp文件由文件头、位图信息头、颜色信息和图形数据四部分组成。

图像文件头

1)1-2:(这里的数字代表的是“字”,即两个字节,下同)图像文件头。

0x4d42=’bm’,表示是windows支持的bmp格式。(注意:查ascii表b 0x42,m0x4d,bftype 为两个字节,b为low字节,m为high字节所以bftype=0x4d42,而不

是0x424d,但注意)2)3-6:整个文件大小。4690 0000,为00009046h=36934。

3)7-8:保留,必须设置为0。4)9-10:保留,必须设置为0。

5)11-14:从文件开始到位图数据之间的偏移量(14+40+4*(2^bibitcount))。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。

位图信息头

6)15-18:位图图信息头长度。

7)19-22:位图宽度,以像素为单位。8000 0000,为00000080h=128。

8)23-26:位图高度,以像素为单位。9000 0000,为00000090h=144。

9)27-28:位图的位面数,该值

总是1。0100,为0001h=1。

10)29-30:每个像素的位数。有1(单色),4(16色),8(256色),16(64k色,高彩色),24(16m色,真彩色),32(4096m色,增强型真彩色)。1000为0010h=16。

11)31-34:压缩说明:有0(不压缩),1(rle 8,8位rle压缩),2(rle 4,4位rle压缩,3(bitfields,位域存放)。rle简单地说是采用像素数+像素值的方式进行压缩。t408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。12)35-38:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于(≥位图宽度的最小的4的倍数)×位图高度×每个像素位数。0090 0000为00009000h=80×90×2h=36864。

13)39-42:用象素/米表示的水平分辨率。a00f 0000为0000 0fa0h=4000。

14)43-46:用象素/米表示的垂直分辨率。a00f 0000为0000 0fa0h=4000。

15)47-50:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。

16)51-54:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。彩色板

17)(55+0)到(50-1+2^bibitcount):彩色板规范。对于调色板中的每个表项,用下述方法

来描述rgb的值: 1字节用于蓝色分量 1字节用于绿色分量 1字节用于红色分量

1字节用于填充符(设置为0)对于24-位真彩色图像就不使用彩色板,因为位图中的rgb值就代表了每个象素的颜色。

如,彩色板为00f8 0000 e007 0000 1f00 0000 0000 0000,其中:

00f8为f800h = 1111 1000 0000 0000(二进制),是蓝色分量的掩码。

e007 为 07e0h = 0000 0111 1110 0000(二进制),是绿色分量的掩码。

1f00为001fh = 0000 0000 0001 1111(二进制),是红色分量的掩码。

0000 总设置为0。

将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储器(同样要反序),就可以转换为24位标准bmp格式

了。图像数据阵列

18)55(无调色板)-bfsize:每两个字节表示一个像素。阵列中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。

存储算法

bmp文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。例如,一个800×600的24位几乎占据1.4mb空间。因此它们通常不适合在因特网或者其它低速或者有容量限制的媒介上进行传输。根据颜色深度的不同,图像上的一个像素可以用一个或者多个字节表示,它由n/8所确定(n是位深度,1字节包含8个数据位)。图片浏览器等基于字节的ascii值计算像素的颜色,然后从调色板中读出相应的值。更为详细的信息请参阅下面关于位图文件的部分。n位2n种颜色的位图近似字节数可以用下面的公式计算:bmp文件大小约等于 54+4*2的n次方+(w*h*n)/8,其中高度和宽度都是像素数。需要注意的是上面公式中的54是位图文件的文件头,是彩色调色板的大小。另外需要注意的是这是一个近似值,对于n位的位图图像来说,3 [1] 尽管可能有最多2n中颜色,一个特定的图像可能并不会使用这些所有的颜色。由于彩色调色板仅仅定义了图像所用的颜色,所以实际的彩色调色板将小于。如果想知道这些值是如何得到的,请参考下面文件格式的部分。由于存储算法本身决定的因素,根据几个图像参数的不同计算出的大小与实际的文件大小将会有一些细小的差别。源代码:

`timescale 1ns/100ps module transport;parameter longsize=65554;reg [24:1] meme[longsize:1],b;

integer e,m,n,i,j,w,clk;

always@(*)begin initial fork begin w=$fopen(“”,“rb”);

e=$fread(meme,w);

$fclose(w);end always #50 clk=~clk;

join always begin

m=$fopen(“”);

n=0;

always@(posedge clk)

begin repeat(18)begin

n=n+1;b=meme[n];

$fwrite(m,“%h”,b);

end end

always@(posedge clk)

begin

for(j=0;j<=255;j=j+1)for(i=1;i<=256;i=i+1)

begin n=18+256*i-j;b=meme[n];

$fwrite(m,“%h”,b);end end

$fclose(m);

end

end endmodule

仿真后objects中的数值:

仿真后波型:

中的数值:

使用到的软件:

在winhex中的数值:

原图

经verilog转换后的图:

设计说明书: 首先用$fread系统任务将bmp图片的二进制代码读入存储器meme中;由initial子语句产生clk时钟信号;由于读出的二进制代码的前54个字节是bmp位图的基本代码,因此在对图片进行翻转时前54个字节的位置不变。由于文件格式为256*256*24bit文件,所以后面为256*256个像素,每24位代表一个像素,因为bmp文件的数据是从左到右,从下到上的。也就是说,从文件中最先读到的是图象最下面一行的左边第一个象素,然后是左边第二个象素??接下来是倒数第二行左边第一个象素,左边第二个象素??依次类推,最后得到的是最上面一行的最右一个象素。所以要实现图片的顺时针旋转应该把meme中像素逆时针旋转90

度。

其次,中。然后用for语句在每一个clk信号上升沿来临时把翻转后256*256

中。

文件即可得到翻转

后的图片。李贝大作业工作总结

这次的大作业对我们每一个人都是一个挑战,以前,我们学得知识很死,总不会学以致用,每天都感觉无所事事。通过这次大作业的完成,锻炼了自己的解决问题能力。

刚接触这个大作业的时候,给人一种很高端的感觉,但也意味着一切都待从头开始,首先就是对bmp文件的理解,经过大量的查阅资料,知道了bmp文件的构成,了解了对于256*256*24bit文件,其大小应该为256*256*3+54=196662字节;自此豁然开朗;对于bmp文件和2进制之间转化的问题,经过许多曲折,终于得到了winhex,经过亲手应用,逐渐掌握了这个软件,完成了2进制与bmp文件之间的转化;在编写程序时,同样遇到了很大的阻力,感觉课堂上学的东西完全不够用,通过自己以及团队对verilog语言的进一步学习,知道了其系统函数$fread可以从bmp文件中读取二进制数字,在对时钟信号处理时,对周期的大小也进行了考虑,通过这次大作业,使我更加熟悉了硬件描述语言,对modelsim这款软件的操作也更加熟练啦,懂得了团队合作的重要性!总之,收获很大!

冷健大作业工作总结

终于完成了这次verilog大作业。在完成大作业的过程中,我们小组遇见了不少的难题。遇到很多不会的东西,但是通过我与小组队员的通力合作,通过请教专业的同学,通过上网 7 搜索资料。我们还是完成了。虽然有点不尽如人意。通过这次的大作业,让我们更加深刻的了解了合作的意义。组员之间相互合作,那就无论什么困难都可以解决。这就是团队力量的重要性。还有一点感想就是打铁还需自身硬。自己没有点真功夫是不行的。所以平时一定要多积累,多看书,平时多看书,那么实际生活中就多一条解决途径。就可以少走些弯路,少吃些苦。?还有一点,我们需要仔细和耐性,由于在编写程序的过程中,有一些疏忽和遗漏,总是个别字符出错或者符号出错。回头又得花时间去检查去纠正。所以就必须特别强调细心

和耐心。以上就是我的心得。解海洋大作业工作总结

在这次的大作业,使我懂得了,知识与实践动手能力的不同,虽然经过一段时间的verilog的学习,对语法知识有一定的了解,但真正要自己动手还是有所能力的欠缺。而且还不知道从何入手,还是参考了前辈一些经验,知道了怎么做,按什么顺序做。首先了解bmp位图的格式,还要想到怎么把图读进去等等很多的问题。不过在这次的锻炼中,我对verilog语言有了更深的理解,同时也学到小组合作的精神。

王玉斌大作业工作总结

这次verilog大作业是四个人一起完成的作品,在这次大作业中学到了很多,虽然有些地方和老师的要求,但是在考试的紧张复习中还是完成了大作业。让我学到了很多关于verilog图像相位的知识,对于以后的学习有很大帮助。

在完成作业过程中遇到了很多困难:

首先,我们不知道bmp图片能直接转换为二进制代码,后来跟同学交流了解了可以直接转换为二进制代码,bmp图片输入的时候出现了输入不进去的问题。还有在处理256*256的图片时,我们误认为把一张图片压缩成256*256就可以,后来才发现是剪切,二不是压缩,这样导致后来读出的文件中含有不确定值x。

其次是起初我们仿真不出波形,开始不知道从何下手,通过我们共同努力,从网上,课本,资料查找,发现我们的仿真时间选择过小。导致波形无法显示,最后增大了仿真时间,得到

了波形。

最后,个人觉得有些地方用matlab可以更简便,比如把程序直接导入matlab函数中,方便以后调用。总之,大作业的成功是我们四个人共同努力的成果,让我们学到了很多课堂上没学到的东西,同时也遇到了很多困难,也有很多分歧,但是最终在一起的努力下我们完成大

作业。

上一篇: 2023年班级应战书霸气大全(五篇) 下一篇: 最新企业审核流程(5篇)

分类导航

最新范文

最新作文