1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
|