В этом примере показано, как использовать системный объект цифрового понижающего преобразователя (DDC) для простой эмуляции цифрового понижающего преобразователя TI Graychip 4016. Пример основан на сравнении с цифровым понижающим преобразователем GSM в примере MATLAB. Мы показываем, как объект DDC System можно использовать для проектирования и анализа прореживающих фильтров, а также для быстрого изучения различных вариантов конструкции, которые соответствуют различным характеристикам полосы пропускания, частоты стоп-полосы и затухания. В этом примере требуется лицензия Fixed-Point Designer™.
if ~isfixptinstalled error(message('dsp:dspDigitalDownConverterDesign:noFixptTbx')); end
Цифровой понижающий преобразователь GSM в примере MATLAB представляет шаги, необходимые для эмуляции цифрового понижающего преобразователя TI Graychip 4016, который приводит сигнал полосы пропускания, центрированный на частоте 14,44 МГц, к основной полосе частот, и дискретизирует сигнал с коэффициентом 256, чтобы снизить частоту входных выборок 69,333 МГц до 270,83 кГц. В этом примере будут выполнены следующие шаги:
1) Сконструировать генератор с числовым управлением для генерации частоты смесителя 14,44 МГц.
2) Загрузить заранее определенный набор коэффициентов для формирования фильтра-прореживателя CIC, фильтра-компенсатора CIC и фильтра FIR с частотой полосы пропускания 80 кГц.
3) Преобразование с понижением частоты сигнала GSM (смоделированного как комплексная экспонента) и выборка с понижением частоты преобразованного выходного сигнала с каскадом прореживающих фильтров.
4) Выполнение литья данных для получения требуемых типов данных с фиксированной точкой в различных секциях понижающего преобразователя.
Цифровой понижающий преобразователь GSM в примере MATLAB также создает преобразователь скорости FIR для повторной выборки данных на выходе третьей ступени фильтра. Объект DDC System не содержит преобразователя скорости; поэтому этот пример не включает реализацию.
В этом примере показано, как использовать объект DDC System для создания набора прореживающих фильтров. Он также показывает, как объект DDC достигает процесса преобразования вниз с меньшим количеством и более простых шагов.
Следующая блок-схема объекта DDC System содержит типы данных на каждом этапе и скорости передачи данных для данного примера. Управление типом входных данных фильтров осуществляется с помощью свойств Filters InputDataType и CustomFilterInputDataType. Тип выходных данных управляется с помощью свойств OutputDataType и CustomOutputDataType.

Создайте системный объект DDC. Установите входную частоту дискретизации объекта равной 69,333 мегасимп в секунду (MSPS), а коэффициент прореживания - 256 для достижения выходной частоты дискретизации 270,83 кГц. Объект DDC автоматически факторизирует значение прореживания так, чтобы фильтр CIC прореживался на 64, компенсатор CIC прореживался на 2, а фильтр третьей ступени прореживался на 2.
ddc = dsp.DigitalDownConverter('SampleRate',69.333e6, ... 'DecimationFactor',256);
Цифровой понижающий преобразователь GSM в примере MATLAB использует предопределенный набор коэффициентов фильтра для генерации двух дециматоров FIR и объекта системы прореживания CIC. Проектирование прореживающих фильтров так, чтобы их каскадный отклик соответствовал заданному набору затухания полосы пропускания и полосы останова и частотным характеристикам, может быть громоздким процессом, в котором необходимо выбрать правильное сочетание частот полосы пропускания и полосы останова для каждой ступени фильтра. Правильный выбор частот стоп-полосы обеспечивает более низкий порядок проектирования фильтров.
Объект DDC автоматически проектирует прореживающие фильтры на основе набора характеристик затухания полосы пропускания и полосы останова и частоты.
Проекты фильтров минимального порядка
Объект DDC получает конструкции прореживающих фильтров минимального порядка с предоставленными спецификациями полосы пропускания и затухания полосы останова и частоты. Установите MinimumOrderDesign свойство true для получения конструкций фильтров минимального порядка.
ddc.MinimumOrderDesign = true;
Преобразователь с понижением частоты обрабатывает GSM-сигнал с двусторонней полосой пропускания 160 кГц. Установите для свойства Bandwidth объекта DDC значение 160 кГц, чтобы частота полосы пропускания каскада прореживающего фильтра равнялась 160e3/2 = 80 кГц.
Установите StopbandFrequencySource свойство для 'Auto' так, что объект DDC устанавливает частоту отсечки каскадного отклика приблизительно с выходной скоростью Найквиста, т.е. при 270 .83e3/2 = 135,4 кГц, и частоту отсечки при 2Fc-Fpass = 2 * 135 .4e3 - 160e3/2 = 190,8 кГц, где Fc - частота отсечки, а Fpass - частота полосы пропускания. При установкеStopbandFrequencySource кому 'Auto'объект DDC максимально ослабляет частоту полосы останова для получения наименьших порядков фильтров за счет обеспечения некоторой энергии наложения в полосе перехода каскадного отклика. Этот компромисс конструкции удобен, когда приоритетом является минимизация заказов фильтра.
ddc.Bandwidth = 160e3; % Passband frequency equal to 80 KHz ddc.StopbandFrequencySource = 'Auto'; % Allow aliasing in transition band
Наконец, установите затухание полосы останова 55 дБ и пульсацию полосы пропускания 0,04 дБ.
ddc.StopbandAttenuation = 55; ddc.PassbandRipple = .04;
Вы можете проанализировать ответ каскада прореживающих фильтров, вызвав fvtool метод объекта DDC. Задайте арифметику с фиксированной точкой так, чтобы объект DDC квантовал коэффициенты фильтра до оптимального количества битов, которые позволяют каскадному отклику удовлетворять спецификациям затухания полосы останова.
fvt = fvtool(ddc,'Arithmetic','Fixed-point');

Получить расчетные порядки фильтров и длины слов коэффициентов для компенсатора ЦВК и конструкции КИХ третьей ступени.
ddcFilters = getFilters(ddc,'Arithmetic','Fixed-point'); n = getFilterOrders(ddc); CICCompensatorOrder = n.SecondFilterOrder %#ok ThirdStageFIROrder = n.ThirdFilterOrder%#ok CICCompensatorCoefficientsWordLength = ... ddcFilters.SecondFilterStage.CustomCoefficientsDataType.WordLength%#ok ThirdStageFIRWordLength = ... ddcFilters.ThirdFilterStage.CustomCoefficientsDataType.WordLength%#ok
CICCompensatorOrder =
12
ThirdStageFIROrder =
18
CICCompensatorCoefficientsWordLength =
11
ThirdStageFIRWordLength =
11
Если наложение псевдонимов в полосе перехода неприемлемо, установите частоту полосы останова на произвольное значение, установив значение StopbandFrequencySource свойство для 'Property'. Получить более узкую переходную полосу, установив частоту стоп-полосы 128 кГц за счет большего порядка фильтров третьей ступени.
ddc.StopbandFrequencySource = 'Property'; ddc.StopbandFrequency = 128e3; close(fvt) fvt = fvtool(ddc,'Arithmetic','fixed-point');

n= getFilterOrders(ddc); CICCompensatorOrder = n.SecondFilterOrder%#ok ThirdStageFIROrder = n.ThirdFilterOrder%#ok
CICCompensatorOrder =
10
ThirdStageFIROrder =
34
Визуализируйте отклик каждой отдельной стадии фильтра и всего каскада с помощью метода визуализирующего фильтра FilterStages объекта DDC.
close(fvt) fvt = visualizeFilterStages(ddc,'Arithmetic','fixed-point');

Управление заказами на фильтрацию
Бывают случаи, когда главной конструктивной зависимостью являются заказы фильтров. Объект DDC используется для проектирования прореживающих фильтров в указанном порядке путем установки MinimumOrderDesign свойству false. По-прежнему можно указать требуемые частоты полосы пропускания и полосы останова каскадного отклика. Однако следует отметить, что затухание и пульсация полосы останова теперь управляются порядком фильтров, а не значениями свойств.
Объект DDC проектирует генератор с числовым управлением на основе небольшого набора параметров. Установите Oscillator свойство для 'NCO' для выбора осциллятора с числовым управлением. Используйте 32 бита-накопителя и 18 квантованных битов-накопителей. Установите центральную частоту 14,44 МГц и выберите 14 бит сглаживания.
ddc.Oscillator = 'NCO';
ddc.CenterFrequency = 14.44e6;
ddc.NumAccumulatorBits = 32;
ddc.NumQuantizedAccumulatorBits = 18;
ddc.NumDitherBits = 14;
Можно задать различные свойства объекта DDC для управления типами данных с фиксированной точкой вдоль пути преобразования вниз.
Приведите длины слов и дробей на входе каждого фильтра к 20 и 19 битам соответственно, установив CustomFiltersInputDataType свойство для numerictype([],20,19). Следует отметить, что объект DDC масштабирует данные на выходе дециматора CIC. Тот факт, что это масштабирование не выполняется в цифровом понижающем преобразователе GSM в примере MATLAB, объясняет разницу в значениях длины дроби, выбранных в каждом примере.
Задайте тип выходных данных, чтобы длина слова составляла 24 бита, а длина дроби - 23 бита.
ddc.FiltersInputDataType = 'Custom'; ddc.CustomFiltersInputDataType = numerictype([],20,19); ddc.OutputDataType = 'Custom'; ddc.CustomOutputDataType = numerictype([],24,23);
Инициализируйте генератор синусоидальных волн для моделирования источника GSM. Инициализируйте буфер для приведения типа данных входного сигнала к 19 битам длины слова и 18 битам длины дроби. Сконфигурируйте рисунки для построения спектральных оценок сигналов.
Fs = 69.333e6; FrameSize = 768; sine = dsp.SineWave('Frequency', 14.44e6+48e3, 'SampleRate', Fs, ... 'PhaseOffset', 0, 'SamplesPerFrame', FrameSize); gsmsig = fi(zeros(FrameSize,1),true,19,18); inputSpectrum = dsp.SpectrumAnalyzer( ... 'SampleRate',sine.SampleRate, ... 'SpectralAverages',10, ... 'Title','Power spectrum of input signal'); outputSpectrum = dsp.SpectrumAnalyzer( ... 'SampleRate',sine.SampleRate/ddc.DecimationFactor, ... 'SpectralAverages',10, ... 'Title','Power spectrum of down-converter signal');
Основной цикл моделирования
for ii = 1:1000 % Create GSM signal with 19 bits of word length and 18 bits of fraction % length. gsmsig(:) = sine(); % Down convert GSM signal downConvertedSig = ddc(gsmsig); % Frequency domain plots inputSpectrum(gsmsig); outputSpectrum(downConvertedSig); end % Release objects release(sine); release(ddc); release(inputSpectrum); release(outputSpectrum);


Обратите внимание на упрощение шагов, необходимых для понижающего преобразования сигнала по сравнению с цифровым понижающим преобразователем GSM в примере MATLAB.
В этом примере сравниваются шаги, необходимые для проектирования цифрового понижающего преобразователя, как показано в примере GSM Digital Down Converter в MATLAB, с шагами, необходимыми при использовании объекта DDC System. Объект DDC позволяет получить конструкции понижающего преобразователя за один простой шаг. Она предоставляет инструменты для проектирования прореживающих фильтров, которые соответствуют характеристикам частоты полосы пропускания, пульсации полосы пропускания, частоты полосы останова и затухания полосы останова. Объект DDC также предоставляет удобные инструменты для визуализации и анализа ответов фильтра прореживания.
Можно использовать dsp. DigireUpConverter System является объектом для разработки цифровой преобразовательной системы.