HLS——四、接口

一、介绍
下intel FPGA HLS接口主要是两大类接口
1、avalon mm接口–内存接口
1)avalon mm master接口
隐式mm接口、显式mm接口
2)avalon mm slave接口
2、avalon st接口–流接口

Avalon®接口规范
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf

例程
D:\intelFPGA\18.1\hls\examples\tutorials\interfaces
在这里插入图片描述

二、接口的作用和用途
Intel®FPGA中用于简化系统设计的简单连接模块,简单理解就是直接自动生成soc’连接的avalon总线的信号,不用自己要硬件描述语言去实现

三、接口使用
1、标量接口
参数a,b属于标量接口,会转换成ip信号
除了自己定义的接口会默认产生四个信号— start,busy,done,和stall 信号,我们称为默认接口,每个hls的ip都会有
表示对模块的调用和从模块返回的流接口
-start表示启动调用,并设置数据参数
- busy允许模块的反压
-done表示返回
-stall允许模块反压
其他看不到的信号
-管道,三态管道、中断、时钟、复位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.Avalon®-MM接口
基于地址(内存映射)的协议,允许模块使用读/写请求进行通信
主接口
-用于针对特定地址的读/写传输
从接口
-接受和响应转移请求,主要应用在soc或者sopc的ip
互联处理对主地址请求的解码,用于实际的从接口、反压、时钟差异等
与时钟接口相关联
系统中HLS模块的内存映射
在这里插入图片描述
4、指针:隐式内存映射接口
在ip上面写指针参数会自动转换成mm接口,默认64位地址空间,数据位宽根据变量类型来固定比如int 32位
在这里插入图片描述
指针 波形
在这里插入图片描述
5、显示mm master接口
1)使用mm_master<>类显式声明Avalon-MM主机接口,可以自定义数据位宽、总线位宽以及删掉不必要的信号从而节省资源
用法: ihc::mm_master<datatype, /template arguments/>
在这里插入图片描述

在这里插入图片描述
2)IHC:mm_master类参数在这里插入图片描述
其他属性包括read_write模式和在HLS编译器参考手册中描述的waitrequest
3)示例:
在这里插入图片描述
MM Master—波形
在这里插入图片描述
4)MM Master的寻址空间
拥有多个地址空间将创建多个MM Master
-允许在PD上同时进行多个控制
在这里插入图片描述
示例:
在这里插入图片描述
从接口
MM Slave模块 从模块
从寄存器
从存储器
MM Slave模块,用于soc或者sopc的ip设计
使用方法在设计ip前面再加上
hls_avalon_slave_compoent关键字
在这里插入图片描述
MM Slave寄存器参数,其实就是对应软件中的寄存器
可以独立于从模块使用
用于代替默认管道参数
适合较小的输入
使用方法
参数前面加上hls_avalon_slave_register_argument关键字
在这里插入图片描述

从存储器参数,对应参数上面的指针,对应软件要访问的内存,最终在ip内部会生成一块小内存用于软件访问
在模块内部的内存块中实现参数
-通过从接口访问
适用于指针参数
适用于较大的数组
可设置指定字节大小

在这里插入图片描述
从存储器—波形
在这里插入图片描述
最终接口的物理地址在生成的<component_name> _csr.h中可以看到,然后在软件中用指针映射过去操作,如下图
在这里插入图片描述

6、Avalon流接口(Avalon-ST)
流接口在通信上不经过内存总线,ip与ip和直接通信,用于视频图片处理比较合适
在这里插入图片描述
系统中的流式HLS模块
在这里插入图片描述
具有流接口的MM HLS模块
在这里插入图片描述
隐式流接口:标量函数参数成为hdl模块上的流水线输入端口

显式流接口
-使用ihc::stream_in<>和ihc::stream_out<>模板类
显式流式接口示例在这里插入图片描述
显式流接口的读写操作
阻塞
如果接口无法保持,则阻塞调用read()和write()将暂停模块
-缓冲区为空时读取数据(或如果未缓存且有效,则取消中断)
-当缓冲区满时写入(或如果未缓冲和准备就绪时取消中断)
非阻塞读写
在模块中非阻塞可调用tryRead()和tryWrite()
-返回布尔值,以确定调用是否成功
在这里插入图片描述
完整的流输入示例
在这里插入图片描述
在这里插入图片描述
显式流接口波形
在这里插入图片描述
自定义显式流接口

用法: ihc::stream_in<datatype, /template arguments/>
在这里插入图片描述
其他属性包括HLS编译器参考手册中描述的bitsPerSymbol和readylatency

流数据包示例
使用包信号允许多个流调用站点
在这里插入图片描述
稳定参数
使用连线实现
减少输入数据的流水线级数,可以明显地节省寄存器
在模块调用期间不要更改的变量
在这里插入图片描述
示例:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值