Билет № 19

1.     Алгоритмы быстрого преобразования Фурье. Пути повышения эффективности.

БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ

Много усилий было затрачено на разработку более эффективных путей вычисления ДПФ. Эти усилия привели к эффективным в вычислительном отношении алгоритмам, которые все вместе известны как алгоритмы быстрого преобразования Фурье (БПФ). Ускорение расчётов по алгоритму БПФ достигается за счёт чисто алгоритмических и организационных средств путём исключения  повторных вычислительных операций, характерных для расчётов по формулам ДПФ:

        Используется свойство периодичности ядра преобразования D:\Место обмена\цос\отверти 2.files\image015.gif.

        Используется значение N=2 в степени (или 4 в степени) и неоднократное прореживание отсчётов (децимации) по времени или по частоте.

        Алгоритм БПФ выполняется рекурсивно за D:\Место обмена\цос\отверти 2.files\image016.gif этапов. Расчет для N/2 выполняется после расчёта для N/4 и т. д.…

Быстрое преобразование Фурье (FFT) требует только (N/2)log2(N) умножений комплексных чисел. Вычислительная эффективность БПФ по сравнению с ДПФ становится весьма существенной, когда количество точек БПФ увеличивается до нескольких тысяч. БПФ вычисляет все компоненты выходного спектра (или все, или ни одного!). Если необходимо рассчитать только несколько точек спектра, ДПФ может оказаться более эффективным. Вычисление одного выходного отсчета спектра с использованием ДПФ требует только N умножений комплексных чисел.

Архитектура и набор инструкций процессора ADSP-21xx очень удобны для выполнения алгоритмов БПФ. Эти алгоритмы неоднократно исполняют операцию умножения/накопления при выборочном использовании входных данных. Это требует очень эффективной генерации адресов, которая обеспечивается двумя генераторами адресов данных (DAG0 и DAG1). Кроме того, DAG1 имеет аппаратные средства для реверса битов, используемые при сортировке отсчётов.

2.     Структурная схема умножителя/накопителя и её особенности.

В умножителе имеется два входных порта Х и Y разрядностью 16 бит и порт вывода результата Р разрядностью 32 бита. Результат разрядностью 32 бита передается в 40-разрядный сумматор/вычитатель, который прибавляет или вычитает новый результат из содержимого регистра умножителя МR или передает новый результат прямо в МR.

Регистр МR имеет разрядность 40 бит и состоит из трех регистров меньшей разрядности: МRО и МR1 разрядностью 16 бит и МR2 разрядностью 8 бит.

Сумматор/вычитатель имеет разрядность, большую чем 32, чтобы предотвратить переполнение при выполнении серии операций умножения-накопления.

Порт ввода Х может принимать данные либо из входных регистров МХ - МХО и МХ1, либо из любого регистра по R-шине (шине результатов). Запись в регистры МХ0, МХ1 и считывание из них может производиться с шины DMD. Порт ввода Y может принимать данные либо из регистров МY0, МY1, либо из регистра МF. Запись в регистры МYО и МY1 и считывание с них может производиться с шины DMD, а запись также может быть произведена и с шины PMD. Считывание из этих регистров на шину PMD возможно только через устройство обмена данными между шинами DMD и PMD.

Выходное значение умножителя-аккумулятора поступает либо в регистр МБ, либо в регистр сумматора-вычитателя МR. МF является регистром обратной связи и позволяет использовать биты результата 1 6-31 в качестве вводимых через порт Y данных в последующем цикле. Каждый из регистров: МR0 (биты 0-15 МЯ), МR1 (биты 16-31 МR) и МR2 (биты 32-39 МЯ), образующих МR, может загружаться непосредственно с шины DMD и передавать данные либо на шину DMD, либо на R-шину.

8-разрядный регистр МR2 привязан к младшим 8 битам этих шин. Когда МR2 передает данные на шину DMD или R-шину, происходит добавление знаковых бит для формирования 1 6-разрядной величины. Регистр МR1 также имеет возможность автоматического добавления знаковых бит. Когда МR1 загружается с шины DMD, каждый бит регистра МR2 устанавливается как знаковый бит (самый старший бит) МR1 ; таким образом, МR2 представляется как добавление к МR1. Чтобы загрузить в МR2 значение, отличное от этих дополнительных бит знака МR1 , следует загружать МR2, после того как МR1 был уже загружен.

Загрузка МRО не влияет на содержимое МR2 и МR1 ; при загрузке МRО добавления знаковых бит не происходит.

Запись и считывание из любого регистра, связанного с умножителем-накопителем, может осуществляться в одном и том же цикле. Считывание из регистров происходит в начале цикла, а запись в регистры - в конце цикла. Это позволяет регистру ввода обеспечивать умножитель операндом в начале цикла и обновлять свое содержимое следующим операндом из памяти в конце этого же цикла. Это также позволяет сохранить содержимое регистра результатов в памяти и обновлять его новым результатом в течение этого же цикла.

В умножителе, как и в АЛУ, имеются два ряда регистров МR, МF, MX, MY - основной и теневой (рис. 4). В любой определенный момент времени доступен только один ряд. Дополнительный ряд регистров может быть активизирован для чрезвычайно быстрого контекстного переключения программы без передачи текущих состояний в ЗУ.

Выбор основного или альтернативного ряда регистров определяется битом 0 в регистре состояния режима процессора МSТАТ. Если этот бит равен 0, то выбран основной ряд, если он равен 1 - альтернативный ряд регистров.

Программно доступные регистры MX0, MX1, MY0, MY1, МR (МR2, МR1, МR0) и МF основного и теневого ряда представляют умножитель-накопитель на общей программной регистровой модели процессора (рис. 11 ).

3. Установка параметров и подготовка к использованию последовательного порта.

Программирование последовательных портов заключается в записи в регистры Control, а также, для некоторых режимов, в регистры SCLKDIV и RFSDIV.

Каждый из последовательных портов SPORT0, SPORT1 имеет приемный (RX), передающий (TX) и управляющие регистры. Управляющие регистры отображаются на адресное пространство памяти данных по адресам 0x3FEF-0x3FFA. Регистр Control каждого порта содержит биты, управляющие кадровой синхронизацией, компандированием, длиной пересылаемых слов, а для SPORT0 – еще и мультиканальными функциями.

Для каждого порта регистры SCLKDIV задают частоту обмена по последовательному порту, а регистры RFSDIV – частоту сигнала синхронизации принимаемого кадра. Регистры Autobuffer управляют автобуферизацией каждого порта.

Hosted by uCoz