В этом примере показано, как HDL Coder™ реализует потоковый режим умножения матриц с конфигурируемыми размерами.
Пусть A, B - две матрицы, тогда C = A * B - матричное умножение A и B. Если A - матрица m-на-p, а B - матрица p-на-n, то C - матрица m-на-n, определенная как
C(i,j) = A(i,1)B(1,j) + A(i,2)B(2,j) + -------- + A(i,p)B(p,j)
Это внутреннее определение говорит, что C (i, j) является внутренним произведением i-го ряда A с j-м столбцом B
Для нескалярных A и B число столбцов A должно равняться числу строк B
Пример:
A = [1 3 5;2 4 7]; (2 X 3 matrix)
B = [-5 8 11;3 9 21;4 0 8]; (3 X 3 matrix)
После расчета внутреннего произведения рядов А со столбцами В
C = [24 35 114;30 52 162]; (2 X 3 matrix)
Потоковое умножение матриц поддерживает умножение двух матриц с конфигурируемыми размерами матриц и размером скалярного произведения. Размер скалярного произведения равен количеству множителей, используемых для вычисления. Этот блок может принимать сериализованные входные данные из матрицы в основном формате строки или столбца.

Описание порта умножения матриц:


В данном примере модель содержит три подсистемы: InputSubsystem, MatrixMultiply и OutputSubsystem. InputSubsystem - восходящий модуль, который сериализует матричные входы (A, B) в модуль обработки, когдаaReady и bReady сигналы включены. OutputSubsystem - нисходящий модуль, который десериализует данные из модуля обработки в матричный выход (C), когда cReady сигнал включен. MatrixMultiply - модуль обработки, реализующий умножение матрицы.
open_system('hdlcoder_streaming_matrix_multiply_max_latency');

Временная диаграмма

Временная диаграмма

Результаты Modelsim для потоковой матрицы умножаются


Matrix-A Row Size : Enter row size of input matrix A as a positive integer.
Matrix-A Column Size : Enter column size of input matrix B as a positive integer
which is equals to input matrix B row size.
Matrix-B Column Size : Enter column size of input matrix B as a positive integer.
Dot product size : Select dot product size from drop
down menu(1,2,4,8,16,32,64) which should be
less than input matrix A column size.
LatencyStrategy : Select latency strategy from drop
down menu ({'ZERO, 'MIN', 'MAX'}) which
should be same as HDL coder latency strategy.
Processing latency depends on the latency strategy.
Major Order : Select row major or column major
based on the input data streaming.Установка параметров блока системы MATLAB.
Выберите размеры входной матрицы на основе значений, заданных в параметрах блока.
Создайте код HDL для подсистемы MatrixMultiply.
После создания кода для подсистемы MatrixMultiply генерируется код

Созданная модель содержит системный блок MatrixMultiply MATLAB. При моделировании моделируемого кода выходные сигналы формирования сравниваются с выходными сигналами блока системы MATLAB.

Размер точечного произведения матрицы может быть 1 или мощность 2. Допустимые размеры: 1, 2, 4, 8, 16, 32 и 64.
Типы входных данных матриц должны быть single и блок должен использоваться в Native Floating Point режим.
Размер входных матриц не должен превышать 64 на 64.