diff options
Diffstat (limited to '2-c.v')
-rw-r--r-- | 2-c.v | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -0,0 +1,34 @@ +// для ненаписанного теста +// `include "2-a.v" +// `include "2-b.v" + +module linear_classifier(features, weights, r_value, r_class); + parameter WIDTH=8, FEATURES=2, C_WIDTH=1; + input [FEATURES*WIDTH-1:0]features; + input [(1<<C_WIDTH)*FEATURES*WIDTH-1:0]weights; + output [WIDTH-1:0]r_value; + output [C_WIDTH-1:0]r_class; + + wire [(1<<C_WIDTH)*FEATURES*WIDTH-1:0]prod; + wire [(1<<C_WIDTH)*WIDTH-1:0]sum; + + generate + genvar i; + for (i = 0; i < (1<<C_WIDTH)*FEATURES; i =i+1) + assign prod[(i+1)*WIDTH-1:i*WIDTH] = weights[(i+1)*WIDTH-1:i*WIDTH] + * features[(i%FEATURES+1)*WIDTH-1:(i%FEATURES)*WIDTH]; + for (i = 0; i < (1<<C_WIDTH); i = i+1) + tree_adder#(WIDTH, FEATURES) adder( + prod[WIDTH*FEATURES*(i+1)-1:WIDTH*FEATURES*i], + sum[WIDTH*(i+1)-1:WIDTH*i] + ); + endgenerate + max_argmax#(WIDTH, C_WIDTH) max(sum, r_value, r_class); +endmodule + +// Я хотел его написать, но решил отправить, и сработало с первой попытки )) +/* +module test; +endmodule; +*/ + |