Этот пример показывает, как HDL Coder™ реализует потоковый режим умножения матриц с конфигурируемыми размерами.
Позвольте A, B быть двумя матрицами затем C = * B является умножением матриц A и B. Если A является m-by-p, и B является p-by-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) является скалярным произведением ith строки с jth столбцом B
Для не скаляр A и B, количество столбцов равняется количеству строк 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)
После вычисления скалярного произведения строк со столбцами B
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 System.
Выберите входные матричные размеры на основе набора значений в параметрах блоков.
Сгенерируйте HDL-код для подсистемы MatrixMultiply.
После рабочей генерации кода для подсистемы MatrixMultiply сгенерированный код будет

Сгенерированная модель содержит блок MatrixMultiply Matlab System. Во время modelsim генерации кода симуляции выходными параметрами являются по сравнению с блоком Matlab System выходные параметры.

Матричными размерами скалярного произведения может быть 1 или степень 2. Позволенными размерами является 1, 2, 4, 8, 16, 32 и 64.
Типами входных данных матриц должен быть single, и блок должен использоваться в режиме Native Floating Point.
Входные матрицы не должны быть больше, чем 64 64 в размере.
Умножение матриц mtimes
LocalWords: последовательное deserializer мультиплексирование AStore BStore Cmatrix LocalWords: Amemory Bmemory modelsim