- •1. Реализация универсальной “бабочки” с прямой адресацией для алгоритма бпф с прореживанием по времени.
- •2. Реализация универсальной “бабочки” с прямой адресацией для алгоритма бпф с прореживанием по частоте.
- •3. Реализация “бабочек” для специальных значений поворачивающих множителей.
- •4. Алгоритм бпф с прореживанием по времени и двоично-инверсным расположением входных данных.
- •5. Программа бпф с прореживанием по времени и двоично-инверсным расположением входных данных.
- •6. Алгоритм бпф с прореживанием по времени и прямым расположением входных данных.
- •7. Программа бпф с прореживанием по времени и прямым расположением входных данных.
- •8. Алгоритм бпф с прореживанием по частоте и прямым расположением входных данных.
- •10. Алгоритм бпф с прореживанием по частоте и двоично-инверсным расположением входных данных.
- •11. Программа бпф с прореживанием по частоте и двоично-инверсным расположением входных данных.
- •12. Программная реализация алгоритма бпф с поблочно-плавающей запятой.
- •13. Организация двоично-инверсного счетчика (алгоритм Рэйдера) и перестановка данных.
- •14. Форматы чисел с плавающей запятой.
- •15. Алгоритм сложения чисел с плавающей запятой.
- •16. Программа сложения чисел с плавающей запятой.
- •17. Алгоритм умножения чисел с плавающей запятой.
- •18. Программа умножения чисел с плавающей запятой.
- •19. Алгоритм деления чисел с плавающей запятой.
- •20. Программа деления чисел с плавающей запятой.
- •21. Использование процессов семейства tms320 для компрессии сигналов. Два метода сжатие сигналов.
- •22. Алгоритм компрессии сигналов по методу μ-Law.
- •23. Программа компрессии сигналов по методу μ-Law.
- •24. Алгоритм восстановления сигналов, закодированных по методу μ-Law.
- •25. Программа восстановления сигналов, закодированных по методу μ-Law.
- •26. Алгоритм компрессии сигналов по методу a-Law.
- •27. Программа компрессии сигналов по методу a-Law.
- •28. Алгоритм восстановления сигналов, закодированных по методу a-Law.
- •28. Программа восстановления сигналов, закодированных по методу a-Law.
- •30. Алгоритм бпф для обработки многомерных векторных процессов.
13. Организация двоично-инверсного счетчика (алгоритм Рэйдера) и перестановка данных.
Для вычисления БПФ требуется наличие двоично-инверсного счетчика. В процессорах TMS второго поколения начиная с TMS320C25 для этого был введен новый способ адресации BR0+ (с обратным переносом). В процессорах семейства TMS320C5х это способ адресации *ARx+0B. Двоично-инверсный счетчик является зеркальным отражением обычного счетчика, при котором разряды меняются местами: самый старший разряд становится самым младшим и, соответственно, самый младший – старшим. Для чисел из диапазона от 0 до 7 двоично-инверсный счетчик можно представить следующим образом (табл.3.1):

Для организации двоично-инверсного счетчика при отсутствии соответст-вующего способа адресации можно использовать различные алгоритмы. Одним из таких алгоритмов является алгоритм, предложенный Рэйдером (рис.3.6).
Алгоритм заключается в поиске первого старшего разряда числа, в котором стоит 0. При нахождении такого разряда производится вычисление нового значения по соответствующей формуле. Однако на практике этот алгоритм реализуется следующим образом:
● из исходного числа последовательно вычитается «бегущая» от старшего разряда к младшему единица до получения отрицательного результата;
● после получения отрицательного результата к нему добавляется удвоенное значение того числа, которое вычиталось последним, что и дает искомое значение.
При вводе или выводе данных в двоично-инверсном порядке можно просто воспользоваться данным счетчиком для адресации памяти данных, куда помещается или откуда берется информация, считанная из порта или записываемая в порт.
При перестановке результата вычисления можно воспользоваться промежуточным буфером и считывать данные с помощью обычного счетчика, а записывать в буфер с помощью двоично-инверсного или наоборот.

Второй способ заключается в по парной перестановке соответствующих отсчетов сигнала. Для восьми отсчетов необходимы следующие перестановки (рис.3.7):

Элементы с одинаковыми номерами переставлять нет необходимости, а необходимо поменять местами элементы 1–4 и 3–6. При этом, когда мы дойдем до 4-го или 6-го элемента с первой строке, то окажется что они уже были переставлены ранее и их переставлять также нет необходимости.
Таким образом, перестановка выполняется только для элементов номер (адрес) источника которых меньше номера (адреса) приемника.
На первый взгляд может показаться, что достаточно проверить только половину элементов (0-3 из восьми). Но это утверждение неверно уже для 16-ти элементов (рис.3.8) и из проверки можно исключить всегда только первый (0…0) и последний (1…1) элементы.

Таким образом, получается, что нужно переставить следующие элементы:
1-8, 2-4, 3-12, 5-10, 7-14, 11-13.
Как видим, последняя пара относится целиком ко второй половине массива
элементов.
Для того чтобы переставить пару элементов совсем не обязательно пользоваться рабочими ячейками. Для этого можно использовать 32-разрядный аккумулятор, загрузив первый элемент в старшую, а второй в младшую часть аккумулятора (или наоборот). После чего записать содержимое аккумулятора в обратном порядке – младшую часть на место первого элемента и старшую – на место второго элемента.
Чтобы загрузить в аккумулятор два числа можно использовать команды LD для загрузки старшей части аккумулятора и OR, XOR или ADDS для добавления младшей части. Сохранение переставленных данных выполняется обычными командами STL и STH. Можно также использовать два аккумулятора и обмениваться сразу двойными словами (действительной и мнимой частями) используя команды DLD и DST.
