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

被折叠的 条评论
为什么被折叠?



