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

Этот пример показывает, как использовать Системный объект цифрового вниз конвертера (DDC), чтобы эмулировать TI Graychip 4016, цифровой вниз конвертер простым способом. Мы основываем пример на сравнении с GSM, Цифровым Вниз пример Конвертера. Мы показываем, как Системный объект DDC может использоваться, чтобы разработать и анализировать децимирующие фильтры и быстро исследовать различные проектные решения, которые соответствуют различной полосе пропускания и частоте полосы задерживания и спецификациям затухания. Этот пример требует лицензии Fixed-Point Designer™.

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

Введение

GSM, Цифровой Вниз, пример Конвертера представляет шаги, требуемые эмулировать TI Graychip 4016, цифровой вниз конвертер, который приносит сигнал полосы пропускания, сосредоточенный на уровне 14,44 МГц к основной полосе, и вниз выбирает сигнал фактором 256, чтобы принести входную частоту дискретизации 69,333 МГц вниз к 270,83 кГц. В том примере вы проходите следующие шаги:

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

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

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

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

GSM, Цифровой Вниз пример Конвертера также, создает КИХ-конвертер уровня, чтобы передискретизировать данные при выводе третьего этапа фильтра. Системный объект DDC не содержит конвертер уровня; поэтому, этот пример не включает реализацию той.

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

Следующая блок-схема Системного объекта DDC содержит типы данных на каждом этапе и скоростях передачи данных для примера под рукой. Вы управляете типом входных данных фильтров с помощью свойств FiltersInputDataType и CustomFiltersInputDataType. Вы управляете типом выходных данных с помощью свойств OutputDataType и CustomOutputDataType.

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

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

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

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

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

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

Проекты фильтра минимального заказа

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

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 кГц, где ФК является частотой среза, и 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 на ложь. Можно все еще задать необходимую полосу пропускания и частоты полосы задерживания каскадного ответа. Обратите внимание однако, что затуханием полосы задерживания и пульсацией теперь управляют по приказу фильтров а не значения свойств.

Проект осциллятора

Объект DDC разрабатывает осциллятор с программным управлением на основе маленького набора параметров. Установите свойство Oscillator на 'NCO' к, выбрал осциллятор с программным управлением. Используйте 32 двоичных разряда сумматора и 18 квантованных двоичных разрядов сумматора. Установите центральную частоту на 14,44 МГц, и выбрал 14 битов dither.

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 decimator. То, что это масштабирование не сделано в GSM, Цифровом Вниз пример Конвертера, объясняет различие в дробных значениях длины, выбранных в каждом примере.

Установите тип выходных данных перебрасываться парой слов длина 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, Цифровым Вниз пример Конвертера.

Заключение

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

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

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