前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在HLS中使用AXI4-Stream接口

如何在HLS中使用AXI4-Stream接口

作者头像
Lauren的FPGA
发布2022-12-21 20:29:37
1.1K0
发布2022-12-21 20:29:37
举报
文章被收录于专栏:Lauren的FPGA

AXI4-Stream接口在进行数据传输时是顺序传输的,类似于FIFO,先进先出,这意味着需要映射为AXI4-Stream接口的函数形参只能被读取或只能被写入(赋值)。同时,AXI4-Stream传输数据的位宽是按Byte(字节)对其的,这意味着如果数据位宽不是8的整数倍,那么就需要对数据进行扩展,类如,若数据是12-bit,就需要将其扩展为16-bit,具体是高4位补零还是符号位扩展取决于传输数据是无符号数还是有符号数。此外,传输数据的最大位宽是4096-bit。再来看一下AXI4-Stream是如何工作的。如下图所示。Producer和Consumer之间只有数据通道TDATA和其他握手信号如TREADY、TLAST、TVALID。其中TVALID为高表明Producer发送的数据有效,TLAST为高时表明此时发送的是最后一笔数据,TREADY为高时表明Consumer可以接收数据。

注:既然是将函数形参设置为AXI4-Stream接口,这就要求该函数必须的待综合的顶层函数。

如果需要使用AXI4-Stream接口,就不得不用Vitis HLS的库HLS::stream。Vitis HLS提供了两种方式用于将形参映射为AXI4-Stream接口。第一种是通过Pragma INTERFACE设置,此时需要在C++代码里使用HLS Stream库,如下所示。

在使用Pragma INTERFACE时,Vitis HLS提供了register_mode,如上图所示,共4个可选值。其中Forward是将TDATA和TVALID使用寄存器输出;Reverse只把TREADY使用寄存器输出;Both则是将TDATA/TVALID和TREADY都使用寄存器输出;而Off则是关闭寄存器输出功能。Xilinx建议至少保证一个方向是寄存器输出即可以选择Forward或Reverse,但不要选择Off。

第二种方式较为直接,需用用到axis或axiu数据类型,前者针对有符号数,后者针对无符号数。两者军需添加头文件ap_axi_sdata.h。我们通过一个案例进行说明,如下图所示。这里注意代码第20行和第21行。第20行定义了数据类型为ap_int<32>,第21行定义了axis类型,其中数据类型为ap_int<32>,其余三个参数依次对应TUSER、TID和TDEST的位宽。这里为0,表明设计不需要这三个辅助信号。使用这种方式就不需要再通过Pragma INTERFACE指定其接口类型了。

Copyright @ FPGA技术驿站

转载事宜请私信 | 获得授权后方可转载

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术驿站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库一体机 TData
数据库一体机 TData 是融合了高性能计算、热插拔闪存、Infiniband 网络、RDMA 远程直接存取数据的数据库解决方案,为用户提供高可用、易扩展、高性能的数据库服务,适用于 OLAP、 OLTP 以及混合负载等各种应用场景下的极限性能需求,支持 Oracle、SQL Server、MySQL 和 PostgreSQL 等各种主流数据库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档