记录一些debug的结果。
DMA (Direct Memory Access) 问题:
代码过程参考Overlay Tutorial
- DMA的使用:
- MM2S stands for Memory-Mapped to Streaming, whereas S2MM stands for Streaming to Memory-Mapped.
- 下图与Overlay Tutorial对应关系:
- AXI DATA FIFO 对应 HLS 生成的 constant multiply 模块。
- DDR memory controller 对应 AXI Interconnect IP核。
- 下面的代码Vivado HLS 2019.1 和 Vitis HLS 2020.2 的HLS结果不一样,Vitis 没有 Tlast等DMA需要的信号,并且数据宽度为8位。
#include "ap_axi_sdata.h"
typedef ap_axiu<32,1,1,1> stream_type;
void mult_constant(stream_type* in_data, stream_type* out_data, ap_int<32> constant) {
#pragma HLS INTERFACE s_axilite register port=constant
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE axis port=in_data
#pragma HLS INTERFACE axis port=out_data
out_data->data = in_data->data * constant;
out_data->dest = in_data->dest;
out_data->id = in_data->id;
out_data->keep = in_data->keep;
out_data->last = in_data->last;
out_data->strb = in_data->strb;
out_data->user = in_data->user;
}
- DMA 开启 Scatter Gather 后, 1、输入时候提示内存地址没有对齐6bytes。2、会导致recvchannel.wait(),系统陷入等待。关闭即恢复正常。