В. Анохин, А. Ланнэ MatLab для DSP. Расчет цифровых фильтров с учетом эффектов квантованияРазработчики цифровых фильтров, использующие в своей работе пакет MATLAB, несомненно, смогли оценить многочисленные достоинства интерактивной графической программы (GUI) sptool [1]. Тем не менее, результаты, получаемые с помощью sptool, не всегда достаточны для специалистов, занимающихся проектированием и реализацией цифровых фильтров на базе специализированных, в частности, сигнальных, процессоров (DSP). Характеристики фильтра, рассчитанно го на PC и реализованного на DSP, могут существенно отличаться. Это связано с тем, что разные цифровые системы (в том числе и персональный компьютер, на котором выполнялся расч╦т фильтра) используют различные типы арифметики (с плавающей или фиксированной точкой), имеют различные форматы и, как следствие, различный динамический диапазон и различную точность представления чисел. В итоге параметры фильтров, отсч╦ты входных и выходных сигналов представляются лишь значениями из конечного набора чисел, то есть являются квантованными по уровню. Эффекты квантования отражаются также и на результатах математических операций, выполняемых сумматорами и умножителями. Из сказанного следует, что процесс проектирования должен включать процедуры коррекции полученных результатов с уч╦том эффектов квантования применительно к тем процессорам, на которых предполагается реализовывать синтезируемые фильтры. Эти процессоры, а также вычислительные системы, построенные на их основе, будем называть целевыми (в англоязычной литературе - Target Processors, Target Computers). В последней версии MATLAB 6 (Release 12) появилась новая библиотека (toolbox) Filter Design, предназначенная для решения такого рода задач. Функции этой библиотеки дают возможность работать с тремя типами объектов - квантователями сигналов, квантованными фильтрами и квантованным преобразованием Фурье, используя разные форматы представления чисел. На-ряду с функциями, позволяющими разрабатывать собственные программы, библиотека имеет интерактивную графическую программу (GUI) fdatool, с помощью которой можно рассчитывать цифровые фильтры с уч╦том эффектов квантования, а также выбирать стандартные и определяемые пользователем форматы представления чисел. Помимо этого, fdatool предоставляет многочисленные варианты реализационных схем, что да╦т возможность оптимизировать решения по совокупности таких параметров, как динамический диапазон, шумы арифметики, объ╦м вычислений на отсч╦т, предельные циклы. И хотя методы такой оптимизации в данном GUI не рассмотрены, представленные многочисленные структуры фильтра позволяют содержательно обсуждать подобные задачи. Материал настоящей статьи излагается в следующей последовательности. Во втором разделе да╦тся описание основных областей и органов управления главного окна программы fdatool. В третьем - формулируется задача проектирования цифрового филь-тра, в процессе решения которой излагается дальнейший материал. Четв╦ртый и пятый разделы содержат информацию о форматах представления чисел и особенностях выполнения операций при использовании арифметики с фиксированной и плавающей точкой. В шестом разделе показаны некоторые при╦мы работы и возможности программы fdatool по расч╦ту цифровых фильтров с уч╦том эффектов квантования. Описание главного окна программыГлавное окно программы показано на рис. 1, оно появляется на экране после загрузки программы, для чего надо набрать е╦ имя: >> fdatool. Рисунок 1. Главное окно программы fdatool Как видно из рисунка, главное окно включает несколько областей, или разделов для ввода и вывода необходимой информации. В левом верхнем углу находится раздел Current Filter Information (информация о фильтре), где отображается информация о фильтре, с которым в текущий момент выполняется работа, а именно:
В дополнение к перечисленному, в этом разделе находится кнопка Convert Structure (преобразовать структуру), с помощью которой можно выбирать форму (схему) реализации фильтра. Правее раздела Current Filter Infor-mation находится область, предназначенная для графического и численного отображений следующих характеристик и параметров фильтров:
Сразу после загрузки программы в этой области, как показано на рис. 1, отображается окно спецификации фильтра. Для отображения того или иного окна нужно нажать на одну из кнопок, расположенных вверху главного окна под строкой меню. Эти кнопки, а также их назначения показаны на рис. 2 в виде увеличенного фрагмента главного окна. Кроме отмеченных кнопок, те же действия можно выполнить, выбирая соответствующие пункты меню Analysis. Рисунок 2. Управляющие кнопки для отображения характеристик и параметров фильтров Нижняя половина главного окна содержит две страницы: Design Filter (проектирование фильтра) и Set Quantization Parameters (установка параметров дискретизации), прич╦м сразу после загрузки программы активна страница Design Filter (рис. 1), заполнение которой позволяет рассчитывать фильтры без уч╦та эффектов квантования, то есть с машинной точностью. В левой части этой страницы располагаются разделы Filter Type (выбор типа фильтра) и Design Method (метод проектирования). Выбрав соответствующую строку раздела Filter Type, пользователь тем самым выбирает фильтр, который собирается проектировать. Выбор включает следующие типы фильтров:
а также следующие типы специализированных цифровых цепей:
Раздел Design Method позволяет сделать выбор между фильтрами с бесконечными и конечными импульсными характеристиками (IIR - Infinite Impulse Response и FIR - Finite Impulse Response, соответственно). В случае выбора IIR-фильтров, необходимо конкретизировать вид проектируемого фильтра: Баттерворта, Чебышева 1-го рода, Чебышева 2-го рода и эллиптический (рис. 3а). Если же выбраны FIR-фильтры, выбор включает расч╦т равноволновых фильтров, а также расч╦т методом наименьших квадратов и оконным методом (рис. 3б). Если проектирование выполняется оконным методом, активизируется область Window Specifications (спецификация окна), расположенная рядом с областью Design Method, в которой имеется раскрывающееся меню Window с набором спектральных окон. Рисунок 3. Выбор метода расч╦та при проектировании фильтров с бесконечными (а) и конечными (б) импульсными характеристиками Правую часть страницы Filter Design занимают разделы Frequency Speci-fications и Magnitude Specifications (частотные и амплитудные спецификации, соответственно). Первый из них содержит редактируемые окна для ввода значений частоты дискретизации Fs и граничных частот полос пропускания Fpass и задерживания Fstop, а также единиц измерения АЧХ - Units, прич╦м количество граничных частот зависит от типа фильтра, задаваемого в разделе Filter Type. Второй раздел - Magnitude Specifications - позволяет задать ограничения амплитудной характеристики проектируемого фильтра для областей пропускания (Apass или Wpass) и задерживания (Astop или Wstop). Оба обсуждаемых раздела имеют раскрывающиеся меню Units для выбора единиц измерения частоты и амплитуды. На странице Filter Design имеется ещ╦ одна область, а именно Filter Order (порядок фильтра), в которой можно указать явно порядок проектируемого фильтра, либо потребовать, чтобы программа автоматически выбрала наименьший порядок, в соответствии с введ╦нной спецификацией. Теперь, когда известны назначения разделов страницы Design Filter, можно было бы приступить к описанию второй страницы - Set Quantization Parameters, однако анализировать эффекты квантования удобнее и нагляднее, если уже имеется спроектированный цифровой фильтр, коэффициенты которого рассчитаны с машинной точностью. Придерживаясь терминологии, используемой в справочной системе MATLAB, цифровой фильтр, коэффициенты которого рассчитаны с машинной точностью, будем называть цифровым фильтром-прототипом (в оригинале - Referenced Filter). Проектирование цифрового фильтра: постановка задачи и квантование параметровРисунок 4. Страница Design Filter, содержащая данные табл. 1
Для иллюстрации и обсуждения эффектов квантования решим следующую задачу: спроектировать цифровой эллиптический полосовой фильтр, требования к которому заданы в табл. 1. Для этого нам необходимо выделить и заполнить соответствующие позиции на странице Filter Design главного окна fdatool, как показано на рис. 4, после чего нажать на клавишу Design Filter, расположенную внизу окна. После завершения расч╦та в верхней части окна будут представлены результаты (рис. 5). Как видно из рисунка, в области отображения характеристик и параметров выводится АЧХ полученного фильтра, однако пользователь может, по мере необходимости, для вывода переключать е╦ содержимое, например, импульсной характеристики, полюсов и нулей и так далее. Рисунок 5. Амплитудно-частотная характеристика фильтра-прототипа До настоящего момента все операции над данными выполнялись с машинной точностью, когда для представления чисел использовался формат double (в соответствии с этим форматом для записи и хранения числа отводится 8 байт). Теперь проанализируем, что произойд╦т при изменении формата представления чисел. Такая потребность возникает, когда необходимо выполнить эмуляцию работы построенного фильтра на базе целевого процессора, использующего отличные от PC форматы данных. В главном окне, ниже раздела Current Filter Information, находится раздел Quanti-zation, содержащий единственное поле Turn Quantization On. Для запуска процедуры расч╦та установим в этом поле флажок, запустив тем самым процедуру расч╦та квантованного фильтра с параметрами квантования, заданными по умолчанию. (Также по умолчанию расч╦т выполняется для прямой реализации фильтра.) По окончании процедуры расч╦та, АЧХ нового (квантованного) фильтра наложится на АЧХ фильтра-прототипа, рассчитанного ранее. Область отображения характеристик будет выглядеть так, как показано на рис. 6, где АЧХ фильтра-прототипа обозначена как Reference, а квантованного - как Quantized. Из графиков видно, что АЧХ фильтра, с уч╦том эффектов квантования (Quantized), существенно отличается от соответствующей характеристики фильтра-прототипа (Reference). Сохраним полученные результаты на диске, для чего откроем меню File и выберем раздел Save Session As┘ Рисунок 6. Амплитудно-частотные характеристики фильтра-прототипа и квантованного фильтра Чтобы разобраться в причинах, приведших к таким сильным изменениям, перейд╦м на страницу Set Quantization Parameters, показанную на рис. 7, и проанализируем е╦ содержимое. Как следует из рисунка, имеется пять видов объектов, которые подвергаются квантованию:
Рисунок 7. Общий вид страницы Set Quantization Parameters Для выполнения операции квантования используются квантователи перечисленных объектов. Таким образом, квантованный фильтр представляет собой нелинейную цифровую систему, включающую:
Пример квантованного филь-тра 2-го порядка показан на рис. 8, где введены следующие обозначения:
Рисунок 8. Структурные схемы фильтра-прототипа и кантованного фильтра 2-го порядка Свойства квантованного фильтра в целом зависят от параметров каждого из перечисленных квантователей. Эти параметры определяются содержимым пяти колонок, или полей, расположенных правее им╦н объектов квантования (рис. 7). Параметры определяют, каким образом формируется сигнал или вычисляется коэффициент на выходе соответствующего квантователя. Свойства квантованного фильтра зависят также от структуры, или формы реализации фильтра. В левом ниж-нем углу страницы Set Quantization Parameters имеется клавиша Show filter structures┘, нажав на которую пользователь получит возможность просмотреть различные формы реализации фильтров. Подчеркн╦м, что появляющие-ся схемы никак не связаны с тем фильтром, который проектируется в момент просмотра. Их можно интерпретировать как своего рода справочник или альбом, помогающий пользователю сделать свой выбор. Для выбора структуры фильтра необходимо в главном окне нажать кнопку Convert Structure, в появившемся окне выделить желаемую структуру и нажать OK. Говоря о квантователях, прежде всего подчеркн╦м тот очевидный факт, что реализация любого цифрового фильтра основывается на использовании арифметики с фиксированной или плавающей точкой (Fixed-Point или Floating-Point Arithmetic, соответственно). В связи с этим, остановимся кратко на форматах представления чисел и особенностях выполнения арифметических операций в программе fdatool. Арифметика с фиксированной точкой: форматы данных и реализация операцийВыбор работы каждого из квантователей в режиме с фиксированной или плавающей точкой зада╦тся значениями параметров колонки Mode, расположенной на странице Set Quan-tization Parameters. Для реализации арифметики с фиксированной точкой необходимо выбрать значение fixed. Двоичные числа с фиксированной точкой определяются в битах длиной слова w и длиной дробной части числа f. При этом длина дробной части может быть задана в диапазоне от 0 до w - 1 бит. Общее представление числа в формате с фиксированной точкой показано на рис. 9. Пользователь может задавать длину слова до 64-х бит включительно, однако побитовое соответствие результатов моделирования с помощью fdatool и реальной работы целевого компьютера обеспечивается, если длина слова определена в пределах 53 бит. Если же выбранная длина слова находится в диапазоне 54 w 64, то происходит потеря значимости, то есть в младшие биты записываются нули. В пакете MATLAB и, в частности, в функциях библиотеки Filter Design, формат для чисел с фиксированной точкой зада╦тся в виде [w, f] в колонке format. Рисунок 9. Общее представление числа в формате с фиксированной точкой Числа с фиксированной точкой могут быть беззнаковыми или со знаком. В первом случае старший бит, как и остальные, используется для представления величины числа, тогда как во втором - для его знака (0 соответствует знаку "плюс", 1 - знаку "минус"). Динамический диапазон для беззнаковых чисел равен [0, 2w√f√2-f ], а для чисел со знаком - [√2w√f-1, 2w√f-1√2-f]. В обоих случаях точность, то есть разность двух ближайших чисел в данном формате, равна = 2-f. В связи с тем, что результатом квантования является замена квантуемой величины числом из конечного, предопредел╦нного набора чисел, называемых уровнями квантования, необходимо ввести информацию о том, каким образом эту замену выполнять (значения и число уровней квантования определяются используемым форматом). Для этого в программе fdatool имеется поле Round mode, где для каждого квантователя можно выбрать способ округления. Пользователь имеет возможность выбрать один из следующих режимов:
Когда квантованию подвергается величина, значение которой находится за пределами динамического диапазона квантователя, возникает явление переполнения. Способ обработки таких величин зада╦тся в поле Overflow Mode (режим переполнения) для каждого квантователя. Пользователь может выбрать режим saturate или wrap. Режим saturate означает разрешение работы с насыщением: квантуемая величина, лежащая вне динамического диапазона, полагается равной ближайшему предельно допустимому числу. В случае выбора режима wrap, старшие биты квантуемой величины, лежащей вне динамического диапазона, будут отброшены, и результат квантования будет представлен младшими w-битами, при этом для чисел со знаком старший бит b>w√1рис. 9). Рассмотрим следующий пример. Пусть имеются два квантователя - q1 и q2, для которых задан формат fixed [3 2], и пусть первый из них работает в режиме saturate, а второй ≈ в режиме wrap. В этом случае шаг квантования для обоих квантователей = 0,25, динамический диапазон - [-1, 0,75]. Если входная квантуемая величина равна 1,25, то на выходах этих квантователей будем иметь: 0,75 для квантователя q1; Аналогично, если квантуемая величина равна -1,25, результатами квантования будут следующие значения: -1 для квантователя q1; На рис. рис. 10 а-г показано, как формируются значения на выходе каждого из квантователей для рассмотренных четыр╦х случаев. Рисунок 10. Варианты квантования в режиме переполнения: положительного числа квантователем q1 (а), положительного числа квантователем q2 (б), отрицательного числа квантователем q1 (в) и отрицательного числа квантователем q2 (г) Функции библиотеки Filter Designer позволяют использовать два типа квантователей: quantizer и unitquantizer. Они работают практически одинаково, за исключением того, что на выходе квантователя unitquantizer будет единица, если на его вход поступает величина из диапазона [1√, 1+]. Например, пусть тип первого из рассмотренных нами выше квантователей (q1) quantizer, а второго (q2) - unitquantizer. Если на вход q1 подать единицу, то возникнет переполнение, так как используется формат fixed [3, 2], и на выходе будет значение 0,75 (максимальная величина динамического диапазона квантователя q1). Если же единицу подать на вход квантователя q2, переполнения не возникнет, а на его выходе будет единица. В fdatool выбор типа квантователя осуществляется на странице Set Quantization Parameters в колонке Quantizer Type. Арифметика с плавающей точкой: форматы данных и реализация операцийНедостатком описания чисел в формате с фиксированной точкой является неудобство представления очень больших и очень маленьких чисел при использовании разумной длины слова w. Это ограничение снимается, если используется формат описания с плавающей точкой. Любое двоичное число с плавающей точкой можно представить в виде ±F·2E, где F обозначает мантиссу, или дробную часть, 2 - основание системы исчисления, а E - порядок. Длина слова при представлении числа в формате с плавающей точкой - w = f+e+1, где f - количество бит, отводимых для хранения мантиссы (длина мантиссы), а e - количество бит, отводимых для хранения порядка (длина порядка). Ещ╦ один бит используется для записи знака числа, он обозначается символом s (sign). Знаковый бит положительного числа содержит нуль (s = 0), отрицательного - единицу (s = 1). Общее представление числа в формате с плавающей точкой показано на рис. 11 а. Рисунок 11. Представление числа в формате с плавающей точкой: общее представление (а), а также форматы single (б) и double (в) Работая с библиотекой Filter Design и, в частности, с программой fdatool, пользователь может применять один из тр╦х форматов с плавающей точкой: single, double (с обычной и двойной точностью, соответственно), определяемые стандартом IEEE 754 для двоичной арифметики с плавающей точкой, а также формат float. Выбор того или иного формата осуществляется, как ранее было отмечено, в окнах колонки Mode страницы Set Quantization Parameters. В колонке Format устанавливается спецификация формата, имеющая ту же форму, что и для арифметики с фиксированной точкой: [w, f], где w - длина слова, f - длина мантиссы. В соответствии со стандартом IEEE 754, показатель записывается со смещением B. Это значит, что для получения истинного значения порядка надо из содержимого поля порядка, то есть из величины E, вычесть величину B, определяемую по формуле B = 2e-1 √ 1. Например, если длина порядка равна 8 (e = 8), то E может принимать значения в интервале [0, 255]. Значит, значение порядка лежит в пределах интервала [0, 255] √ (28-1 √ 1) = [0, 255] √ 127 = [-127, 128]. В системе MATLAB граничные значения порядка зарезервированы для особых случаев, например, для отображения результатов деления конечной величины на нуль (inf), деления нуля на нуль (NaN) и др. Поэтому в привед╦нном примере диапазон порядка лежит в интервале [-126, 127]. Мантиссу числа с плавающей точкой можно записать по-разному. Сдвигая позицию двоичной точки влево или вправо, надо лишь соответствующим образом увеличивать или уменьшать порядок. Для достижения наибольшей точности мантиссу логично было бы расположить так, чтобы е╦ старший бит (ближайший справа от точки) содержал единицу. Однако, раз при таком расположении содержимое старшего бита мантиссы всегда единица, е╦ нет нужды запоминать. Этот бит является скрытым. Следовательно, если под мантиссу отведено e бит, запоминается на самом деле e+1 бит (e бит, следующие за старшим, скрытым битом мантиссы, плюс скрытый бит). Таким образом, взаимосвязь между величиной, записанной в формате, показанном на рис. 11 а, и истинным значением v зада╦тся в виде v = (-1)s(2E-B)(1.F). Числа, представленные таким способом, называются нормализованными. В некоторых случаях может возникнуть ситуация, когда результатом какой-либо арифметической операции является число, имеющее такое маленькое абсолютное значение, что для него величина E = порядок + B < 0. Это явление называется исчезновением разрядов порядка, или антипереполнением порядка. Для того, чтобы увеличить порядок и тем самым избежать явления переполнения, используются денормализованные числа. Они получаются из нормализованного представления сдвигом мантиссы вправо и соответствующим увеличением порядка (то есть уменьшением модуля порядка). Для денормализованных чисел взаимосвязь записи в формате, показанном на рис. 11 а, и истинного значения определяется соотношением v = (-1)s(2-B+1)(0.F). Читатель может заметить, что для задания знака числа с плавающей точкой отвед╦н один бит, в то время как знак имеет и мантисса, и порядок. В описываемых форматах знаковый бит содержит знак мантиссы, знак же порядка определяется по результату вычитания смещения B из содержимого поля порядка E. Представления чисел при использовании форматов single и double показаны на рис. 11 б и в, соответственно. При выборе одного из этих форматов автоматически устанавливаются параметры в колонках Round mode, Overflow mode и Format. Параметрами Round mode в этом случае являются значения round, а Overflow mode - saturate. В табл. 2 указаны допустимые значения порядков и численных значений при использовании форматов single и double. Таблица 2. Допустимые значения порядков и численных значений при использовании форматов single и double
Ещ╦ один формат, с которым работает fdatool - это float. Представление чисел в этом формате также соответствует привед╦нным выше формулам и обозначениям, показанным на рис. 11 а, но в этом случае пользователь может произвольно задавать длину мантиссы и порядка, а также устанавливать значения в полях Format и Round mode. При этом длина порядка должна находиться в интервале 1 e 11, а длина слова - в интервале e+1 w 64. Независимо от выбранного формата (single, double или float), в случае возникновения переполнения на выходе соответствующего квантователя устанавливается значение inf или -inf, поэтому окна колонки Overflow mode неактивны. Рисунок 12. Параметры фильтра-прототипа и квантованного фильтра
Проектирование цифрового фильтра: квантование параметров и анализ результатовТеперь, после знакомства с основными причинами, порождающими эффекты квантования, вновь обратимся к нашей задаче проектирования цифрового фильтра. Ясно, что различие между АЧХ фильтра-прототипа и АЧХ квантованного фильтра (рис. 6) при выбранной структуре связано с установками параметров квантования. Как видно из рис. 7, в данном случае использовались форматы с фиксированной точкой [16, 15] и [32, 30], что соответствует значению fixed в поле Mode и значениям [16, 15] для квантователей Coefficient, Input, Output и Multiplicand в поле Format. Для квантователей Product и Sum используемый формат - [32, 30]. Для того, чтобы сравнить коэффициенты фильтров, нажм╦м кнопку "Коэффициенты фильтра" (рис. 2 б). В области отображения параметров распечатается следующая информация, показанная на рис. 12. Как видно из распечатки, все коэффициенты знаменателя передаточной функции фильтра-прототипа, за исключением последнего, превышают по модулю единицу, в то время как установленный формат для квантователя Coefficient равен [16, 15]. Это означает, что единственный бит, не предназначенный для хранения дробной части числа, является знаковым, то есть квантование любого числа, модуль которого больше или равен единице, привед╦т к переполнению. Из-за эффекта переполнения коэффициенты знаменателя квантованного фильтра существенно отличаются от соответствующих коэффициентов фильтра-прототипа, что отмечено в начале каждой строки, за исключением последней, знаком "+" (переполнение в сторону плюс бесконечности) или "√" (переполнение в сторону минус бесконечности). Попробуем промасштабировать коэффициенты так, чтобы они по модулю не превышали единицу. Это необходимо для повышения точности расч╦тов при реализации фильтров на DSP и осуществляется нажатием кнопки Scale transfer-fcn coeffs <= 1, расположенной в левой верхней части страницы Set Quantization Parameters. Для масштабирования используются коэффициенты, равные степени 2. После выполнения расч╦тов в поле Input/output scaling, расположенном под указанной кнопкой, появятся значения масштабных множителей, на которые умножаются входной и выходной сигналы фильтра с измен╦нными коэффициентами. АЧХ фильтров будут выглядеть так, как показано на рис. 13. Рисунок 13. Амплитудно-частотные характеристики фильтров после масштабирования коэффициентов Помимо искажений АЧХ, в результате квантования появляются шумы, фильтр может стать неустойчивым, и возникнут разные виды генерации (например, генерация периодических колебаний, предельные циклы высокого и низкого уровней) [2], что в принципе затрудняет определение АЧХ. fdatool не позволяет решать задачи расч╦та шумов арифметики, расч╦та предельных циклов, оптимизации динамического диапазона и ряд других. Для некоторых из этих целей в MATLAB имеются специальные функции (например, nlm, limitcycle и другие). Однако, исключительно важное значение fdatool состоит в том, что он позволяет создавать нелинейные модели цифровых фильтров, весьма точно отражающих динамику реальных систем. Эти модели и являются объектами для упомянутых выше функций. Возвращаясь к нашему примеру, щ╦лкнем мышью, поместив предварительно курсор в редактируемое окно Input/output scaling, нажм╦м на клавиатуре Enter, и затем нажм╦м клавишу Apply, находящуюся внизу главного окна fdatool. В области Current Filter Information появится сообщение "Stable: No". В том, что фильтр неустойчив, можно также убедиться, нажав на кнопку Pole/Zero Plot (на рис. 2 она обозначена как "Полюсы и нули"). В результате появится карта нулей и полюсов, показанная на рис. 14, на которой видно, что передаточная функция построенного квантованного фильтра имеет полюсы, лежащие вне единичного круга. Рисунок 14. Карта нулей и полюсов Теперь попробуем решить поставленную задачу иначе, но прежде восстановим наши результаты, записанные на диск. Для этого выберем раздел Open Session меню File и откроем файл. В области Current Filter Information нажм╦м клавишу Convert Structure┘ и в открывшемся окне установим флажок Use second order sections (рис. 15), указав тем самым, что проектируемый квантованный фильтр должен быть реализован звеньями второго порядка. Нажатие кнопки Apply или OK инициализирует расч╦т фильтра в указанной реализации. После вычислений можно убедиться, что АЧХ фильтра-прототипа и квантованного фильтра практически совпадают. Полученный результат показан на рис. 16. Важно обратить внимание на содержимое окна Input/output scaling: в н╦м распечатаны масштабирующие множители для сигналов на входе каждого из звеньев второго порядка, а также для выходного сигнала последнего звена. Рисунок 15. Установка флажка Use second order sections в окне Convert Structure Рисунок 16. Амплитудно-частотные характеристики фильтра-прототипа и квантованного фильтра, реализованного звеньями второго порядка Итак, на первый взгляд задача, поставленная в разделе 3 (табл. 1), решена - цифровой фильтр с требуемыми характеристиками построен. Однако следует заметить, что частотная характеристика фильтра, и, в частности, АЧХ, показанная на рис. 16, построена по рассчитанным квантованным коэффициентам в предположении, что фильтр является идеальной линейной системой. Другими словами, при расч╦те частотной характеристики учитывались лишь эффекты квантования коэффициентов фильтра. Для получения реальной частотной характеристики необходимо учесть нелинейные эффекты квантования, связанные с формой реализации (структурой) фильтра и квантованием других параметров, устанавливаемых на странице Set Quantization Parameters. Чтобы получить частотную характеристику фильтра, построенную с уч╦том указанных факторов, следует выполнить комплексную проверку его работы на основе имитационного моделирования. Рассмотрим, как можно определить АЧХ, вообще говоря, нелинейной системы, используя одну из функций MATLAB - nlm (noise loading method), которая вычисляет оценку частотной характеристики квантованного фильтра с уч╦том всех эффектов квантования. Функция, на основе метода Монте-Карло, выполняет L испытаний, в каждом из которых моделируется прохождение входного сигнала, представляющего собой белый шум, через исследуемый фильтр. По результатам каждого испытания находится оценка частотной характеристики фильтра по спектрам входного и выходного сигналов. Итоговая оценка частотной характеристики вычисляется усреднением оценок частотных характеристик по всем испытаниям. Перед тем, как воспользоваться функцией nlm, экспортируем наш фильтр в рабочее пространство MATLAB (Work-space). Это выполняется следующим образом. В меню File выбрать раздел Export, в появившемся окне указать, куда экспортировать (Workspace) и имя фильтра (например, Hq1), после чего нажать кнопку OK. После выполнения команды надо перейти в командное окно MATLAB и набрать команду >> nlm(Hq1,[],50), по которой будет выполнено моделирование, включающее 50 испытаний. В результате появится окно с графиками АЧХ и ФЧХ, показанное на рис. 17, из которых видно, что построенная нами нелинейная цифровая система, каковым является квантованный фильтр, не удовлетворяет заданным требованиям, изложенным в табл. 1 и показанным на рис. 4. Отметим, что функцию nlm можно вызвать, указав лишь имя фильтра: >> nlm(Hq1). Рисунок 17. Результаты моделирования с помощью функции nlm В этом случае число испытаний L будет выбрано по умолчанию (L = 10), и получаемые графики будут менее сглаженными. Очевидно, что для получения желаемого результата нам надо изменить параметры квантования, задаваемые на странице Set Quantization Parameters. Попробуем для всех квантователей, кроме квантователей коэффициентов, переустановить способ округления с floor в convergent и рассчитать новый квантованный фильтр, нажав кнопку Apply. Если затем импортировать полученный фильтр в Workspace и повторить вызов функции nlm к этому фильтру, получим частотную характеристику, показанную на рис. 18. Сравнивая графики, показанные на рис. 17 и 18, видно, что АЧХ последнего фильтра является лучшим приближением к требуемому результату, однако она тоже не удовлетворяет заданным требованиям. Рисунок 18. Результаты моделирования с помощью функции nlm после замены способа округления с floor на convergent Обратимся снова к странице Set Quantization Parameters и установим форматы квантователей в соответствии с рис. 19. Повторив процедуру расч╦та, импорта и испытания фильтра с помощью nlm, получим результат, показанный на рис. 20. Как видно из рисунка, АЧХ фильтра-прототипа и квантованного фильтра практически совпадают, то есть полученный фильтр удовлетворяет требованиям, изложенным в табл. 1. Рисунок 19. Изменение форматов квантователей Рисунок 20. Результаты моделирования с помощью функции nlm после замены форматов квантователей Заключение Материал, изложенный в настоящей статье, следует рассматривать как введение в GUI-fdatool, позволяющее решать ряд практически важных и теоретически интересных задач, связанных с проектированием цифровых фильтров. Главное - это возможность весьма точно моделировать разнообразные структуры цифровых фильтров в режиме нелинейных преобразований, связанных с эффектами квантования, и возможность оценивать интегральные параметры фильтров. Вместе с тем, многие вопросы синтеза цифровых фильтров с оптимальными либо близкими к таковым характеристиками и учитывающие нелинейные эффекты квантования остались за пределами этой публикации, равно как и за пределами системы MATLAB. Наиболее полную информацию о работе с программой читатель может найти в справочной системе MATLAB [3]. Для этого надо в окне справки MATLAB (окно help) открыть раздел Filter Design Toolbox Using Filter Design Toolbox Quantization Tool Overview. Литература
|
Craigorafe пишет... Приобрести можно на веб-сайте http://m.1bestone.pw/
02/02/2018 14:21:27 |
Craigorafe пишет... Приобрести можно на веб-сайте http://otp.bestsky.info
02/02/2018 14:32:18 |
Craigorafe пишет... Приобрести можно на веб-сайте http://m.1bestone.pw/
02/02/2018 20:05:46 |
Craigorafe пишет... Приобрести можно на веб-сайте http://mangg.bestsky.info
02/02/2018 23:34:56 |
Craigorafe пишет... Приобрести можно на веб-сайте http://otp.bestsky.info
03/02/2018 02:39:03 |
Craigorafe пишет... Приобрести можно на веб-сайте http://mangg.bestsky.info
03/02/2018 09:52:13 |
Craigorafe пишет... Приобрести можно на веб-сайте http://otp.bestsky.info
04/02/2018 00:01:13 |
Ваш комментарий к статье | ||||