仅对英特尔可见 — GUID: jaf1547066919448
Ixiasoft
仅对英特尔可见 — GUID: jaf1547066919448
Ixiasoft
13.17. Intel® HLS Compiler Pro版存储器映射接口
使用mm_host对象和模板参数明确声明组件的 Avalon® Memory-Mapped (MM) Host接口
模板对象或参数 | 描述 |
---|---|
ihc::mm_host | 底层指针类型 |
ihc::dwidth | 存储器映射数据总线的宽度(以位为单位)。 |
ihc::awidth | 存储器映射地址总线的宽度(以位为单位)。 |
ihc::aspace | 与主机关联的接口的地址空间。 |
ihc::latency | 从读取命令退出组件到外部存储器返回有效读取数据之间的保证延迟。 |
ihc::maxburst | 与读或写事务相关的数据传输的最多个数。 |
ihc::align | 基指针地址对齐(以字节为单位)。 |
ihc::readwrite_mode | 接口的端口方向 |
ihc::waitrequest | 添加waitrequest信号,该信号在agent(代理)无法响应读或者写请求时置位该信号。 |
getInterfaceAtIndex | 该测试台函数用于mm_host对象中的索引。 |
ihc::mm_host模板对象
- 句法
- ihc::mm_host<datatype, template parameter >
- 有效值
- 任何有效的C++数据类型
- 默认值
- 指针参数的默认接口
- 描述
-
底层指针类型。在主机对象上执行的指针算法符合此类型。主机解除引用引用会导致宽度为sizeof(datatype)的存储站点。默认对齐是与数据类型的大小对齐。
您可以任意组合使用多个模板参数,只要参数组合描述了有效的硬件配置。
实例:component int dut( ihc::mm_host<int, ihc::aspace<2>, ihc::latency<3>, ihc::awidth<10>, ihc::dwidth<32> > &a)
要了解更多详细信息,请参阅如下教程:- <quartus_installdir>/hls/examples/tutorials/interfaces/pointer_mm_host
- <quartus_installdir>/hls/examples/tutorials/interfaces/mm_host_testbench_operators
ihc::dwidth模板参数
- 句法
- ihc::dwidth<value>
- 有效值
- 8, 16, 32, 64, 128, 256, 512或1024
- 默认值
- 64
- 描述
- 存储器映射数据总线的宽度(以位为单位)。
ihc::awidth模板参数
- 句法
- ihc::awidth<value>
- 有效值
- 1 – 64范围内的整数值
- 默认值
- 64
- 描述
-
存储器映射地址总线的宽度(以位为单位)。
此值仅影响 Avalon® MM主机接口的宽度。基地址指针的管道大小始终设置为64位。
ihc::aspace模板参数
- 句法
- ihc::aspace<value>
- 有效值
- 大于0的整数值。
- 默认值
- 1
- 描述
- 与主机关联的接口的地址空间。每个唯一 value 会导致组件上出现单独的Avalon MM Host接口。所有具有相同地址空间的主机在组件内被仲裁到单个接口。因此,这些主机必须共享描述接口的相同模板参数。
ihc::latency模板参数
- 句法
- ihc::latency<value>
- 有效值
- 非负整数值
- 默认值
- 1
- 描述
- 当外部存储器返回有效读取数据,到从读取命令退出组件到之间所保证的延迟。如果此延迟是可变的(例如访问DRAM时),则请将其设置为0。
ihc::maxburst模板参数
- 句法
- ihc::maxburst<value>
- 有效值
- 1 – 1024范围内的整数值
- 默认值
- 1
- 描述
-
读取或写入事务可关联的最大数据传输次数。此值控制burstcount的宽度。
对于固定延迟接口,此值必须设置为1。
有关详细信息,请参阅关于突发信号的详细信息和Avalon Interface Specifications中"Avalon Memory-Mapped Interface Signal Roles”介绍的burstcount信号角色。
ihc::align模板参数
- 句法
- ihc::align<value>
- 有效值
- 整数值,大于数据类型的对齐
- 默认值
- 数据类型对齐
- 描述
-
基指针地址的对齐(以字节为单位)。
Intel® HLS Compiler使用此信息来确定此指针可以允许的同时加载和存储的次数。
例如,如果您有一条具有4个32位整数的总线,就应该使用ihc::dwidth<128>(位)和ihc::align<16>(字节)。这意味着每个时钟周期最多可以加载或存储16个连续字节(或4个32位整数)作为合并的存储器字。
重要: 调用程序负责将数据与align参数的设定值对齐;否则可能会发生功能故障。
ihc::readwrite_mode模板参数
- 句法
- ihc::readwrite_mode<value>
- 有效值
- readwrite, readonly或writeonly
- 默认值
- readwrite
- 描述
- 接口的端口方向。仅生成相关Avalon主机信号。
ihc::waitrequest模板参数
- 句法
- ihc::waitrequest<value>
- 有效值
- true或false
- 默认值
- false
- 描述
-
添加waitrequest信号,当agent无法响应读或写请求时会将其置位。
对于可变延迟接口,您必须将此值设置为true以防止在使用Platform Designer将HLS组件集成到设计中时出现警告或错误。
关于waitrequest信号,请参阅Avalon Interface Specifications中的“Avalon Memory-Mapped Interface Signal Roles。
getInterfaceAtIndex测试台函数
- 句法
- getInterfaceAtIndex(int index)
- 描述
- 此测试台函数用于在mm_host对象中查找。在遍历数组并在数组的不同索引上调用组件时,此函数很有用。此函数仅在测试台中受支持。
- 代码实例
-
int main() { // ……. for(int idx = 0; idx < N; idx++) { dut(src_mm.getInterfaceAtIndex(idx)); } // ……. }