Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: fvtool
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
dcs
Здравствуйте,

подскажите как сделать так, чтобы АЧХ (CIC,CFIR,и результирующая) отображались визуально "гладко, без изломов" при увеличении для моего примера при больших коэффициентах децимации.

Начальная частота семплирования Fs = 100MHz. На выходе хочу, например, 10kHz.

data @100MHz -> CIC (decimate by 5000) -> CFIR (decimate by 2) -> data @10kHz

P.S.
можно ли отобразить результат последнего fvtool(CICDecim, CICCompDecim, filtCasc, ... от 0 до целевой 10кГц?


Код
clc, clear, close all;

%% CIC
Fs_init = 100e6; % Hz

CIC_output_sample_rate = 20e3; % integer multiple of Fs_init

CIC_decim_factor = Fs_init/CIC_output_sample_rate; % decimatin factor

CICDecim = dsp.CICDecimator( ...
            'DecimationFactor', CIC_decim_factor, ...
            'DifferentialDelay', 1, ... % нули АЧХ cic будут на частотах кратных 20кГц
            'NumSections', 4);
        
Gain_CIC = gain(CICDecim);
        
f_CICDecim = fvtool(CICDecim,'Analysis','freq','ShowReference','off');                
f_CICDecim.NormalizeMagnitudeto1 = 'on';
legend(f_CICDecim,'CIC decimator');


%% CFIR with decimation by 2

fs = CIC_output_sample_rate; % sample rate @compensator input
fPass = 2e3;
fStop = 4e3;
                  
CICCompDecim = dsp.CICCompensationDecimator(CICDecim, ...
                                        'DecimationFactor',2, ...
                                        'PassbandFrequency',fPass, ...
                                        'StopbandFrequency',fStop, ...
                                        'PassbandRipple', 0.25, ...
                                        'StopbandAttenuation', 80, ...
                                        'SampleRate',fs);

f_CICCompDecim = fvtool(CICCompDecim,'Analysis','freq');                                    
legend(f_CICCompDecim, 'CIC compensator decimator');

filtCasc = dsp.FilterCascade(CICDecim,CICCompDecim);

f = fvtool(CICDecim, CICCompDecim, filtCasc, ...
    'ShowReference','off', ...
    'Fs', [fs*CIC_decim_factor fs fs*CIC_decim_factor]);

f.NormalizeMagnitudeto1 = 'on';
legend(f,'CIC Decimator','CIC Compensation Decimator', ...
    'Overall Response');


-спасибо

Самурай
Цитата(dcs @ Aug 7 2018, 18:52) *
подскажите как сделать так, чтобы АЧХ (CIC,CFIR,и результирующая) отображались визуально "гладко, без изломов"
...
можно ли отобразить результат последнего fvtool(CICDecim, CICCompDecim, filtCasc, ... от 0 до целевой 10кГц?


По первому вопросу:

f = fvtool(...);
f.NumberofPoints = 100500;

По второму:

f = fvtool(...);
f.FrequencyRange = 'Specify freq. vector';
f.FrequencyVector = [0:10:10000];


dcs
Цитата(Самурай @ Aug 7 2018, 17:26) *
По первому вопросу:

По второму:
спасибо
dcs
здравствуйте.

подскажите, вот как у меня в посте выше есть cic и cfir

условно говоря, с выхода cic разрядность пусть 96 бит, это много для входа корректирующего.

Например, я округляю до 32 бит (беру старшие 32 значащих по результатам моделирования или есть другой способ? есть ли смысл окргулять по правилу 0.5 или именно так и надо? имею ввиду примерно следющее cic_out[96:65]+cic_out[64] если >0 и наоборот если отрицательный результат)

Так вот на сколько давить внеполосные сигналы в корректирующем фильтре? на 20*log10(2^32) = 193дБ ? как правильно?

-спасибо
Kluwert
Слушайте, у вас исходная частота выборок 100МГц, а конечная - 20КГц, если нигде опечатки нет. Передискретизация в 5000 раз?! Вы точно этого хотите? Это некая учебная задача? Потому что я не очень могу представить откуда в практических задачах мог приехать НЧ-сигнал с полосой порядка 20КГц оцифрованный на 100МГц.
soldat_shveyk
Цитата
Потому что я не очень могу представить откуда в практических задачах

SDR-приемник? Самое то sm.gif
dcs
Цитата(Kluwert @ Aug 21 2018, 11:36) *
я не очень могу представить откуда в практических задачах мог приехать НЧ-сигнал с полосой порядка 20КГц оцифрованный на 100МГц.

опечатки нет. fs=1.5e9, bw=3.2e3 (единственный такой режим. однополосная, КВ)

100e6, 20e3 - это условный пример.


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

из каких условий выбирается разрядность данных между фильтрами? где бы почитать об этом на конкретном примере ?

-спасибо
soldat_shveyk
Цитата
При каскадной реализации фильтров из каких условий выбирается уровень подавления в каждом следующем фильтре?

Все определяется Вашими требованиями к избирательности КВ приемника.
Самый простой и наглядный способ - постройте сквозную АЧХ всех каскадов фильтрации. Для этого надо импульсные характеристики всех фильтров привести к частоте дискретизации АЦП, то есть интерполировать на величину коэффициента децимации перед фильтром. Все интерполированные импульсные характеристики свернуть между собой. fvtool() от результирующей импульсной характеристики покажет сквозную АЧХ.
dcs
Цитата(soldat_shveyk @ Aug 22 2018, 06:54) *
Все определяется Вашими требованиями к избирательности КВ приемника.
Самый простой и наглядный способ - постройте сквозную АЧХ всех каскадов фильтрации. Для этого надо импульсные характеристики всех фильтров привести к частоте дискретизации АЦП, то есть интерполировать на величину коэффициента децимации перед фильтром. Все интерполированные импульсные характеристики свернуть между собой. fvtool() от результирующей импульсной характеристики покажет сквозную АЧХ.

спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.