Проект и анализ цифрового преобразователя вниз

В этом примере показано, как использовать системный объект DDC System для эмуляции цифрового преобразователя TI Graychip 4016 простым способом. Мы основываем пример на сравнении с GSM Digital Down Converter в примере MATLAB. Мы покажем, как Системные объекты DDC могут использоваться для разработки и анализа децимирующих фильтров и для быстрого исследования различных проектов опций, которые соответствуют различным спецификациям частот и ослабления полосы пропускания. Для этого примера требуется лицензия Fixed-Point Designer™.

if ~isfixptinstalled
    error(message('dsp:dspDigitalDownConverterDesign:noFixptTbx'));
end

Введение

GSM Digital Down Converter в примере MATLAB представляет шаги, необходимые для эмуляции TI Graychip 4016 цифрового преобразователя Down, который выводит сигнал полосы пропускания с центром 14,44 МГц в полосу частот базовых частот, и понижает частоту дискретизации сигнала в 256 раз, чтобы довести входную частоту дискретизации 69,333 МГ ч В этом примере вы пройдете следующие шаги:

1) Проектируйте численно управляемый генератор, чтобы сгенерировать частоту смесителя 14,44 МГц.

2) Загрузите предопределенный набор коэффициентов, чтобы сгенерировать CIC дециматорный фильтр, CIC компенсаторный фильтр и конечная импульсная характеристика фильтр с частотой полосы пропускания 80 кГц.

3) Частота преобразования вниз сигнал GSM (моделируется как комплексная экпонента) и вниз дискретизации вниз преобразованный выход с каскадом децимирующих фильтров.

4) Выполните литье данных, чтобы получить желаемые типы данных с фиксированной точкой через различные секции преобразователя вниз.

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

В этом примере показано, как использовать объект DDC System для разработки набора децимирующих фильтров. Это также показывает, как объект DDC достигает процесса преобразования вниз с меньшим количеством и более простыми шагами.

Следующий блок объекта DDC System содержит типы данных на каждом этапе и скорости передачи данных для данного примера. Вы управляете типом входных данных фильтров с помощью свойств Filters Input Data Type и Custom Filters Input Data Type. Тип выходных данных управляется с помощью свойств OutputDataType и CustomOutputDataType.

Определение системного объекта DigitalDownConverter

Создайте объект DDC System. Установите скорость входа выборки объекта в 69,333 мега выборок в секунду (MSPS), и коэффициент десятикратного уменьшения в 256, чтобы достичь выхода скорости выборки 270,83 кГц. Объект DDC автоматически умножает значение десятикратного уменьшения так, что CIC-фильтр децимируется на 64, компенсатор CIC децимируется на 2, а фильтр третьей ступени децимируется на 2.

ddc = dsp.DigitalDownConverter('SampleRate',69.333e6, ...
    'DecimationFactor',256);

Проект децимирующего фильтра

Цифровой преобразователь вниз GSM в примере MATLAB использует предопределенный набор коэффициентов фильтра, чтобы сгенерировать два дециматора конечной импульсной характеристики и Системного объекта CIC дециматора. Разработка децимирующих фильтров так, чтобы их каскадная характеристика соответствовала заданному набору частот полосы пропускания и затухания в полосе задерживания, и спецификации частоты могут быть громоздким процессом, где вы должны выбрать правильную комбинацию частот полосы пропускания и полосы остановки для каждого каскада фильтра. Правильный выбор частот полосы остановки обеспечивает создания фильтра более низкого порядка.

Объект DDC автоматически проектирует децимирующие фильтры на основе набора полосы пропускания, затухания в полосе задерживания и спецификаций частоты.

Проекты фильтров минимального порядка

Объект DDC получает проекты децимирующего фильтра минимального порядка с помощью полосы пропускания и затухания в полосе задерживания и спецификаций частоты, которые вы предоставляете. Установите MinimumOrderDesign свойство true для получения проектов фильтров минимального порядка.

ddc.MinimumOrderDesign = true;

Преобразователь частоты обрабатывает сигнал GSM с двусторонней шириной полосы 160 кГц. Установите свойство Bandwidth объекта DDC в 160 кГц так, чтобы ширина полосы пропускания каскада децимирующего фильтра равнялась 160e3/2 = 80 кГц.

Установите StopbandFrequencySource свойство к 'Auto' так, что объект DDC устанавливает частоту отсечения каскадной характеристики приблизительно на выход скорости Nyquist, т.е. на 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');

Получите расчетные порядки фильтра и размеры слова коэффициентов для проекта компенсатора CIC и конечной импульсной характеристики третьей ступени.

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

Визуализируйте ответ каждого отдельного каскада фильтра и всего каскада с помощью метода visualizeFilterStages объекта 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 Digital Down Converter в примере MATLAB.

Заключение

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

Дальнейшие исследования

Можно использовать dsp. Системный объект для разработки системы цифрового преобразователя частоты.