FPGA + 图像处理(一)三种向zynq中DDR内导入图像数据的方法

这篇具有很好参考价值的文章主要介绍了FPGA + 图像处理(一)三种向zynq中DDR内导入图像数据的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要讲解三种本人已知的将图像数据传入ddr的方法(一些非图像数据也可以用),方便后续通过fpga对图像进行处理,在一些导入方法中,需要将图像转换成特定的格式,因此,需要用到matlab来实现图像的格式转换

0.图像数据

这里先展示一下用到的图像,是一个ai随机绘制的图像

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

1.通过SDK存入ddr

通过SDK将图像存入ddr需要将图像转为.bin格式,这种方法不但可以将外部数据导入ddr内,在对ddr内的数据处理完成后还可以导出到外部bin文件,便于后续对比观察,推荐这种方法

1.1格式转换

将图像转换成bin格式的matlab代码如下

clc;
clear all;
Image=imread('ai.jpg');

R=Image(:,:,1);
G=Image(:,:,2);
B=Image(:,:,3);
[row, col] = size(R);

fid = fopen('ai.bin','wb');

for i=1:row
    for j=1:col
      fwrite(fid,B(i,j));
      fwrite(fid,G(i,j));
      fwrite(fid,R(i,j));
    end
end
fclose(fid);

 1.2vivado工程

根据自己需求创建好vivado工程后,进入sdk

在Xilinx页面下的dump/restore data file选项内可以ddr内的数据导出或导入为bin文件

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

打开后先选择processor

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

 注意选择好文件后下方的dump memory和restore memory分别是导入和导出ddr数据,我们要导入数据,选择restore memory

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

 再下方设置开始存入数据的地址以及数据长度

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

点击确认后数据便成功存入ddr内

bin文件内的数据(只展示部分数据)

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

存入ddr内的数据 (只展示部分数据)

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

 这里注意如果数据存入后顺序不对,可能是大端小端显示方式的问题,可以通过memory页面内的new renderings选择不同的数据显示形式

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

2.通过SD卡存入ddr

先将图像导入SD卡,然后通过对SD卡的读取存入ddr内,详细操作请看本人主页内文章zynq板zedboard+SDK设计(一)读取SD中bmp图片存入DDR_EfunStudy的博客-CSDN博客

3.建立rom转存ddr

通过rom将图像存入ddr内需要将图像转为.coe格式,这种方法存入图像对内存要求较高,通常只能存入很小的图像,因此不太推荐这个办法。

3.1格式转换

将bmp图像转为coe格式的matlab相关代码如下

clc;
clear all ;
pic = imread('ai.bmp') ;
pic_size = size(pic);
h = pic_size(1);
w = pic_size(2);
R =pic ( : ,: ,1) ;
G =pic ( : ,: ,2) ;
B =pic ( : ,: ,3) ;

coeR = zeros(1,w*h) ;
coeG = zeros(1,w*h) ;
coeB = zeros(1,w*h) ;

image =  uint8(zeros(h, w, 3));

for i = 1:h
	for j = 1: w 
        coeR((i-1)*w+j) = bitand(R(i,j),255);
        coeG((i-1)*w+j) = bitand(G(i,j),255);
        coeB((i-1)*w+j) = bitand(B(i,j),255);     
    end
end

out = fopen('ai.coe','w+');
fprintf(out,'memory_initialization_radix=16;\nmemory_initialization_vector=\n');
for k = 1:w*h
      fprintf(out,'%02x%02x%02x,\n',coeR(k),coeG(k),coeB(k));
end
 
fclose(out);

3.2vivado工程

新建工程后新建block design

添加block memory generator核

首先将block memory设置成单口rom,控制模式可以根据自己需要选择

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

在other options页面内勾选load init file选项后就可以根据路径选择对应的coe文件zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

点击OK后将建立好了一个包含图像数据的rom,我们只需要将数据读到ddr内就可以了

添加zynq模块和bram controller

自动连线即可,最终结果如下zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

rom的地址如下

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

生成比特流并导出platform后打开sdk

sdk部分代码如下,只是很简单的数据搬运代码,将rom地址下的数据搬运到ddr内

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "xparameters.h"

int main()
{
	u32 i,data,ddr_add,rom_add;
	u32 ddr_base_add = 0x10000000;
	u32 rom_base_add = 0x40000000;
	for(i = 0;i < 60;i = i + 1){
	ddr_add = ddr_base_add + 4*i;
	rom_add = rom_base_add + 4*i;
	data = Xil_In32(rom_add);
    Xil_Out32(ddr_add,data);
	}

	printf("end");
	return 0;
}

通过debug内的内存检测我们可以看到,rom内的数据成功搬运到ddr内

rom内数据,从0x40000000地址开始(只展示部分数据)

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

 搬运后ddr内数据,从0x10000000地址开始(只展示部分数据)

zynq bin文件导入到ddr,FPGA  +  图像处理,fpga开发,嵌入式硬件,单片机

4.结语

介绍了三种比较基础的将数据存入ddr的方法,也不一定是图像数据,其他的数据也都可以按照这些方法导入ddr内,对于图像数据,通过sdk直接存入ddr内和通过sd卡读取还是比较便捷的,通过将数据初始化到rom内的方法限制较大,在导入图像数据后,因为三种方法的数据格式不同,要注意数据的使用方法。 文章来源地址https://www.toymoban.com/news/detail-770027.html

到了这里,关于FPGA + 图像处理(一)三种向zynq中DDR内导入图像数据的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZYNQ图像处理(6)——均值滤波和中值滤波

    首先要做的是最简单的均值滤波算法。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围 8 个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像

    2024年02月08日
    浏览(51)
  • ZYNQ图像处理项目——帧差法运动目标跟踪

    帧差法顾名思义就是对输入的前后两帧图像做差值,然后检测出两帧图像不同的地方,并且可以实时跟踪运动的目标轮廓。 本设计是基于ZYNQ7010和VIVADO2018.3实现的帧差法运动目标检测,针对运动目标检测算法在传统 PC端上实时性较差的问题,设计了一种基于 ZYNQ 硬件加速的运

    2024年02月07日
    浏览(73)
  • XILINX Zynq UltraScale+ MPSoC 在 4K 视频图像处理和会议系统的应用

        赛灵思 Zynq UltraScale+™ MPSoC EV 器件的 4K 视频处理功能。EV 器件具有继承的多标准视频编解码器,能够以 60帧/秒 的速度同步编码和解码。       Arm 四核 Cortex-A53 核以及集成的定制化的视频处理引擎,ZU7EV 器件可以作为多媒体应用方案的主控。        ZCU106 评估套件可作

    2024年02月01日
    浏览(71)
  • 图像处理 信号处理板 设计原理图:367-基于zynq XC7Z100 FMC接口通用计算平台

    基于zynq XC7Z100 FMC接口通用计算平台   板卡由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理,XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA,通过PL端FPGA扩展FMC、光纤、IO等接口,PS端ARM扩展网络、USB、RS232等接口。板卡适应于图像处理、震动、通信、雷达等前端信号

    2024年02月11日
    浏览(46)
  • Python图像处理的三种方法

     前言:最近在做微观电子器件的表面缺陷检测,用pyqt5做一个调用海康威视的gige接口的工业相机界面,官网上的代码是用的tkinter去做的界面,tkinter修改界面都是要在代码上进行修改有点麻烦,我在官网给的basicdemo.py上修改成pyqt的界面,后续可以直接用qtdesigner进行修改很方

    2024年02月16日
    浏览(46)
  • 2.matlab图像三种方法灰度值处理

    彩色图像 :每个像素由R、G、B三个分量表示,每个通道取值范围0~255。(通一个彩色图像是由三页组成的,分别是R、G、B,每一页都是一个二维矩阵) 灰度图像 :每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度。灰度值分布在0~255之间

    2024年02月15日
    浏览(45)
  • FPGA-图像处理-仿真

    任务 读入一张bmp图片,对图片进行灰度处理,二值化以及边缘检测(sobel算子),将处理后的数据写入bmp显示,全部过程以仿真形式。我这用的vivado。 在图像处理领域,要实现Sobel或者均值滤波等算法,则需要按照3*3矩阵的格式提取数据, 需要用到移位寄存器SHIFT RAM IP核。

    2024年02月02日
    浏览(41)
  • FPGA图像处理-灰度化

    用 verilog 实现彩色图像的灰度化算法,并进行 Modelsim 仿真。 图像处理操作中最简单的一类就是点操作,一个像素的输出只取决于输入图像的相应像素值。 RGB 转 GRAY 公式: GRAY = 0.299R + 0.587G + 0.114B 由于 FPGA 不方便小数运算,所以放大 256 倍进行运算,然后右移 8 位: GRAY = (

    2024年02月07日
    浏览(44)
  • FPGA应用于图像处理

    FPGA(Field-Programmable Gate Array)直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件,具有高度的灵活性,可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电路,是可编程的逻辑阵列,内部有基本的逻辑单元,可配置的逻辑

    2024年02月11日
    浏览(40)
  • 基于FPGA的图像灰度处理

            对于图像的灰度处理,原理与基于FPGA的图像反转相同,但算法不同。相交于基于FPGA的图像反转,基于FPGA的图像灰度处理操作时间由于FPGA的并行性,其处理时间与前者相同。虽然工作量大了4倍左右,但处理时间基本相同,在仿真中,仍在5.2ms完成了处理。凸显出

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包