接口综合-对数组处理

综述

  • 目的:将数组映射为相应的RTL接口(注意:这里的数组都是作为顶层函数的形参 ,后面会讲作为子函数的形参该如何优化)
  • 在默认情况下,数组会映射成相应的memory的端口
    • 这些端口包括一些控制信号:读写使能、读写地址以及一些数据端口
  • 可以在软件中设置到底是单端口还是双端口的RAM
    • 一般来说vivado会自动分析,单端口还是双端口才能获得最大的数据率
  • 可以通过directive设置到底是使用单端口还是双端口,也可以设置通过FIFO的形式来读写数据,而且可以对数组进行分割,并储存到不同的memory中去(后面会讲到)。

实例分析

接口综合-对数组处理
默认情况下,使用ap_memory接口协议

输出数组(d_o)

RTL Ports 说明
d_o_address0 输出写入地址
d_o_ce0 片选信号(提供给外部的memory)
d_o_we0 写数据使能信号
d_o_d0 需要写入的数据(由函数的输出形成的数据)

输入数组(d_i)

RTL Ports 说明
d_i_address0 输入读取地址,从读地址获取数据
d_i_ce0 片选信号(提供给外部的memory)
d_i_d0 需要读取的数据(来自于外部的memory)

ap_FIFO

  • 数组以FIFO的接口形式体现
    接口综合-对数组处理
RTL Ports 说明
d_o_din 由函数产生,输入到FIFO中的数据
d_o_full_n FIFO满标志信号
d_o_write 写数据使能
d_i_dout 由外部memory的数据,传入到FIFO中
d_i_empty_n FIFO空标志信号
d_i_read 读数据使能

需要注意的是FIFO中的数据使按一定顺序储存的,因此要求需要操作的数据有一定的顺序特征