Айфичер Э., Джервис Б. Цифровая обработка сигналов, практический подход (2-е изд., 2004) (1095888), страница 112
Текст из файла (страница 112)
Для каждых Мз выходных выборок каскада 1 вычисляется одна входная выборка каскада 2. Наконец, для каждых Мз выходных выборок каскада 2 вычисляется одна выходная выборка каскада 3. Итак, в конце цикла децимации для каждых М входных выборок сигнала х(п), где М = МгМдМз, вычисляется одна выходная выборка, которая и заносится в файл выходных данных. Процесс продолжается, пока не будут обработаны все входные выборки.
Названная программа является самодостаточной. Для ее применения пользователь должен задать число каскадов, общий шаг децимации, кроме того, для каждого каскада нужно задать шаг децимации и набор коэффициентов КИХ-фильтра с линейной фазо вой характеристикой, реализованного в прямой форме. Пользователь задает имена файла с данными для децимации, файла с коэффициентами фильтров и файла, в котором будут записаны выходные данные после децимации. : 9,4.2.". Тестовый пример использования программы децимации Для проверки процесса децимации используется следующая входная последовательность (широкополосный сигнал) (см.
[6)): х(п) = — о, п,=О (9.13) = (1 — гхз)схп ', и = 1,2,... Глава 9. Цифровая обработка сигналов при ива Рис. 9ав. Функцкенккьназ ехенк трехккеккднеге децниктерк 9.5. Проюаммная реализация интеряояяторое где о = О, 9. Первые 29 выборок последовательности приведены в табл. 9.4. В данном примере децимация выполняется в два этапа с шагами 5 и 2 (общий шаг децимации — ! О). В табл. 9.4 перечислены коэффициенты КИХ-фильтров (длины фильтров — 25 и 28 соответственно) и представлен результат децимации. 9.4.2.1. Выходная задержка Выход дециматора будет запаздывать относительно входа на определенное число выборок в зависимости от типов фильтров, используемых в каскадах дециматора.
Предполагая, что дециматор содержит КИХ-фильтры с линейной фазовой характеристикой, можно получить следующие выражения для задержки одно-, двух- и трехкаскадного дециматора: 1 Т(1 каскад) = — )Т, — (М вЂ” 1)) выборок, 1 Т(2 каскада) = — [Т1 + М,Тз — (М,Мз — 1)] выборок, М,Мз (9.14, а) (9.14, б) 1 Т(З каскада) = [Т,+М,Т,+М,М,Т,-(М,М,М,-1)] выборок, (9.14, в) ММзМз где Т;, задержка фильтра (-го каскада, вычисляется как Т; = (Ф, + 1) ~2 выборок, а Фз — это число коэффициентов фильтра т'-го касюща.
В приведенном выше примере двухкаскалного дециматора задержки фильтров равны соответственно 14,5 и 13 выбо- рок, а общая задержка составляет Т(2 каскада) = [1/(5 х 2)][14, 5 + 5 х — (5 х 2 — 1)) = 7,05 выборок. На рис. 9.!б, а приведена блок-схема иитерполятора, а его функциональная схема изображена на рис.
9.1б, б. Для каждой входной выборки х(п), поданной на интерполятор, экспандер (прямоугольник со стрелочиэй, направленной вверх) вводит после входной выборки (Ь вЂ” 1) нулевую выборку. Затем все выборки фильтруются, и получается сигнал у(т). Итак, для каждой входной выборки сигнала х(п) имеем Ь выборок Если нужно, чтобы задержка выражалась целым числом выборок, значения Ж, нужно определять так, чтобы Т, вычисленное по приведенной выше формуле„было целым. Таюе требование возникает, например, когда (нужно сравнивать входные и выходные выборки).
Например, при передаче данных через фильтр верхних частот в системе обработки при нескольких скоростях в выходную выборку нужно ввести поправку на задержку при проходе через дециматор и интерполятор. Глава 9. Цифровая обработка сигналов лри нескольких скороств 666 Таблица 9.4. Данные тестового примера децимации у(оэ) йэ(й) йэ(й) п х(и) -О, 000 174 -О, 002 682 -0,006 346 -0,011 033 -О, 014 156 -0,012 024 -О, 000 775 0,021 904 О, 055 181 О, 094 397 О, 131 836 О, 158 866 О, 168 728 О, 158 866 0,131 836 О, 094 397 0,055 181 0,021 904 — О, 000 775 -0,012 024 — 0,014 156 -О, 011 033 -О. 006 346 -О, 002 682 — 0,000 174 О, 000 040 — О, 000 286 О, 001 116 -О, 001 659 -О, 000 402 Здесь и(и) и у(оэ) — выходные данные и данные после децимации; йг(й) и йэ(й) — коэффициенты 0 1 2 3 4 5 б 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ЗО 31 32 33 34 35 Зб 37 38 39 40 41 42 43 44 45 46 47 48 49 50 — О, 9000 О, 1900 О, 1710 О, 1539 О, 1385 0,1247 О, 1122 О, 1010 О, 0909 О, 0818 0,0736 О, 0662 О, 0596 О, 0537 О, 0483 О.
0435 О, 0391 О 0352 0,0317 0,0285 0.0257 О, 0231 О, 0208 О, 0187 О, 0168 О, 0152 О, 0136 О, 0123 О, 0110 О, 0099 О, 0089 О, 0081 О, 0072 О, 0065 О, 0059 О, 0053 О, 0048 О, 0043 О, 0039 О, 0035 О, 0031 О, 0028 О, 0025 0,0023 О, 0020 О, 0018 О, 0017 О, 0015 О, 0013 О, 0012 О, 0011 -О, 000 303 0,001 807 0,003 120 -0,001 169 -О, 009 267 -О, 007 792 О, 011 124 О, 027 651 О, 007 674 -О, 045 444 — 0,064 816 О, 022 946 0,202 371 0,352 610 0,352 610 0,202 371 0,022 946 -О, 064 816 -О, 045 444 0,007 674 0,027 651 О, 011 124 -О, 007 792 -О, 009 267 — О, 001 169 0,003 120 О, 001 807 — О, 000 303 9.5. Программная реализация интерлолятороа 1 «(а) Ыл-)) б) Рнс.
9.16. Блок-схема ннтерполлтора (панель а]; функ- Ннональнал схема ннтерполлтора (панель б) ( Е ( (9.15, а) тт)(т — к) = т~(т — lс)/Т.), т — й = О, Е,2Е,. (9.1 5„ б) Описанный процесс иллюстрируется на рис. 9.17 для простого случая Ь = 3, длина фильтра = 10. На линию задержки подается входная выборка с последующими двумя нулями, за ней следует выборка и два нуля и т.д. Дая каждой выборки линии задержки (данные или нули) вычисляется выходная выборка. На рисунке показано содержимое линии задержки после подачи в интерполятор двух выборок х(л). Видно, что для каждой поданной входной выборки вычисляются три выходные выборки. Между ненулевыми выборками линии задержки (те.
выборками собственно х(л)) располагается (х. — 1) нулей (в данном примере — два). Очевидно, что операции умножения на нулевые выборки выполнять не обязательно. сигнала у(т). Таким образом, интерполятор эффективно увеличивает входную частоту дискретизации с Г, до ЕР,. Отметим, что одним из последствий ввода (Ь вЂ” 1) нулей после каждой выборки является рассеивание энергии каждой входной выборки по Ь выходным выборкам.
Следовательно, коэффициент усиления интерполятора равен 1/Ь. После интерполяции каждую выходную выборку следует умножить на Ь, чтобы восстановить ее до прежнего уровня. Уравнения интерполяции имеют следующий вид: вбв Глава 9. Цифровая обработка сигналов лри нескольких скоростях Солсрии мое линни «ааср:ккн в8 а м а й 1 1 1 1 1 1 1 о, о, «((>! аа о 8 оВйй 1 1 1 о, Ыо>! «(н) к(м) тз л(о) Е у(м) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ! 1 О 1 О ! (О> 1 О 1 О 1 Л()> с' 1 1 1 ! 1 ! 1 01 о! о! (0)! о> Ы2) 1 1 1 ! 1 1 1 О! О! 01 01 «(0>1 ЫЗ) 1 1 1 01 О1 01 01 01 Ыя) Г1 1 1 1 1 01 01 01 01 01 ЫЗ) г1 1 1 1 1 1 1 1 1 1 01 О! О1 01 01 Ыб) 1 1 1 1 1 1 1 1 1 01 01 О! 01 01 ЫУ) 1 1 1 1 1 1 1 ! О! 01 О1 01 01 ЫЯ) 1 1 1 1 1 1 1 1 1 О! О! О( О О( Л(5> О' 1 г( у(м) = 2 ЫЯ) н(м - С) у(0) = ЫО)«(О) И)> = ЫО> ха+ ЫПЫО> Иг>=ЫО>хлса(!>хОсиг>ЫО> у(З) ЫО)х(!)«Ы!)хл«иг)хосЫЗ)ЫО) Рис.
О.) 7. Илликтрация процесса интерполяции лпя простого слуная Б = 3 На рис. 9.!8 представлена функциональная схема однокаскадного интерполягора. В данной реализации при вычислении выходных выборок используются толью ненулевые выборки. Другая функциональная схема, на этот раз интерполягора, юторый может иметь до трех каскадов, приведена на рис. 9.19.
В другой эффективной реализации, известной как многофазная„или муяьтифазная, филон)раг(ия !8], используется тот факт, что некоторые выборки линии задержки равны нулю. В этом случае экспандер удаляется полностью, чтобы не нужно было хранить нулевые выборки. Далее линия задержки сокращается до г«!'/.(' позиций !где ))г' — длина фильтра защиты от наложения спектров, а Ь вЂ” шаг интерполяции). При таком подходе для каждой входной выборки, поданной на линию задержки, на основе Ж/.(. выборок линии задержки рассчитываются Е выходных выборок, причем каждая выходная выборка вычисляется с иным набором коэффициентов фильтра (т.е. коэффициенты фильтра, соответствующие нулевым выборкам, опускаются). Многофазный фильтр имеет такое 9.6.
Программная реализация интарполпторов 1 цп! ! Рнс. Зла. Фунацнонаньнен схеме процесса ннсерпамцнн ограничение: отношение Ж к Ь должно быть целым. В следующем разделе рассмотрена программа разработки трехкаскадного интерполатора на языке С. :!ее..',Ф,;"5',~~~~Г~т Программа многокаскадной интврполяции Программа основана иа мепще, описанном в предыдущем разделе, и интерполирует входные данные с использованием до трех каскадов; см. функциональную схему на рис. 9.19. Отметим, что вследствие дуальности децимации и интерполяции (децнматор и иитерпошпор образуют общий конвертер частоты дискретизации) каскады интерполяции нумеруются в обратом порядке.
На каждом зтапе интерполяции требуется целый шаг интерполяции и набор козффициеитов Ж-точечного фильтра, представляющих цифровой КИХ-фильтр с линейной фазовой характеристикой. Программа используется на персональном компьютере, хотя ее легко переделать под выполнение на любом другом оборудовании. Входные данные считываются из файла данных на компьютере, а данные интерполяции заносятся в выходной файл по выборке за раз. Предположим, что используется трехкаскадная интерполяцна (см. рис. 9.!9). В каскаде 3 вычисляется Ьз выборок.
Для 660 Глава 9. Цифровая обработка сигналов при нескольких скоростях К тм Рнс. 9.19. Интерполяция с использованием до трех каскадов. Если, например, 1 = 1, то выполняются только блоки с меткой "каскад 3" 9.5. Протраммная реализация интврполятороа каждой из этих выборок в каскаде 2 вычисляется Ез выборок. Для каждой выборки, поступившей с каскада 2, в каскаде 1 вычисляется Б, выборок. В конце цикла для каждой выборки выходного сигнала к(п) вычисляется Е выходных выборок (где Е = Ь, ЬзЕз), которые заносятся в файл выходных данных.