Преобразуйте рассеивающийся параметр в импульсную характеристику для системы SerDes

Этот пример затрагивает две темы: первое особое внимание на конкатенации трех рассеивающихся параметров (S-параметры), которые представляют канал связи наряду с аналоговыми компонентами передатчика и получателя в один S-параметр с 4 портами, второе особое внимание на преобразовании этого S-параметра с 4 портами к импульсной характеристике для использования с SerDes Toolbox™. Вы будете использовать rationalfit функция от RF Toolbox™, чтобы найти импульсную характеристику S-параметра, который представляет канал связи, использующий Истинную и Дополнительную дифференциальную сигнализацию. Для получения дополнительной информации смотрите Моделирование Высокоскоростной Основной платы (S-параметры С 4 портами к Рациональной функции).

Сконфигурируйте переменные

Файл S-параметра должен быть.s4p с 4 портами файл. Нормируйте передатчик (Tx) и получатель (Rx) импедансы к 50 Омы. Datarate и SamplesPerSymb valuses должны совпадать с настройками системы SerDes и установлены в 10 GHz и 32, соответственно. Параметры управления для rationalfit функция включает delayStart, delayStep, delayStop, и nPoles. Настройте разрешение импульсной характеристики с помощью pointsInImpulse.

filename = 'default.s4p';
TxR = 50;
TxC = 0.1e-12;
RxR = 50;
RxC = 0.2e-12;
datarate = 10*1e9;
samplespersymb = 32;

delayStart = 0.68;
delayStep = 0.01;
delayStop = 0.73;
nPoles = 120;
Rshort = 1.0e-6;
pointsInImpulse = 16384;
showPlots = true;

Создайте дифференциальное представление S-параметра канала связи

Вычислите время символа и демонстрационный интервал. Импортируйте файл данных S-параметра и сохраните исходное содержимое частоты.

pulsewidth = 1/datarate;
ts = pulsewidth/samplespersymb;
origSparam = sparameters(filename); 
freq = origSparam.Frequencies;

Объедините S-параметр канала связи с аналоговыми разделами передатчика и получателя

Создайте аналоговые схемы Tx и Rx как S-параметры. Затем объедините модели S-Paramater схем Tx и Rx с моделью S-Parameter Канала связи.

Преобразуйте аналоговую модель передатчика к S-параметру

cktTx = circuit('txAnalog');
add(cktTx,[1 3],resistor(TxR,'R1'))
add(cktTx,[3 0],capacitor(TxC,'C1'))
add(cktTx,[2 4],resistor(TxR,'R2'))
add(cktTx,[4 0],capacitor(TxC,'C2'))
setports(cktTx,[1 0],[2 0],[3 0],[4 0])
StxAnalog = sparameters(cktTx,freq,50);

Сконфигурируйте порядок порта для S-параметра канала связи

cktCh = circuit('ChannelSparam');
channel = nport(filename); % Create s-parameter circuit element
add(cktCh,[1 3 2 4],channel);
setports(cktCh,[1 0],[2 0],[3 0],[4 0])
Schannel = sparameters(cktCh,freq,50);

Преобразуйте аналоговую модель получателя к S-параметру

cktRx = circuit('rxAnalog');
add(cktRx,[1 0],resistor(RxR,'R3'))
add(cktRx,[1 0],capacitor(RxC,'C3'))
add(cktRx,[2 0],resistor(RxR,'R4'))
add(cktRx,[2 0],capacitor(RxC,'C4'))
add(cktRx,[1 3],resistor(Rshort,'R5'))
add(cktRx,[2 4],resistor(Rshort,'R6'))
setports(cktRx,[1 0],[2 0],[3 0],[4 0])
SrxAnalog = sparameters(cktRx,freq,50);

Создайте объединенный S-объект-параметра

Конкатенация S-параметров с помощью cascadesparams. Установите значения data, freq и z0 для использования rationalfit функция. Используйте s2sdd преобразовывать данные в дифференциальный S-параметр с 4 портами diffdata и установленный порядок порта к 1234. Примечание: RF Toolbox применяет порты сначала сверху донизу на S-параметр, затем слева направо.

sparamWithAnalog = cascadesparams(StxAnalog,Schannel,SrxAnalog);

data = sparamWithAnalog.Parameters;
freq = sparamWithAnalog.Frequencies;
z0 = sparamWithAnalog.Impedance;

diffdata = s2sdd(data,2); 
diffz0 = 2*z0;
diffsparams = sparameters(diffdata,freq,diffz0);

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

Найдите передаточную функцию от diffdata, ссылочный импеданс S-параметров, источник impedenance в аналоговой модели Tx и импедансе загрузки в аналоговой модели Rx.

zRef = diffz0;   % Reference impedance of S-Parameters
zSource = 1e-6;  % Short circuit the source impedance since it is included in the Tx Analog model.
zLoad = 1e6;     % Open circuit the load impedance since it is included in the Rx Analog model.
difftransfunc = s2tf(diffdata,zRef,zSource,zLoad);

Создайте rationalfit из различного S-параметра. Разверните величину задержки и сохраните лучшую подгонку. Затем постройте выведенный rationalfit результат.

bestErr = 0;
bestDelay = 0;
bestRationalFit = rfmodel.rational();

for delaySweep = delayStart:delayStep:delayStop
    [rationalfunc,errdb] = rationalfit(freq,difftransfunc,-50,'DelayFactor',delaySweep,'IterationLimit',100,'NPoles',nPoles);
    if errdb < bestErr
        bestErr = errdb;
        bestDelay = delaySweep;
        bestRationalFit = rationalfunc;
    end
    fprintf('.'); 
end
......
rationalfunc = bestRationalFit;
npoles = length(rationalfunc.A);
fprintf('\nThe derived rational function achieved %f dB fit with %f delay and %d poles.\n',bestErr,bestDelay,npoles); 
The derived rational function achieved -70.053204 dB fit with 0.680000 delay and 120 poles.

Создайте импульсную характеристику.

[imp,impt]=impulse(rationalfunc,ts,pointsInImpulse);

Оцените частотную характеристику Дифференциального Режима

Постройте величину и фазу исходной передаточной функции и выход rationalfit.

    freqsforresp = linspace(0,max(freq)*2,length(freq))';
    resp = freqresp(rationalfunc,freqsforresp);
    
    figure(11)
    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')

Преобразуйте передаточную функцию в импульсную характеристику и график для оценки

Используйте передаточную функцию от rationalfit найти импульсную характеристику с помощью impulse.

[imp,impt]=impulse(rationalfunc,ts,pointsInImpulse);
plot(impt,imp);

Смотрите также