В этом примере показано, как 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) является скалярным произведением i-ой строки с j-ым столбцом 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 в размере.