Pynq debug记录

记录一些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(),系统陷入等待。关闭即恢复正常