248
D. Gorodecky and T. Villa
Listing 11.1 Modulus function computation
module x_100_mod_47 (X, S ) ;
i n p u t [ 1 0 0 : 1 ] X;
output [ 6 : 1 ] S ;
wire [ 1 4 : 1 ] S_temp_1 ;
wire [ 1 1 : 1 ] S_temp_2 ;
wire [ 9 : 1 ] S_temp_3 ;
wire [ 8 : 1 ] S_temp_4 ;
wire [ 7 : 1 ] S_temp_5 ;
reg [ 6 : 1 ] S_temp ;
a s s i g n S_temp_1 = X [ 6 : 1 ] + X[ 1 2 : 7 ] * 5 ’ b10001 +
X[ 1 8 : 1 3 ] * 3 ’ b111 + X[ 2 4 : 1 9 ] * 5 ’ b11001 +
X[ 3 0 : 2 5 ] * 2 ’ b10 + X[ 3 6 : 3 1 ] * 6 ’ b100010 +
X[ 4 2 : 3 7 ] * 4 ’ b1110 + X[ 4 8 : 4 3 ] * 2 ’ b11 +
X[ 5 4 : 4 9 ] * 3 ’ b100 + X[ 6 0 : 5 5 ] * 5 ’ b10101 +
X[ 6 6 : 6 1 ] * 5 ’ b11100 + X[ 7 2 : 6 7 ] * 3 ’ b110 +
X[ 7 8 : 7 3 ] * 4 ’ b1000 + X[ 8 4 : 7 9 ] * 6 ’ b101010 +
X[ 9 0 : 8 5 ] * 4 ’ b1001 + X[ 9 6 : 9 1 ] * 4 ’ b1100 +
X[ 1 0 0 : 9 7 ] * 5 ’ b10000 ;
a s s i g n S_temp_2 = S_temp_1 [ 6 : 1 ] +
S_temp_1 [ 1 2 : 7 ] * 5 ’ b10001 +
S_temp_1 [ 1 4 : 1 3 ] * 3 ’ b111 ;
a s s i g n S_temp_3 = S_temp_2 [ 6 : 1 ] + S_temp_2 [ 1 1 : 7 ] * 5 ’ b10001 ;
a s s i g n S_temp_4 = S_temp_3 [ 6 : 1 ] + S_temp_3 [ 9 : 7 ] * 5 ’ b10001 ;
a s s i g n S_temp_5 = S_temp_4 [ 6 : 1 ] + S_temp_4 [ 8 : 7 ] * 5 ’ b10001 ;
always @( S_temp_5 )
begin
i f ( S_temp_5 >= 6 ’ b101111 )
S_temp <= S_temp_5 − 6 ’ b101111 ;
e l s e
S_temp <= S_temp_5 ;
end
a s s i g n S = S_temp ;
endmodule
D. Gorodecky and T. Villa
Listing 11.1 Modulus function computation
module x_100_mod_47 (X, S ) ;
i n p u t [ 1 0 0 : 1 ] X;
output [ 6 : 1 ] S ;
wire [ 1 4 : 1 ] S_temp_1 ;
wire [ 1 1 : 1 ] S_temp_2 ;
wire [ 9 : 1 ] S_temp_3 ;
wire [ 8 : 1 ] S_temp_4 ;
wire [ 7 : 1 ] S_temp_5 ;
reg [ 6 : 1 ] S_temp ;
a s s i g n S_temp_1 = X [ 6 : 1 ] + X[ 1 2 : 7 ] * 5 ’ b10001 +
X[ 1 8 : 1 3 ] * 3 ’ b111 + X[ 2 4 : 1 9 ] * 5 ’ b11001 +
X[ 3 0 : 2 5 ] * 2 ’ b10 + X[ 3 6 : 3 1 ] * 6 ’ b100010 +
X[ 4 2 : 3 7 ] * 4 ’ b1110 + X[ 4 8 : 4 3 ] * 2 ’ b11 +
X[ 5 4 : 4 9 ] * 3 ’ b100 + X[ 6 0 : 5 5 ] * 5 ’ b10101 +
X[ 6 6 : 6 1 ] * 5 ’ b11100 + X[ 7 2 : 6 7 ] * 3 ’ b110 +
X[ 7 8 : 7 3 ] * 4 ’ b1000 + X[ 8 4 : 7 9 ] * 6 ’ b101010 +
X[ 9 0 : 8 5 ] * 4 ’ b1001 + X[ 9 6 : 9 1 ] * 4 ’ b1100 +
X[ 1 0 0 : 9 7 ] * 5 ’ b10000 ;
a s s i g n S_temp_2 = S_temp_1 [ 6 : 1 ] +
S_temp_1 [ 1 2 : 7 ] * 5 ’ b10001 +
S_temp_1 [ 1 4 : 1 3 ] * 3 ’ b111 ;
a s s i g n S_temp_3 = S_temp_2 [ 6 : 1 ] + S_temp_2 [ 1 1 : 7 ] * 5 ’ b10001 ;
a s s i g n S_temp_4 = S_temp_3 [ 6 : 1 ] + S_temp_3 [ 9 : 7 ] * 5 ’ b10001 ;
a s s i g n S_temp_5 = S_temp_4 [ 6 : 1 ] + S_temp_4 [ 8 : 7 ] * 5 ’ b10001 ;
always @( S_temp_5 )
begin
i f ( S_temp_5 >= 6 ’ b101111 )
S_temp <= S_temp_5 − 6 ’ b101111 ;
e l s e
S_temp <= S_temp_5 ;
end
a s s i g n S = S_temp ;
endmodule
