modelsim 仿真bmp图片实现RGB_YCrCb

用modelsim_se软件仿真bmp图片,可在modesim中实现一些图片处理算法和查看效果

本文以最简单的仿真一副bmp图像为例,实现RGB_YCrCb的modelsim仿真,带源工程

1、先在本地建立文件夹

2、首先打开moselsim

3、新建库和新建项目,保存到建立的文件夹里面

4、把设计文件,tb文件加入项目中(自己新建文件敲代码也可以)

5、编译文件(complile all),查找错误,修改bug

6、点击simulate --> start simulation--->点击Libraies -->   add...

这一步是将项目中所需要的库加入进去,选择设计的库路径即可,比如设计文件所在的路径,还有依赖的设计文件的路径,比如altera_mf.v所在的路径

点击ok   ---->cancel

7、再点击simulate --> start simulation,找到库中的tb文件, 

如果没在work库中找到tb文件,可以在自己建立的库中找一下,没找到会出现如下错误,这时可以重新新建一个库再simulation

8、仿真成功

添加波形

9、设计时间,点击run即可

代码解析

tb文件

代码中需要把bmp图片  转化成    rgb数据格式带有行场信号的信号,经过图像处理算法后再转化成bmp图片,以下是bmp图片的读取和结果图片的写入

initial begin
	iBmpFileId = $fopen("D:\\study\\fpga\\modelsim_save\\img_gray\\PIC\\1_Jing_J66819.bmp","rb");
	//640 * 480图片
	//将输入BMP图片加载到数组中  
	//rBmpData 读出是按字节为单位
	iCode = $fread(rBmpData,iBmpFileId);
	/*
		BMP文件头共14字节;BMP信息头共40字节;剩余部分为图像数据640 * 480 * 3(字节)
		第18-21字节存图片宽度,大端存储模式
		第22-25字节存图片高度
	*/
	
	//根据BMP图片文件头的格式,分别计算出图片的 宽度 /高度 /像素数据偏移量 /图片字节数
	iBmpWidth       = {rBmpData[21],rBmpData[20],rBmpData[19],rBmpData[18]};
	
	iBmpHight       = {rBmpData[25],rBmpData[24],rBmpData[23],rBmpData[22]};
	
	iBmpSize        = {rBmpData[ 5],rBmpData[ 4],rBmpData[ 3],rBmpData[ 2]};   
	
	iDataStartIndex = {rBmpData[13],rBmpData[12],rBmpData[11],rBmpData[10]};

	//关闭输入BMP图片
	$fclose(iBmpFileId);

	
	//打开输出BMP图片
	oBmpFileId_1 = $fopen("D:\\study\\fpga\\modelsim_save\\img_gray\\PIC\\output_file_1.bmp","wb+");

	//延迟13ms,等待第一帧图片处理结束
    #13000000  
	
	//输出第一张
	for (iIndex = 0; iIndex < iBmpSize; iIndex = iIndex + 1) begin
		if(iIndex < 54)
            Vip_BmpData_1[iIndex] = rBmpData[iIndex];
        else
            Vip_BmpData_1[iIndex] = vip_pixel_data_1[iIndex-54];
	end
	
	 //将数组中的数据写到输出BMP图片中    
	for (iIndex = 0; iIndex < iBmpSize; iIndex = iIndex + 4) begin
		rBmpWord = {Vip_BmpData_1[iIndex+3],Vip_BmpData_1[iIndex+2],Vip_BmpData_1[iIndex+1],Vip_BmpData_1[iIndex]};
		$fwrite(oBmpFileId_1,"%u",rBmpWord);
	end
	
	
	//关闭输出BMP图片
	$fclose(oBmpFileId_1);
	
	
	//打开输出的Txt文本
	oTxtFileId = $fopen("D:\\study\\fpga\\modelsim_save\\img_gray\\PIC\\output_file.txt","w+");

	
	//输出特征值
	/*
	for(i=0;i<8;i = i + 1)begin
		for(j=0;j<8;j = j + 1) begin
			//$fdisplay(oTxtFileId,"%b",char_feature[i][7-j]);
			$fdisplay(oTxtFileId,"%b",char_feature[i][j]);
		end
		$fdisplay(oTxtFileId,"\n");
	end
	*/
	
	//将数组中的数据写到输出Txt文本中
	$fwrite(oTxtFileId,"%p",rBmpData);
	
    //关闭Txt文本
    $fclose(oTxtFileId);
	
end 

完整项目如下

https://download.csdn.net/download/eachanm/89107717

相关推荐

  1. FPGA | Modelsim仿真

    2024-04-10 08:56:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 08:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 08:56:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 08:56:03       82 阅读
  4. Python语言-面向对象

    2024-04-10 08:56:03       91 阅读

热门阅读

  1. Linux journalctl命令详解

    2024-04-10 08:56:03       27 阅读
  2. 设计模式|单例模式(Singleton Pattern)

    2024-04-10 08:56:03       36 阅读
  3. TCP重传机制总结

    2024-04-10 08:56:03       32 阅读
  4. 课时90:流程控制_函数进阶_数组传递

    2024-04-10 08:56:03       36 阅读
  5. MongoDB聚合运算符:$mod

    2024-04-10 08:56:03       34 阅读
  6. mac电脑如何python版本回退

    2024-04-10 08:56:03       28 阅读