diff options
| author | Javier Valenzuela <javier.valenzuela@ni.com> | 2021-06-23 11:32:01 -0700 | 
|---|---|---|
| committer | Wade Fife <wade.fife@ettus.com> | 2022-01-25 10:18:47 -0700 | 
| commit | 87b2cf09301e90dfaf2a6554c424b62e0558e0b1 (patch) | |
| tree | 7327ae0f20ddf6950b38e51bc91edac52aa00154 /fpga/usrp3/lib/rfnoc/utils | |
| parent | 3d045685aba50900f968c48c22759bd76c01bf0a (diff) | |
| download | uhd-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.srcs | 1 | ||||
| -rw-r--r-- | fpga/usrp3/lib/rfnoc/utils/ctrlport_window.v | 73 | 
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  | 
