exponenta event banner

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

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

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

Рис. 1: Дифференциальный высокоскоростной канал объединительной платы

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

Прочитайте файл данных Touchstone ® ,default.s4p, в sparameters объект. Параметры в этом файле данных являются 50-омными S-параметрами однополюсной 4-портовой пассивной схемы, показанной на рисунке 1, заданными на 1496 частотах от 50 МГц до 15 ГГц. Затем получите односторонние 4-портовые S-параметры и используйте функцию преобразования матриц. 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 объект. 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.

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