Айфичер Э., Джервис Б. Цифровая обработка сигналов, практический подход (2-е изд., 2004) (1095888), страница 144
Текст из файла (страница 144)
Первый момент выборки. Считывается выборка данных с АЦП, ОЗУ данных смещается на одну позицию (чтобы освободить место для новых данных), сохраняется новая входная выборка, вычисляется выходная выборка согласно формуле (12.5), а затем выходная выборка посылается ЦАП; ОЗУ данных Память коэффициентов х(1) Ь(0) у(1) = Ь(0)х(1) + Ь(1)х(0) + Ь(2)х(-1) 0 Ь(1) 0 Ь(2) 2. Второй момент выборки.
Повторяются описанные выше действия, и новая выходная выборка посылается ЦАП; ОЗУ данных Память коэффициентов — х(2) Ь(0) у(2) = Ь(0)х(2) + Ь(1)х(1) + Ь(2)х(0) х(1) Ь(1) 0 Ь(2) 3. Третий момент выборки. Повторяются описанные выше действия, и новая выходная выборка посылается ЦАП: ОЗУ данных Память коэффициентов х(3) Ь(О) х(2) Ь(1) х(1) Ь(2) 4. Четвертый момент выборки. Повторяются описанные выше действия, и новая выходная выборка посылается ЦАП: ОЗУ данных Память коэффициентов -~х(4) Ь(0) у(4) = Ь(0)х(4) + Ь(1)х(3) + Ь(2)х(2) х(3) Ь(1) х(2) Ь(2) Обратите внимание на то, что старейшая входная выборка удалена из памяти. 5. Мамеит выборки п.
Повторяются описанные выше действия, и новая выходная выборка посылается ЦАП: ОЗУ данных Память коэффициентов х(п) Ь(0) у(п) = Ь(О)х(п) + Ь(1)х(п — 1) + Ь(2)х(п — 1) х(п — 1) Ь(1) х(п — 2) Ь(2) Реализация трехточечного КИХ-фильтра на процессоре ЦОС с фиксированной точкой первого поколения (ТМЯ320С10) представлена в программе 12.2. В данном случае расчет произведений начинается с верхнего адреса памяти данных и коэффициентов, что позволяет использовать команду ТМБ320С!0 для передвижения данных. Для реализаций КИХ-фильтров на базе ТМБ320С!0 основными являются пара команд 1 20 и МРУ.
Например, приведенная ниже лара команд выполняет сдвиг, подразумеваемый в уравнении (12.4) или обозначенный на рис. 12.24, а через з ', добавляет предыдущее произведение в накопитель и рассчитывает следующее произведение Ь(к)х(п — й). 12.б. Реализация алгоритмов ЦОС на универсальных процессорах ЦОС Программа 12.2. Линейный код трехточечного КИХ-фильтра В23 МХТРТ 1М ХМ, АРС ВАС 1 Т ХММ2 мРТ н2 1ТР ХММ1 МРХ Н1 ьТР ХМ МРУ НО АРАС ЯАсн тм,1 ОПТ УМ, РАС В МХТРТ ;Ь(2)х(п-2) ;О+Ь(2)х(п-2); х(п-2) х(п-1) ;Ь(1)х(п-1); х(п-1)-х(п-2) ;Ь(2)х(п-2)+Ь(1)х(п-1); х(п-1)=х(п) ;Ь(0)х(п) рЬ(2)х(п-2)+Ь(1)х(п-1)+Ь(0)х(п) ;сохранить выходную вмборку ;передать выходную выборку ЦАП ЬТР ХММ1 МРУ Н1 ЬООР ЬТР *,АРО ;сдвиг/обновление линии задержки н ;накопление произведений МРТ *-,АН1;умножение следующего коэффициента н элемента данных ВАМЕ 100Р В рассматриваемом случае вспомогательные регистры АНО и АН1 применяются для указания на элемент данных и коэффициент, которые нужно перемножить.
Вспомогательный регистр АН1 содержит длину фильтра и используется как счетчик цикла. Для управления циклом используется юманда ветвления ВАМ2 и проверка содержимого регистра АН1. Отметим, что реализация КИХ-фильтра на процессоре ЦОС первого поюления неэффективна из-за служебных издержек, связанных с управлением циклом. В частности, юманда РТР ХММ1 загружает в регистр Т (временный) выборку данных х(п — 1) (хранилась в ОЗУ данных по адресу ХММ1), добавляет предыдушее произведение )з(2)х(л — 2), юторое все еще находится в регистре Р (произведение), к накопителю и смещает х(п — 1) в ячейку со следующим адресом, т.е. х(л — 2) = х(п — 1). Вторая юманда Мру множит содержимое регистра Т на )з(1) и оставляет результат в регистре произведения.
Схема сдвигов гарантирует, что, когда потребуется вычислять следующую выборку, входные выборки данных будут находиться в правильных ячейках. Линейный юд КИХ-фильтра, подобный программе (2.2, — это быстрая реализация, которая, впрочем, не является универсальной и для больших )У-точечных фильтров нс позволяет получить юмпактную программу.
В частности, для реализации универсального КИХ-фильтра требуется организовать внутренний цикл, реализующий уравнение КИХ-фильтра и вычисляющий выход фильтра, как задано в уравнении (! 2.4). Функциональная схема )У-точечной КИХ-фильтрации, на которой показан внутренний цикл, представлена парис. 12.25. В процессоре ЦОС первого поколения внутренний цикл КИХ-фильтра можно реализовать с помошью следующих команд: 624 Глава 12. Универсальные и специализирован Лниции ли ци йыд Счимть н сохранить ноиув аыбцрку я утрени С циы ляли итынр ц и Уынанить, накоцнть н сланнугьдаиныс длоод Сдвинуть и ауокаантовать выход Рис.
12.25. Функциональная схема КИХ-фильтра. Внутреиннет цикл КИХ-фильтра вычисляет свсрточную сумму, нрслставленную в уравнении (12.25) 12.5. Реализация алгоритмов ЦОС на универсальных процессорах ЦОС 826 Процессоры ЦОС с фиксированной запятой второго поюления, такие как ТМБЗ20С50 и РБР56000 (Мо1ого!а), позволяют создавать циклы с нулевыми служебными издержками и содержат специальные команды умножения и накопления, которые помогают сократить время выполнения внутреннего цикла КИХ-фильтрации.
В процессоре ТМЯ320С50, например, внутренний цикл )1г'-точечного КИХ-фильтра, показанный на рис. 12.25, можно эффективно выполнить с помощью следующих команд: КРТ НМ1 НЛСП ННМ1, ХНМ1 Команда цРТ ММ1 загружает длину фильтра минус 1 (т.е. ()т' — 1)) в регистр повтора и инициирует ()1г' — 1)-кратное выполнение с нулевыми служебными издержками команды умножения и накопления со сдвигом данных МйС0. Команда МАС!З объединяет пару команд 1 ТГг МРз в одну, что позволяет быстрее их выполнить. ВообШе, пара юманд КРТ и МАСГг — это хороший пример экономных специальных команд, доступных в процессорах ЦОС. Альтернативным подходом к реализации Аг-точечных КИХ-фильтров на процессорах ЦОС второго и последующих поюлений является использование круговых буферов.
Очевидно, что в КИХ-фильтрации содержимое памяти юэффициентов статично, а вот память данных меняется с поступлением каждой новой входной выборки. С точки зрения эффективности выгоднее подавать последующие выборки данных в раздвижное окно, удаляя старейшие выборки из памяти. Для обработки изменений в блоке входных данных, используемых при КИХ-фильтрации, можно применять круговой буфер, при этом данные не придется сдвигать, как в линейных буферах. Концептуально круговой буфер идентичен линейному, если рассматривать два конца линейного буфера как соседние ячейки памяти, т.е. самая новая и самая старая выборки данных х(п) и х(п — (Аг — 1)! находятся в соседних ячейках памяти; (рис. 12.26, а).
В крутовом буфере на рис. ! 2.26 указатель данных (обозначен стрелочюй) ссылается на ячейку памяти с новейшей входной выборкой х(п), а предыдущие входные выборки данных х(п — 1), х(и — 2),..., х(н — 7) хранятся в последучоших ячейках памяти по часовой стрелке, В каждый момент получения выборки, как и ранее, выполняется внутренний цикл КИХ-фильтра — каждая выборка данных множится на соответствующий коэффициент фильтра гг(п), и произведения накапливаются.
Единственное отличие состоит в том, что выборки данных не смещаютсж После вычисления внутреннего цикла указатель находится возле ячейки х(п — 7) со старейшей выборкой данных, на место которой затем записывается следующая входная выборка х(п). Работа кругового буфера для трех последовательных выборок данных иллюстрируется на рис. 12.26, а — в.
На практике круговая адресация реализуется за счет использования для автоматичесюго циклического возврата, когда указатели адреса выходят за границы буфера, модульной арифметики. Обычно в таких случаях требуется задать начальный адрес кругового буфера и размер буфера (или размер модуля). Ниже приводится реализация внутреннего цикла гг-точечного КИХ-фильтра с использованием круговой адресации на базе процессора ПЯР56000. Глава 12.
Универсальные н специализированные процессоры ЦОС 826 ьланннк а) Указатель ла на на ! ! ! ! ! ! ! ! ! ! Укь льн Рне. (2.26. Илаюецюцнл прннцнпов реалнзацнн КИХ-фнльтра на основе крутовопз буфера 4ХОАТА, РО ФСОЕРР, К4 4М-1, МО ;размер буфера/модуля Х: 1МРОТ, Х! (КО) )считывание и запись входной выборки А ;очистка накопителя 4М-1 ;выполнение внутреннего цикла КИХ-фильтра ХО, ХО, й Хз(КО)+, ХО Х:(К4)+, ХО ХО, ХО, А (РО)— МОЧЕ МОЧЕ МОЧЕ МОЧЕ Р Сьй КЕР МАС МАСА -т ! ! ! ! ! ! ! ! ! ! к(а-!) — 2) ( -5) ( -4) к(к — 5) к(а-6) к(а- т) ! к(а) ! 827 12.5.
Реализация влюритмов ЦОС нв универсальных процессорах ЦОС В представленном случае круговые буферы используются для хранения данных и коэффициентов. Круговой буфер данных выполняет неявный временной сдвиг, как описано выше. В то же время, для удобства автоматического циклического возврата указателя коэффициентов используется крутовой буфер коэффициентов. Первые четыре команды в приведенной выше программе устанавливают указатели адреса ЦО и Ц4. Пара команд ЦЕ Р и МАС выполняет внутренний цикл КИХ-фильтра.
Команда повтора йЕР повторяет следующую за ней команду )ч' — 1 раз. В следующей строке для выполнения набора операций умножения используется архитектура и параллелизм ПБР56000— здесь умножаются элементы данных и коэффициенты, расположенные в ячейках ХО и уО, произведение добавляется к накопителю, из ячеек х и х извлекается следующая пара "элемент данных — коэффициент" и обновляются указатели, Кроме области КИХ-фильтрации, круговая адресация применяется при эффективной реализации нескольких других функций ЦОС, требующих временных сдвигов или простых очередей, например, корреляции, фильтров с обработкой при нескольких скоростях (фильтров децимации и интерполяции) и генерации периодических сигналов.
Использование круговой адресации делает ненужным смещение данных или постоянную проверку (обновление) указателей адреса. Все процессоры ЦОС старших поколений имеют улучшенные возможности круговой адресации. 421(ззвгв)у.'22''5,: Цифровой фильтр, удовлетворяющий приведенным ниже спецификациям, нухшо реализовать на базе процессора ЦОС с фиксированной запятой второго поколения ТМ8320С50. Частота режекции 1,875 кГц.