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"
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
  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;
 | 
			
		||||
 | 
			
		||||
  always_comb begin
 | 
			
		||||
    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
 | 
			
		||||
        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
 | 
			
		||||
      ClmulResult[i] = s[WIDTH*i+j-1];
 | 
			
		||||
      ClmulResult[i] = S[WIDTH*i+j-1];
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
@ -36,19 +36,16 @@ module zbc #(parameter WIDTH=32) (
 | 
			
		||||
 | 
			
		||||
  logic [WIDTH-1:0] ClmulResult, RevClmulResult;
 | 
			
		||||
  logic [WIDTH-1:0] RevB;
 | 
			
		||||
  logic [WIDTH-1:0] x,y;
 | 
			
		||||
  logic [1:0] select;
 | 
			
		||||
  logic [WIDTH-1:0] X, Y;
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
  mux3 #(WIDTH) ymux({{1'b0},RevB[WIDTH-2:0]}, RevB, B,  select, y);
 | 
			
		||||
  clmul #(WIDTH) clm(.X, .Y, .ClmulResult);
 | 
			
		||||
  
 | 
			
		||||
  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);
 | 
			
		||||
endmodule
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user