Моделирование высокоскоростной объединительной платы (4-Port S-параметров в рациональную функцию)

В этом примере показано, как использовать RF Toolbox™ для моделирования дифференциального высокоскоростного канала объединительной платы с использованием рациональных функций. Этот тип модели полезен для инженеров по обеспечению целостности сигналов, цель которых - надежно соединить высокоскоростные полупроводниковые устройства с, например, потоками последовательных данных с несколькими Gbps через объединительные платы и печатные платы.

По сравнению с традиционными методами, такими как линейная интерполяция, рациональный функциональный подбор кривой обеспечивает большее понимание физических характеристик высокоскоростной объединительной платы. Это обеспечивает средство, называемое сокращением порядка модели, для достижения компромисса между сложностью и точностью. Для заданной точности рациональные функции менее комплексны, чем другие типы моделей, такие как конечные импульсные характеристики фильтры, сгенерированные ОБПФом методами. В сложение рациональные модели функций по своей сути ограничивают фазу, чтобы быть нулем при экстраполяции в DC. Меньше физически основанных методов требуют проработки ограничительных алгоритмов в порядок, чтобы принудить экстраполированную фазу к нулю в DC.

Фигура 1: Дифференциальный высокоскоростной объединительный канал

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

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

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

Преобразуйте в 2-портовые дифференциальные S-параметры.

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

По умолчанию s2sdd ожидает, что порты 1 и 3 будут входами, а порты 2 и 4 будут выходами. Однако, если ваши данные имеют порты 1 и 2 в качестве входов и порты 3 и 4 в качестве выходов, используйте 2 в качестве второго входного параметра для s2sdd функция для определения этого альтернативного расположения портов. Для примера, diffdata = s2sdd(data,2);

diffsparams = sparameters(diffdata,freq,diffz0)
diffsparams = 
  sparameters: S-parameters object

       NumPorts: 2
    Frequencies: [1496x1 double]
     Parameters: [2x2x1496 double]
      Impedance: 100

  rfparam(obj,i,j) returns S-parameter Sij

figure
smithplot(diffsparams,1,1)

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

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

difftransfunc = s2tf(diffdata,diffz0,diffz0,diffz0);
delayfactor = 0.98; % Delay factor. Leave at the default of zero if your
                    % data does not have a well-defined principle delay
rationalfunc = rationalfit(freq,difftransfunc,'DelayFactor',delayfactor)
rationalfunc = 
   rfmodel.rational with properties:

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

npoles = length(rationalfunc.A);
fprintf('The derived rational function contains %d poles.\n',npoles);
The derived rational function contains 31 poles.

Проверьте дифференциальную частотную характеристику

Используйте freqresp метод rfmodel.rational объект для получения частотной характеристики объекта рациональной функции. Затем создайте график, чтобы сравнить частотную характеристику объекта рациональной функции и характеристики исходных данных. Обратите внимание, что фаза без тренда (то есть фаза после удаления задержки принципа) строится в обоих случаях.

freqsforresp = linspace(0,20e9,2000)';
resp = freqresp(rationalfunc,freqsforresp);

figure
subplot(2,1,1)
plot(freq*1.e-9,20*log10(abs(difftransfunc)),'r',freqsforresp*1.e-9, ...
                20*log10(abs(resp)),'b--','LineWidth',2)
title(sprintf('Rational Fitting with %d poles',npoles),'FontSize',12)
ylabel('Magnitude (decibels)')
xlabel('Frequency (GHz)')
legend('Original data','Fitting result')

subplot(2,1,2)
origangle = unwrap(angle(difftransfunc))*180/pi+360*freq*rationalfunc.Delay;
plotangle = unwrap(angle(resp))*180/pi+360*freqsforresp*rationalfunc.Delay;
plot(freq*1.e-9,origangle,'r',freqsforresp*1.e-9,plotangle,'b--', ...
    'LineWidth',2)
ylabel('Detrended phase (deg.)')
xlabel('Frequency (GHz)')
legend('Original data','Fitting result')

Figure contains 2 axes. Axes 1 with title Rational Fitting with 31 poles contains 2 objects of type line. These objects represent Original data, Fitting result. Axes 2 contains 2 objects of type line. These objects represent Original data, Fitting result.

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

Сгенерируйте случайный импульсный сигнал 2 Гбит/с. Затем используйте timeresp метод rfmodel.rational объект для вычисления отклика объекта рациональной функции на случайный импульс. Наконец, постройте график входных и выходных сигналов модели рациональной функции, которая представляет дифференциальную схему.

datarate = 2*1e9;                % Data rate: 2 Gbps 
samplespersymb = 100; 
pulsewidth = 1/datarate;            
ts = pulsewidth/samplespersymb;
numsamples = 2^17;
numplotpoints = 10000;

t_in = double((1:numsamples)')*ts;
input = sign(randn(1,ceil(numsamples/samplespersymb)));
input = repmat(input,[samplespersymb, 1]);
input = input(:);
[output,t_out] = timeresp(rationalfunc,input,ts);

figure
subplot(2,1,1)
plot(t_in(1:numplotpoints)*1e9,input(1:numplotpoints),'LineWidth',2)
title([num2str(datarate*1e-9),' Gbps signal'],'FontSize',12)
ylabel('Input signal')
xlabel('Time (ns)')
axis([-inf,inf,-1.5,1.5])

subplot(2,1,2)
plot(t_out(1:numplotpoints)*1e9,output(1:numplotpoints),'LineWidth',2)
ylabel('Output signal')
xlabel('Time (ns)')
axis([-inf,inf,-1.5,1.5])

Figure contains 2 axes. Axes 1 with title 2 Gbps signal contains an object of type line. Axes 2 contains an object of type line.

Постройте график Глазковой диаграммы сигнала 2-Gbps Выход

Оцените и удалите задержку из сигнала выхода и создайте глазковую диаграмму при помощи функций Communications Toolbox™.

if ~isempty(which('comm.EyeDiagram'))
    eyedi = comm.EyeDiagram('SampleRate',1./ts, ...
    'SamplesPerSymbol',samplespersymb,'DisplayMode','2D color histogram');
    % Update the eye diagram object with the transmitted signal
    estdelay = floor(rationalfunc.Delay/ts);
    eyedi(output(estdelay+1:end));
end
Warning: comm.EyeDiagram will be removed in a future release. Use eyediagram instead.

Figure Eye Diagram contains 2 axes and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes 1 contains an object of type image. Axes 2 is empty.

Похожие темы