25 lines
768 B
Systemverilog
25 lines
768 B
Systemverilog
|
`include "defines.svh"
|
||
|
|
||
|
module div_unsigned(
|
||
|
input logic aclk,
|
||
|
input logic s_axis_dividend_tvalid,
|
||
|
input logic [31:0] s_axis_dividend_tdata,
|
||
|
input logic s_axis_divisor_tvalid,
|
||
|
input logic [31:0] s_axis_divisor_tdata,
|
||
|
output logic m_axis_dout_tvalid,
|
||
|
output logic [63:0] m_axis_dout_tdata
|
||
|
);
|
||
|
|
||
|
always_ff @(posedge aclk)
|
||
|
if (s_axis_dividend_tvalid & s_axis_divisor_tvalid) begin
|
||
|
m_axis_dout_tvalid <= 1'b1;
|
||
|
m_axis_dout_tdata[63:32] <= $unsigned(s_axis_dividend_tdata) / $unsigned(s_axis_divisor_tdata);
|
||
|
m_axis_dout_tdata[31: 0] <= $unsigned(s_axis_dividend_tdata) % $unsigned(s_axis_divisor_tdata);
|
||
|
end else begin
|
||
|
m_axis_dout_tvalid <= 0;
|
||
|
m_axis_dout_tdata <= 0;
|
||
|
end
|
||
|
|
||
|
|
||
|
endmodule
|