博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HLS——四、接口
阅读量:113 次
发布时间:2019-02-26

本文共 2216 字,大约阅读时间需要 7 分钟。

主要介绍以下intel FPGA HLS接口:

一、avalon-st接口
二、默认HLS接口
三、内存主机接口
四、显示流媒体接口
五、寄存器接口
六、内存从接口

例程

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

一、avalon-st接口

1、用途
1.在Intel®FPGA中用于简化系统设计的简单连接模块
2.用于交互的标准接口设计
HLS编译器围绕HLS模块生成Avalon接口
2、种类
1.Avalon流接口(Avalon-ST)
-数据单向流动,界面简单灵活
2.Avalon内存映射接口(Avalon-mm)
-典型的基于地址的读/写接口的主从连接
3.其他接口
-管道,三态管道、中断、时钟、复位

1.Avalon流接口(Avalon-ST)

数据传输的标准、灵活和模块化协议
-单向
-点对点连接
-完全同步
-支持简单和复杂的接口需求
在这里插入图片描述
2.Avalon®-MM接口
基于地址(内存映射)的协议,允许模块使用读/写请求进行通信
主接口
-用于针对特定地址的读/写传输
从接口
-接受和响应转移请求
互联处理对主地址请求的解码,用于实际的从接口、反压、时钟差异等
与时钟接口相关联
在这里插入图片描述
Avalon®接口规范
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf

二、默认接口

1、ip接口
每个模块都包含以下接口
— start,busy,done,和stall 信号
—如果函数不返回void则返回数据,
—所有标量参数都会产生输入管道
—所有指针或引用参数都变成地址输入
—所有指针共享一个Avalon内存映射接口,用于从系统内存加载 存储数据自定义接口的一些方法
多种自定义接口的方法
—RTL接口的精准控制
—对C测试平台框架的最小影响
在这里插入图片描述
2、模块调用接口
表示对模块的调用和从模块返回的流接口
如果非void,则包含返回数据
 模块包含start和busy信号
-start表示启动调用,并设置数据参数
- busy允许模块的反压
模块返回done和stall信号
-done表示返回
-stall允许模块反压

在这里插入图片描述

3、标量的默认接口
 标量参数使输入管道通过start信号和busy信号相关联
在这里插入图片描述
4、指针:隐式内存映射接口
所有指针或引用参数都成为与start和busy信号相关联的地址输入
自动创建内存映射主机接口
默认64位地址空间
在这里插入图片描述
指针 波形
在这里插入图片描述
三、显式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上同时进行多个控制
在这里插入图片描述
示例:
在这里插入图片描述
四、流接口
标量函数参数成为hdl模块上的流水线输入端口
—Avalon流接口与start、busy输入信号相关联
—隐式
显式流接口
-使用ihc::stream_in<>和ihc::stream_out<>模板类
-通过引用传递
-使用有效和现成的信号创建Avalon流接口
-对接口的显式控制

显式流式接口示例在这里插入图片描述

阻塞与非阻塞读写

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

用法: ihc::stream_in<datatype, /template arguments/>

在这里插入图片描述
其他属性包括HLS编译器参考手册中描述的bitsPerSymbol和readylatency

流数据包示例

使用包信号允许多个流调用站点
在这里插入图片描述
稳定参数
使用连线实现
减少输入数据的流水线级数,可以明显地节省寄存器
在模块调用期间不要更改的变量
在这里插入图片描述
示例:
在这里插入图片描述
从接口
模块控制和状态寄存器
-代替start/busy/done/stall 信号
从数据寄存器
-适合较小的输入
从存储器
-用于较大的数组
MM Slave模块
模块可以有1个CSR从接口,用于函数调用和返回
- 与从参数共享
-生成的<component_name> _csr.h中描述的地址映射
irq_done表示模块已完成
- 不需要停止
用于代替默认的流调用和返回
在这里插入图片描述
MM Slave寄存器参数
可以独立于从模块使用
用于代替默认管道参数
适合较小的输入
在这里插入图片描述
从模块和寄存器地址映射
在这里插入图片描述
从存储器参数
在模块内部的内存块中实现参数
-通过从接口访问
适用于指针参数
适用于较大的数组
可设置指定字节大小

在这里插入图片描述

从存储器—波形
在这里插入图片描述
系统中的流式HLS模块
在这里插入图片描述

系统中HLS模块的内存映射

在这里插入图片描述

具有流接口的MM HLS模块

在这里插入图片描述

转载地址:http://lugk.baihongyu.com/

你可能感兴趣的文章