В этом примере показано, как получить набор нулей, полюсов и усилений от передаточной функции и использовать их, чтобы сконфигурировать параметр Спецификации 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;
Запустите serdesDesigner
. Поместите CTLE в RX. Установите CTLE использовать GPZ Matrix
от параметра Спецификации во вкладке Block Parameters для CTLE. Затем скопируйте содержимое gpz
выше и вставка в запись для Усиления подпирают нулевую матрицу шестами.
serdesDesigner;
В рамках serdesDesigner Приложения постройте Импульсный Ответ. Затем Экспорт-> Делает IBIS Моделью AMI для Системы SerDes. Модель IBIS-AMI может загрузиться в соответствующий инструмент EDA, чтобы построить Импульсный Ответ из модели. Графики для Импульсного Ответа из Приложения и инструмента EDA могут быть сравнены в corellation целях.