From bbd43b16e18ef0a0311ddf4635cbd29c4ac3c367 Mon Sep 17 00:00:00 2001 From: Wade Fife Date: Tue, 8 Sep 2020 10:48:52 -0500 Subject: fpga: e31x: Change image file to e310_rfnoc_image_core This renames e31x_rfnoc_image_core.* to e310_rfnoc_image_core.*. This makes the naming consistent with the rest of the build process (which uses "e310" for all variants of e31x) and fixes an issue in which the wrong file name was used by rfnoc_image_builder. --- fpga/usrp3/top/e31x/Makefile | 2 +- fpga/usrp3/top/e31x/e310_rfnoc_image_core.v | 461 ++++++++++++++++++++++++++ fpga/usrp3/top/e31x/e310_rfnoc_image_core.yml | 54 +++ fpga/usrp3/top/e31x/e31x_rfnoc_image_core.v | 461 -------------------------- fpga/usrp3/top/e31x/e31x_rfnoc_image_core.yml | 54 --- 5 files changed, 516 insertions(+), 516 deletions(-) create mode 100644 fpga/usrp3/top/e31x/e310_rfnoc_image_core.v create mode 100644 fpga/usrp3/top/e31x/e310_rfnoc_image_core.yml delete mode 100644 fpga/usrp3/top/e31x/e31x_rfnoc_image_core.v delete mode 100644 fpga/usrp3/top/e31x/e31x_rfnoc_image_core.yml (limited to 'fpga/usrp3/top/e31x') diff --git a/fpga/usrp3/top/e31x/Makefile b/fpga/usrp3/top/e31x/Makefile index a2ab64f1d..80752d738 100644 --- a/fpga/usrp3/top/e31x/Makefile +++ b/fpga/usrp3/top/e31x/Makefile @@ -26,7 +26,7 @@ ifndef TARGET endif TOP ?= e31x -DEFAULT_IMAGE_CORE_FILE_E31X=e31x_rfnoc_image_core.v +DEFAULT_IMAGE_CORE_FILE_E31X=e310_rfnoc_image_core.v DEFAULT_EDGE_FILE_E31X=$(abspath e310_static_router.hex) # vivado_build($1=Device, $2=Definitions) diff --git a/fpga/usrp3/top/e31x/e310_rfnoc_image_core.v b/fpga/usrp3/top/e31x/e310_rfnoc_image_core.v new file mode 100644 index 000000000..9b288ad16 --- /dev/null +++ b/fpga/usrp3/top/e31x/e310_rfnoc_image_core.v @@ -0,0 +1,461 @@ +// +// Copyright 2020 Ettus Research, A National Instruments Brand +// +// SPDX-License-Identifier: LGPL-3.0-or-later +// + +// Module: rfnoc_image_core (for e31x) +// This file was autogenerated by UHD's image builder tool (rfnoc_image_builder) +// Re-running that tool will overwrite this file! +// File generated on: 2020-09-08T10:54:16.062742 +// Source: e310_rfnoc_image_core.yml +// Source SHA256: 00908abb846aaf175d1f8f2e75c6d39a3cd4958b326ab3125f4a1023c7b78b39 + +module rfnoc_image_core #( + parameter [15:0] PROTOVER = {8'd1, 8'd0} +)( + // Clocks + input wire chdr_aclk, + input wire ctrl_aclk, + input wire core_arst, + input wire radio_clk, + // Basic + input wire [15:0] device_id, +//// IO ports ////////////////////////////////// +// ctrlport_radio + output wire [ 1-1:0] m_ctrlport_req_wr, + output wire [ 1-1:0] m_ctrlport_req_rd, + output wire [ 20-1:0] m_ctrlport_req_addr, + output wire [ 32-1:0] m_ctrlport_req_data, + output wire [ 4-1:0] m_ctrlport_req_byte_en, + output wire [ 1-1:0] m_ctrlport_req_has_time, + output wire [ 64-1:0] m_ctrlport_req_time, + input wire [ 1-1:0] m_ctrlport_resp_ack, + input wire [ 2-1:0] m_ctrlport_resp_status, + input wire [ 32-1:0] m_ctrlport_resp_data, +// time_keeper + input wire [ 64-1:0] radio_time, +// x300_radio + input wire [ 64-1:0] radio_rx_data, + input wire [ 2-1:0] radio_rx_stb, + output wire [ 2-1:0] radio_rx_running, + output wire [ 64-1:0] radio_tx_data, + input wire [ 2-1:0] radio_tx_stb, + output wire [ 2-1:0] radio_tx_running, + // Transport 0 (dma dma) + input wire [64-1:0] s_dma_tdata, + input wire s_dma_tlast, + input wire s_dma_tvalid, + output wire s_dma_tready, + output wire [64-1:0] m_dma_tdata, + output wire m_dma_tlast, + output wire m_dma_tvalid, + input wire m_dma_tready +); + + localparam CHDR_W = 64; + localparam MTU = 10; + localparam EDGE_TBL_FILE = `"`RFNOC_EDGE_TBL_FILE`"; + + wire rfnoc_chdr_clk, rfnoc_chdr_rst; + wire rfnoc_ctrl_clk, rfnoc_ctrl_rst; + + // ---------------------------------------------------- + // CHDR Crossbar + // ---------------------------------------------------- + wire [CHDR_W-1:0] xb_to_ep0_tdata ; + wire xb_to_ep0_tlast ; + wire xb_to_ep0_tvalid; + wire xb_to_ep0_tready; + wire [CHDR_W-1:0] ep0_to_xb_tdata ; + wire ep0_to_xb_tlast ; + wire ep0_to_xb_tvalid; + wire ep0_to_xb_tready; + wire [CHDR_W-1:0] xb_to_ep1_tdata ; + wire xb_to_ep1_tlast ; + wire xb_to_ep1_tvalid; + wire xb_to_ep1_tready; + wire [CHDR_W-1:0] ep1_to_xb_tdata ; + wire ep1_to_xb_tlast ; + wire ep1_to_xb_tvalid; + wire ep1_to_xb_tready; + + chdr_crossbar_nxn #( + .CHDR_W (CHDR_W), + .NPORTS (3), + .DEFAULT_PORT (0), + .MTU (MTU), + .ROUTE_TBL_SIZE (6), + .MUX_ALLOC ("ROUND-ROBIN"), + .OPTIMIZE ("AREA"), + .NPORTS_MGMT (1), + .EXT_RTCFG_PORT (0), + .PROTOVER (PROTOVER) + ) chdr_xb_i ( + .clk (rfnoc_chdr_clk), + .reset (rfnoc_chdr_rst), + .device_id (device_id), + .s_axis_tdata ({ep1_to_xb_tdata, ep0_to_xb_tdata, s_dma_tdata}), + .s_axis_tlast ({ep1_to_xb_tlast, ep0_to_xb_tlast, s_dma_tlast}), + .s_axis_tvalid ({ep1_to_xb_tvalid, ep0_to_xb_tvalid, s_dma_tvalid}), + .s_axis_tready ({ep1_to_xb_tready, ep0_to_xb_tready, s_dma_tready}), + .m_axis_tdata ({xb_to_ep1_tdata, xb_to_ep0_tdata, m_dma_tdata}), + .m_axis_tlast ({xb_to_ep1_tlast, xb_to_ep0_tlast, m_dma_tlast}), + .m_axis_tvalid ({xb_to_ep1_tvalid, xb_to_ep0_tvalid, m_dma_tvalid}), + .m_axis_tready ({xb_to_ep1_tready, xb_to_ep0_tready, m_dma_tready}), + .ext_rtcfg_stb (1'h0), + .ext_rtcfg_addr (16'h0), + .ext_rtcfg_data (32'h0), + .ext_rtcfg_ack () + ); + + // ---------------------------------------------------- + // Stream Endpoints + // ---------------------------------------------------- + + wire [CHDR_W-1:0] m_ep0_out0_tdata; + wire m_ep0_out0_tlast; + wire m_ep0_out0_tvalid; + wire m_ep0_out0_tready; + wire [CHDR_W-1:0] s_ep0_in0_tdata; + wire s_ep0_in0_tlast; + wire s_ep0_in0_tvalid; + wire s_ep0_in0_tready; + wire [31:0] m_ep0_ctrl_tdata , s_ep0_ctrl_tdata ; + wire m_ep0_ctrl_tlast , s_ep0_ctrl_tlast ; + wire m_ep0_ctrl_tvalid, s_ep0_ctrl_tvalid; + wire m_ep0_ctrl_tready, s_ep0_ctrl_tready; + + chdr_stream_endpoint #( + .PROTOVER (PROTOVER), + .CHDR_W (CHDR_W), + .AXIS_CTRL_EN (1), + .AXIS_DATA_EN (1), + .NUM_DATA_I (1), + .NUM_DATA_O (1), + .INST_NUM (0), + .CTRL_XBAR_PORT (1), + .INGRESS_BUFF_SIZE (14), + .MTU (MTU), + .REPORT_STRM_ERRS (1) + ) ep0_i ( + .rfnoc_chdr_clk (rfnoc_chdr_clk ), + .rfnoc_chdr_rst (rfnoc_chdr_rst ), + .rfnoc_ctrl_clk (rfnoc_ctrl_clk ), + .rfnoc_ctrl_rst (rfnoc_ctrl_rst ), + .device_id (device_id ), + .s_axis_chdr_tdata (xb_to_ep0_tdata ), + .s_axis_chdr_tlast (xb_to_ep0_tlast ), + .s_axis_chdr_tvalid (xb_to_ep0_tvalid ), + .s_axis_chdr_tready (xb_to_ep0_tready ), + .m_axis_chdr_tdata (ep0_to_xb_tdata ), + .m_axis_chdr_tlast (ep0_to_xb_tlast ), + .m_axis_chdr_tvalid (ep0_to_xb_tvalid ), + .m_axis_chdr_tready (ep0_to_xb_tready ), + .s_axis_data_tdata ({s_ep0_in0_tdata}), + .s_axis_data_tlast ({s_ep0_in0_tlast}), + .s_axis_data_tvalid ({s_ep0_in0_tvalid}), + .s_axis_data_tready ({s_ep0_in0_tready}), + .m_axis_data_tdata ({m_ep0_out0_tdata}), + .m_axis_data_tlast ({m_ep0_out0_tlast}), + .m_axis_data_tvalid ({m_ep0_out0_tvalid}), + .m_axis_data_tready ({m_ep0_out0_tready}), + .s_axis_ctrl_tdata (s_ep0_ctrl_tdata ), + .s_axis_ctrl_tlast (s_ep0_ctrl_tlast ), + .s_axis_ctrl_tvalid (s_ep0_ctrl_tvalid), + .s_axis_ctrl_tready (s_ep0_ctrl_tready), + .m_axis_ctrl_tdata (m_ep0_ctrl_tdata ), + .m_axis_ctrl_tlast (m_ep0_ctrl_tlast ), + .m_axis_ctrl_tvalid (m_ep0_ctrl_tvalid), + .m_axis_ctrl_tready (m_ep0_ctrl_tready), + .strm_seq_err_stb ( ), + .strm_data_err_stb ( ), + .strm_route_err_stb ( ), + .signal_data_err (1'b0 ) + ); + + wire [CHDR_W-1:0] m_ep1_out0_tdata; + wire m_ep1_out0_tlast; + wire m_ep1_out0_tvalid; + wire m_ep1_out0_tready; + wire [CHDR_W-1:0] s_ep1_in0_tdata; + wire s_ep1_in0_tlast; + wire s_ep1_in0_tvalid; + wire s_ep1_in0_tready; + wire [31:0] m_ep1_ctrl_tdata , s_ep1_ctrl_tdata ; + wire m_ep1_ctrl_tlast , s_ep1_ctrl_tlast ; + wire m_ep1_ctrl_tvalid, s_ep1_ctrl_tvalid; + wire m_ep1_ctrl_tready, s_ep1_ctrl_tready; + + chdr_stream_endpoint #( + .PROTOVER (PROTOVER), + .CHDR_W (CHDR_W), + .AXIS_CTRL_EN (0), + .AXIS_DATA_EN (1), + .NUM_DATA_I (1), + .NUM_DATA_O (1), + .INST_NUM (1), + .CTRL_XBAR_PORT (2), + .INGRESS_BUFF_SIZE (14), + .MTU (MTU), + .REPORT_STRM_ERRS (1) + ) ep1_i ( + .rfnoc_chdr_clk (rfnoc_chdr_clk ), + .rfnoc_chdr_rst (rfnoc_chdr_rst ), + .rfnoc_ctrl_clk (rfnoc_ctrl_clk ), + .rfnoc_ctrl_rst (rfnoc_ctrl_rst ), + .device_id (device_id ), + .s_axis_chdr_tdata (xb_to_ep1_tdata ), + .s_axis_chdr_tlast (xb_to_ep1_tlast ), + .s_axis_chdr_tvalid (xb_to_ep1_tvalid ), + .s_axis_chdr_tready (xb_to_ep1_tready ), + .m_axis_chdr_tdata (ep1_to_xb_tdata ), + .m_axis_chdr_tlast (ep1_to_xb_tlast ), + .m_axis_chdr_tvalid (ep1_to_xb_tvalid ), + .m_axis_chdr_tready (ep1_to_xb_tready ), + .s_axis_data_tdata ({s_ep1_in0_tdata}), + .s_axis_data_tlast ({s_ep1_in0_tlast}), + .s_axis_data_tvalid ({s_ep1_in0_tvalid}), + .s_axis_data_tready ({s_ep1_in0_tready}), + .m_axis_data_tdata ({m_ep1_out0_tdata}), + .m_axis_data_tlast ({m_ep1_out0_tlast}), + .m_axis_data_tvalid ({m_ep1_out0_tvalid}), + .m_axis_data_tready ({m_ep1_out0_tready}), + .s_axis_ctrl_tdata (s_ep1_ctrl_tdata ), + .s_axis_ctrl_tlast (s_ep1_ctrl_tlast ), + .s_axis_ctrl_tvalid (s_ep1_ctrl_tvalid), + .s_axis_ctrl_tready (s_ep1_ctrl_tready), + .m_axis_ctrl_tdata (m_ep1_ctrl_tdata ), + .m_axis_ctrl_tlast (m_ep1_ctrl_tlast ), + .m_axis_ctrl_tvalid (m_ep1_ctrl_tvalid), + .m_axis_ctrl_tready (m_ep1_ctrl_tready), + .strm_seq_err_stb ( ), + .strm_data_err_stb ( ), + .strm_route_err_stb ( ), + .signal_data_err (1'b0 ) + ); + + + + // ---------------------------------------------------- + // Control Crossbar + // ---------------------------------------------------- + + wire [31:0] m_core_ctrl_tdata , s_core_ctrl_tdata ; + wire m_core_ctrl_tlast , s_core_ctrl_tlast ; + wire m_core_ctrl_tvalid, s_core_ctrl_tvalid; + wire m_core_ctrl_tready, s_core_ctrl_tready; + wire [31:0] m_radio0_ctrl_tdata , s_radio0_ctrl_tdata ; + wire m_radio0_ctrl_tlast , s_radio0_ctrl_tlast ; + wire m_radio0_ctrl_tvalid, s_radio0_ctrl_tvalid; + wire m_radio0_ctrl_tready, s_radio0_ctrl_tready; + + axis_ctrl_crossbar_nxn #( + .WIDTH (32), + .NPORTS (3), + .TOPOLOGY ("TORUS"), + .INGRESS_BUFF_SIZE(5), + .ROUTER_BUFF_SIZE (5), + .ROUTING_ALLOC ("WORMHOLE"), + .SWITCH_ALLOC ("PRIO") + ) ctrl_xb_i ( + .clk (rfnoc_ctrl_clk), + .reset (rfnoc_ctrl_rst), + .s_axis_tdata ({m_radio0_ctrl_tdata , m_ep0_ctrl_tdata , m_core_ctrl_tdata }), + .s_axis_tvalid ({m_radio0_ctrl_tvalid, m_ep0_ctrl_tvalid, m_core_ctrl_tvalid}), + .s_axis_tlast ({m_radio0_ctrl_tlast , m_ep0_ctrl_tlast , m_core_ctrl_tlast }), + .s_axis_tready ({m_radio0_ctrl_tready, m_ep0_ctrl_tready, m_core_ctrl_tready}), + .m_axis_tdata ({s_radio0_ctrl_tdata , s_ep0_ctrl_tdata , s_core_ctrl_tdata }), + .m_axis_tvalid ({s_radio0_ctrl_tvalid, s_ep0_ctrl_tvalid, s_core_ctrl_tvalid}), + .m_axis_tlast ({s_radio0_ctrl_tlast , s_ep0_ctrl_tlast , s_core_ctrl_tlast }), + .m_axis_tready ({s_radio0_ctrl_tready, s_ep0_ctrl_tready, s_core_ctrl_tready}), + .deadlock_detected() + ); + + // ---------------------------------------------------- + // RFNoC Core Kernel + // ---------------------------------------------------- + wire [(512*1)-1:0] rfnoc_core_config, rfnoc_core_status; + + rfnoc_core_kernel #( + .PROTOVER (PROTOVER), + .DEVICE_TYPE (16'hE310), + .DEVICE_FAMILY ("7SERIES"), + .SAFE_START_CLKS (0), + .NUM_BLOCKS (1), + .NUM_STREAM_ENDPOINTS(2), + .NUM_ENDPOINTS_CTRL (1), + .NUM_TRANSPORTS (1), + .NUM_EDGES (4), + .CHDR_XBAR_PRESENT (1), + .EDGE_TBL_FILE (EDGE_TBL_FILE) + ) core_kernel_i ( + .chdr_aclk (chdr_aclk), + .chdr_aclk_locked (1'b1), + .ctrl_aclk (ctrl_aclk), + .ctrl_aclk_locked (1'b1), + .core_arst (core_arst), + .core_chdr_clk (rfnoc_chdr_clk), + .core_chdr_rst (rfnoc_chdr_rst), + .core_ctrl_clk (rfnoc_ctrl_clk), + .core_ctrl_rst (rfnoc_ctrl_rst), + .s_axis_ctrl_tdata (s_core_ctrl_tdata ), + .s_axis_ctrl_tlast (s_core_ctrl_tlast ), + .s_axis_ctrl_tvalid (s_core_ctrl_tvalid), + .s_axis_ctrl_tready (s_core_ctrl_tready), + .m_axis_ctrl_tdata (m_core_ctrl_tdata ), + .m_axis_ctrl_tlast (m_core_ctrl_tlast ), + .m_axis_ctrl_tvalid (m_core_ctrl_tvalid), + .m_axis_ctrl_tready (m_core_ctrl_tready), + .device_id (device_id), + .rfnoc_core_config (rfnoc_core_config), + .rfnoc_core_status (rfnoc_core_status) + ); + + // ---------------------------------------------------- + // Blocks + // ---------------------------------------------------- + + // ---------------------------------------------------- + // radio0 + // ---------------------------------------------------- + wire radio0_radio_clk; + wire [CHDR_W-1:0] s_radio0_in_1_tdata , s_radio0_in_0_tdata ; + wire s_radio0_in_1_tlast , s_radio0_in_0_tlast ; + wire s_radio0_in_1_tvalid, s_radio0_in_0_tvalid; + wire s_radio0_in_1_tready, s_radio0_in_0_tready; + wire [CHDR_W-1:0] m_radio0_out_1_tdata , m_radio0_out_0_tdata ; + wire m_radio0_out_1_tlast , m_radio0_out_0_tlast ; + wire m_radio0_out_1_tvalid, m_radio0_out_0_tvalid; + wire m_radio0_out_1_tready, m_radio0_out_0_tready; + + // ctrl_port + wire [ 1-1:0] radio0_m_ctrlport_req_wr; + wire [ 1-1:0] radio0_m_ctrlport_req_rd; + wire [ 20-1:0] radio0_m_ctrlport_req_addr; + wire [ 32-1:0] radio0_m_ctrlport_req_data; + wire [ 4-1:0] radio0_m_ctrlport_req_byte_en; + wire [ 1-1:0] radio0_m_ctrlport_req_has_time; + wire [ 64-1:0] radio0_m_ctrlport_req_time; + wire [ 1-1:0] radio0_m_ctrlport_resp_ack; + wire [ 2-1:0] radio0_m_ctrlport_resp_status; + wire [ 32-1:0] radio0_m_ctrlport_resp_data; + // time_keeper + wire [ 64-1:0] radio0_radio_time; + // x300_radio + wire [ 64-1:0] radio0_radio_rx_data; + wire [ 2-1:0] radio0_radio_rx_stb; + wire [ 2-1:0] radio0_radio_rx_running; + wire [ 64-1:0] radio0_radio_tx_data; + wire [ 2-1:0] radio0_radio_tx_stb; + wire [ 2-1:0] radio0_radio_tx_running; + + rfnoc_block_radio #( + .THIS_PORTID(2), + .CHDR_W(CHDR_W), + .NUM_PORTS(2), + .MTU(MTU) + ) b_radio0_0 ( + .rfnoc_chdr_clk (rfnoc_chdr_clk), + .rfnoc_ctrl_clk (rfnoc_ctrl_clk), + .radio_clk(radio0_radio_clk), + .rfnoc_core_config (rfnoc_core_config[512*1-1:512*0]), + .rfnoc_core_status (rfnoc_core_status[512*1-1:512*0]), + + .m_ctrlport_req_wr(radio0_m_ctrlport_req_wr), + .m_ctrlport_req_rd(radio0_m_ctrlport_req_rd), + .m_ctrlport_req_addr(radio0_m_ctrlport_req_addr), + .m_ctrlport_req_data(radio0_m_ctrlport_req_data), + .m_ctrlport_req_byte_en(radio0_m_ctrlport_req_byte_en), + .m_ctrlport_req_has_time(radio0_m_ctrlport_req_has_time), + .m_ctrlport_req_time(radio0_m_ctrlport_req_time), + .m_ctrlport_resp_ack(radio0_m_ctrlport_resp_ack), + .m_ctrlport_resp_status(radio0_m_ctrlport_resp_status), + .m_ctrlport_resp_data(radio0_m_ctrlport_resp_data), + .radio_time(radio0_radio_time), + .radio_rx_data(radio0_radio_rx_data), + .radio_rx_stb(radio0_radio_rx_stb), + .radio_rx_running(radio0_radio_rx_running), + .radio_tx_data(radio0_radio_tx_data), + .radio_tx_stb(radio0_radio_tx_stb), + .radio_tx_running(radio0_radio_tx_running), + + .s_rfnoc_chdr_tdata ({s_radio0_in_1_tdata , s_radio0_in_0_tdata }), + .s_rfnoc_chdr_tlast ({s_radio0_in_1_tlast , s_radio0_in_0_tlast }), + .s_rfnoc_chdr_tvalid({s_radio0_in_1_tvalid, s_radio0_in_0_tvalid}), + .s_rfnoc_chdr_tready({s_radio0_in_1_tready, s_radio0_in_0_tready}), + .m_rfnoc_chdr_tdata ({m_radio0_out_1_tdata , m_radio0_out_0_tdata }), + .m_rfnoc_chdr_tlast ({m_radio0_out_1_tlast , m_radio0_out_0_tlast }), + .m_rfnoc_chdr_tvalid({m_radio0_out_1_tvalid, m_radio0_out_0_tvalid}), + .m_rfnoc_chdr_tready({m_radio0_out_1_tready, m_radio0_out_0_tready}), + .s_rfnoc_ctrl_tdata (s_radio0_ctrl_tdata ), + .s_rfnoc_ctrl_tlast (s_radio0_ctrl_tlast ), + .s_rfnoc_ctrl_tvalid(s_radio0_ctrl_tvalid), + .s_rfnoc_ctrl_tready(s_radio0_ctrl_tready), + .m_rfnoc_ctrl_tdata (m_radio0_ctrl_tdata ), + .m_rfnoc_ctrl_tlast (m_radio0_ctrl_tlast ), + .m_rfnoc_ctrl_tvalid(m_radio0_ctrl_tvalid), + .m_rfnoc_ctrl_tready(m_radio0_ctrl_tready) + ); + + + // ---------------------------------------------------- + // Static Router + // ---------------------------------------------------- + assign s_radio0_in_0_tdata = m_ep0_out0_tdata ; + assign s_radio0_in_0_tlast = m_ep0_out0_tlast ; + assign s_radio0_in_0_tvalid = m_ep0_out0_tvalid; + assign m_ep0_out0_tready = s_radio0_in_0_tready; + + assign s_radio0_in_1_tdata = m_ep1_out0_tdata ; + assign s_radio0_in_1_tlast = m_ep1_out0_tlast ; + assign s_radio0_in_1_tvalid = m_ep1_out0_tvalid; + assign m_ep1_out0_tready = s_radio0_in_1_tready; + + assign s_ep0_in0_tdata = m_radio0_out_0_tdata ; + assign s_ep0_in0_tlast = m_radio0_out_0_tlast ; + assign s_ep0_in0_tvalid = m_radio0_out_0_tvalid; + assign m_radio0_out_0_tready = s_ep0_in0_tready; + + assign s_ep1_in0_tdata = m_radio0_out_1_tdata ; + assign s_ep1_in0_tlast = m_radio0_out_1_tlast ; + assign s_ep1_in0_tvalid = m_radio0_out_1_tvalid; + assign m_radio0_out_1_tready = s_ep1_in0_tready; + + + // ---------------------------------------------------- + // Unused Ports + // ---------------------------------------------------- + + // ---------------------------------------------------- + // Clock Domains + // ---------------------------------------------------- + assign radio0_radio_clk = radio_clk; + + + // ---------------------------------------------------- + // IO Port Connection + // ---------------------------------------------------- + // Master/Slave Connections: + assign m_ctrlport_req_wr = radio0_m_ctrlport_req_wr; + assign m_ctrlport_req_rd = radio0_m_ctrlport_req_rd; + assign m_ctrlport_req_addr = radio0_m_ctrlport_req_addr; + assign m_ctrlport_req_data = radio0_m_ctrlport_req_data; + assign m_ctrlport_req_byte_en = radio0_m_ctrlport_req_byte_en; + assign m_ctrlport_req_has_time = radio0_m_ctrlport_req_has_time; + assign m_ctrlport_req_time = radio0_m_ctrlport_req_time; + assign radio0_m_ctrlport_resp_ack = m_ctrlport_resp_ack; + assign radio0_m_ctrlport_resp_status = m_ctrlport_resp_status; + assign radio0_m_ctrlport_resp_data = m_ctrlport_resp_data; + + assign radio0_radio_rx_data = radio_rx_data; + assign radio0_radio_rx_stb = radio_rx_stb; + assign radio_rx_running = radio0_radio_rx_running; + assign radio_tx_data = radio0_radio_tx_data; + assign radio0_radio_tx_stb = radio_tx_stb; + assign radio_tx_running = radio0_radio_tx_running; + + // Broadcaster/Listener Connections: + assign radio0_radio_time = radio_time; + +endmodule diff --git a/fpga/usrp3/top/e31x/e310_rfnoc_image_core.yml b/fpga/usrp3/top/e31x/e310_rfnoc_image_core.yml new file mode 100644 index 000000000..aa464454e --- /dev/null +++ b/fpga/usrp3/top/e31x/e310_rfnoc_image_core.yml @@ -0,0 +1,54 @@ +# General parameters +# ----------------------------------------- +schema: rfnoc_imagebuilder_args # Identifier for the schema used to validate this file +copyright: 'Ettus Research, A National Instruments Brand' # Copyright information used in file headers +license: 'SPDX-License-Identifier: LGPL-3.0-or-later' # License information used in file headers +version: 1.0 # File version +rfnoc_version: 1.0 # RFNoC protocol version +chdr_width: 64 # Bit width of the CHDR bus for this image +device: 'e310' +default_target: 'E310_SG3' + +# A list of all stream endpoints in design +# ---------------------------------------- +stream_endpoints: + ep0: # Stream endpoint name + ctrl: True # Endpoint passes control traffic + data: True # Endpoint passes data traffic + buff_size: 16384 # Ingress buffer size for data + ep1: # Stream endpoint name + ctrl: False # Endpoint passes control traffic + data: True # Endpoint passes data traffic + buff_size: 16384 # Ingress buffer size for data + +# A list of all NoC blocks in design +# ---------------------------------- +noc_blocks: + radio0: # NoC block name + block_desc: 'radio_2x64.yml' # Block device descriptor + +# A list of all static connections in design +# ------------------------------------------ +# Format: A list of connection maps (list of key-value pairs) with the following keys +# - srcblk = Source block to connect +# - srcport = Port on the source block to connect +# - dstblk = Destination block to connect +# - dstport = Port on the destination block to connect +connections: + - { srcblk: ep0, srcport: out0, dstblk: radio0, dstport: in_0 } + - { srcblk: ep1, srcport: out0, dstblk: radio0, dstport: in_1 } + - { srcblk: radio0, srcport: out_0, dstblk: ep0, dstport: in0 } + - { srcblk: radio0, srcport: out_1, dstblk: ep1, dstport: in0 } + - { srcblk: radio0, srcport: ctrl_port, dstblk: _device_, dstport: ctrlport_radio } + - { srcblk: _device_, srcport: x300_radio, dstblk: radio0, dstport: x300_radio } + - { srcblk: _device_, srcport: time_keeper, dstblk: radio0, dstport: time_keeper } + +# A list of all clock domain connections in design +# ------------------------------------------------ +# Format: A list of connection maps (list of key-value pairs) with the following keys +# - srcblk = Source block to connect (Always "_device"_) +# - srcport = Clock domain on the source block to connect +# - dstblk = Destination block to connect +# - dstport = Clock domain on the destination block to connect +clk_domains: + - { srcblk: _device_, srcport: radio, dstblk: radio0, dstport: radio } diff --git a/fpga/usrp3/top/e31x/e31x_rfnoc_image_core.v b/fpga/usrp3/top/e31x/e31x_rfnoc_image_core.v deleted file mode 100644 index 2f035d524..000000000 --- a/fpga/usrp3/top/e31x/e31x_rfnoc_image_core.v +++ /dev/null @@ -1,461 +0,0 @@ -// -// Copyright 2019 Ettus Research, A National Instruments Brand -// -// SPDX-License-Identifier: LGPL-3.0-or-later -// - -// Module: rfnoc_image_core (for e31x) -// This file was autogenerated by UHD's image builder tool (rfnoc_image_builder) -// Re-running that tool will overwrite this file! -// File generated on: 2019-11-08T15:58:15.219909 -// Source: ./e31x/e31x_rfnoc_image_core.yml -// Source SHA256: 48e2907163bf8462812f33b7cf995da37c44d9652ba3afa38c510910a2365c05 - -module rfnoc_image_core #( - parameter [15:0] PROTOVER = {8'd1, 8'd0} -)( - // Clocks - input wire chdr_aclk, - input wire ctrl_aclk, - input wire core_arst, - input wire radio_clk, - // Basic - input wire [15:0] device_id, -//// IO ports ////////////////////////////////// -// ctrlport_radio - output wire [ 1-1:0] m_ctrlport_req_wr, - output wire [ 1-1:0] m_ctrlport_req_rd, - output wire [ 20-1:0] m_ctrlport_req_addr, - output wire [ 32-1:0] m_ctrlport_req_data, - output wire [ 4-1:0] m_ctrlport_req_byte_en, - output wire [ 1-1:0] m_ctrlport_req_has_time, - output wire [ 64-1:0] m_ctrlport_req_time, - input wire [ 1-1:0] m_ctrlport_resp_ack, - input wire [ 2-1:0] m_ctrlport_resp_status, - input wire [ 32-1:0] m_ctrlport_resp_data, -// time_keeper - input wire [ 64-1:0] radio_time, -// x300_radio - input wire [ 64-1:0] radio_rx_data, - input wire [ 2-1:0] radio_rx_stb, - output wire [ 2-1:0] radio_rx_running, - output wire [ 64-1:0] radio_tx_data, - input wire [ 2-1:0] radio_tx_stb, - output wire [ 2-1:0] radio_tx_running, - // Transport 0 (dma dma) - input wire [64-1:0] s_dma_tdata, - input wire s_dma_tlast, - input wire s_dma_tvalid, - output wire s_dma_tready, - output wire [64-1:0] m_dma_tdata, - output wire m_dma_tlast, - output wire m_dma_tvalid, - input wire m_dma_tready -); - - localparam CHDR_W = 64; - localparam MTU = 10; - localparam EDGE_TBL_FILE = `"`RFNOC_EDGE_TBL_FILE`"; - - wire rfnoc_chdr_clk, rfnoc_chdr_rst; - wire rfnoc_ctrl_clk, rfnoc_ctrl_rst; - - // ---------------------------------------------------- - // CHDR Crossbar - // ---------------------------------------------------- - wire [CHDR_W-1:0] xb_to_ep0_tdata ; - wire xb_to_ep0_tlast ; - wire xb_to_ep0_tvalid; - wire xb_to_ep0_tready; - wire [CHDR_W-1:0] ep0_to_xb_tdata ; - wire ep0_to_xb_tlast ; - wire ep0_to_xb_tvalid; - wire ep0_to_xb_tready; - wire [CHDR_W-1:0] xb_to_ep1_tdata ; - wire xb_to_ep1_tlast ; - wire xb_to_ep1_tvalid; - wire xb_to_ep1_tready; - wire [CHDR_W-1:0] ep1_to_xb_tdata ; - wire ep1_to_xb_tlast ; - wire ep1_to_xb_tvalid; - wire ep1_to_xb_tready; - - chdr_crossbar_nxn #( - .CHDR_W (CHDR_W), - .NPORTS (3), - .DEFAULT_PORT (0), - .MTU (MTU), - .ROUTE_TBL_SIZE (6), - .MUX_ALLOC ("ROUND-ROBIN"), - .OPTIMIZE ("AREA"), - .NPORTS_MGMT (1), - .EXT_RTCFG_PORT (0), - .PROTOVER (PROTOVER) - ) chdr_xb_i ( - .clk (rfnoc_chdr_clk), - .reset (rfnoc_chdr_rst), - .device_id (device_id), - .s_axis_tdata ({ep1_to_xb_tdata, ep0_to_xb_tdata, s_dma_tdata}), - .s_axis_tlast ({ep1_to_xb_tlast, ep0_to_xb_tlast, s_dma_tlast}), - .s_axis_tvalid ({ep1_to_xb_tvalid, ep0_to_xb_tvalid, s_dma_tvalid}), - .s_axis_tready ({ep1_to_xb_tready, ep0_to_xb_tready, s_dma_tready}), - .m_axis_tdata ({xb_to_ep1_tdata, xb_to_ep0_tdata, m_dma_tdata}), - .m_axis_tlast ({xb_to_ep1_tlast, xb_to_ep0_tlast, m_dma_tlast}), - .m_axis_tvalid ({xb_to_ep1_tvalid, xb_to_ep0_tvalid, m_dma_tvalid}), - .m_axis_tready ({xb_to_ep1_tready, xb_to_ep0_tready, m_dma_tready}), - .ext_rtcfg_stb (1'h0), - .ext_rtcfg_addr (16'h0), - .ext_rtcfg_data (32'h0), - .ext_rtcfg_ack () - ); - - // ---------------------------------------------------- - // Stream Endpoints - // ---------------------------------------------------- - - wire [CHDR_W-1:0] m_ep0_out0_tdata; - wire m_ep0_out0_tlast; - wire m_ep0_out0_tvalid; - wire m_ep0_out0_tready; - wire [CHDR_W-1:0] s_ep0_in0_tdata; - wire s_ep0_in0_tlast; - wire s_ep0_in0_tvalid; - wire s_ep0_in0_tready; - wire [31:0] m_ep0_ctrl_tdata , s_ep0_ctrl_tdata ; - wire m_ep0_ctrl_tlast , s_ep0_ctrl_tlast ; - wire m_ep0_ctrl_tvalid, s_ep0_ctrl_tvalid; - wire m_ep0_ctrl_tready, s_ep0_ctrl_tready; - - chdr_stream_endpoint #( - .PROTOVER (PROTOVER), - .CHDR_W (CHDR_W), - .AXIS_CTRL_EN (1), - .AXIS_DATA_EN (1), - .NUM_DATA_I (1), - .NUM_DATA_O (1), - .INST_NUM (0), - .CTRL_XBAR_PORT (1), - .INGRESS_BUFF_SIZE (14), - .MTU (MTU), - .REPORT_STRM_ERRS (1) - ) ep0_i ( - .rfnoc_chdr_clk (rfnoc_chdr_clk ), - .rfnoc_chdr_rst (rfnoc_chdr_rst ), - .rfnoc_ctrl_clk (rfnoc_ctrl_clk ), - .rfnoc_ctrl_rst (rfnoc_ctrl_rst ), - .device_id (device_id ), - .s_axis_chdr_tdata (xb_to_ep0_tdata ), - .s_axis_chdr_tlast (xb_to_ep0_tlast ), - .s_axis_chdr_tvalid (xb_to_ep0_tvalid ), - .s_axis_chdr_tready (xb_to_ep0_tready ), - .m_axis_chdr_tdata (ep0_to_xb_tdata ), - .m_axis_chdr_tlast (ep0_to_xb_tlast ), - .m_axis_chdr_tvalid (ep0_to_xb_tvalid ), - .m_axis_chdr_tready (ep0_to_xb_tready ), - .s_axis_data_tdata ({s_ep0_in0_tdata}), - .s_axis_data_tlast ({s_ep0_in0_tlast}), - .s_axis_data_tvalid ({s_ep0_in0_tvalid}), - .s_axis_data_tready ({s_ep0_in0_tready}), - .m_axis_data_tdata ({m_ep0_out0_tdata}), - .m_axis_data_tlast ({m_ep0_out0_tlast}), - .m_axis_data_tvalid ({m_ep0_out0_tvalid}), - .m_axis_data_tready ({m_ep0_out0_tready}), - .s_axis_ctrl_tdata (s_ep0_ctrl_tdata ), - .s_axis_ctrl_tlast (s_ep0_ctrl_tlast ), - .s_axis_ctrl_tvalid (s_ep0_ctrl_tvalid), - .s_axis_ctrl_tready (s_ep0_ctrl_tready), - .m_axis_ctrl_tdata (m_ep0_ctrl_tdata ), - .m_axis_ctrl_tlast (m_ep0_ctrl_tlast ), - .m_axis_ctrl_tvalid (m_ep0_ctrl_tvalid), - .m_axis_ctrl_tready (m_ep0_ctrl_tready), - .strm_seq_err_stb ( ), - .strm_data_err_stb ( ), - .strm_route_err_stb ( ), - .signal_data_err (1'b0 ) - ); - - wire [CHDR_W-1:0] m_ep1_out0_tdata; - wire m_ep1_out0_tlast; - wire m_ep1_out0_tvalid; - wire m_ep1_out0_tready; - wire [CHDR_W-1:0] s_ep1_in0_tdata; - wire s_ep1_in0_tlast; - wire s_ep1_in0_tvalid; - wire s_ep1_in0_tready; - wire [31:0] m_ep1_ctrl_tdata , s_ep1_ctrl_tdata ; - wire m_ep1_ctrl_tlast , s_ep1_ctrl_tlast ; - wire m_ep1_ctrl_tvalid, s_ep1_ctrl_tvalid; - wire m_ep1_ctrl_tready, s_ep1_ctrl_tready; - - chdr_stream_endpoint #( - .PROTOVER (PROTOVER), - .CHDR_W (CHDR_W), - .AXIS_CTRL_EN (0), - .AXIS_DATA_EN (1), - .NUM_DATA_I (1), - .NUM_DATA_O (1), - .INST_NUM (1), - .CTRL_XBAR_PORT (2), - .INGRESS_BUFF_SIZE (14), - .MTU (MTU), - .REPORT_STRM_ERRS (1) - ) ep1_i ( - .rfnoc_chdr_clk (rfnoc_chdr_clk ), - .rfnoc_chdr_rst (rfnoc_chdr_rst ), - .rfnoc_ctrl_clk (rfnoc_ctrl_clk ), - .rfnoc_ctrl_rst (rfnoc_ctrl_rst ), - .device_id (device_id ), - .s_axis_chdr_tdata (xb_to_ep1_tdata ), - .s_axis_chdr_tlast (xb_to_ep1_tlast ), - .s_axis_chdr_tvalid (xb_to_ep1_tvalid ), - .s_axis_chdr_tready (xb_to_ep1_tready ), - .m_axis_chdr_tdata (ep1_to_xb_tdata ), - .m_axis_chdr_tlast (ep1_to_xb_tlast ), - .m_axis_chdr_tvalid (ep1_to_xb_tvalid ), - .m_axis_chdr_tready (ep1_to_xb_tready ), - .s_axis_data_tdata ({s_ep1_in0_tdata}), - .s_axis_data_tlast ({s_ep1_in0_tlast}), - .s_axis_data_tvalid ({s_ep1_in0_tvalid}), - .s_axis_data_tready ({s_ep1_in0_tready}), - .m_axis_data_tdata ({m_ep1_out0_tdata}), - .m_axis_data_tlast ({m_ep1_out0_tlast}), - .m_axis_data_tvalid ({m_ep1_out0_tvalid}), - .m_axis_data_tready ({m_ep1_out0_tready}), - .s_axis_ctrl_tdata (s_ep1_ctrl_tdata ), - .s_axis_ctrl_tlast (s_ep1_ctrl_tlast ), - .s_axis_ctrl_tvalid (s_ep1_ctrl_tvalid), - .s_axis_ctrl_tready (s_ep1_ctrl_tready), - .m_axis_ctrl_tdata (m_ep1_ctrl_tdata ), - .m_axis_ctrl_tlast (m_ep1_ctrl_tlast ), - .m_axis_ctrl_tvalid (m_ep1_ctrl_tvalid), - .m_axis_ctrl_tready (m_ep1_ctrl_tready), - .strm_seq_err_stb ( ), - .strm_data_err_stb ( ), - .strm_route_err_stb ( ), - .signal_data_err (1'b0 ) - ); - - - - // ---------------------------------------------------- - // Control Crossbar - // ---------------------------------------------------- - - wire [31:0] m_core_ctrl_tdata , s_core_ctrl_tdata ; - wire m_core_ctrl_tlast , s_core_ctrl_tlast ; - wire m_core_ctrl_tvalid, s_core_ctrl_tvalid; - wire m_core_ctrl_tready, s_core_ctrl_tready; - wire [31:0] m_radio0_ctrl_tdata , s_radio0_ctrl_tdata ; - wire m_radio0_ctrl_tlast , s_radio0_ctrl_tlast ; - wire m_radio0_ctrl_tvalid, s_radio0_ctrl_tvalid; - wire m_radio0_ctrl_tready, s_radio0_ctrl_tready; - - axis_ctrl_crossbar_nxn #( - .WIDTH (32), - .NPORTS (3), - .TOPOLOGY ("TORUS"), - .INGRESS_BUFF_SIZE(5), - .ROUTER_BUFF_SIZE (5), - .ROUTING_ALLOC ("WORMHOLE"), - .SWITCH_ALLOC ("PRIO") - ) ctrl_xb_i ( - .clk (rfnoc_ctrl_clk), - .reset (rfnoc_ctrl_rst), - .s_axis_tdata ({m_radio0_ctrl_tdata , m_ep0_ctrl_tdata , m_core_ctrl_tdata }), - .s_axis_tvalid ({m_radio0_ctrl_tvalid, m_ep0_ctrl_tvalid, m_core_ctrl_tvalid}), - .s_axis_tlast ({m_radio0_ctrl_tlast , m_ep0_ctrl_tlast , m_core_ctrl_tlast }), - .s_axis_tready ({m_radio0_ctrl_tready, m_ep0_ctrl_tready, m_core_ctrl_tready}), - .m_axis_tdata ({s_radio0_ctrl_tdata , s_ep0_ctrl_tdata , s_core_ctrl_tdata }), - .m_axis_tvalid ({s_radio0_ctrl_tvalid, s_ep0_ctrl_tvalid, s_core_ctrl_tvalid}), - .m_axis_tlast ({s_radio0_ctrl_tlast , s_ep0_ctrl_tlast , s_core_ctrl_tlast }), - .m_axis_tready ({s_radio0_ctrl_tready, s_ep0_ctrl_tready, s_core_ctrl_tready}), - .deadlock_detected() - ); - - // ---------------------------------------------------- - // RFNoC Core Kernel - // ---------------------------------------------------- - wire [(512*1)-1:0] rfnoc_core_config, rfnoc_core_status; - - rfnoc_core_kernel #( - .PROTOVER (PROTOVER), - .DEVICE_TYPE (16'hE310), - .DEVICE_FAMILY ("7SERIES"), - .SAFE_START_CLKS (0), - .NUM_BLOCKS (1), - .NUM_STREAM_ENDPOINTS(2), - .NUM_ENDPOINTS_CTRL (1), - .NUM_TRANSPORTS (1), - .NUM_EDGES (4), - .CHDR_XBAR_PRESENT (1), - .EDGE_TBL_FILE (EDGE_TBL_FILE) - ) core_kernel_i ( - .chdr_aclk (chdr_aclk), - .chdr_aclk_locked (1'b1), - .ctrl_aclk (ctrl_aclk), - .ctrl_aclk_locked (1'b1), - .core_arst (core_arst), - .core_chdr_clk (rfnoc_chdr_clk), - .core_chdr_rst (rfnoc_chdr_rst), - .core_ctrl_clk (rfnoc_ctrl_clk), - .core_ctrl_rst (rfnoc_ctrl_rst), - .s_axis_ctrl_tdata (s_core_ctrl_tdata ), - .s_axis_ctrl_tlast (s_core_ctrl_tlast ), - .s_axis_ctrl_tvalid (s_core_ctrl_tvalid), - .s_axis_ctrl_tready (s_core_ctrl_tready), - .m_axis_ctrl_tdata (m_core_ctrl_tdata ), - .m_axis_ctrl_tlast (m_core_ctrl_tlast ), - .m_axis_ctrl_tvalid (m_core_ctrl_tvalid), - .m_axis_ctrl_tready (m_core_ctrl_tready), - .device_id (device_id), - .rfnoc_core_config (rfnoc_core_config), - .rfnoc_core_status (rfnoc_core_status) - ); - - // ---------------------------------------------------- - // Blocks - // ---------------------------------------------------- - - // ---------------------------------------------------- - // radio0 - // ---------------------------------------------------- - wire radio0_radio_clk; - wire [CHDR_W-1:0] s_radio0_in_1_tdata , s_radio0_in_0_tdata ; - wire s_radio0_in_1_tlast , s_radio0_in_0_tlast ; - wire s_radio0_in_1_tvalid, s_radio0_in_0_tvalid; - wire s_radio0_in_1_tready, s_radio0_in_0_tready; - wire [CHDR_W-1:0] m_radio0_out_1_tdata , m_radio0_out_0_tdata ; - wire m_radio0_out_1_tlast , m_radio0_out_0_tlast ; - wire m_radio0_out_1_tvalid, m_radio0_out_0_tvalid; - wire m_radio0_out_1_tready, m_radio0_out_0_tready; - - // ctrl_port - wire [ 1-1:0] radio0_m_ctrlport_req_wr; - wire [ 1-1:0] radio0_m_ctrlport_req_rd; - wire [ 20-1:0] radio0_m_ctrlport_req_addr; - wire [ 32-1:0] radio0_m_ctrlport_req_data; - wire [ 4-1:0] radio0_m_ctrlport_req_byte_en; - wire [ 1-1:0] radio0_m_ctrlport_req_has_time; - wire [ 64-1:0] radio0_m_ctrlport_req_time; - wire [ 1-1:0] radio0_m_ctrlport_resp_ack; - wire [ 2-1:0] radio0_m_ctrlport_resp_status; - wire [ 32-1:0] radio0_m_ctrlport_resp_data; - // time_keeper - wire [ 64-1:0] radio0_radio_time; - // x300_radio - wire [ 64-1:0] radio0_radio_rx_data; - wire [ 2-1:0] radio0_radio_rx_stb; - wire [ 2-1:0] radio0_radio_rx_running; - wire [ 64-1:0] radio0_radio_tx_data; - wire [ 2-1:0] radio0_radio_tx_stb; - wire [ 2-1:0] radio0_radio_tx_running; - - rfnoc_block_radio #( - .THIS_PORTID(2), - .CHDR_W(CHDR_W), - .NUM_PORTS(2), - .MTU(MTU) - ) b_radio0_0 ( - .rfnoc_chdr_clk (rfnoc_chdr_clk), - .rfnoc_ctrl_clk (rfnoc_ctrl_clk), - .radio_clk(radio0_radio_clk), - .rfnoc_core_config (rfnoc_core_config[512*1-1:512*0]), - .rfnoc_core_status (rfnoc_core_status[512*1-1:512*0]), - - .m_ctrlport_req_wr(radio0_m_ctrlport_req_wr), - .m_ctrlport_req_rd(radio0_m_ctrlport_req_rd), - .m_ctrlport_req_addr(radio0_m_ctrlport_req_addr), - .m_ctrlport_req_data(radio0_m_ctrlport_req_data), - .m_ctrlport_req_byte_en(radio0_m_ctrlport_req_byte_en), - .m_ctrlport_req_has_time(radio0_m_ctrlport_req_has_time), - .m_ctrlport_req_time(radio0_m_ctrlport_req_time), - .m_ctrlport_resp_ack(radio0_m_ctrlport_resp_ack), - .m_ctrlport_resp_status(radio0_m_ctrlport_resp_status), - .m_ctrlport_resp_data(radio0_m_ctrlport_resp_data), - .radio_time(radio0_radio_time), - .radio_rx_data(radio0_radio_rx_data), - .radio_rx_stb(radio0_radio_rx_stb), - .radio_rx_running(radio0_radio_rx_running), - .radio_tx_data(radio0_radio_tx_data), - .radio_tx_stb(radio0_radio_tx_stb), - .radio_tx_running(radio0_radio_tx_running), - - .s_rfnoc_chdr_tdata ({s_radio0_in_1_tdata , s_radio0_in_0_tdata }), - .s_rfnoc_chdr_tlast ({s_radio0_in_1_tlast , s_radio0_in_0_tlast }), - .s_rfnoc_chdr_tvalid({s_radio0_in_1_tvalid, s_radio0_in_0_tvalid}), - .s_rfnoc_chdr_tready({s_radio0_in_1_tready, s_radio0_in_0_tready}), - .m_rfnoc_chdr_tdata ({m_radio0_out_1_tdata , m_radio0_out_0_tdata }), - .m_rfnoc_chdr_tlast ({m_radio0_out_1_tlast , m_radio0_out_0_tlast }), - .m_rfnoc_chdr_tvalid({m_radio0_out_1_tvalid, m_radio0_out_0_tvalid}), - .m_rfnoc_chdr_tready({m_radio0_out_1_tready, m_radio0_out_0_tready}), - .s_rfnoc_ctrl_tdata (s_radio0_ctrl_tdata ), - .s_rfnoc_ctrl_tlast (s_radio0_ctrl_tlast ), - .s_rfnoc_ctrl_tvalid(s_radio0_ctrl_tvalid), - .s_rfnoc_ctrl_tready(s_radio0_ctrl_tready), - .m_rfnoc_ctrl_tdata (m_radio0_ctrl_tdata ), - .m_rfnoc_ctrl_tlast (m_radio0_ctrl_tlast ), - .m_rfnoc_ctrl_tvalid(m_radio0_ctrl_tvalid), - .m_rfnoc_ctrl_tready(m_radio0_ctrl_tready) - ); - - - // ---------------------------------------------------- - // Static Router - // ---------------------------------------------------- - assign s_radio0_in_0_tdata = m_ep0_out0_tdata ; - assign s_radio0_in_0_tlast = m_ep0_out0_tlast ; - assign s_radio0_in_0_tvalid = m_ep0_out0_tvalid; - assign m_ep0_out0_tready = s_radio0_in_0_tready; - - assign s_radio0_in_1_tdata = m_ep1_out0_tdata ; - assign s_radio0_in_1_tlast = m_ep1_out0_tlast ; - assign s_radio0_in_1_tvalid = m_ep1_out0_tvalid; - assign m_ep1_out0_tready = s_radio0_in_1_tready; - - assign s_ep0_in0_tdata = m_radio0_out_0_tdata ; - assign s_ep0_in0_tlast = m_radio0_out_0_tlast ; - assign s_ep0_in0_tvalid = m_radio0_out_0_tvalid; - assign m_radio0_out_0_tready = s_ep0_in0_tready; - - assign s_ep1_in0_tdata = m_radio0_out_1_tdata ; - assign s_ep1_in0_tlast = m_radio0_out_1_tlast ; - assign s_ep1_in0_tvalid = m_radio0_out_1_tvalid; - assign m_radio0_out_1_tready = s_ep1_in0_tready; - - - // ---------------------------------------------------- - // Unused Ports - // ---------------------------------------------------- - - // ---------------------------------------------------- - // Clock Domains - // ---------------------------------------------------- - assign radio0_radio_clk = radio_clk; - - - // ---------------------------------------------------- - // IO Port Connection - // ---------------------------------------------------- - // Master/Slave Connections: - assign m_ctrlport_req_wr = radio0_m_ctrlport_req_wr; - assign m_ctrlport_req_rd = radio0_m_ctrlport_req_rd; - assign m_ctrlport_req_addr = radio0_m_ctrlport_req_addr; - assign m_ctrlport_req_data = radio0_m_ctrlport_req_data; - assign m_ctrlport_req_byte_en = radio0_m_ctrlport_req_byte_en; - assign m_ctrlport_req_has_time = radio0_m_ctrlport_req_has_time; - assign m_ctrlport_req_time = radio0_m_ctrlport_req_time; - assign radio0_m_ctrlport_resp_ack = m_ctrlport_resp_ack; - assign radio0_m_ctrlport_resp_status = m_ctrlport_resp_status; - assign radio0_m_ctrlport_resp_data = m_ctrlport_resp_data; - - assign radio0_radio_rx_data = radio_rx_data; - assign radio0_radio_rx_stb = radio_rx_stb; - assign radio_rx_running = radio0_radio_rx_running; - assign radio_tx_data = radio0_radio_tx_data; - assign radio0_radio_tx_stb = radio_tx_stb; - assign radio_tx_running = radio0_radio_tx_running; - - // Broadcaster/Listener Connections: - assign radio0_radio_time = radio_time; - -endmodule diff --git a/fpga/usrp3/top/e31x/e31x_rfnoc_image_core.yml b/fpga/usrp3/top/e31x/e31x_rfnoc_image_core.yml deleted file mode 100644 index aa464454e..000000000 --- a/fpga/usrp3/top/e31x/e31x_rfnoc_image_core.yml +++ /dev/null @@ -1,54 +0,0 @@ -# General parameters -# ----------------------------------------- -schema: rfnoc_imagebuilder_args # Identifier for the schema used to validate this file -copyright: 'Ettus Research, A National Instruments Brand' # Copyright information used in file headers -license: 'SPDX-License-Identifier: LGPL-3.0-or-later' # License information used in file headers -version: 1.0 # File version -rfnoc_version: 1.0 # RFNoC protocol version -chdr_width: 64 # Bit width of the CHDR bus for this image -device: 'e310' -default_target: 'E310_SG3' - -# A list of all stream endpoints in design -# ---------------------------------------- -stream_endpoints: - ep0: # Stream endpoint name - ctrl: True # Endpoint passes control traffic - data: True # Endpoint passes data traffic - buff_size: 16384 # Ingress buffer size for data - ep1: # Stream endpoint name - ctrl: False # Endpoint passes control traffic - data: True # Endpoint passes data traffic - buff_size: 16384 # Ingress buffer size for data - -# A list of all NoC blocks in design -# ---------------------------------- -noc_blocks: - radio0: # NoC block name - block_desc: 'radio_2x64.yml' # Block device descriptor - -# A list of all static connections in design -# ------------------------------------------ -# Format: A list of connection maps (list of key-value pairs) with the following keys -# - srcblk = Source block to connect -# - srcport = Port on the source block to connect -# - dstblk = Destination block to connect -# - dstport = Port on the destination block to connect -connections: - - { srcblk: ep0, srcport: out0, dstblk: radio0, dstport: in_0 } - - { srcblk: ep1, srcport: out0, dstblk: radio0, dstport: in_1 } - - { srcblk: radio0, srcport: out_0, dstblk: ep0, dstport: in0 } - - { srcblk: radio0, srcport: out_1, dstblk: ep1, dstport: in0 } - - { srcblk: radio0, srcport: ctrl_port, dstblk: _device_, dstport: ctrlport_radio } - - { srcblk: _device_, srcport: x300_radio, dstblk: radio0, dstport: x300_radio } - - { srcblk: _device_, srcport: time_keeper, dstblk: radio0, dstport: time_keeper } - -# A list of all clock domain connections in design -# ------------------------------------------------ -# Format: A list of connection maps (list of key-value pairs) with the following keys -# - srcblk = Source block to connect (Always "_device"_) -# - srcport = Clock domain on the source block to connect -# - dstblk = Destination block to connect -# - dstport = Clock domain on the destination block to connect -clk_domains: - - { srcblk: _device_, srcport: radio, dstblk: radio0, dstport: radio } -- cgit v1.2.3