Генерация HDL-кода для потоковой передачи умножение матриц системный объект

В этом примере показано, как 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)

Введение

Потоковая передача Умножение матриц умножение поддержек двух матриц с конфигурируемыми матричными размерами и размером скалярного произведения. Размер скалярного произведения равен количеству множителей, используемых в расчете. Этот блок может принимать сериализированные входные данные из матрицы последовательно главный или упорядоченный по столбцам формат.

Умножение матриц интерфейс:

Умножение матриц описание портов:

Реализация MatrixMultiply

Эта модель в качестве примера содержит три подсистемы: 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.

Умножение матриц использование Блока

  1. Установите параметры блоков блока Matlab System.

  2. Выберите входные матричные размеры на основе набора значений в параметрах блоков.

  3. Сгенерируйте HDL-код для подсистемы MatrixMultiply.

Сгенерированный код и модель Generated

После рабочей генерации кода для подсистемы 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