Line 17... |
Line 17... |
|
|
// out = (v0 & l0) | (v1 & l1) | (v2 & l2) | ... | (v5 & l5)
|
// out = (v0 & l0) | (v1 & l1) | (v2 & l2) | ... | (v5 & l5)
|
module f3m_mux6(v0, v1, v2, v3, v4, v5, l0, l1, l2, l3, l4, l5, out);
|
module f3m_mux6(v0, v1, v2, v3, v4, v5, l0, l1, l2, l3, l4, l5, out);
|
input l0, l1, l2, l3, l4, l5;
|
input l0, l1, l2, l3, l4, l5;
|
input [`WIDTH:0] v0, v1, v2, v3, v4, v5;
|
input [`WIDTH:0] v0, v1, v2, v3, v4, v5;
|
output reg [`WIDTH:0] out;
|
output [`WIDTH:0] out;
|
always @ (l0,l1,l2,l3,l4,l5,v0,v1,v2,v3,v4,v5)
|
genvar i;
|
case ({l0,l1,l2,l3,l4,l5})
|
generate
|
6'b100000: out = v0;
|
for(i=0;i<=`WIDTH;i=i+1)
|
6'b010000: out = v1;
|
begin : label
|
6'b001000: out = v2;
|
assign out[i] = (v0[i]&l0)|(v1[i]&l1)|(v2[i]&l2)|(v3[i]&l3)|(v4[i]&l4)|(v5[i]&l5);
|
6'b000100: out = v3;
|
end
|
6'b000010: out = v4;
|
endgenerate
|
6'b000001: out = v5;
|
|
default: out = 0;
|
|
endcase
|
|
endmodule
|
endmodule
|
|
|
// f3m_add: C = A + B, in field F_{3^M}
|
// f3m_add: C = A + B, in field F_{3^M}
|
module f3m_add(A, B, C);
|
module f3m_add(A, B, C);
|
input [`WIDTH : 0] A, B;
|
input [`WIDTH : 0] A, B;
|