Айфичер Э., Джервис Б. Цифровая обработка сигналов, практический подход (2-е изд., 2004) (1095888), страница 147
Текст из файла (страница 147)
геа1 [ Х] +Ь1*н. 1вад; е.1вад Ь1*н.кеа1[К]-Ьг.н.1вад[Х]; Ь. геа1 [5 ] =а , геа1-е. геа1; Ь.1вад[5] а.1вад-п.1вад; а.геа1[5]=а.геа1+С.геа1; в . 1ввд [ 5 ] =а . 1ва9+ С . 1вад; Псевдокод С для реализации описанного алгоритма на базе процессора ТМВ320С25 приведен в программе [2.9. Значения настроечного множителя рассчитаны предварительно и сохранены в формате (2] 5. Предполагается, что входные данные комплексные, их действительные и мнимые части хранятся в последовательных ячейки ОЗУ данных. Для комплексных выходных данных А' и В' могут иметь максимальные значения 2,4]442; для действительных входов максимальное значение равно 2. В арифметике с фиксированной запятой это может стать причиной переполнения. Чтобы избежать этого, данные на входе "бабочки*' следует масштабировать.
В реализации на базе ТМЗ320С50 масштабирование является динамическим, здесь используются преимушества того, что при умножении двух чисел с фиксированной запятой получается один лишний бит знака. Этот дополнительный бнт обычно удаляется путем левого сдвига, но результат при этом эффективно масштабируется в два раза. Программа 12зд Код для реализации "бабочки" на базе процессора ТМБ320С50 расчет членов, общих длн двух "бабочек", А' и В' ВН ИНЕА1 В1 И1МАП ;1/2*Ь.1вад*в1п(Х] ;1/2[Ь.кеа1*сов(Х)+Ь.1вадев1п(Х)) ; 1/2*Ъ.
1вад*сов ( Х ) ИННАМИ ВН ВН 81 расчет н запись выходов "бабочки" АН, 14 ВН, 15 АН, 1 ВН 1АСС АПП ЯАСН ЯОВ ,"запись в.геа1 ьт МРУ 1.ТР МРУ АРАС МРУ ьт ЯАСН РАС МРУ ЯРАС ЯАСН Глава 12. Универсальные и специализированные процессоры ЦОС ;расчет 1/2*[Ь.геа1*сов(Х)+Ъ.1пвд*з1п(Х)] ;1/2*Ь.геа1*сов(Х) ;1/2[Ь.гев1*сов(Х)+Ь.1пвд*взп(Х)) ;расчет [д. 1вадзсов(Х)-д.геа1звзп(Х)] ;расчет и запись действительных частей выхода 12.5. Рзализация алгоритмов ЦОС на унивзрсальных лроцзссорах ЦОС 839 БАСИ йАС АОП БАСЯ БСВ БАСИ ;запись и. 1шат2 ;запись Ь.1)ва 12.5.3.2. Вычисление с замещением и постоянная геометрия На рис. 12.32 показана схема прохождения сигнала по восьмигочечному БПФ. Из рисунка очевидно, что для получения коэффициентов ДПФ Х1/с), показанных справа, при данном входе необходимо рассчитать несколько "бабочек".
Для упорядоченного проведения р)ща вычислений по схеме "бабочка" обычно используется эффективный алгоритм двоичного БПФ. На приведенной схеме сигнал проходит слева направо. Следовательно, после вычисления выходов "бабочки" А' и Вг входы А и В уже не нужны, поэтому выходы можно записывать поверх них.
Данная концепция получила название вычисление с замещением. Этап 1 з пэ Этап Э оно) о) (кл) 4) эх(2) э (э) 4 к(4) э.с(5) э! як(6) т (т) Рнс. 12.32. Диаграмма прохождения сигнала по БПФ с депимаииеа во времени с замегпением, где вход идет в естественном порядке. а выкод записан в порядке, опредеяяемом обрапинными битами Алгоритмы с замещением позволяют эффективно использовать доступную память, поскольку преобразованные данные записываются на место входных. В прошлом, когда память была очень дорогой, зто соображение было существенным. В то же время, при вычислениях с замещением система индексации, позволяющая определить, откуда из памяти извлекать входные данные каждой "бабочки", достаточно сложна, Например, на рис.
12.32 верхняя "бабочка" на этапе 1 получает вход с адресов О и 4 и записывает выход по тем же адресам. С другой стороны, верхняя "бабочка" на этапе 2 принимает вход с адресов О н 2. Вообще, при БПФ с замещением входные !выходные) адреса меняются на каждом этапе. Более того„для высокоскоростных БПФ использование одной памяти для входа и выхода замедляет вычисления из-за большого времени доступа ВЯ, 1 А1, 14 В1, 15 А1, 1 В1 В1,1 ;запись Ь.геа1 ;расчет и запись мнимых частей выхода 840 Глава 12. Универсальные и специализированные процессоры ЦОС Аарсса выкоаа кэскаы ) н аммс» ээоаа «аскэаэ 2 Аэрсса выхоаа каскада 2 н схрсса апэм каамэа 3 о э(о> ло> ) э(4) кщ 2 2) крл 3 э(б) 4 э()] 5 э(5) б> б э(3] 7 э(7) и" нэ и" Первый этап Второй этап Третий этап Рис.
1233. Двоичное БПФ с постоянной геометрией. где вычисления выподиящтся без замещения ячеек памяти. Обратите внимание на то, что ддя каждой "бабочки" расстояние между входами и выходами одинаковое 12.5.3.3. Скремблирование данных и обращение битов Если при БПФ с децимацией во времени последовательность входных данных подается на процессор БПФ в естественном порядке, выход БПФ кажется скремблированным (см. рнс. 12.32). Чтобы гарантировать поступление выхода в правильном порядке к памяти (исключая, например, случаи использования двухпортовых ОЗУ).
Поскольку сейчас память н умножители дешевы, наблюдается тенденция к повышению скорости путем оптимизации всего процессора БПФ. В альтернативной реализации БПФ, известной как вычисления без замещения, или вычисления с постоянной геометрией, входные данные "бабочки" считываются по паре адресов, а выход записывается в пару ячеек с другими адресами, как показано на рис.
12.33. В отличие от БПФ с замещением, где адреса входа-выхода каждой "бабочки" отличаются для разных этапов, в описываемом случае адресация каждой "бабочки" фиксирована и значительно проще. Для )т'-точечного БПФ входы п-й "бабочки" на каждом этапе находятся в ячейках с адресами 2п и 2п+ 1, п = О, 1,..., )т'/2 — 1. Выходы п-й "бабочки" записываются в ячейки с адресами и и Ж/2+ и. Например, на втором этапе (рис. 12.33) верхняя "бабочка" берет входные значения в ячейках с адресами О и 1 и записывает выход в ячейки с адресами О и 4.
Очевидно, что для работы БПФ без замещения требуются две отдельные области памяти нли массива; в одном хранятся входы, а в другом — выходы. После каждого этапа роли областей памяти меняются. 12.5, Реализация алгоритмов ЦОС на универсальных процессорах ЦОС Этан 2 Этап ) )до> но> «)4) Х)2) 2> цэ> «)б> Д5) «15) Х)6) нэ> Д7) «17) Рнс. 12.34. Диаграмма прохождения сигнала для БПФ с депимапиеа во времени и замещением ячеек памяти; вход представлен в порядке, определяемом абрашсннмми битами, а вахед идет в естественном порядке (т.е.
Х(0), Х(1),..., Х())г' — 1)), требуется либо скремблировать последовательность входных данных перед БПФ (см. рис, 12.33 и 12.34), либо восстановить естественный порядок выхода после применения БПФ (см. рис. 12.32). Скремблирование входных данных для двоичного БПФ выполняется путем записи входной последовательности в порядке, опредсляемом обращенными битами. Предположим, что входные данные записаны в естественном порядке (т.е. как х(0), х(1), х(2),..., х(Ж вЂ” 1)), для записи в порядке, определяемом обращенными битами, индексы входных данных представляются в двоичном виде, как показано во втором столбце табл. 12.6 для восьмиточечного БПФ, а затем биты переставляются относительно центра (четвертый столбец табл.
12.6), Например, в таблице индекс выборки х(З) представляется в двоичной форме как 011. Меняя местами первый и третий биты, получаем 1!0 (средннй бит остается без изменений). Код 110 представляет десятичное число 6. Для создания эффекта скремблирования необходимо переставить выборки х(З) и х(6). Применяя тот же принцип к остальным входам, получаем последовательность, порядок элементов которых определяется обращенными битами (представлена в третьем столбце табл.
12.6). Обратите внимание на то, что после скремблировання положение первой и последней выборки данных не меняется. Это объясняется тем, что обращение битов применительно к индексам 000 и 111 не дает эффекта. Вообще, процесс скремблирования в двоичном БПФ не затрагивает первую и последнюю точки данных. Внимательный читатель может отметить и другие выборки, на которые описанный процесс не влияет. Когда входные данные содержатся в памяти или в массиве, скремблирование входных данных включает определение пар ячеек с входными данными и перестановкой данных, расположенных в этих ячейках. Для определения ищгексов ячеек памяти, которые будут обмениваться содержимым, наиболее широко используется алгоритм Рейдера (Кабег) (см.
[9]). В программе 12.10 представлен псевдокод С с реализацией алгоритма обращения битов. 842 Глава 12. Уииверсальиыв и специализированные процессоры ЦОС Таблица 12.6. Демонстрация концепции обращения битов на данных аосьмнточечного БПФ Даоичний В,д Дооичний аод под после)осовел«носта последовательности последовательности апти ойращеин (с обращенное битое) Впиднан последоааьиельность, естестаенный иорндон Программа 12.10. Обращение битов с замещением ячеек памяти в двоичном БПФ /* обращение битов с замещением */ )=1« тот(1 1; 1,Н; ++1)[ 1«(1,))[ Гг-х.геа1[2]ь /* поменять местами х[2] и х[1] «/ Г1 х.1вач[)]ь х.геа1[з] х.геа1[1]; х.1вад[2] х.1вад[1]! х.геа1[1) Ггь х.1вао[1] г1; ]с и/2; иМ1е(К,1) [ ) -!с; К К/2ь ) ) е1ве [ К Н/2; иМ1е(К,])[ 1-!с; !с ]с/2; ) ) 3 1«хь Существующие чипы ЦОС содержат команды для выполнения обращения битов при извлечении выходных выборок данных из памяти (подготовка к БПФ) или при записи выходных данных после БПФ в память.
,,Л2;5.4."-"/ Обработка при нескольких скоростях Как обсуждалось в главе 9, обработка при нескольких скоростях включает выполнение операций ЦОС с более чем одной частотой дискретизации. Двумя фундаментальными операциями обработки при нескольких скоростях являются децимация (снижение х(о) х(1) х(2) х(З) х(4) х(5) х(6) х(7) 000 001 010 011 100 101 110 111 х(0) х(4) х(2) х(6) х(1) х(5) х(З) х (7) 000 100 010 110 001 101 011 111 12.5.
Реализация апюритмов ЦОС на универсальных процессорах ЦОС зсоа змь ззоь ррза во вз Рис. 12.35. Параметры трехкаскааною неннматора частоты дискретизации) и интерполяция (повышение частоты дискретизации). Проиллюстрнруем реализацию дециматора реального времени на примере. Пример И.б. Частоту дискретизации сигнала требуется в ходе трехэтапного процесса децимации уменьшить с 30 до 1 кГц.