FPGA调试技巧:将仿真图像数据输出到TXT或者输出成为BMP文件

本文介绍了在FPGA调试中如何将图像数据导出并显示。提供了两种方法:1) 直接在testbench中转换为bmp图像;2) 输出TXT数据然后使用Python转换。对于TXT输出,文章修复了原始代码中未关闭文件的问题,并给出了Python读取和转换TXT数据到bmp图像的示例。此外,还分享了在MATLAB和Python中显示图像的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导言:在调试FPGA做图像数据的时候,希望将图像数据导出,在电脑上显示,有助于调试代码。有两种方法:

  • 1.直接在testbench中处理,将数据转换成为bmp图像;
  • 2.将图像数据在testbench中输出到TXT中。

方法1:输出bmp图像格式

fpga实现sobel边缘检测modelsim仿真代码
参考大磊FPGA的这个代码(我设置的是0积分下载,放心食用),他代码里面有这个功能。

方法2:输出TXT图像数据,接着将16进制的txt图像数据转成图像

参考网址:Testbench编写指南(2)文件的读写操作
我用的是第二段代码,这段代码不足的是没有关闭文件操作,所以当输出数据输出完成后,但是你打开TXT文件,数据是缺失的!需要你把FPGA开发软件(比如我是用vivado)关了,他才会填充补满。这就很操蛋了,一直要开关vivado。下面是加了fclose的代码,简单来说在它的基础上添加一个信号去出发fclose:

integer file_out;
initial
begin
    file_out = $fopen("D:\\......目录\\output_file.txt","w+");//记得用\\分开
    if (!file_out) begin
        $display("can't open file");
        $finish;
    end
end            

reg data_en_delay;
wire data_en_neg;

always @(posedge hdmi_clk) begin
	data_en_delay <= data_en;
end

assign data_en_neg= (~data_en) & data_en_delay ;

//data_en为href行有效信号,当en=1时候,输出image_data,你的图像数据
always @ (posedge hdmi_clk) begin  
	if(data_en) begin
		$fdisplay(file_out, "%h", image_data);//将数据写到TXT文件中,并且自动换行
		
	end
end

always @ (posedge hdmi_clk) begin  
	if(data_en_neg == 1'b1) begin
		$fclose(file_out);
	end
end

获得图像数据后,要显示图像,方法就很多了,可以通过matlab, python等。下面介绍两种方法:

需要下载opencv, numpy

import cv2
import numpy as np

a = np.loadtxt('image_data.txt', converters={_:lambda s: int(s, 16) for _ in range(1)})
cv2.imwrite("image_data.bmp", a.reshape(64,64))#换成你图像尺寸, 在程序目录会输出图像

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值