В этом примере показано, как использовать Simulink ® для моделирования дифференциального высокоскоростного канала объединительной платы. В примере сначала считывается файл данных Touchstone ®, который содержит однополюсные 4-портовые S-параметры для дифференциальной высокоскоростной объединительной платы и преобразует их в 2-портовые дифференциальные S-параметры. Он вычисляет передаточную функцию дифференциальной схемы и использует rationalfit функция для подгонки рациональной функции замкнутой формы к передаточной функции схемы. Затем пример преобразует полюса и остатки объекта рациональной функции в числители и знаменатели передаточных функций S-Domain преобразования Лапласа, которые он использует для построения модели Simulink объекта рациональной функции.
Для выполнения этого примера необходимо установить программу Simulink.
Прочитайте файл данных Touchstone, default.s4p, в sparameters объект. Параметры в этом файле данных представляют собой 50-омные S-параметры однополюсной 4-портовой пассивной схемы, измеряемые на 1496 частотах от 50 МГц до 15 ГГц. Затем получите односторонние 4-портовые S-параметры из объекта данных и используйте функцию преобразования матриц. s2sdd для преобразования их в дифференциальные 2-портовые S-параметры.
filename = 'default.s4p';
backplane = sparameters(filename);
data = backplane.Parameters;
freq = backplane.Frequencies;
z0 = backplane.Impedance;
Преобразуйте в 2-портовые дифференциальные S-параметры. Эта операция сначала объединяет нечетные порты, а затем четные порты. Если для измерения одиночных S-параметров использовалась другая конфигурация, можно указать другой второй аргумент в команде s2sdd. Например, опция «2» позволяет объединять порты ввода и вывода в порядке возрастания. Для изменения порядка портов можно также использовать команду snmp 2smp.
diffdata = s2sdd(data,1); diffz0 = 2*z0;
Сначала используйте s2tf для вычисления дифференциальной передаточной функции. Затем используйте rationalfit для вычисления закрытой формы передаточной функции и сохранения ее в rfmodel.rational объект. 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-Domain преобразования Лапласа используются для представления объединительной платы в модели Simulink. Преобразуйте полюса и соответствующие остатки объекта рациональной функции в числитель и форму знаменателя для использования в блоках передаточных функций преобразования Лапласа. Каждый блок передаточной функции представляет либо один вещественный полюс и соответствующий вещественный остаток, либо пару комплексных сопряженных полюсов и остатков, поэтому блок передаточной функции всегда имеет вещественные коэффициенты. Для этого примера объект рациональной функции содержит 2 вещественных полюса/остатка и 6 пар комплексных полюсов/остатков, поэтому модель Симулинка содержит 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 объединительной платы с помощью функций передачи преобразования Лапласа. Затем подключите случайный источник к входу объединительной платы, а область - к его входу и выходу.
modelname = fliplr(strtok(fliplr(tempname), filesep)); simulink_rfmodel_build_rational_system_helper(modelname , numel(num)) simulink_rfmodel_add_source_sink_helper(modelname)

Рисунок 1. Модель 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)