Функции БПП. Часть 2.

В пятую группу входят программы, выполняющие нормализацию и масштабирование элементов векторов, преобразование элементов из целого формата в формат с плавающей точкой и наоборот. Кроме перечисленных вначале сокращений здесь дополнительно введены параметры: NB — требуемая длина (от 2 до 28 разрядов) целого числа, включая и знаковый разряд; NS — показатель степени двойки (может быть отрицательным). Программа преобразования вектора из формата плавающей точки в формат фиксированной точки преобразует 38-разрядное слово с плавающей точкой в 16-разрядное слово в дополнительном коде, которое помещается с 22 по 37 разряд 38-разрядного слова. Разновидностью этой программы является программа сдвига вектора в формате с плавающей точкой и преобразования результата в формат с фиксированной точкой. В качестве примера рассмотрим выполнение этой программы (А, I, С, К, N, NS). Каждый элемент вектора начиная с адреса А с приращением I, умножается на 2NS. Результаты преобразуются в 28-разрядные целые числа в дополнительном коде и заносятся в части мантисс вектора начиная с адреса С (с приращением К). Экспоненты устанавливаются равными 27. Для чисел по модулю, больших 228, результаты будут неверны. При параметрах программы, равных 0, 1, 0, 1, 256, 3, производится умножение чисел, расположенных в ячейках 0 ... 255, на 8(23) и преобразование результатов в формат с фиксированной точкой с записью в те же ячейки.

Шестая группа алгоритмов включает программы, выполняющие операции над матрицами, размещенными определенным образом в векторах. Здесь представлены все наиболее употребимые матричные операции: транспонирование, умножение, получение обратной матрицы и т. д. Как исходными данными, так и результатом здесь являются матрицы, представленные в виде векторов.

В седьмую группу входят программы, выполняющие как прямое, так и обратное быстрое преобразование Фурье (БПФ) над действительными и комплексными векторами, масштабирование, упаковку и распаковку результатов. Имеется два вида программ БПФ: с замещением и без замещения. В первых промежуточные результаты заносятся на место исходных, а конечные — на место промежуточных. Вторые выполняются быстрее, однако ячеек памяти данных требуется в два раза больше. При выполнении программ действительного БПФ с замещением или без замещения применяют программы упаковки-распаковки прямого и обратного БПФ.

В качестве примера рассмотрим выполнение программы действительного БПФ с замещением (С, N, F). Если F=I, то выполняется прямое БПФ над действительным вектором из N элементов начиная с адреса С. Причем БПФ реализуется итерациями: вначале выполняются одна итерация двоичного БПФ, если N не является степенью 4, иначе итерация двухточечного БПФ, затем ряд итераций четырехточечного. Это связано с использованием в этой программе той или иной программы вспомогательных операций из группы 10. Полученный результат из N/2-l элементов комплексного вектора в упакованной форме заносится в те же N ячеек начиная с адреса С и результаты умножаются на масштабный множитель 1/2N. Если F=-1, то выполняется ОБПФ над комплексным вектором из N/2+1 элементов в упакованной форме и занимающего N ячеек начиная с адреса С. Полученный действительный вектор из N элементов занимает те же N ячеек начиная с адреса С.

Пусть требуется выполнить программы действительного БПФ с замещением (0, 1024, 1) и масштабирования и упаковки-распаковки для действительного БПФ (0, 1024, 1). Тогда выполняется 1024-точечное БПФ над действительными числами, расположенными в ячейках 0 ... 1023. 513 комплексных чисел результата заносятся в ячейки 0 ... 1023. Программа масштабирования пересылает (N/2+l)-e действительное число из ячейки 1 в ячейку 1024, очищает ячейки 1 и 1025, а также умножает результат на 1/2048.

К восьмой группе относятся алгоритмы, реализующие операции фильтрации и обработки сигналов (численного интегрирования, вычисления многочленов и свертки или корреляции). В этой группе, включающей наиболее сложные алгоритмы, возможно до трех исходных и до двух результирующих векторов.

Девятая группа алгоритмов включает в себя программы, выполняющие арифметические операции с использованием табличной памяти ОЗУ, что существенно сокращает время выполнения операций. Дополнительных объяснений эти операции не требуют. Подпрограммы десятой группы используются в операциях БПФ для выполнения тригонометрических, логических и арифметических операций с помощью регистров общего назначения БПП, а также арифметических с двойной точностью. В этом случае число с двойной точностью состоит из старшей и младшей частей, представляющих собой два 38-разрядных числа с плавающей точкой. Порядок младшей части меньше порядка старшей на 27. Мантисса занимает 54 разряда (27 — в старшей части, 27 — в младшей). Программы этой группы являются как бы внутренними (вспомогательными) и вызываются из программ других групп. Они могут быть вызваны также и из программ пользователя, но только на языке Ассемблера БПП «Электроника МТ-70М».