Этот пример показывает, как спроектировать широкополосные совпадающие сети для малошумящего усилителя (LNA).
В RF приемника переднем конце LNA обычно обнаруживается сразу после антенны или после первого полосно-пропускающего фильтра, который следует за антенной. Его положение в цепи приемника гарантирует, что он имеет дело со слабыми сигналами, которые имеют значительное содержимое. В результате LNA должна не только обеспечить усиление таких сигналов, но и минимизировать свой собственный шумовой отпечаток на усиленном сигнале.
В этом примере вы спроектируете LNA, чтобы достичь целевых спецификаций по усилению и рисунку шума в заданной полосе пропускания, используя комкнутые элементы LC. Основанный на прямом поиске подход используется, чтобы получить оптимальные значения элемента во входной и выходной сети согласования.
Фигура 1: Согласование импеданса усилителя
Технические спецификации проекта следующие.
Усилитель является усилителем LNA
Центральная частота = 250 МГц
Полоса пропускания = 100 МГц
Коэффициент усиления преобразователя, больший или равный 10 дБ
Шумовая фигура меньше или равна 2,0 дБ
Работа между завершениями 50-Ohm
Вы строите соответствующую сеть для LNA с пропускной способностью, поэтому задайте полосу пропускания соответствия, центральную частоту, усиление и шум рисунка целей.
BW = 100e6; % Bandwidth of matching network (Hz) fc = 250e6; % Center frequency (Hz) Gt_target = 10; % Transducer gain target (dB) NFtarget = 2; % Max noise figure target (dB)
Задайте входной импеданс, опорный импеданс и импеданс нагрузки.
Zs = 50; % Source impedance (Ohm) Z0 = 50; % Reference impedance (Ohm) Zl = 50; % Load impedance (Ohm)
Используйте read
метод создания объекта усилителя с использованием данных из файла lnadata.s2p
.
Unmatched_Amp = read(rfckt.amplifier,'lnadata.s2p');
Определите количество частотных точек для анализа и настройте вектор частоты.
Npts = 32; % No. of analysis frequency points fLower = fc - (BW/2); % Lower band edge fUpper = fc + (BW/2); % Upper band edge freq = linspace(fLower,fUpper,Npts); % Frequency array for analysis w = 2*pi*freq; % Frequency (radians/sec)
Используйте analyze
метод для выполнения частотного диапазона анализа в частотных точках в вектор freq.
analyze(Unmatched_Amp,freq,Zl,Zs,Z0); % Analyze unmatched amplifier
ЛНА должна работать в стабильную область, чтобы исследовать стабильность, построить график Delta
и K
для транзистора. Используйте plot
метод rfckt
объект для построения графика Delta
и K
как функция частоты, чтобы увидеть, является ли транзистор стабильным.
figure plot(Unmatched_Amp,'Delta','mag') hold all plot(Unmatched_Amp,'K') title('Device stability parameters') hold off grid on
Как показывает график, и для всех частот в интересующей полосе. Это означает, что устройство безоговорочно стабильно. Также важно просмотреть усиление степени и поведение шумовых рисунков на одной и той же полосе пропускания. Вместе с информацией о устойчивости эти данные позволяют вам определить, могут ли быть достигнуты цели рисунка усиления и шума.
plot(Unmatched_Amp,'Ga','Gt','dB')
Этот график показывает коэффициент усиления степени на 100-MHz полосе пропускания. Это указывает, что коэффициент усиления преобразователя изменяется линейно между 5,5 дБ и приблизительно 3,1 дБ и достигает только 4,3 дБ в центре полосы значений. Это также предполагает наличие достаточного запаса между усилением преобразователя Gt
и доступное усиление Ga для достижения нашей цели Gt
10 дБ.
plot(Unmatched_Amp,'Fmin','NF','dB') axis([200 300 0 2]) legend('Location','NorthEast')
Этот график показывает изменение шумового рисунка с частотой. Несопоставленный усилитель четко соответствует требованию целевого шумового рисунка. Однако это изменится после включения входных и выходных совпадающих сетей. Скорее всего, шумовой рисунок ЛНА превысила бы требование.
Область операции находится между 200 - 300 МГц. Поэтому выберите полосную топологию для совпадающих сетей, которая показана здесь.
Фигура 2. Соответствие топологии сети
Выбранная топология, как показано фигура, представляет собой полосно-пропускающую сеть с прямой связью прототипа параллельного типа с верхней связью [2], которая первоначально настраивается на геометрическую среднюю частоту относительно полосы операции.
N_input = 3; % Order of input matching network N_output = 3; % Order of output matching network wU = 2*pi*fUpper; % Upper band edge wL = 2*pi*fLower; % Lower band edge w0 = sqrt(wL*wU); % Geometric mean
Для первоначального проекта всем индукторам присваивается одинаковое значение на основе индуктора первого ряда. Как упомянуто в [3], выберите значение прототипа, чтобы быть единицей и используйте стандартные импедансы и частотные преобразования, чтобы получить денормализованные значения [1]. Значение для конденсатора в параллельной ловушке задается с помощью этого значения индуктивности, чтобы сделать его резонансным на геометрической средней частоте. Обратите внимание, что существует много способов разработки начальной совпадающей сети. Этот пример показывает один возможный подход.
LvaluesIn = (Zs/(wU-wL))*ones(N_input,1); % Series and shunt L's [H] CvaluesIn = 1 / ( (w0^2)*LvaluesIn(2)); % Shunt C [F]
Используйте либо rfckt.seriesrlc
или rfckt.shuntrlc
конструктор, чтобы создать каждую ветвь соответствующей сети. Затем сформируйте соответствующую сеть из этих отдельных ветвей путем создания rfckt.cascade
объект. Сеть, соответствующий выход, для этого примера аналогична сети, соответствующему входу.
LC_InitialIn = [LvaluesIn;CvaluesIn]; LvaluesOut = LvaluesIn; CvaluesOut = CvaluesIn; LC_InitialOut = [LvaluesOut;CvaluesOut]; InputMatchingNW = rfckt.cascade('Ckts', ... {rfckt.seriesrlc('L',LvaluesIn(1)), ... rfckt.shuntrlc('C',CvaluesIn,'L',LvaluesIn(2)), ... rfckt.seriesrlc('L',LvaluesIn(3))}); OutputMatchingNW = rfckt.cascade('Ckts', ... {rfckt.seriesrlc('L',LvaluesOut(1)), ... rfckt.shuntrlc('C',CvaluesOut,'L',LvaluesOut(2)), ... rfckt.seriesrlc('L',LvaluesOut(3))});
Соберите сеть LNA, состоящую из совпадающих сетей и усилителя, создав rfckt.cascade
объект, как показано в предыдущем разделе.
Matched_Amp = rfckt.cascade('Ckts', ... {InputMatchingNW,Unmatched_Amp,OutputMatchingNW});
Перед оптимизацией необходимо рассмотреть несколько точки.
Объективная функция: объективная функция может быть построена по-разному в зависимости от проблемы под рукой. В данном примере целевая функция показана в файле ниже.
Выбор функции стоимости: функция стоимости является функцией, которую вы хотели бы минимизировать (максимизировать), чтобы достичь почти оптимальной эффективности. Для выбора функции затрат может быть несколько способов. Для этого примера у вас есть два требования, чтобы удовлетворить одновременно, то есть коэффициент усиления и рисунка шума. Чтобы создать функцию затрат, вы сначала найдете различие между самой текущей оптимизированной сетью и целевым значением для каждого требования на каждой частоте. Функция стоимости является L2-norm вектора значений ошибки усиления и шумового рисунка.
Переменные оптимизации: В этом случае это вектор значений, для конкретных элементов, чтобы оптимизировать в совпадающей сети.
Метод оптимизации: Метод прямого поиска, функция MATLAB ® fminsearch
, используется в этом примере для выполнения оптимизации.
Количество итераций/вычислений функции: Установите максимальное число. итераций и вычислений функции для выполнения, чтобы сравниться между скоростью и качеством соответствия.
Значение допуска: Задайте изменение значения целевой функции, при котором процесс оптимизации должен завершиться.
Целевая функция, используемая в процессе оптимизации fminsearch
показан здесь.
type('broadband_match_amplifier_objective_function.m')
function output = broadband_match_amplifier_objective_function(AMP,LC_Optim,freq,Gt_target,NF,Zl,Zs,Z0) %BROADBAND_MATCH_AMPLIFIER_OBJECTIVE_FUNCTION Is the objective function. % OUTPUT = BROADBAND_MATCH_AMPLIFIER_OBJECTIVE_FUNCTION(AMP,LC_OPTIM,FREQ,GT_TARGET,NF,Zl,Zs,Z0) % returns the current value of the objective function stored in OUTPUT % evaluated after updating the element values in the object, AMP. The % inductor and capacitor values are stored in the variable LC_OPTIM. % % BROADBAND_MATCH_AMPLIFIER_OBJECTIVE_FUNCTION is an objective function of RF Toolbox demo: % Designing Broadband Matching Networks (Part II: Amplifier) % Copyright 2008 The MathWorks, Inc. % Ensure positive element values if any(LC_Optim<=0) output = inf; return; end % Update matching network elements - The object AMP has several properties % among which the cell array 'ckts' consists of all circuit objects from % source to load. Since RFCKT.CASCADE was used twice, first to form the % matching network itself and a second time to form the LNA, we have to % step through two sets of cell arrays to access the elements for loop1 = 1:3 AMP.ckts{1}.ckts{loop1}.L = LC_Optim(loop1); AMP.ckts{3}.ckts{loop1}.L = LC_Optim(loop1+4); end AMP.ckts{1}.ckts{2}.C = LC_Optim(4); AMP.ckts{3}.ckts{2}.C = LC_Optim(8); % Perform analysis on tuned matching network Npts = length(freq); analyze(AMP,freq,Zl,Zs,Z0); % Calculate target parameters of the Amplifier target_param = calculate(AMP,'Gt','NF','dB'); Gt = target_param{1}(1:Npts,1); NF_amp = target_param{2}(1:Npts,1); % Calculate Target Gain and noise figure error errGt = (Gt - Gt_target); errNF = (NF_amp - NF); % Check to see if gain and noise figure target are achieved by specifying % bounds for variation. deltaG = 0.40; deltaNF = -0.05; errGt(abs(errGt)<=deltaG) = 0; errNF(errNF<deltaNF) = 0; % Cost function err_vec = [errGt;errNF]; output = norm((err_vec),2); % Animate Gmax = (Gt_target + deltaG).*ones(1,Npts); Gmin = (Gt_target - deltaG).*ones(1,Npts); plot(AMP,'Gt','NF','dB'); hold on plot(freq.*1e-6,Gmax,'r-*') plot(freq.*1e-6,Gmin,'r-*') legend('G_t','NF','Gain bounds','Location','East'); axis([freq(1)*1e-6 freq(end)*1e-6 0 Gt_target+2]); hold off drawnow;
Переменные оптимизации являются всеми элементами (индукторами и конденсаторами) входной и выходной сетей согласования.
nIter = 125; % Max No of Iterations options = optimset('Display','iter','TolFun',1e-2,'MaxIter',nIter); % Set options structure LC_Optimized = [LvaluesIn;CvaluesIn;LvaluesOut;CvaluesOut]; LC_Optimized = fminsearch(@(LC_Optimized) broadband_match_amplifier_objective_function(Matched_Amp,... LC_Optimized,freq,Gt_target,NFtarget,Zl,Zs,Z0),LC_Optimized,options);
Iteration Func-count min f(x) Procedure 0 1 30.4869 1 9 28.3549 initial simplex 2 11 25.5302 expand 3 12 25.5302 reflect 4 13 25.5302 reflect 5 14 25.5302 reflect 6 16 22.8228 expand 7 17 22.8228 reflect 8 19 19.0289 expand 9 20 19.0289 reflect 10 21 19.0289 reflect 11 22 19.0289 reflect 12 24 14.8785 expand 13 25 14.8785 reflect 14 27 10.721 expand 15 28 10.721 reflect 16 29 10.721 reflect 17 31 9.84796 expand 18 32 9.84796 reflect 19 33 9.84796 reflect 20 34 9.84796 reflect 21 35 9.84796 reflect 22 37 9.84796 contract outside 23 39 9.84796 contract outside 24 41 9.84796 contract inside 25 43 9.64666 reflect 26 45 9.64666 contract inside 27 46 9.64666 reflect 28 48 9.64666 contract inside 29 49 9.64666 reflect 30 51 9.64666 contract inside 31 53 7.9372 expand 32 55 7.9372 contract outside 33 56 7.9372 reflect 34 57 7.9372 reflect 35 58 7.9372 reflect 36 59 7.9372 reflect 37 60 7.9372 reflect 38 62 5.98211 expand 39 63 5.98211 reflect 40 64 5.98211 reflect 41 65 5.98211 reflect 42 66 5.98211 reflect 43 68 4.31973 expand 44 70 4.31973 contract inside 45 71 4.31973 reflect 46 72 4.31973 reflect 47 73 4.31973 reflect 48 74 4.31973 reflect 49 75 4.31973 reflect 50 77 2.83135 expand 51 79 1.17624 expand 52 80 1.17624 reflect 53 81 1.17624 reflect 54 82 1.17624 reflect 55 84 0.691645 reflect 56 85 0.691645 reflect 57 86 0.691645 reflect 58 88 0.691645 contract inside 59 90 0.691645 contract outside 60 91 0.691645 reflect 61 93 0.691645 contract inside 62 95 0.691645 contract inside 63 96 0.691645 reflect 64 97 0.691645 reflect 65 98 0.691645 reflect 66 100 0.691645 contract inside 67 102 0.691645 contract outside 68 103 0.691645 reflect 69 105 0.691645 contract inside 70 107 0.497434 reflect 71 109 0.497434 contract inside 72 111 0.497434 contract inside 73 112 0.497434 reflect 74 114 0.497434 contract inside 75 116 0.497434 contract inside 76 118 0.444957 reflect 77 120 0.402851 expand 78 122 0 reflect 79 123 0 reflect 80 125 0 contract inside 81 127 0 contract inside 82 128 0 reflect 83 129 0 reflect 84 130 0 reflect 85 131 0 reflect 86 132 0 reflect 87 133 0 reflect 88 134 0 reflect 89 135 0 reflect 90 137 0 contract inside
91 139 0 contract outside Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-04 and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-02
Когда стандартная программа оптимизации останавливается, значения оптимизированного элемента сохраняются в LC_Optimized
. Следующий код обновляет входную и выходную сети, соответствующие этим значениям.
for loop1 = 1:3 Matched_Amp.ckts{1}.ckts{loop1}.L = LC_Optimized(loop1); Matched_Amp.ckts{3}.ckts{loop1}.L = LC_Optimized(loop1 + 4); end Matched_Amp.ckts{1}.ckts{2}.C = LC_Optimized(4); Matched_Amp.ckts{3}.ckts{2}.C = LC_Optimized(8); analyze(Matched_Amp,freq,Zl,Zs,Z0); % Analyze LNA
Результаты оптимизации можно просмотреть путем построения графика усиления преобразователя и рисунка шума через полосу пропускания и сравнения его с несопоставленным усилителем.
plot(Matched_Amp,'Gt') hold all plot(Unmatched_Amp,'Gt') plot(Matched_Amp,'NF') plot(Unmatched_Amp,'NF') legend('G_t - Matched','G_t - Unmatched','NF - Matched',... 'NF - Unmatched','Location','East') axis([freq(1)*1e-6 freq(end)*1e-6 0 12]) hold off
Графики показов, целевое требование как для усиления, так и для фигуры шума были выполнены. Чтобы понять эффект оптимизации только по усилению преобразователя, используйте первый выбор для функции стоимости (которая включает только член усиления) в целевой функции, показанной выше.
Оптимизированные значения индуктивности и конденсатора для входа совпадающей сети показаны ниже.
Lin_Optimized = LC_Optimized(1:3)
Lin_Optimized = 3×1
10-7 ×
0.5722
0.9272
0.3546
Cin_Optimized = LC_Optimized(4)
Cin_Optimized = 6.8526e-12
Точно так же вот оптимизированные значения индуктивности и конденсатора для выхода совпадающей сети
Lout_Optimized = LC_Optimized(5:7)
Lout_Optimized = 3×1
10-6 ×
0.0517
0.1275
0.0581
Cout_Optimized = LC_Optimized(8)
Cout_Optimized = 5.4408e-12
[1] Людвиг, Рейнгольд и Джин Богданов. Проект схемы RF: теория и применения. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 2009.
[2] Cuthbert, Thomas R. Broadband Direct-Coupled и Matching RF Networks. Greenwood, Ark.: T.R. Cuthbert, 1999.
[3] Cuthbert, T.R. «A Real Frequency Technique Optimizing Broadband Equalizer Elements». В 2000 году Международный симпозиум IEEE по схемам и системам. Новые технологии для XXI века. Производство (IEEE Cat No.00CH36353), 5: 401-4. Женева, Швейцария: Presses Polytech. Univ. Romandes, 2000. https://doi.org/10.1109/ISCAS.2000.857453.
[4] Позар, Дэвид М. Микроволновая техника. 4-й эд. Хобокен, Нью-Джерси: Уайли, 2012.