在本文中,我们将通过HLS自己动手实现一个AXI DMA,仿照的是官方AXI DMA IP核的直接模式,即给定发送起始地址和发送长度,以及接收起始地址和接收长度,就能进行一次DMA传输。
HLS设计代码如下 dma.cpp
#include"dma.h"
void axi_dma(data_t* axi_rd,data_t* axi_wr,hls::stream axis_mm2s,hls::stream axis_s2mm,
int tx_len,int rx_len){
#pragma HLS STREAM variable=axis_s2mm depth=1024 dim=1
#pragma HLS STREAM variable=axis_mm2s depth=1024 dim=1
#pragma HLS INTERFACE s_axilite port=return
#pragma HLS INTERFACE s_axilite port=rx_len
#pragma HLS INTERFACE s_axilite port=tx_len
#pragma HLS INTERFACE axis register both port=axis_s2mm
#pragma HLS INTERFACE axis register both port=axis_mm2s
#pragma HLS INTERFACE m_axi depth=100 port=axi_wr offset=slave bundle=AXI_S2MM max_write_burst_length=256
#pragma HLS INTERFACE m_axi depth=100 port=axi_rd offset=slave bundle=AXI_MM2S max_read_burst_length=256
for(int i=0;i
关注
打赏