В этом примере показано, как использовать Системный объект цифрового вниз конвертера (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.
Создайте Системный объект 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, чтобы спроектировать цифровое система конвертера.