aboutsummaryrefslogtreecommitdiffstats
path: root/2-c.v
diff options
context:
space:
mode:
Diffstat (limited to '2-c.v')
-rw-r--r--2-c.v34
1 files changed, 34 insertions, 0 deletions
diff --git a/2-c.v b/2-c.v
new file mode 100644
index 0000000..33a9d00
--- /dev/null
+++ b/2-c.v
@@ -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;
+*/
+