Моделирование высокоскоростной объединительной платы (рациональная функция для модели Simulink ®

)

В этом примере показано, как использовать Simulink ® для моделирования дифференциального высокоскоростного канала объединительной платы. Пример сначала читает файл данных Touchstone ®, который содержит одноконечные 4-портовые S-параметры для дифференциальной высокоскоростной объединительной платы и преобразует их в 2-портовые дифференциальные S-параметры. Он вычисляет передаточную функцию дифференциальной схемы и использует rationalfit функция для аппроксимации рациональной функции замкнутой формы к передаточной функции схемы. Затем пример преобразует полюсы и остатки объекта рациональной функции в числители и знаменатели передаточных функций Преобразование Лапласа S-Domain, которые он использует для построения модели Simulink объекта рациональной функции.

Чтобы запустить этот пример, у вас должен быть установлен Simulink.

Считайте Single-Ended 4-Port S-параметры и преобразуйте их в дифференциальные 2-Port S-параметры

Чтение файла данных Touchstone, default.s4p, в sparameters объект. Параметрами в этом файле данных являются S-параметры 50 Ом пассивной схемы с одним концом 4 порта, измеренные на 1496 частотах в диапазоне от 50 МГц до 15 ГГц. Затем получите однокомпонентные параметры S-порта из объекта данных и используйте функцию матричного преобразования s2sdd для преобразования их в дифференциальные 2-портовые S-параметры.

filename = 'default.s4p';
backplane = sparameters(filename);
data = backplane.Parameters;
freq = backplane.Frequencies;
z0 = backplane.Impedance;

Преобразуйте в 2-портовые дифференциальные S-параметры. Эта операция сначала соединяет порты с нечетными номерами, далее следуют порты с четными номерами. Если для измерения одиночных конечных S-параметров использовалось другое строение, можно задать другой второй аргумент в команде s2sdd. Для примера опция «2» позволит вам связать порты входа и вывода в порядке возрастания. Кроме того, для изменения порядка портов можно использовать команду snp2smp.

diffdata = s2sdd(data,1);
diffz0 = 2*z0;

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

Во-первых, используйте s2tf функция для вычисления дифференциальной передаточной функции. Затем используйте rationalfit функция для вычисления закрытой формы передаточной функции и хранения ее в rfmodel.rational объект. The rationalfit функция соответствует объекту рациональной функции заданным данным на заданных частотах.

difftf = s2tf(diffdata,diffz0,diffz0,diffz0);
fittol = -30;          % Rational fitting tolerance in dB
delayfactor = 0.9;     % Delay factor
rationalfunc = rationalfit(freq,difftf,fittol,'DelayFactor', delayfactor)
npoles = length(rationalfunc.A);
fprintf('The derived rational function contains %d poles.\n', npoles);
rationalfunc = 

   rfmodel.rational with properties:

        A: [20x1 double]
        C: [20x1 double]
        D: 0
    Delay: 6.0172e-09
     Name: 'Rational Function'

The derived rational function contains 20 poles.

Получите числитель и знаменатель передаточных функций Преобразование Лапласа S-домена

Этот пример использует передаточные функции Преобразование Лапласа S-Domain, чтобы представлять объединительную плату в модели Simulink. Преобразуйте полюсы и соответствующие остатки объекта рациональной функции в форму числителя и знаменателя для использования в блоках передаточной функции Преобразования Лапласа. Каждый блок передаточной функции представляет либо один действительный полюс и соответствующий действительный остаток, либо пару комплексных сопряженных полюсов и остатков, поэтому блок передаточной функции всегда имеет действительные коэффициенты. В данном примере объект рациональной функции содержит 2 действительных полюса/остатка и 6 пар комплексных полюсов/остатков, поэтому модель Simulink содержит 8 блоков передаточной функции.

A = rationalfunc.A;
C = rationalfunc.C;
den = cell(size(A));
num = cell(size(A));
k = 1;                          % Index of poles and residues
n = 0;                          % Index of numerators and denominators
while k <= npoles
    if isreal(A(k))             % Real poles
        n = n + 1;
        num{n} = C(k);
        den{n} = [1, -A(k)];
        k = k + 1;
    else                        % Complex poles
        n = n + 1;
        real_a = real(A(k));
        imag_a = imag(A(k));
        real_c = real(C(k));
        imag_c = imag(C(k));
        num{n} = [2*real_c, -2*(real_a*real_c+imag_a*imag_c)];
        den{n} = [1, -2*real_a, real_a^2+imag_a^2];
        k = k + 2;
    end
end
den = den(1:n);
num = num(1:n);

Создайте модель Simulink объединительной платы

Создайте модель Simulink объединительной платы с помощью передаточных функций Преобразование Лапласа. Затем соедините случайный источник с входом объединительной платы и возможности с ее входом и выходом.

modelname = fliplr(strtok(fliplr(tempname), filesep));
simulink_rfmodel_build_rational_system_helper(modelname , numel(num))
simulink_rfmodel_add_source_sink_helper(modelname)

Фигура 1. Simulink модель для рациональной функции

Симулируйте модель Simulink рациональной функции

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

set_param([modelname,'/Rational Model Output'], 'Open', 'on')
h = findall(0, 'Type', 'Figure', 'Name', 'Rational Model Output');
h.Position = [200, 216, 901, 442];
sim(modelname);

Закройте модель

close_system(modelname, 0)

Похожие темы