observerw's picture
download
raw
2.26 kB
`timescale 1ns/100ps
module gf16mul(
input [3:0] a,
input [3:0] b,
output reg [3:0] z
);
always @(*)
begin
case (b)
4'd1:
begin
z[0] = a[0];
z[1] = a[1];
z[2] = a[2];
z[3] = a[3];
end
4'd3:
begin
z[0] = a[0] ^ a[3];
z[1] = a[0] ^ a[1] ^ a[3];
z[2] = a[1] ^ a[2];
z[3] = a[2] ^ a[3];
end
4'd4:
begin
z[0] = a[2];
z[1] = a[2] ^ a[3];
z[2] = a[0] ^ a[3];
z[3] = a[1];
end
4'd6:
begin
z[0] = a[2] ^ a[3];
z[1] = a[0] ^ a[2];
z[2] = a[0] ^ a[1] ^ a[3];
z[3] = a[1] ^ a[2];
end
4'd7:
begin
z[0] = a[0] ^ a[2] ^ a[3];
z[1] = a[0] ^ a[1] ^ a[2];
z[2] = a[0] ^ a[1] ^ a[2] ^ a[3];
z[3] = a[1] ^ a[2] ^ a[3];
end
4'd8:
begin
z[0] = a[1];
z[1] = a[1] ^ a[2];
z[2] = a[2] ^ a[3];
z[3] = a[0] ^ a[3];
end
4'd9:
begin
z[0] = a[0] ^ a[1];
z[1] = a[2];
z[2] = a[3];
z[3] = a[0];
end
4'd12:
begin
z[0] = a[1] ^ a[2];
z[1] = a[1] ^ a[3];
z[2] = a[0] ^ a[2];
z[3] = a[0] ^ a[1] ^ a[3];
end
4'd13:
begin
z[0] = a[0] ^ a[1] ^ a[2];
z[1] = a[3];
z[2] = a[0];
z[3] = a[0] ^ a[1];
end
4'd14:
begin
z[0] = a[1] ^ a[2] ^ a[3];
z[1] = a[0] ^ a[1];
z[2] = a[0] ^ a[1] ^ a[2];
z[3] = a[0] ^ a[1] ^ a[2] ^ a[3];
end
default:
begin
z[0] = 0;
z[1] = 0;
z[2] = 0;
z[3] = 0;
end
endcase
end
endmodule

Xet Storage Details

Size:
2.26 kB
·
Xet hash:
102ce2b27c589407ee83cb6aa9988d1f492174f03a5e0ac4b42b0bc377295493

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.