aboutsummaryrefslogtreecommitdiffstats
path: root/questions/2-b.txt
blob: 837c2c35366c6b76abfd4d5cc2b8a939522ba9ba (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
Вычисление максимума

Требуется при помощи языка Verilog спроектировать параметрический блок
вычисления максимума нескольких чисел и индекса исходного числа, на котором
достигается максимум. Схема вычисления выполнена в виде дерева, когда
последовательные пары чисел сравниваются и среди них выбирается максимальный.
Аналогичная схема применяется к результирующим числам, пока не получиться одно
число.

Имя модуля должно быть max_argmax.

Парметры модуля:

  * WIDTH - размер числа (по умолчанию, 8 бит).
  * SIZE - количество уровней в дереве вычислений (по умолчанию, 2). При этом
	количество чисел, для которых вычисляется максимум, равно 2 в степени
	SIZE.

Вход модуля: data_in - шина проводов размера (2**SIZE) * WIDTH, представляющая
собой последовательную конкатенацию всех входных чисел.

Выход модуля:

  * data_max - шина проводов размера WIDTH, представляющая собой результат
    	сложения.
  * argmax - шина проводов размера SIZE, представляющая собой номер числа, на
	котором достигается максимум (числа нумерутся слева направо, нумерация
	начинается с 0).

Если максимальное значение достигается на нескольких числах, то argmax
возращает индекс последнего числа, на котором достигается максимум.