首页 > 编程语言 >14 fdma数据通路加入sobel算法IP方案

14 fdma数据通路加入sobel算法IP方案

时间:2023-12-27 19:56:46浏览次数:34  
标签:视频 14 sobel 数据通路 像素 图像 uifdma 通道 dbuf

软件版本:VIVADO2021.1

操作系统:WIN10 64bit

硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA

登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!

1概述    

本文实验目的:

1:掌握2个uifdma_dbuf IP的同时使用,以及读写通道之间的同步设计

2:实现1路数据实时显示,1路数据实时sobel计算通过uifdma_dbuf+fdma3.1保持到内存中。

3:掌握uifdma_dbuf IP stride参数的设置,实现一个屏幕实时显示当前摄像头视频以及实时计算的sobel视频

4:掌握图像处理中多通道读写的多缓存机制

2系统框图

本系统中通过milianke uifdma_dbuf ip的写通道将摄像头采集到的数据通过AXI intercomment 写入DDR3,同时使用milianke uifdma_dbuf ip的读通道读取DDR3中的视频数据通过HDMI接口输出至显示屏。

为2个输入图像在一个显示器输出,而不出现撕裂,关键就是在于uifdmadbuf的同步机制,这里让uifdmadbuf1的wbuf_sync_o作为同步信号,分别给uifdmadbuf1的读和写通道,以及uifdmadbuf2的写通道使用。uifdmadbuf2的读通道没有使用。

将其中一路数据进行soble计算,为了完成sobel计算,RGB565 to RGB888输出的de信号不是连续的,需要通过uirgbfifo转换成连续的de信号。

3硬件电路分析

配套工程的 FPGA PIN 脚定义路径为 fpga_prj/uisrc/04_pin/ fpga_pin.xdc。

 

4基于图形化的逻辑设计

4.1:帧同步设计

对于多路视频传输的场合,需要正确设置同步。 uifdma_dbuf0的写通道输出帧同步计数器直接接入

uifdma_dbuf0,uifdma_dbuf1的写通道同步计数输入。uifdma_dbuf0的读通道,延迟1帧于uifdma_dbuf0的写通道帧计数器。

4.2:多路视频的同屏显示原理

以把2个摄像头CAM0和CAM1输出到同一个显示器上为列,为了把2个图像显示到1个显示器,首先得搞清楚以下关系:

hsize:每1行图像实际在内存中占用的有效空间,以32bit表示一个像素的时候占用内存大小为hsize*4

hstride:用于设置每行图像第一个像素的地址,以32bit 表示一个像素的时候v_cnt* hstride*4

vsize:有效的行

 

因此很容易得出cam0的每行第一个像素的地址也是v_cnt* hstride*4

同理如果我们需要把cam1在hsize和vsize空间的任何位置显示,我们只要关心cam1每一行图像第一个像素的地址,可以用以下公式v_cnt* hstride*4+offset

 

这里2个通道的640*480分辨率视频,在同一个1280*720的视频输出显示。VIDEO1没有进行soble计算的原始图像在左上角,VIDEO2是计算后的图像在右下角。

uifdma_dbuf支持stride参数设置,stride参数可以设置输入数据X(hsize)方向每一行数据的第一个像素到下一个起始像素的间隔地址,利用stride参数可以非常方便地摆放输入视频到内存中的排列方式。

VIDEO1的start addr1=0x01000000(第一个图像的起始地址对于PL DDR可以从0地址开始,低于PS DDR建议偏移20MB)

VIDEO2的start addr1=0x01000000+(640-480)*1280*4+(1280-640)*4

下面重点看下uifdma_dbuf的设置。

4.3:uifdma_dbuf_0的配置

4.4:uifdma_dbuf_1的配置

这里是把摄像头的输出分辨率设置为640*480,并且把相同的摄像头数据分别输入到uifdma_dbuf0和uifdma_dbuf1的写通道。输出到显示器的分辨率为1280*720

4.5:地址空间分配

5 硬件连接

6 实验结果

标签:视频,14,sobel,数据通路,像素,图像,uifdma,通道,dbuf
From: https://www.cnblogs.com/milianke/p/17931295.html

相关文章

  • [LeetCode Hot 100] LeetCode144. 二叉树的前序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归代码:额外写一个函数voidpreOrder(TreeNodenode,Listres)迭代代码:会用到数据结构——栈。先入栈当前节点的右子节点,再入栈左子节点。方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*......
  • [LeetCode Hot 100] LeetCode145. 二叉树的后序遍历
    题目描述思路递归:额外写一个函数voidpostOrder(TreeNodenode,Listres)迭代:前序遍历:根---左---右将前序遍历改造成:根---右---左然后反转根右左为:左---右---根,即为后序遍历优化一下:while(!stack.isEmpty()){ TreeNodenode=stack.pop(); res.addFirst(node.......
  • OSPF GR(第14个实验)
    1、GR的作用技术保证了设备再重启过程中转发层面能过继续知道数据转发,同时控制层面邻居关系的重建以及路由计算等动作不会影像转发层面的功能,从而避免了路由震荡引发的业务中断,保证了关键业务的数据转发,提高了整个网络的可靠性。2、GR增加了Type9OpaqueLSA关键参数(TLV类型Typel......
  • 14-Mysql主从复制
    一、mysql复制原理1.1主从复制原理过程从库的I/Othread线程会读取masterinfo文件获取主库的user,passwordport信息然后还会获取上次获取主库二进制日志的位置如3640就是00003这个文件640这个位置,主库收到从库的请求后,会验证用户名密码等的合法性,然后问主库你有没有......
  • 14通道自动灵敏度校准低功耗电容触摸传感器芯片Si314
    刷卡解锁、一步开门、远程监测、遇到风险自动宣布警报、智能联动等人们关于门锁各种看似遥不可及的梦想,因为智能锁的呈现一一变成实际。由于智能门锁的不断进化,人们关于智能家居也有了更多梦想和期待。将触摸屏引入智能门锁交互,让用户在智能锁的体会上更安全、更便利、更个性化。......
  • 2.3T NPU强势登场!NXP i.MX 8M Plus开启工业新篇章,14纳米!
            更多产品详情以及购买咨询可添加如下客服人员微信 (即刻添加,马上咨询) 更多i.MX8MPlus产品资料可长按二维码识别下载如需选购,请登录创龙科技天猫旗舰店:tronlong.tmall.com!欢迎加入i.MX8MPlus技术交流群:1064661665......
  • 14.并列句-考点分析-长难句分析
    长难句分析——在分析长难句的时候只要见到有并列连词的出现通常会有省略;分析长难句第二步找连词,翻译把省略补齐在翻译。但是当连词连接2个单词时当做每看见。eg.Iwasbeatenandyou(werebeaten是省略的部分).如何查找省略的内容呢?——一句话只要有省略,就一定省略在连......
  • 14-STM32F103+ESP8266+EC800K(移远4G Cat1)--STM32+EC800K以SSL单向认证方式连接MQTT
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明安装的M......
  • CF1914F Programming Competition 贪心原则的DP?
    终于理解了...希望写给小伙伴们,希望大伙可以理解。先确定贪心规则,即当最大子树不超过根子树减一的一半时,内部节点可以完全匹配。否则,可以先拿其他子树节点与最大子树内部节点匹配,子树内部再进行匹配。啥你说子树内部不够匹配怎么办?可以这么想,你这样都到匹配上限了,已经完全可以达......
  • day21 Prometheus Operator优化配置 -Prometheus Operator自定义监控对象(7.13-7.14)
    7.13-PrometheusOperator优化配置1、数据持久化1.1prometheus数据持久化默认Prometheus和Grafana不做数据持久化,那么服务重启以后配置的Dashboard、账号密码、监控数据等信息将会丢失,所以做数据持久化也是很有必要的。原始的数据是以emptyDir形式存放在pod里面,生命周期与po......