没有合适的资源?快使用搜索试试~ 我知道了~
首页AXI Stream协议及视频流格式
资源详情
资源评论
资源推荐

AXI Stream 协议及视频流格式
关键的只有两根信号线,及 核 。 是主设备驱动的信号,表示
上的数据是有效的, 由从设备驱动,表示从设备下一个时钟到来时能够接收
数据。 的特点是这两个信号不存在互相等待的关系,及数据传输只发生再两者
均有效的时候,从而效率很高,可以认为是连续传输,避免了死锁的情况。
还有一些附加信号,通常是伴随再数据中传输,主要包括 ,, 等。
在标准流协议中表示一个数据包结束,伴随最后一个数据传出, 可以很多位,是
用户定义信号,用来表达用户自己需要传输的数据。 是字节修饰符,位数位数据宽度
,当总线数据某字节有效时, 对应位就为高。
所有与视频有关的 均遵循一套 视频流协议,其中对 与 赋予了
特殊的含义。视频流中除了数据以外,包好 和 信号,其中 用
表示, 用 表示。这两个信号均伴随像素数据传输,只保持一次有效传输的时
间, 和一帧第一个像素一起传出, 和一行最后一个像素一起传输。视频流中有时会
加入 信号,无特殊情况时需全部拉高。
二、 的详细讲解和使用
、 核配置界面
上面图片就是在 !"# 中例化 的界面,首先对参数做些介绍:
基本配置 高级配置
地址线宽度 是否使能异步模式(自动)
帧存数量 写通道帧同步
是否使能读写通道 写通道 $%& 模式选择
数据线宽度 写通道是否允许非对齐传输
触发长度 读通道帧同步
' 流数据位宽 读通道 $%& 模式选择

%() 深度 读通道是否允许非对齐传输
*():选择 缓存几帧图像,这里默认是写通道和读通道都设置相同的缓存帧
数,具体设置多少帧合适一般根据应用来定,比如读写带宽相同,想用 作为一个乒乓
+),那就可以设置成 帧,写第一个地址,读第二个地址,写第二个地址,读第一个地
址。这里面设置几帧,就要在 寄存器配置的时候设置几个帧起始地址。
,-:代表数据到达 # 总线上的位宽,比如这里设置成 .#,那就代
表 // 总线上的数据位宽是 .#+,这时候如果 上的数据是 0+,那 内
部会有一个带宽转换模块,把数据拼成 .#+。
(1: 总线上突发传输的长度,一般设置为 .
,-: 与 逻辑部分通过 协议交互数据,这里代表 数
据位宽
%()-: 内部会有一个行缓存 2, 数据会先写入 2,然后 总线
逻辑会读出到总线上,这个深度就代表 2 的深度。设置原则(个人理解):如果 总线
数据带宽是 总线数据带宽的 "! 倍以上,这个 2 深度可以设置的小一点,如果
总线带宽小于 "! 倍的 总线带宽,那 2 的深度至少要是图像一个有效行的一半。
&: 这里面只说一下 *&34,这个信号是什么意思呢,就是告诉 什么
时候开始运行,一般 通道选择 ,就是说在 拉高的时候开始传输。 通
道,可以选择 ,也可以选择 /&,这里介绍一下这两个的区别。
: 就是没有同步信号,但这并不是说没有开始信号,而是只要 / 通道
拉高,就开始传输,相当于 模式
/&:当这个信号发生一个下降沿的时候开始传输,如果没有这个下降沿,即使
/ 通道 拉高也不会传输
详细说明
对于 通道:之前在讲 配置的时候有一个 & 选项,里面有 *&34
选项,可选 ,/&,/,三种同步模式。
就是只要 就绪,就立马准备接收数据,不需要同步信号。
/&,当选择此。模式时,模块会有一个 /& 引脚,一般情况下是把
视频帧同步信号连到这上面,当检测到 /& 引脚有一个下降沿的时候, 正式
进入传输状态。
/,这个信号和 /& 这个信号类似,但他是在 协议里面的,
检测到 / 拉高以后( 只在一帧数据的第一个像素位置拉高),正式进入传输
状态
对于 通道,同样在 配置的 & 选项里面有 ,/& 两种选择
模式。
不需要同步信号,只要 / 通道的 拉高,就开始从 读取数据进行传
输,选择这种模式一般主要是把 里面的数据读到 里面进行处理,而不是转成视频
/&,选择此同步模式,一般是把 的数据转成视频数据,注意,这里重点讲这
个同步模式,当 的读通道选择此同步模式的时候, 模块会有一个 /&
信号,这个信号在读操作中非常重要。当 寄存器配置完成并开启传输, 通道进
入等待过程,一直等到 引脚信号出现一个下降沿,这时候 启动读操作,会从
预读一些数据到内部 +),等到 / 通道的 信号拉高,数据就开始
传输,进入 模块的 2,当 内部 2 满了以后,会拉低 ,这时候
就会反馈到 ,暂停读操作,一直等到 模块的视频时序输入数据有效信号,

这时候视频开始输出, 内部 2 数据减少,/ 通道开始恢复传输,继续
从 读出数据, 再通过 总线从 读取数据,如此反复,完成 数据到
数据的转换
下面是接口介绍:
//: # 总线接口,用来与 交互数据
//5//: 接口,用来与 交互数据
//%67:控制总线,接到 的 8 口或者写一个 总线去配置
其他接口不做介绍
、为什么要使用
在讲解 之前,先来探讨一下为什么要学习和使用 ,以明确学习目的。由于使
用 可以方便地实现双缓冲和多缓冲机制,所以本小节引入了帧缓存和缓冲机制的概
念。另外, 可以很好地契合 9: 内部架构,缩短开发周期。再加上 本身能够
高效地实现数据存取,所以在基于 9:(也包括其他 *$)图像、视频处理系统中,
可谓是必不可少的。
0、帧缓存
缓冲存储器;*()<:简称帧缓存或显存,它是屏幕所显示画面的一个直接映象,又
称为位映射图;(<或光栅。帧缓存的每一存储单元对应屏幕上的一个像素,整个帧缓
存对应一帧图像。
在开发者看来,*()是一块显示缓存,往显示缓存中写入特定格式的数据就意味着
向屏幕输出内容。所以说 *() 就是一块画布,系统在画布上绘制好画面之后,就可
以通知显示设备读取 *() 进行显示了。
注意,笔者这里所说的 *() 和 % 的 *() 不是同一个概念,这里仅指显
示缓存(画布)本身,并不是 % 下的一个设备。
4、双缓冲机制
最早解释多缓冲区如何工作的方式,是通过一个现实生活中的实例来解释的。在一个阳光
明媚的日子,你想将水池里的水打满,而又找不到水管的时候,就只能用手边的木桶来灌
满水池。水桶满了之后,关掉水龙头,将水提到水池旁边,倒进去,然后走回到水龙头。
重复上述工作,如此往复直到将水池灌满。这就类似单缓冲工作过程,当你想将木桶里的
水倒出的时候,你必须关掉水龙头。
现在假设你用两个木桶来做上面的工作。你会注满第一个木桶然后将第二个木桶换到水龙
头下面,这样,在第二个水桶注满的时间内,你就可以将第一个木桶里面的水倒进水池里
面,当你回来的时候,你只需要再将第一个木桶换下第二个注满水木桶,当第一个木桶开
始注水的时候你就将第二个木桶里面的水倒进水池里面。重复这个过程直到水池被注满。
很容易看得到用这种技术注满水池将会更快,同时也节省了很多等待木桶被注满的时间,
而这段时间里你什么也做不了,而水龙头也就不用等待从木桶被注满到你回来的这段时间
了。
当你雇佣另外一个人来搬运一个被注满的木桶时,这就有点类似于三个缓冲区的工作原理
如果将搬运木桶的的时间很长,你可以用更多的木桶,雇佣更多的人,这样水龙头就会一
直开着注满木桶了。
在计算机图形学中,双缓冲是一种画图技术,使用这种技术可以使得画图没有(至少是减
少)闪烁、撕裂等不良效果,并减少等待时间。
双缓冲机制的原理大概是:所有画图操作将它们画图的结果保存在一块系统内存区域中,
这块区域通常被称作“后缓冲区(+&+))”,当所有的绘图操作结束之后,将整块区域

复制到显示内存中,这个复制操作通常要跟显示器的光栈束同步,以避免撕裂。双缓冲机
制必须要求有比单缓冲更多的显示内存和 => 消耗时间,因为“后缓冲区”需要显示内存,
而复制操作和等待同步需要 => 时间。
基于双缓冲机制可以实现页交换,页交换初始状态如下图所示:
如上图所示,此时由于处于初始状态,画图操作的结果都在后缓冲区中,而屏幕上显示的
则是前缓冲区中的内容。此时画图操作尚未完成,画图操作完成之后,页转换操作开始执
行,示意图如下图所示:
如上图所示,画图操作结束,下一个画图操作的结果保存对象指向前缓冲区,屏幕的显示
对象指向后缓冲区,此时前缓冲区变成实际意义上的后缓冲区,后缓冲区变成实际意义上
的前缓冲去,即实现“页交换”操作。
有时候也在页交换链中设置多个“后缓冲区”,这是就需要多缓冲区机制的支持。
!、9: 硬件架构
在 9: 芯片内部, 和 % 是共享 ? 控制器的。 访问 ? 十分简单,只要操作 ?
映射的虚拟地址即可。对于 % 而言,要接入 ?,必须通过 /@ 端口。
9: 共有四个 /@ 通道,通道数据宽度可以配置为 0 位或 .# 位,这些接口通过 **3
控制器连接 % 到存储接口上,其中有两条连接到 ? 存储控制器上,还有一条是连接到双
端口的 3= 上的,下图是 /@ 访问 ? 和 3= 的连接图。

由上图可以看出,/@ 接口也是遵循 协议的,因此利用 可以直接连接 @ 端口。
除了使用 ,当然也可以自己开发出符合 协议的 ,但是综合考虑设计成本,没太
有必要自己实现。此外,自己实现的 功能也不见得比 强大。
.、 的作用
数据接口可以分为读、写通道,用户可以通过写通道将 ' 类型的数据流写
入 ?0,通过读通道可以从 ?0 读取数据,并以 ' 类型的格式输出。由此可知,
本质上是一个数据搬运 ,为数据进、出 ?0 提供了一种便捷的方案。
将数据存入 ? 之后,=> 就可以进行一些处理(缩放、裁剪等),然后再送至显示设备,
达到期望的应用目的。当然,也可能是简单地对捕获的视频进行解析,将数据存入帧缓存
以供显示。
可以控制多达 0 个帧存,并可以自由地进行帧存切换,所以就能够轻松地实现双缓
冲和多缓冲操作。这也是一个很重要的特性,在后续进行系统设计的时候,通常是采用多
缓冲的方式实现显示。
A、 接口介绍
A"时钟和复位
各种总线都有自己的时钟信号,不用特别说明,需要指出的是,这些时钟是异步的,并不
需要用同一个时钟。但在设计过程中,如无特别需求,可以使用相同的时钟,以降低设计
难度。
同步复位信号 /,同步时钟为 ///&,低电平有效(至少要保持 . 个时钟
周期的低电平,才能够生效),有效时复位整个 核。
A" 总线相关信号
#'% 接口(//%67)
# 读接口(//)
# 写接口(//)
#' 主接口(//)
#' 从接口(//)
前缀 /、/分别表示 和 ;后缀 、 说明数据流向是从
剩余20页未读,继续阅读



















weixin_41496275
- 粉丝: 2
- 资源: 7
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- ABB机器人保养总结解析.ppt
- 【超详细图解】菜鸡如何理解双向链表的python代码实现
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- 基于单片机控制的DC-DC变换电路
- RS-232接口电路的ESD保护.pdf
- linux下用time(NULL)函数和localtime()获取当前时间的方法
- Openstack用户使用手册.docx
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论1