65 lines
1.0 KiB
Coq
65 lines
1.0 KiB
Coq
|
|
||
|
|
||
|
module PIPE3_ACC_48BIT(
|
||
|
clk,
|
||
|
rstn,
|
||
|
in,
|
||
|
clr,
|
||
|
ptw,
|
||
|
s_i_1,
|
||
|
s_i_2,
|
||
|
s_i_3,
|
||
|
s_o_1,
|
||
|
s_o_2,
|
||
|
s_o_3,
|
||
|
out
|
||
|
);
|
||
|
|
||
|
//---
|
||
|
|
||
|
input clk;
|
||
|
input rstn;
|
||
|
input [47:0] in;
|
||
|
input clr;
|
||
|
input [15:0] ptw;
|
||
|
|
||
|
input [15:0] s_i_1;
|
||
|
input [15:0] s_i_2;
|
||
|
input [15:0] s_i_3;
|
||
|
|
||
|
output [15:0] s_o_1;
|
||
|
output [15:0] s_o_2;
|
||
|
output [15:0] s_o_3;
|
||
|
output [18:0] out;
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------
|
||
|
|
||
|
reg [47:0] acc;
|
||
|
always@(posedge clk or negedge rstn)
|
||
|
if(!rstn)
|
||
|
acc<=48'h0;
|
||
|
else if(clr)
|
||
|
acc<=48'h0;
|
||
|
else
|
||
|
acc<={s_i_1,s_i_2,s_i_3}+in;
|
||
|
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------
|
||
|
wire [15:0] s1;
|
||
|
wire [15:0] s2;
|
||
|
wire [15:0] s3;
|
||
|
|
||
|
assign s_o_1 = acc[47:32];
|
||
|
assign s_o_2 = acc[31:16];
|
||
|
assign s_o_3 = acc[15:0];
|
||
|
|
||
|
wire[18:0] pha_w;
|
||
|
assign pha_w=acc[47:29];
|
||
|
reg[18:0] pha_r;
|
||
|
always@(posedge clk)
|
||
|
pha_r<=pha_w+{ptw,3'b0};
|
||
|
|
||
|
assign out=pha_r;
|
||
|
//END
|
||
|
endmodule
|