aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/rfnoc/utils
diff options
context:
space:
mode:
authorJavier Valenzuela <javier.valenzuela@ni.com>2021-06-23 11:32:01 -0700
committerWade Fife <wade.fife@ettus.com>2022-01-25 10:18:47 -0700
commit87b2cf09301e90dfaf2a6554c424b62e0558e0b1 (patch)
tree7327ae0f20ddf6950b38e51bc91edac52aa00154 /fpga/usrp3/lib/rfnoc/utils
parent3d045685aba50900f968c48c22759bd76c01bf0a (diff)
downloaduhd-87b2cf09301e90dfaf2a6554c424b62e0558e0b1.tar.gz
uhd-87b2cf09301e90dfaf2a6554c424b62e0558e0b1.tar.bz2
uhd-87b2cf09301e90dfaf2a6554c424b62e0558e0b1.zip
fpga: x400: Connect Radio Blocks to DIO
Diffstat (limited to 'fpga/usrp3/lib/rfnoc/utils')
-rw-r--r--fpga/usrp3/lib/rfnoc/utils/Makefile.srcs1
-rw-r--r--fpga/usrp3/lib/rfnoc/utils/ctrlport_window.v73
2 files changed, 74 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/rfnoc/utils/Makefile.srcs b/fpga/usrp3/lib/rfnoc/utils/Makefile.srcs
index fe4135f17..11312eeff 100644
--- a/fpga/usrp3/lib/rfnoc/utils/Makefile.srcs
+++ b/fpga/usrp3/lib/rfnoc/utils/Makefile.srcs
@@ -20,6 +20,7 @@ ctrlport_timer.v \
ctrlport_combiner.v \
ctrlport_decoder.v \
ctrlport_decoder_param.v \
+ctrlport_window.v \
ctrlport_splitter.v \
ctrlport_resp_combine.v \
ctrlport_clk_cross.v \
diff --git a/fpga/usrp3/lib/rfnoc/utils/ctrlport_window.v b/fpga/usrp3/lib/rfnoc/utils/ctrlport_window.v
new file mode 100644
index 000000000..4a886d34d
--- /dev/null
+++ b/fpga/usrp3/lib/rfnoc/utils/ctrlport_window.v
@@ -0,0 +1,73 @@
+//
+// Copyright 2021 Ettus Research, a National Instruments Brand
+//
+// SPDX-License-Identifier: LGPL-3.0-or-later
+//
+// Module: ctrlport_window
+//
+// Description:
+// Copy requests from slave to master interface when s_ctrlport_req_addr is in
+// address range specified by BASE_ADDRESS and WINDOW_SIZE. The modules does
+// not use any registers and therefore does not need ctrlport_clk and
+// ctrlport_rst.
+//
+
+`default_nettype none
+
+module ctrlport_window #(
+ parameter BASE_ADDRESS = 0,
+ parameter WINDOW_SIZE = 32
+) (
+ // Slave Interface
+ input wire s_ctrlport_req_wr,
+ input wire s_ctrlport_req_rd,
+ input wire [19:0] s_ctrlport_req_addr,
+ input wire [ 9:0] s_ctrlport_req_portid,
+ input wire [15:0] s_ctrlport_req_rem_epid,
+ input wire [ 9:0] s_ctrlport_req_rem_portid,
+ input wire [31:0] s_ctrlport_req_data,
+ input wire [ 3:0] s_ctrlport_req_byte_en,
+ input wire s_ctrlport_req_has_time,
+ input wire [63:0] s_ctrlport_req_time,
+ output wire s_ctrlport_resp_ack,
+ output wire [ 1:0] s_ctrlport_resp_status,
+ output wire [31:0] s_ctrlport_resp_data,
+
+ // Master Interface
+ output wire m_ctrlport_req_wr,
+ output wire m_ctrlport_req_rd,
+ output wire [19:0] m_ctrlport_req_addr,
+ output wire [ 9:0] m_ctrlport_req_portid,
+ output wire [15:0] m_ctrlport_req_rem_epid,
+ output wire [ 9:0] m_ctrlport_req_rem_portid,
+ output wire [31:0] m_ctrlport_req_data,
+ output wire [ 3:0] m_ctrlport_req_byte_en,
+ output wire m_ctrlport_req_has_time,
+ output wire [63:0] m_ctrlport_req_time,
+ input wire m_ctrlport_resp_ack,
+ input wire [ 1:0] m_ctrlport_resp_status,
+ input wire [31:0] m_ctrlport_resp_data
+);
+
+ // Mask write and read flag
+ wire address_in_range = (s_ctrlport_req_addr >= BASE_ADDRESS) && (s_ctrlport_req_addr < BASE_ADDRESS + WINDOW_SIZE);
+ assign m_ctrlport_req_wr = s_ctrlport_req_wr & address_in_range;
+ assign m_ctrlport_req_rd = s_ctrlport_req_rd & address_in_range;
+
+ // Forward all other signals untouched.
+ assign m_ctrlport_req_addr = s_ctrlport_req_addr;
+ assign m_ctrlport_req_portid = s_ctrlport_req_portid;
+ assign m_ctrlport_req_rem_epid = s_ctrlport_req_rem_epid;
+ assign m_ctrlport_req_rem_portid = s_ctrlport_req_rem_portid;
+ assign m_ctrlport_req_data = s_ctrlport_req_data;
+ assign m_ctrlport_req_byte_en = s_ctrlport_req_byte_en;
+ assign m_ctrlport_req_has_time = s_ctrlport_req_has_time;
+ assign m_ctrlport_req_time = s_ctrlport_req_time;
+
+ assign s_ctrlport_resp_ack = m_ctrlport_resp_ack;
+ assign s_ctrlport_resp_status = m_ctrlport_resp_status;
+ assign s_ctrlport_resp_data = m_ctrlport_resp_data;
+
+endmodule
+
+`default_nettype wire