ramblings
This commit is contained in:
@@ -23,13 +23,15 @@ logic [127:0] poly1305_r, poly1305_s;
|
||||
logic [129:0] accumulator, accumulator_next;
|
||||
|
||||
logic [129:0] data_one_extended;
|
||||
logic [130:0] data_post_add;
|
||||
logic [130:0] data_post_add, data_post_add_reg;
|
||||
|
||||
logic [257:0] data_post_mul, data_post_mul_reg;
|
||||
|
||||
logic phase;
|
||||
logic [257:0] modulo_stage, modulo_stage_next;
|
||||
|
||||
logic [1:0] valid_sr;
|
||||
logic [2:0] phase;
|
||||
|
||||
logic [3:0] valid_sr;
|
||||
|
||||
function logic [129:0] tkeep_expand (input [15:0] tkeep);
|
||||
tkeep_expand = '0;
|
||||
@@ -40,7 +42,7 @@ endfunction
|
||||
|
||||
// only ready in phase 0
|
||||
assign s_data_axis.tready = phase == 0;
|
||||
assign o_tag_valid = valid_sr[1];
|
||||
assign o_tag_valid = valid_sr[3];
|
||||
|
||||
always_ff @(posedge i_clk) begin
|
||||
if (i_rst) begin
|
||||
@@ -48,7 +50,10 @@ always_ff @(posedge i_clk) begin
|
||||
valid_sr <= '0;
|
||||
end
|
||||
|
||||
valid_sr <= {valid_sr[0], s_data_axis.tlast & s_data_axis.tvalid & s_data_axis.tready & ~phase};
|
||||
valid_sr <= {valid_sr[2:0], s_data_axis.tlast & s_data_axis.tvalid & s_data_axis.tready & (phase == 0)};
|
||||
data_post_add_reg <= data_post_add;
|
||||
data_post_mul_reg <= data_post_mul;
|
||||
modulo_stage <= modulo_stage_next;
|
||||
|
||||
if (i_otk_valid) begin
|
||||
poly1305_r <= i_otk[255:128] & R_MASK;
|
||||
@@ -56,11 +61,18 @@ always_ff @(posedge i_clk) begin
|
||||
end
|
||||
|
||||
if (s_data_axis.tvalid && phase == 0) begin
|
||||
data_post_mul_reg <= data_post_mul;
|
||||
phase <= '1;
|
||||
phase <= 1;
|
||||
end
|
||||
|
||||
if (phase == '1) begin
|
||||
if (phase == 1) begin
|
||||
phase <= 2;
|
||||
end
|
||||
|
||||
if (phase == 2) begin
|
||||
phase <= 3;
|
||||
end
|
||||
|
||||
if (phase == 3) begin
|
||||
accumulator <= accumulator_next;
|
||||
phase <= '0;
|
||||
end
|
||||
@@ -73,10 +85,15 @@ always_comb begin
|
||||
// phase == 0
|
||||
data_one_extended = (tkeep_expand(s_data_axis.tkeep) + 1) | {2'b0, s_data_axis.tdata};
|
||||
data_post_add = data_one_extended + accumulator;
|
||||
data_post_mul = data_post_add * poly1305_r;
|
||||
|
||||
// phase == 1
|
||||
accumulator_next = 130'(data_post_mul_reg % P130M5);
|
||||
data_post_mul = data_post_add_reg * poly1305_r;
|
||||
|
||||
// phase == 2
|
||||
modulo_stage_next = (data_post_mul_reg[257:130] * 5) + 258'(data_post_mul_reg[129:0]);
|
||||
|
||||
// phase == 3
|
||||
accumulator_next = 130'((modulo_stage[257:130] * 5) + 258'(modulo_stage[129:0]));
|
||||
end
|
||||
|
||||
assign o_tag = accumulator[127:0] + poly1305_s;
|
||||
|
||||
Reference in New Issue
Block a user