本文来自自学过程中所记的笔记,可能有不少错漏与胡言乱语,仅供参考,建议主要以ARM官方文件进行参考。原参考文档官网可下载,为了方便各位,我也上传了,需要的自取;
链接:https://pan.baidu.com/s/1voHyFmkpGqABcKH8OSF_Ng
提取码:izix
默认信号需求:
TREADY: 该信号有时可以被省略,但是建议添加;其缺省值为HIGH;从从机的角度考虑,如果能始终保持信号接收,则可以将其省略;从主机的角度说,省略这个信号意味着始终保持信号接受,且不能承受Back-Pressure;对主机而言,即使没有承受Back-Pressure的功能,也会被建议添加TREADY信号,这有助于标记传输错误的情况;
TKEEP与TSTRB: TKEEP和TSTRB都是可选信号,不是所有信号流都需要这两个信号;[如果要进行放大操作,且数据流不足以填满最大的一组,则必须使用TKEEP产生并标注空字节]; 当TKEEP缺失时,其默认值为HIGH;当TSTRB缺失时,其默认值为TSTRB = TKEEP; 当两者都缺失时,其默认值均为为HIGH;
TLAST: 当传输没有包或帧概念的数据流时,TLAST默认是无定义的;TLAST有以下几种设置方法:
- 设置TLAST始终为低位。这会将所有的传输都默认为一个包,也意味着为包的扩大与合并提供了最多的机会。但这同样意味着频繁出现的高延迟(为了合并数据流出现延迟)。同时这种设置会导致跨共享通道的数据流出错,因为其使用TLAST作为分流仲裁的判断;
- 设置TLAST始终未高位。这会把每个byte都看作一个单独的包,不会在传输过程中出现任何的主动延迟,跨共享通道的数据流也可以被有效仲裁;但这种情况下所有的数据流合并和扩大都会被阻止;
- 一个很好的折中方案是在发送固定Byte数之后进行TLAST声明,如每传输16 Bytes声明一次TLAST。这样既不会过度占用通路产生延迟,又不会影响数据流的扩大与合并;
按照推荐,TLAST的设置应当为:
- 对于任何拥有包概念的设备,TLAST必须存在。在使用一个包含TLAST信号的接口时,TLAST信号必须一直可用;
- 对于不支持TLAST信号的设备而言,TLAST信号必须一直为HIGH,防止一些设置下的组件将传输无限延迟;
- 对于不支持TLAST信号的设备而言,如果因为结构可以保证被传输的信号无需使用TLAST来防止传输无线延迟时,TLAST信号也可以被固定为LOW;
TID、TDEST与TUSER: 这三种信号均为可选信号,主机不被要求提供这些信号;当主机不提供时,有额外TID、TDEST与TUSER接口的从机必须将这些接口置零;
TDATA: 绝大多数的AXI4-Stream接口都需要进行数据传输,However,没有这个的接口也是被允许的。如果TDATA不存在,则TSTRB也不能存在。如果TDATA不存在,TKEEP存在,则利用TKEEP来制造空包,进行扩大、缩小与合并操作;在TDATA与TKEEP都不存在时,则所有的扩大、缩小与合并的操作方式都必须与操作单个数据Byte相同;
兼容性考虑:
AXI4-Stream具有大量的可选特性,这也意味着主组件与从组件都有大量的指令集可以选择。对于输入接口而言,可以通过保持对所有信号的接受来获得完全的兼容性;对于输出接口而言,可以将未使用的输出接口全部按照default设置,以获得更好的输出兼容性;一般可以从两个方面考虑连接的兼容性,一是直连兼容性,主要是考虑主从部件之间直接连接的兼容性;二是互联兼容性,主要是考虑链接对两端设备兼容的影响;
如果要使主接口与从接口匹配,则两端的线宽一定要匹配,如果线宽不匹配,则必须使用能够改变线宽使之兼容的组件;只要总接口支持TREADY,其就可以支持所有种类的从机;在主机不支持的接口上,只要供应默认值即可;
主机与从机的兼容性问题,主要出现在主机发出的信号多于从机可以接收的信号数。首先要解决的问题还是接口宽度,如果线宽不匹配,则必须使用能够改变线宽使之兼容的组件;第二个问题是信源和目的地的通信,如果从机需要与多个信源通信,则其必须能够辨识足够多的TID与TDSET,在此基础上,基于其能够辨识的TID与TDSET数量,从机将可以支持有限个数量的数据流交错;最后是空字节与位置字节的问题。从机无需支持空字节与位置字节,当其不支持时,有以下解决办法:
- 将所有的位置字节都转化为数据字节。这一操作不支持将数据部分更新,还有可能导致数据损坏,但其可以保证所有的数据字节都在数据流中且都在正确的位置上;
- 如果从机不支持空字节,则需要一个打包用的组件删除数据中的所有空字节;
执行Package的组件可能需要同时处理多个并发流;
建立互联可以保证主机与从机之间的数据传输,但其中含有的放大、缩小与合并功能。这些功能可能会产生空字节。防止这些空字节进入不支持他们的设备的方式有以下几种:
- 对传输进行约束,以保证只产生与从机接口宽度相同的空字节,以便于在需要时进行截断;
- 使用一个打包用的组件删除数据中的所有空字节;
本文是ARM开发自学笔记,介绍AXI4 - Stream默认信号需求,如TREADY、TKEEP、TSTRB等信号的设置及作用,还提及TLAST不同设置方式的优缺点及推荐设置。同时阐述了兼容性考虑,包括主从接口匹配、线宽问题及空字节处理等内容。
8868

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



