sobel算法的Soc FPGA实现之框架分析(二)
重点分析一、AXI_VDMA_1
之前一直认为这个就是内含有DDR的ip核(......最近才搞懂是个啥),后来经过对FDMA的分析发现这就是个框架,通AXI总线挂载到bus总线,可以实现PL端FPGA代码直接读写PS侧的DDR。
几个关键的AXI(AXIS)总线接口:
(1)、S_AXI_LITE接口:该接口收到ZYNQ核和GP总线控制,M_AXI_GP接口通过AXI-Lite总线控制VDMA的配置
(2)、M_AXIS_MM2S接口:本接口将从DDr中读取的数据发送到sobel处理ip
(3)、M_AXIS_S2MM接口:该接口接收sobel处理ip核的输出数据流
(4)、M_AXI_S2MM接口:该接口将数据输出到ZYNQ处理器,然后数据可以刷入DDR
(5)、M_AXI_MM2S接口:该接口接收来自DDR的像素数据
学习完FDMA之后,对VDMA才有了一个初步的了解,VDMA就是通过AXI(AXIS)总线挂载到总线的典型应用,M_AXI_MM2S接口接收到来自ps侧DDR的像素数据,然后通过M_AXI_MM2S将数据发送到sobel ip核,ip对图片数据进行处理后进行将数据转换为AXI_STREAM格式,可以在上一篇博文中看到,输出数据通过S_AXIS_S2MM进入VDMA,然后,由于在VDMA中设置的是三帧缓存,这三帧数据并不是在VDMA中缓存的,是在DDR中进行缓存。那么VDMA与三帧数据的关系是什么?参考FDMA中的设计,CDMA就是对输入数据设计了一个标志位flag,保证有三帧数据传送到DDR进行缓存。数据通过M_AXI_MM2S接口进入DDR。
那么,AXI_CONNECT1的作用中有一个S00_AXI的作用=是什么?可以看到该总线发出读请求,读取ps侧DDR缓存的像素数据。
其他分析二、AXI_VDMA
框架流程:就是将图像数据以二进制形式进行存储,ZYNQ通过AXI_GP接口对各个模块进行配置,将sobel处理的结构通过stream数据流发送到vdma0,再经过stream2video进行转换,将输出图像发送到HDMI核,video timing核的作用是进行时钟约束,其中HDMI的主时钟是74.25Mhz,除此之外还输入一个串转并数据时钟,为主时钟的5M:74.25*5Mhz。
复位管理单元的作用是将复位信号于时钟进行同步处理,所以主时钟连接到复位管理单元的同步时钟端,由ZYNQ产生的复位信号连接到ext_reset_in,就是extern外部复位信号输入。输出两个信号,一个信号用于专用于AXI总线互联模块,另一个用于模块以及AXI传输的复位信号。个人理解是这个peripheral_reset的作用是局部模块的复位信号,但是它好就好在与AXI_CLK同步,可以在AXI的局部传输中进行复位,AXI_CONNECT的总复位信号是interconnect_aresetn,在信号处理中,复位判断语句应该是(interconnect_aresetn||M02_ARESETN),此处的M02_ARESETN仅是用来举例,还可以是其他的复位信号
VDMA0为什么不用设置成可写呢?
因为数据通过MM2S仅可从GP来到VDMA0,然后经过三帧缓存之后从MM2S到stream视频流输出IP, 将HDMI核需要的信号给HDMI控制器,比较关键的一点是Video Out的vtg_ce,用于暂停时序发生器以达到同步的的目的。
最新文章
- composer--------------通过composer.json下载laravel包----barryvdh/laravel-debugbar
- wxPYTHON图形化软件开发(一)---LOMO工具箱
- 修改hive分区表,在分区列前增加一个字段
- Android深度探索HAL与驱动开发 第四章 源代码下载和编译
- Nodejs 请求转发代理
- mybatis like的用法
- AFN网络状态的时时监控以及网络的判断、
- 有直接运行的runas命令,XP就有
- leetcode:Isomorphic Strings
- c语言,strcat(),字符串拼接
- Delphi 停靠技术的应用
- 蓝桥网试题 java 基础练习 十六进制转八进制
- iptables 初见 第一章
- 是否可从一个static方法内发出对非static方法的调用?
- 一个简单的MapReduce示例(多个MapReduce任务处理)
- Docker中查看Mysql数据库中的各环境参数
- 逻辑回归应用之Kaggle泰坦尼克之灾
- Linux查看使用端口的进程
- Centos6、7 PHP5.4 5.5 5.6安装
- elasticsearch聚合案例--分组、求最大值再求最大值的均值
热门文章
- overload(重载) 和 override(重写)的区别
- 【JavaScript】数组方法之基础方法
- Linux学习-基于CentOS7的LAMP环境实现多虚拟主机
- HDU 6620 Just an Old Puzzle
- 三、angular7登录请求和路由带参传递
- Qt Creator 启动失败 可能的解决办法
- POJ	1434 Fill the Cisterns! (模拟 or 二分)
- 在ubuntu12.4上安装minigui3.0.12
- CMD模块打包部署总结
- Visual Studio新增类模板修改