Найдите нули, полюса и усиления для CTLE от передаточной функции

В этом примере показано, как получить набор нулей, полюсов и усилений от передаточной функции и использовать их, чтобы сконфигурировать параметр Спецификации GPZ Matrix из CTLE в приложении SerDes Designer. Можно преобразовать полюса и остатки, выведенные rationalfit функция в набор нулей, полюсов и усилений. Можно затем переформатировать набор нулей, полюсов и усилений, чтобы использовать в качестве GPZ matrix в блоке CTLE.

Импортируйте передаточную функцию

Импортируйте .csv файл, содержащий передаточную функцию с помощью функционального readmatrix.

ctle_transfunc = readmatrix('transfer_function.csv','Range','A7:C775');
freq = ctle_transfunc(:,1);
ri = ctle_transfunc(:,2:end);

Преобразуйте передаточную функцию, чтобы объединить форму

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

data = complex(ri(:,1:2:end),ri(:,2:2:end));

Найдите рациональный припадок передаточной функции

Определите номер полюсов к 8 для использования rationalfit. Затем используйте функцию цикла, чтобы смоделировать комплексную передаточную функцию с помощью rationalfit. Отобразите данные на графике, чтобы оценить результаты rationalfit.

npoles = 8;
fit = rfmodel.rational;
errdb = zeros(size(npoles));

%find rational fit
[fit(npoles),errdb(npoles)] = rationalfit(freq,data(:,1),'NPoles',npoles,'IterationLimit',100);
  
%calculate the frequency-response of array "fit" using array "freq"
resp(:,npoles) = freqresp(fit(npoles),freq);
figure

%plot each point of array "data" and each value of array "resp" to compare:
plot(freq,abs(data(:,1)),'-o',freq,abs(resp(:,npoles)))

%title(sprintf('npoles %d errdb %g',npoles,errdb(npoles)))
[besterrdb,bestindex] = min(errdb); 
bestfit = fit(bestindex);
bestresp = resp(:,bestindex);

dt = 1/(16*freq(end));
T = (0:499)*dt;

Преобразуйте в нули, полюса, усиления от полюсов и остатков

rationalfit возвращает полюса и остатки, но необходимо преобразовать их в нули, полюса и усиления. CTLE может быть сконфигурирован, чтобы использовать параметр Спецификации "GPZ Matrix"где модули для усилений, полюсов и нулей являются дБ, Гц и Гц, соответственно.

gpz = zeros(1,2*max(npoles));  
[g1, p, z, gs] = GPZFromRationalFit(bestfit(1));      
gpz(1,1) = g1;
gpz(1,2:2:length(p)*2) = p;
gpz(1,3:2:length(z)*2+1) = z;                              

Сконфигурируйте блок CTLE в SerDes Designer

Запустите serdesDesigner. Поместите CTLE в RX. Установите CTLE использовать GPZ Matrix от параметра Спецификации во вкладке Block Parameters для CTLE. Затем скопируйте содержимое gpz выше и вставка в запись для Усиления подпирают нулевую матрицу шестами.

serdesDesigner;       

Ответ импульса Corellate в SerDes Designer к симуляции IBIS-AMI

В рамках serdesDesigner Приложения постройте Импульсный Ответ. Затем Экспорт-> Делает IBIS Моделью AMI для Системы SerDes. Модель IBIS-AMI может загрузиться в соответствующий инструмент EDA, чтобы построить Импульсный Ответ из модели. Графики для Импульсного Ответа из Приложения и инструмента EDA могут быть сравнены в corellation целях.