point double in Fp2 working

This commit is contained in:
bsdevlin 2019-06-12 17:46:57 +08:00
parent 597384b1e0
commit 3630bb04b3
2 changed files with 8 additions and 7 deletions

View File

@ -119,7 +119,7 @@ end
// Point subtractions are simple subtractions on each of the Fp elements
enum {SUB0, SUB1} sub_state;
always_comb begin
sub_if_fe2_i.rdy = sub_state == ADD1 && (~sub_if_fe_o[0].val || (sub_if_fe_o[0].val && sub_if_fe_o[0].rdy));
sub_if_fe2_i.rdy = sub_state == SUB1 && (~sub_if_fe_o[0].val || (sub_if_fe_o[0].val && sub_if_fe_o[0].rdy));
sub_if_fe_i[0].rdy = ~sub_if_fe2_o.val || (sub_if_fe2_o.val && sub_if_fe2_o.rdy);
end
@ -137,8 +137,8 @@ always_ff @ (posedge i_clk) begin
case(sub_state)
SUB0: begin
if (~sub_if_fe_o[0].val || (sub_if_fe_o[0].val && sub_if_fe_o[0].rdy)) begin
sub_if_fe_o[0].copy_if({sub_if_fe2_i.dat[0 +: $bits(FE_TYPE)],
sub_if_fe2_i.dat[$bits(FE2_TYPE) +: $bits(FE_TYPE)]},
sub_if_fe_o[0].copy_if({sub_if_fe2_i.dat[$bits(FE2_TYPE) +: $bits(FE_TYPE)],
sub_if_fe2_i.dat[0 +: $bits(FE_TYPE)]},
sub_if_fe2_i.val, 1, 1, sub_if_fe2_i.err, sub_if_fe2_i.mod, sub_if_fe2_i.ctl);
sub_if_fe_o[0].ctl[ADD_CTL_BIT] <= 0;
if (sub_if_fe2_i.val) sub_state <= SUB1;
@ -146,9 +146,9 @@ always_ff @ (posedge i_clk) begin
end
SUB1: begin
if (~sub_if_fe_o[0].val || (sub_if_fe_o[0].val && sub_if_fe_o[0].rdy)) begin
sub_if_fe_o[0].copy_if({sub_if_fe2_i.dat[$bits(FE_TYPE) +: $bits(FE_TYPE)],
sub_if_fe2_i.dat[$bits(FE_TYPE) + $bits(FE2_TYPE) +: $bits(FE_TYPE)]},
sub_if_fe2_i.val, 1, 1, sub_if_fe2_i.err, sub_if_fe2_i.mod, sub_if_fe2_i.ctl);
sub_if_fe_o[0].copy_if({sub_if_fe2_i.dat[$bits(FE_TYPE) + $bits(FE2_TYPE) +: $bits(FE_TYPE)],
sub_if_fe2_i.dat[$bits(FE_TYPE) +: $bits(FE_TYPE)]},
sub_if_fe2_i.val, 1, 1, sub_if_fe2_i.err, sub_if_fe2_i.mod, sub_if_fe2_i.ctl);
sub_if_fe_o[0].ctl[ADD_CTL_BIT] <= 1;
if (sub_if_fe2_i.val) sub_state <= SUB0;
end

View File

@ -204,7 +204,8 @@ initial begin
in_if.val = 0;
#(40*CLK_PERIOD);
test(g2_point, dbl_fp2_jb_point(g2_point));
test(g2_point, dbl_fp2_jb_point(g2_point));
test(dbl_fp2_jb_point(g2_point), dbl_fp2_jb_point(dbl_fp2_jb_point(g2_point)));
#1us $finish();
end