云计算百科
云计算领域专业知识百科平台

数组array和axilite配合使用

一、数组array和axilite配合使用

可以看到input array,output array,inout array都可以使用axilite接口进行设计和指定。

二、不能将数组指定为bram,又指定为axilte

1.当使用array数组,指定为axilite的时候,array是寄存器,不能够指定为bram,这个需要注意

三、接口的数组指定为axilite,应该使用array_partion和axilite配合使用来优化时序

1.使用

2.使用complete:默认操作是将数组按其独立元素进行拆分。这对应于将内存解析为寄存器

3.指令优化

#pragma HLS ARRAY_RESHAPE variable=coefficients complete dim=1

4.案例

#include <ap_int.h>

// 顶部函数:使用AXI-Lite接口接收系数,并计算点积 int dot_product_configurable(     int values[8],         // 输入数据向量     int coefficients[8],   // 可配置的系数数组,通过AXI-Lite接口传入     ap_uint<1> load_coeff  // 控制信号:为1时,从总线加载新系数 ) {
    // 1. 定义顶层接口     // 将所有参数和函数返回端口绑定到同一个AXI-Lite从接口(slave)上     #pragma HLS INTERFACE s_axilite port=values bundle=CTRL_BUS     #pragma HLS INTERFACE s_axilite port=coefficients bundle=CTRL_BUS     #pragma HLS INTERFACE s_axilite port=load_coeff bundle=CTRL_BUS     #pragma HLS INTERFACE s_axilite port=return bundle=CTRL_BUS

    // 2. 关键:指定coefficients数组在硬件内部的存储方式     // 将一维数组完全重塑为一个“宽寄存器”,允许在单个周期内访问所有元素     #pragma HLS ARRAY_RESHAPE variable=coefficients complete dim=1

    // 3. 声明一个静态(static)的内部数组,用于保存系数     // static确保系数在多次函数调用间保持,直到被新配置覆盖     static int internal_coeffs[8];     #pragma HLS ARRAY_PARTITION variable=internal_coeffs complete dim=1

    // 4. 配置逻辑:当load_coeff为真时,将总线数据载入内部寄存器     if (load_coeff) {
        config_loop: for (int i = 0; i < 8; ++i) {
            // 注意:即使总线是顺序写入,重塑后的硬件结构也能在一个周期内完成所有并行加载             internal_coeffs[i] = coefficients[i]; &

赞(0)
未经允许不得转载:网硕互联帮助中心 » 数组array和axilite配合使用
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!