fpga: Add passthru CHDR/DMA transport adapter module

Original-commit: badb2356066555807a2f1e1d08fe968261dfdb04
This commit is contained in:
Martin Braun
2024-06-11 10:20:07 +02:00
committed by Joerg Hofrichter
parent 872de917bf
commit 69e728dba0
2 changed files with 78 additions and 0 deletions
@@ -0,0 +1,9 @@
#
# Copyright 2023 Ettus Research, a National Instruments Brand
#
# SPDX-License-Identifier: LGPL-3.0-or-later
#
RFNOC_TA_CHDR_DMA_SRCS = $(abspath $(addprefix $(BASE_DIR)/../lib/rfnoc/transport_adapters/rfnoc_ta_chdr_dma/, \
rfnoc_ta_chdr_dma.sv \
))
@@ -0,0 +1,69 @@
//
// Copyright 2024 Ettus Research, a National Instruments Brand
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//
// Module: rfnoc_ta_chdr_dma
//
// Description:
//
// Top-level file for the CHDR DMA transport adapter.
//
// This is the transport adapter for streaming for PL into PS and vice versa.
// Note that this is a passthrough TA, because the DMA engine is still
// implemented outside the image core.
//
// Parameters:
//
// CHDR_W : CHDR width used by RFNoC on the FPGA
// PROTOVER : RFNoC protocol version for IPv4 interface
//
module rfnoc_ta_chdr_dma #(
parameter CHDR_W = 64,
parameter [15:0] PROTOVER = {8'd1, 8'd0}
) (
// Standard Clocks and Resets (these are unused in this particular module)
input logic core_arst,
input logic rfnoc_ctrl_clk,
input logic rfnoc_ctrl_rst,
input logic rfnoc_chdr_clk,
input logic rfnoc_chdr_rst,
// CHDR Buses (to and from crossbar)
output logic [4*CHDR_W-1:0] s_rfnoc_chdr_tdata,
output logic [ 3:0] s_rfnoc_chdr_tlast,
output logic [ 3:0] s_rfnoc_chdr_tvalid,
input logic [ 3:0] s_rfnoc_chdr_tready,
input logic [4*CHDR_W-1:0] m_rfnoc_chdr_tdata,
input logic [ 3:0] m_rfnoc_chdr_tlast,
input logic [ 3:0] m_rfnoc_chdr_tvalid,
output logic [ 3:0] m_rfnoc_chdr_tready,
// CHDR Buses (to and from DMA engine)
input logic [4*CHDR_W-1:0] s_dma_tdata,
input logic [ 3:0] s_dma_tlast,
input logic [ 3:0] s_dma_tvalid,
output logic [ 3:0] s_dma_tready,
output logic [4*CHDR_W-1:0] m_dma_tdata,
output logic [ 3:0] m_dma_tlast,
output logic [ 3:0] m_dma_tvalid,
input logic [ 3:0] m_dma_tready
);
`default_nettype none
assign s_rfnoc_chdr_tdata = s_dma_tdata;
assign s_rfnoc_chdr_tlast = s_dma_tlast;
assign s_rfnoc_chdr_tvalid = s_dma_tvalid;
assign s_dma_tready = s_rfnoc_chdr_tready;
assign m_dma_tdata = m_rfnoc_chdr_tdata;
assign m_dma_tlast = m_rfnoc_chdr_tlast;
assign m_dma_tvalid = m_rfnoc_chdr_tvalid;
assign m_rfnoc_chdr_tready = m_dma_tready;
`default_nettype wire
endmodule : rfnoc_ta_chdr_dma