【OpenHW参赛手记】AXI-Stream接口介绍

简介:

AXI4-Stream协议是一种用来连接需要交换数据的两个部件的标准接口,它可以用于连接一个产生数据的主机和一个接受数据的从机。当然它也可以用于连接多个主机和从机。该协议支持多种数据流使用相同共享总线集合,允许构建类似于路由、宽窄总线、窄宽总线等更为普遍的互联。AXI4-Stream接口的信号线定义如图1所示[1]。比较重要的信号线有:

ACLK为时钟线,所有信号都在ACLK上升沿被采样;

ARESETn为复位线,低电平有效;

TVALID为主机数据同步线,为高表示主机准备好发送数据;

TREADY为从机数据同步线,为高表示从机准备好接收数据;这两根线完成了主机与从机的握手信号,一旦二者都变高有效,数据传输开始。

TDATA为数据线,主机发送,从机接收。

TKEEP为主机数据有效指示,为高代表对应的字节为有效字节,否则表示发送的为空字节。

TLAST为主机最后一个字指示,下一clk数据将无效,TVALID将变低。

TID,TDEST,TUSER均为多机通信时的信号,这里不涉及,不予考虑。


看到这里,可能大家都还对Stream没有一个直观的认识。其实Stream并不陌生,在我们学c++编程时,一定会包含<iostream>,这样就可以完成控制终端对程序的输入输出了。如果还是不够直观,想象一下连续不断的水流,永远向着一个方向以固定的速度输送的接口。以我们看视频为例,视频文件本来是保存在硬盘里的,怎么播放呢,不能一下子把整个文件都显示到屏幕上,而是以一定的速度,连续不断地输出到屏幕上(每秒30~60帧),这个过程就是流Stream接口完成的。

Xilinx提供的流式IP核有很多用途,可以实现音频流、视频流、数据流到内存或者相反方向的传输。有人问了,内存是PS控制的,怎么才能把PS里DDR2的内容以Stream形式发出去呢(例如以固定速度送往DA,完成信号发生器的设计)?答案就是利用AXI总线做转换。ZYNQ的PS部分是ARM Cortex A9系列,支持AXI4,AXI-Lite总线。PL部分也有相应AXI总线接口,这样就能完成PS到PL的互联。仅仅这样还不够,需要PL部分实现流式转换,即AXI-Stream接口实现。Xilinx提供的从AXI到AXI-Stream转换的IP核有:AXI-DMA,AXI-Datamover,AXI-FIFO-MM2S以及AXI-VDMA等。这些IP核可以在XPS的IP Catalog窗口中看到。

AXI-DMA:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换;

AXI-FIFO-MM2S:实现从PS内存到PL通用传输通道AXI-GP到AXI-Stream的转换;

AXI-Datamover:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换,只不过这次是完全由PL控制的,PS是完全被动的;

AXI-VDMA:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换,只不过是专门针对视频、图像等二维数据的。

除了上面的还有一个AXI-CDMAIP核,这个是由PL完成的将数据从内存的一个位置搬移到另一个位置,无需CPU来插手。这个和我们这里用的Stream没有关系,所以不表。

这里要和大家说明白一点,就是AXI总线和接口的区别。总线是一种标准化接口,由数据线、地址线、控制线等构成,具有一定的强制性。接口是其物理实现,即在硬件上的分配。在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三种总线,但PS与PL之间的接口却只支持前两种,AXI-Stream只能在PL中实现,不能直接和PS相连,必须通过AXI-Lite或AXI4转接。PS与PL之间的物理接口有9个,包括4个AXI-GP接口和4个AXI-HP接口、1个AXI-ACP接口,均为内存映射型AXI接口。

上面的IP是完成总线协议转换,如果需要做某些处理(如变换、迭代、训练……),则需要生成一个自定义Stream类型IP,与上面的Stream接口连接起来,实现数据输入输出。用户的功能在自定义Stream类型IP中实现。

目录
相关文章
|
存储
PCIe VPD (Vital Product Data) 介绍
PCIe VPD (Vital Product Data) 介绍
5538 0
PCIe VPD (Vital Product Data) 介绍
|
6月前
|
存储 缓存 并行计算
DeepSeek-V4 深度解读:百万上下文背后的工程细节
DeepSeek-V4系列突破百万token上下文瓶颈:V4-Pro单token推理FLOPs仅V3.2的27%,KV Cache压至10%;V4-Flash更达10%与7%。依托CSA/HCA混合注意力、mHC残差、Muon优化器与FP4量化,实现长上下文“能用、好用、日常用”。
2088 0
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】Transformers大模型库(一):Tokenizer
【AI大模型】Transformers大模型库(一):Tokenizer
1100 1
|
资源调度 Kubernetes 负载均衡
CentOS 7.x安装微服务网关Apache APISIX
APISIX是基于云原生的微服务API网关,它是所有业务流量的入口,可以处理传统的南北向流量(server-client),也可以处理服务间的东西向流量(server-server),也可以当做 k8s ingress controller 来使用。
1396 0
CentOS 7.x安装微服务网关Apache APISIX
|
开发框架 前端开发 Android开发
Ionicons图标库: 让网页栩栩生辉,Ionic Framework的经典之作,图标库新标杆!
欢迎来到程序视点,我是小二哥。今日分享:Ionicons,一个免费开源、高性能的图标库,适用于Web、APP及桌面应用。它拥有1300多个图标,支持按需加载,提供多种风格选择,易于集成使用。详情见文,欢迎点赞分享!
615 2
|
搜索推荐 机器人 云计算
纳米机器人:医疗领域的微型革命与精准治疗
【9月更文挑战第16天】随着科技的飞速发展,纳米技术成为推动多个领域变革的重要力量。在医疗领域,纳米机器人以其独特优势引领着微型革命与精准治疗新时代。本文探讨其在药物输送、癌症治疗、手术辅助及疾病诊断中的应用,并分析其小型化、精准化、智能化与综合化的优势。尽管面临制造技术、体内控制等挑战,但随着科技的进步,纳米机器人有望成为人类健康的重要保障。
1408 10
|
存储 数据处理 计算机视觉
深入理解AMBA总线(十五)AXI-stream
深入理解AMBA总线(十五)AXI-stream
3434 0
|
缓存 Linux 芯片
Cache(一):VIVT、VIPT、PIPT等概要
Cache(一):VIVT、VIPT、PIPT等概要
2040 0
|
编解码 Java 流计算
38款 流媒体服务器开源软件
http://www.oschina.net/project/tag/111/streaming?lang=0&os=0&sort=view&p=1 Flash流媒体服务器 Red5 Red5是一个采用Java开发开源的Flash流媒体服务器。
9896 0
|
Java API Spring
Spring Boot中使用Feign进行HTTP请求
Spring Boot中使用Feign进行HTTP请求