forked from Github_Repos/cvw
changed signal names on clmul and zbc to match book
This commit is contained in:
parent
97181e063b
commit
9a4fa6ce96
@ -30,20 +30,20 @@
|
|||||||
`include "wally-config.vh"
|
`include "wally-config.vh"
|
||||||
|
|
||||||
module clmul #(parameter WIDTH=32) (
|
module clmul #(parameter WIDTH=32) (
|
||||||
input logic [WIDTH-1:0] A, B, // Operands
|
input logic [WIDTH-1:0] X, Y, // Operands
|
||||||
output logic [WIDTH-1:0] ClmulResult); // ZBS result
|
output logic [WIDTH-1:0] ClmulResult); // ZBS result
|
||||||
|
|
||||||
logic [(WIDTH*WIDTH)-1:0] s; // intermediary signals for carry-less multiply
|
logic [(WIDTH*WIDTH)-1:0] S; // intermediary signals for carry-less multiply
|
||||||
|
|
||||||
integer i,j;
|
integer i,j;
|
||||||
|
|
||||||
always_comb begin
|
always_comb begin
|
||||||
for (i=0;i<WIDTH;i++) begin: outer
|
for (i=0;i<WIDTH;i++) begin: outer
|
||||||
s[WIDTH*i]=A[0]&B[i];
|
S[WIDTH*i] = X[0] & Y[i];
|
||||||
for (j=1;j<=i;j++) begin: inner
|
for (j=1;j<=i;j++) begin: inner
|
||||||
s[WIDTH*i+j] = (A[j]&B[i-j])^s[WIDTH*i+j-1];
|
S[WIDTH*i+j] = (X[j] & Y[i-j]) ^ S[WIDTH*i+j-1];
|
||||||
end
|
end
|
||||||
ClmulResult[i] = s[WIDTH*i+j-1];
|
ClmulResult[i] = S[WIDTH*i+j-1];
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
@ -36,19 +36,16 @@ module zbc #(parameter WIDTH=32) (
|
|||||||
|
|
||||||
logic [WIDTH-1:0] ClmulResult, RevClmulResult;
|
logic [WIDTH-1:0] ClmulResult, RevClmulResult;
|
||||||
logic [WIDTH-1:0] RevB;
|
logic [WIDTH-1:0] RevB;
|
||||||
logic [WIDTH-1:0] x,y;
|
logic [WIDTH-1:0] X, Y;
|
||||||
logic [1:0] select;
|
|
||||||
|
|
||||||
assign select = ~Funct3[1:0];
|
bitreverse #(WIDTH) brB(B, RevB);
|
||||||
|
|
||||||
bitreverse #(WIDTH) brB(.A(B), .RevA(RevB));
|
mux3 #(WIDTH) xmux({RevA[WIDTH-2:0], {1'b0}}, RevA, A, ~Funct3[1:0], X);
|
||||||
|
mux3 #(WIDTH) ymux({{1'b0}, RevB[WIDTH-2:0]}, RevB, B, ~Funct3[1:0], Y);
|
||||||
|
|
||||||
mux3 #(WIDTH) xmux({RevA[WIDTH-2:0], {1'b0}}, RevA, A, select, x);
|
clmul #(WIDTH) clm(.X, .Y, .ClmulResult);
|
||||||
mux3 #(WIDTH) ymux({{1'b0},RevB[WIDTH-2:0]}, RevB, B, select, y);
|
|
||||||
|
|
||||||
clmul #(WIDTH) clm(.A(x), .B(y), .ClmulResult(ClmulResult));
|
|
||||||
|
|
||||||
bitreverse #(WIDTH) brClmulResult(.A(ClmulResult), .RevA(RevClmulResult));
|
bitreverse #(WIDTH) brClmulResult(ClmulResult, RevClmulResult);
|
||||||
|
|
||||||
mux2 #(WIDTH) zbcresultmux(ClmulResult, RevClmulResult, Funct3[1], ZBCResult);
|
mux2 #(WIDTH) zbcresultmux(ClmulResult, RevClmulResult, Funct3[1], ZBCResult);
|
||||||
endmodule
|
endmodule
|
Loading…
Reference in New Issue
Block a user