modelsim 仿真bmp图片实现RGB_YCrCb

news2024/11/26 11:50:50

用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逐行讲解python实现A*路径规划

目录 搜索步骤关键点开集合和闭集合复杂度优化 代价父节点替换 距离地图设置 完整代码备注 搜索步骤 A*路径规划是一种广度优先搜索算法&#xff0c;需要在栅格地图上进行搜索。其主要搜索步骤如下&#xff1a; 得到栅格地图&#xff0c;确定起点和终点位置&#xff1b;计算起…

Vue项目打包配置生产环境去掉console.log语句的方法

一、Vue2项目 使用webpack内置的 terser 工具&#xff0c;在vue.config.js文件加上相应的配置即可。 二、Vue3项目 同样是使用 terser 工具&#xff0c;不过vite没有内置terser&#xff0c;需要手动安装依赖 安装完后在vite.config.js文件加上相应的配置即可。 2024-4-9

深挖抖快近2000个品类,我们发现了10万亿“她经济”的新商机!

在这个数字化时代&#xff0c;女性消费力量正以前所未有的速度崛起。根据埃森哲数据显示&#xff0c;我国现有近4亿20岁-60岁的女性消费者&#xff0c;其每年所掌握的消费支出高达10万亿元&#xff01; 面对庞大的“她经济”市场&#xff0c;专属于女性的三八妇女节&#xff0c…

【Python系列】读取 Excel 第一列数据并赋值到指定列

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

米多论文方便吗 #经验分享#经验分享

米多论文是一款专业的论文写作、查重和降重工具&#xff0c;被广泛认可为高效、靠谱、方便的软件。无论是学生、科研人员还是教师&#xff0c;都可以从中受益匪浅。 首先&#xff0c;米多论文拥有强大的查重功能&#xff0c;可以帮助用户快速检测论文中的抄袭内容&#xff0c;提…

openGauss 5.0 单点企业版部署_Centos7_x86(上)

背景 通过openGauss提供的脚本安装时&#xff0c;只允许在单台物理机部署一个数据库系统。如果您需要在单台物理机部署多个数据库系统&#xff0c;建议您通过命令行安装&#xff0c;不需要通过openGauss提供的安装脚本执行安装。 本文档环境&#xff1a;CentOS7.9 x86_64 4G1…

人社大赛算法赛题解题思路分享+季军+三马一曹团队

团队成员介绍: 梅鵾 上海交通大学 众安科技 算法工程师 吴栋梁 复旦大学 众安科技 算法工程师 李玉娇 复旦大学 众安科技 算法工程师 一、赛题背景分析及理解 本赛题提供了部分地区2016年度的医疗保险就医结…

最新剧透前沿信息GPT-5或将今年发布

GPT2 很糟糕 &#xff0c;GPT3 很糟糕 &#xff0c;GPT4 可以 &#xff0c;但 GPT5 会很好。 PS:GPT2 很糟糕,3 很糟糕,4 可以,5 很可以。 如果想升级GPT4玩玩&#xff0c;地址 今年发布的具有推理功能的 GPT5不断发展&#xff0c;就像 iPhone 一样 Sam Altman 于 17 日&am…

SD-WAN在金融行业的重要性

金融行业的数字化转型已成为当今的主要趋势&#xff0c;而软件定义广域网&#xff08;SD-WAN&#xff09;作为金融机构网络架构的新宠&#xff0c;其地位日益凸显。随着金融业务的日益复杂化和网络连接需求的不断增长&#xff0c;SD-WAN的优势愈发显著。本文将深入探讨SD-WAN在…

鲸鱼优化算法(Whale Optimization Algorithm)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法背景 鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是一种模拟鲸鱼捕食行为的优化算法。想象一下&#xff0c;你…

java中使用雪花算法(Snowflake)为分布式系统生成全局唯一ID

&#xff08;全局唯一ID的解决方案有很多种&#xff0c;这里主要是介绍和学习Snowflake算法&#xff09; 什么是雪花算法&#xff08;Snowflake&#xff09; 雪花算法&#xff08;Snowflake Algorithm&#xff09;是由Twitter公司在2010年左右提出的一种分布式ID生成算法&…

参加2023 甲骨文圆桌会议

2023年10月13日&#xff0c;我参加了2023 甲骨文圆桌会议&#xff0c;并做了《Oracle高可用架构的最佳实践》主题演讲。 照片为当时活动现场&#xff1a;

中霖教育:2024年注册计量师考试报名即将开始!

2024年注册计量师考试报名即将开始&#xff0c;时间定于4月中旬左右。对于考生来说&#xff0c;以下需要注意&#xff1a; 1、报名 考生需要在人事考试网站进行用户信息注册&#xff0c;在成功注册后&#xff0c;才能进一步进行报名操作。注册信息包括用户基本信息&#xff1…

【案例分享】如何通过甘特图管理项目进度?

我将通过一个实际案例来具体说明我是如何通过甘特图来管理项目进度的。 案例背景&#xff1a; 我负责过一个软件开发项目&#xff1a;一款在线学习APP。项目团队包括项目经理、开发人员、测试人员、UI设计师等多个角色&#xff0c;预计项目周期为6个月。 案例实施过程&…

Three.js--》实现2D转3D的元素周期表

今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&#xff0c;话不多说直接开始。 目录 项目搭建 平铺元素周期表 螺旋元素周期表 网格元素周期表 球状元素周期表 加底部交互按钮 项目…

C语言操作符详解(二)

一、位操作符 & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 注意&#xff1a;它们的操作数必须是整数。 下面的码我都只取了后八位 1.1、按位与 使用补码进行按位与 规则:对应二进制位有0就是0,两个同时为1才为1. 1.2、按位或 使用补码进行按位或 规则:对应二进…

Windows内核是什么,如何保障内核安全

Windows操作系统发展到如今已有三十余年&#xff0c;是目前在全球范围内广泛使用的操作系统。Windows内核是操作系统的核心部分&#xff0c;内核包括了HAL(硬件抽象层)&#xff0c;设备驱动&#xff0c;微内核&#xff0c;各种管理设备&#xff0c;管理层以及系统服务界面&…

【优选算法专栏】专题十六:BFS解决最短路问题(二)

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

OpenHarmony实战:瑞芯微RK3566移植案例(下)

OpenHarmony实战&#xff1a;瑞芯微RK3566移植案例&#xff08;下&#xff09; OpenHarmony实战&#xff1a;瑞芯微RK3566移植案例&#xff08;中&#xff09; WIFI 整改思路及实现流程 整改思路 接下来熟悉HCS文件的格式以及"HDF WIFI”核心驱动框架的代码启动初始化…