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
|
Систолический массив
Требуется спроектировать на языке Verilog двухмерный систолический массив для
выполнения операции матричного умножения
https://gyires.inf.unideb.hu/KMITT/a52/ch04.html.
Проектируемый модуль должен называться systolic_array.
Параметры модуля: ROWS - количество рядов в массиве, COLUMNS - количество
столбцов в массиве, WIDTH - размерность шин аргументов.
Входы модуля: clock - провод синхросигнала, reset - провод сигнала сброса
(сброс при выставлении значения 0), a - шина проводов ширины ROWS*WIDTH,
подающая значения вектора a (элементы вектора нумеруются справа налево), b -
шина проводов ширины COLUMNS*WIDTH, подающая значения вектора b (элементы
вектора нумеруются справа налево). Каждое значение векторов a и b имеет
размерность WIDTH.
Выходы модуля: c - шина проводов ширины ROWS*COLUMNS*WIDTH, характеризующих
текущее состояние вычисляемой матрицы. Элементы матрицы нумеруются справа
налево и сверху вниз. Например, для матрицы размера 2 на 2 из 4-х битовых
значений шина с будет разбита следующим образом: 00: c[3 : 0], 01: c[7 : 4],
10: c[11: 8], 11: c[15:12].
Примечание: схема должна иметь асинхронный сброс, латентность вычислений
(количество тактов, требуемое для вычисления нового значения) равна 1.
|