exponenta event banner

Ответ полосового фильтра с использованием объектов RFCKT

В этом примере показано, как вычислить отклик временной области простого полосового фильтра:

  1. Выберите значения индуктивности и емкости с помощью классического метода проектирования параметров изображения.

  2. Использовать rfckt.seriesrlc, rfckt.shuntrlc, и rfckt.cascade объекты для программного построения схемы Баттерворта в виде 2-портовой сети.

  3. Использовать analyze для извлечения S-параметров 2-портовой сети в широком диапазоне частот.

  4. Использовать s2tf функция для вычисления функции передачи напряжения от входа к выходу.

  5. Использовать rationalfit функция для генерации рациональных посадок, которые захватывают идеальную RC-схему с очень высокой степенью точности.

  6. Создайте шумный сигнал входного напряжения.

  7. Использовать timeresp функция для вычисления переходного отклика на шумный сигнал входного напряжения.

Проектирование полосового фильтра по параметрам изображения

Метод проектирования параметров изображения является основой для аналитического вычисления значений последовательных и параллельных компонентов в пассивных фильтрах. Для получения дополнительной информации об этом методе см. «Полный беспроводной дизайн» Коттера В. Сайра, McGraw-Hill 2008 с. 331.

Рисунок 1: Полосовой фильтр Butterworth, состоящий из двух полусекций.

Следующий код MATLAB ® генерирует значения компонентов для полосового фильтра с нижней частотой отсечки 3-dB 2,4 ГГц и верхней частотой отсечки 3 дБ 2,5 ГГц.

Ro = 50;
f1C = 2400e6;
f2C = 2500e6;

Ls = (Ro / (pi*(f2C - f1C)))/2;
Cs = 2*(f2C - f1C)/(4*pi*Ro*f2C*f1C);

Lp = 2*Ro*(f2C - f1C)/(4*pi*f2C*f1C);
Cp = (1/(pi*Ro*(f2C - f1C)))/2;

Программно построить цепь как сеть 2-Port

Компоновочные блоки L и C формируются путем выбора соответствующих значений с помощью rfckt.shuntrlc объект, показанный на рис. 2, или rfckt.seriesrlc объект, показанный на рис. 3. Затем компоновочные блоки соединяются вместе с rfckt.cascade как показано на рис. 4.

Рис. 2: 2-портовая сеть, созданная rfckt.shuntrlc объект

Рис. 3: 2-портовая сеть, созданная rfckt.seriesrlc объект

Рис. 4: Подключение 2-портовых сетей к rfckt.cascade объект

Seg1 = rfckt.seriesrlc('L',Ls,'C',Cs);
Seg2 = rfckt.shuntrlc('L',Lp,'C',Cp);
Seg3 = rfckt.shuntrlc('L',Lp,'C',Cp);
Seg4 = rfckt.seriesrlc('L',Ls,'C',Cs);

cktBPF = rfckt.cascade('Ckts',{Seg1,Seg2,Seg3,Seg4});

Извлечение S-параметров из сети 2-Port

analyze функция извлекает S-параметры из схемы по заданному вектору частот. В этом примере представлен набор частот, охватывающих полосу пропускания фильтра и анализирующих с помощью эталона 50-Ohm по умолчанию, импеданса источника и импедансов нагрузки. Далее, s2tf функция вычисляет передаточную функцию напряжения по модели S-параметра схемы. Наконец, мы генерируем высокоточное рациональное приближение с использованием rationalfit функция. Результирующая аппроксимация соответствует точности обработки в сети.

freq = linspace(2e9,3e9,101);
analyze(cktBPF,freq);
sparams = cktBPF.AnalyzedResult.S_Parameters;
tf = s2tf(sparams);
fit = rationalfit(freq,tf);

Убедитесь, что рациональная посадка стремится к нулю

Используйте freqresp функция для проверки того, что рациональная аппроксимация аппроксимации имеет разумное поведение вне обеих сторон аппроксимированного частотного диапазона.

widerFreqs = linspace(2e8,5e9,1001);
resp = freqresp(fit,widerFreqs);

figure
semilogy(freq,abs(tf),widerFreqs,abs(resp),'--','LineWidth',2)
xlabel('Frequency (Hz)')
ylabel('Magnitude')
legend('data','fit')
title('The rational fit behaves well outside the fitted frequency range.')

Figure contains an axes. The axes with title The rational fit behaves well outside the fitted frequency range. contains 2 objects of type line. These objects represent data, fit.

Создание входного сигнала для тестового полосового фильтра

Этот полосовой фильтр должен быть способен восстанавливать синусоидальный сигнал при 2,45 ГГц, который становится шумным путем включения нулевого среднего случайного шума и блокировщика при 2,35 ГГц. Следующий код MATLAB формирует такой сигнал из 4096 выборок.

fCenter = 2.45e9;
fBlocker = 2.35e9;
period = 1/fCenter;
sampleTime = period/16;
signalLen = 8192;
t = (0:signalLen-1)'*sampleTime; % 256 periods

input = sin(2*pi*fCenter*t);     % Clean input signal
rng('default')
noise = randn(size(t)) + sin(2*pi*fBlocker*t);
noisyInput = input + noise;      % Noisy input signal

Вычислить переходную реакцию на входной сигнал

timeresp функция вычисляет аналитическое решение уравнений состояния-пространства, определяемых рациональной аппроксимацией и входным сигналом.

output = timeresp(fit,noisyInput,sampleTime);

Просмотр входного сигнала и ответа фильтра во временной области

Постройте график входного сигнала, шумного входного сигнала и выходного сигнала полосового фильтра в окне рисунка.

xmax = t(end)/8;
figure
subplot(3,1,1)
plot(t,input)
axis([0 xmax -1.5 1.5])
title('Input')

subplot(3,1,2)
plot(t,noisyInput)
axis([0 xmax floor(min(noisyInput)) ceil(max(noisyInput))])
title('Noisy Input')
ylabel('Amplitude (volts)')

subplot(3,1,3)
plot(t,output)
axis([0 xmax -1.5 1.5])
title('Filter Output')
xlabel('Time (sec)')

Figure contains 3 axes. Axes 1 with title Input contains an object of type line. Axes 2 with title Noisy Input contains an object of type line. Axes 3 with title Filter Output contains an object of type line.

Просмотр входного сигнала и отклика фильтра в частотной области

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

NFFT = 2^nextpow2(signalLen); % Next power of 2 from length of y
Y = fft(noisyInput,NFFT)/signalLen;
samplingFreq = 1/sampleTime;
f = samplingFreq/2*linspace(0,1,NFFT/2+1)';
O = fft(output,NFFT)/signalLen;

figure
subplot(2,1,1)
plot(freq,abs(tf),'b','LineWidth',2)
axis([freq(1) freq(end) 0 1.1])
legend('filter transfer function')
ylabel('Magnitude')

subplot(2,1,2)
plot(f,2*abs(Y(1:NFFT/2+1)),'g',f,2*abs(O(1:NFFT/2+1)),'r','LineWidth',2)
axis([freq(1) freq(end) 0 1.1])
legend('input+noise','output')
title('Filter characteristic and noisy input spectrum.')
xlabel('Frequency (Hz)')
ylabel('Magnitude (Volts)')

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents filter transfer function. Axes 2 with title Filter characteristic and noisy input spectrum. contains 2 objects of type line. These objects represent input+noise, output.

Связанные темы