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
35
36
37
38
|
Требуется при помощи языка Verilog спроектировать параметрический блок
линейного классификатора. Данный блок получает на вход набор значений признаков
и их веса. Для каждого класса вычисляется сумма произведений значений признаков
на веса. Среди полученных значений находится максимум и в качестве результата
блок выдает индекс класса, на котором был достигнут максимум.
Имя модуля должно быть linear_classifier.
Параметры модуля:
* WIDTH - размер чисел (по умолчанию, 8 бит).
* FEATURES - количество признаков (по умолчанию, 2).
* C_WIDTH - количество бит, которые используются для хранения индеска класса
(по умолчанию, 1). Считается, что число классов является степенью
двойки.
Входы модуля:
* features - шина проводов размера FEATURES * WIDTH, представляющая собой
последовательную конкатенацию значений входных признаков.
* weights - шина проводов размера (2**C_SIZE) * FEATURES * WIDTH,
представляющая собой последовательную конкатенацию значений весов
признаков для всех классов.
Выходы модуля:
* r_value - шина проводов размера WIDTH, представляющая собой результат
вычисления максимума.
* r_class - шина проводов размера C_WIDTH, представляющая собой индекс
класса, на котором достигается максимум (классы нумерутся слева
направо, нумерация начинается с 0).
При проектировании модуля можно использовать модули tree_adder и max_argmax,
описанные в заданиях A и B, в качестве подмодулей (сами модули проектировать не
нужно, они будут автоматически использованы при проверке, если были
использованы).
|