我是靠谱客的博主 单纯鼠标,最近开发中收集的这篇文章主要介绍FPGA调试技巧:将仿真图像数据输出到TXT或者输出成为BMP文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

导言:在调试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等。下面介绍两种方法:

  • 1.软件 图像显示上位机
    这是之前上传的,现在积分有点贵。

  • 2.Ptyhon

需要下载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))#换成你图像尺寸, 在程序目录会输出图像

最后

以上就是单纯鼠标为你收集整理的FPGA调试技巧:将仿真图像数据输出到TXT或者输出成为BMP文件的全部内容,希望文章能够帮你解决FPGA调试技巧:将仿真图像数据输出到TXT或者输出成为BMP文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部