aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/rfnoc/cmul.v
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/usrp3/lib/rfnoc/cmul.v')
-rw-r--r--fpga/usrp3/lib/rfnoc/cmul.v23
1 files changed, 23 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/rfnoc/cmul.v b/fpga/usrp3/lib/rfnoc/cmul.v
new file mode 100644
index 000000000..1acb1a8cc
--- /dev/null
+++ b/fpga/usrp3/lib/rfnoc/cmul.v
@@ -0,0 +1,23 @@
+//
+// Copyright 2014 Ettus Research LLC
+// Copyright 2018 Ettus Research, a National Instruments Company
+//
+// SPDX-License-Identifier: LGPL-3.0-or-later
+//
+// This block exists only to wrap the Xilinx IP which has a different interface
+// Xilinx puts Q in the high bits, I in the low bits, and inverts reset
+
+module cmul
+ (input clk, input reset,
+ input [31:0] a_tdata, input a_tlast, input a_tvalid, output a_tready,
+ input [31:0] b_tdata, input b_tlast, input b_tvalid, output b_tready,
+ output [63:0] o_tdata, output o_tlast, output o_tvalid, input o_tready);
+
+ complex_multiplier complex_multiplier
+ (.aclk(clk), .aresetn(~reset),
+ .s_axis_a_tdata({a_tdata[15:0], a_tdata[31:16]}), .s_axis_a_tlast(a_tlast), .s_axis_a_tvalid(a_tvalid), .s_axis_a_tready(a_tready),
+ .s_axis_b_tdata({b_tdata[15:0], b_tdata[31:16]}), .s_axis_b_tlast(b_tlast), .s_axis_b_tvalid(b_tvalid), .s_axis_b_tready(b_tready),
+ .s_axis_ctrl_tdata(8'd0), .s_axis_ctrl_tvalid(1'b1), .s_axis_ctrl_tready(),
+ .m_axis_dout_tdata({o_tdata[31:0], o_tdata[63:32]}), .m_axis_dout_tlast(o_tlast), .m_axis_dout_tvalid(o_tvalid), .m_axis_dout_tready(o_tready));
+
+endmodule // cmul