blob: 33a9d00dd86247b4802afbba3f9c78cc9b714b51 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
*/
|