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

Этот пример показывает, как HDL Coder™ реализует потоковый режим матричной обратной операции с помощью cholesky алгоритм разложения с конфигурируемыми размерами.

Что такое инверсия матрицы

Матрица X является обратимой, если там существует матрица Y, одного размера таким образом, что XY = YX = я, где я - Единичная матрица. Матрица Y называется инверсией X. Матрица, которая не имеет никакой инверсии, сингулярна. Квадратная матрица сингулярна только, когда ее детерминант является точно нулевым.

Матричное обратное вычисление включает следующие шаги:

  1. Матричное вычисление кофактора

  2. Транспонируйте матрицы кофактора

  3. Умножьтесь обратная величина детерминанта входной матрицы с транспонируют матрицы кофактора

Пример:

             A = [4 12 -16;12 37 -43;-16 -43 98];
Cofactors of 'A' will be calculated from matrix of minors
        cof(A) = [1777 488 76;488 136 20;76 20 4];
Transpose of cofactor matrix will be
     (cof(A))' = [1777 488 76;488 136 20;76 20 4];
Multiply reciprocal of determinant of 'A' with transpose of cofactor matrix
          Ainv = (1/det(A)) * (cof(A))'
               = [49.3611 -13.5556 2.1111;-13.5556 3.7778 -0.5556;2.1111 -0.5556 0.1111];

Введение

Матричная Инверсия с помощью cholesky разложение поддерживает только симметричные положительные определенные матрицы. Положительный определенный означает, что все собственные значения матрицы должны быть положительными.

Вычисление Матричного Обратного разложения Холесского использования: Учитывая симметричную положительную определенную матрицу А:

           A   = L * L',             L  is the lower triangular matrix
                                     L' is the transpose of L
       inv(A)  = inv(L * L')
               = inv(L') * inv(L)
               = (inv(L))' * inv(L)
       Ainv    = Linv' * Linv,       Linv is the inverse of lower triangular matrix
                                     Ainv is the inverse of input matrix

Вычисление Ainv включает следующие шаги:

  1. Матричное вычисление Нижней треугольной (L)

  2. Инверсия нижней треугольной матрицы (Linv)

  3. Умножение транспонирует Linv с Linv

Пример:

             A = [4 12 -16;12 37 -43;-16 -43 98];
Lower triangular matrix(L) will be computed using cholesky decomposition
             L = [2 0 0;6 1 0;-8 5 3];
Linv will be computed using forward substitution method
          Linv = [0.5 0 0;-3 1 0;6.3333 -1.6667 0.3333];
Multiply transpose of Linv with Linv
          Ainv = Linv' * Linv
               = [49.3611 -13.5556 2.1111;-13.5556 3.7778 -0.5556;2.1111 -0.5556 0.1111];

Матричный обратный интерфейс подсистемы:

Матричное описание портов Inverse:

Матричная обратная реализация

Эта модель в качестве примера содержит три подсистемы: InputSubsystem, MatrixInverse и OutputSubsystem. InputSubsystem является восходящим модулем, который сериализирует матричный вход к модулю обработки, когда сигнал ready включен. OutputSubsystem является нисходящим модулем, который десериализовывает данные от модуля обработки до матричного вывода, когда сигнал outEnable включен. MatrixInverse является модулем обработки, который реализует матричную инверсию при помощи cholesky разложения.

open_system('hdlcoder_streaming_matrix_inverse_max_latency');

Матричные Обратные схемы Синхронизации

Синхронизация схемы для полной системы:

Синхронизация схемы для этапа обработки:

Форма волны результата Modelsim

Матричные Обратные Параметры блоков:

Row size         : Enter row size of input matrix as a positive integer.
Column size      : Enter column size of input matrix as a positive integer.
LatencyStrategy  : Select latency strategy from drop down menu
                   ({'ZERO, 'MIN', 'MAX'}) which should be same as HDL coder
                   latency strategy. User can see processing latency
                   based on the latency strategy.

Матричное Обратное использование Блока

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

  2. Выберите входную матрицу на основе размера строки и размера столбца.

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

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

После рабочей генерации кода для подсистемы MatrixInverse сгенерированный код будет

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

Статистика синтеза

Ограничения

  • Матрицы, для которых инверсия к вычисленному, должны быть симметричны положительно-определенный.

  • Типами входных данных матриц должен быть single, и блок должен использоваться в режиме Native Floating Point.

  • Входные матрицы не должны быть больше, чем 64 64 в размере..

Ссылки

  • Матричная Инверсия inv

  • Разложение Холесского chol

  • Собственные значения матрицы eig

LocalWords: собственный Ainv Linv последовательный deserializer Lowertriangular LocalWords: Matrixmultiplication validout, мультиплексирующий modelsim