Этот пример показывает, как 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