В этом примере показано, как сконфигурировать параметр Спецификации GPZ Matrix
из CTLE в приложении SerDes Designer, чтобы использовать нули, полюса и усиления, выведенные zpk
функция, учитывая полюса и остатки выводится rational
функция. Можно переформатировать набор нулей, полюсов и усилений, выведенных zpk
функционируйте, чтобы использовать в качестве GPZ matrix
в блоке CTLE.
Импортируйте .csv файл, содержащий передаточную функцию с помощью readmatrix
функция.
ctle_transfunc = readmatrix('ctle_transfer_function.csv','Range','A7:E775'); rawfreq = ctle_transfunc(:,1); ri = ctle_transfunc(:,4:end);
Как опция, возможно обрезать набор данных от передаточной функции, используемой Подгонкой. Например, можно выбрать частоту среза 13 ГГц.
fcutoff = 13e9; ndx = rawfreq<fcutoff;
Как опция, исходный набор данных мой быть сохраненным для более позднего сравнения с Fit выход rational
функция.
rawdata = complex(ri(:,1),ri(:,2));
Подготовить данные к использованию rational
функция, преобразуйте вещественные числа от передаточной функции до комплексных чисел с помощью complex
функция.
data = complex(ri(ndx,1),ri(ndx,2)); freq = rawfreq(ndx);
Можно использовать rational
функционируйте, чтобы найти лучшую подгонку к передаточной функции. rational
функция выполняет итерации, чтобы идентифицировать подгонку с самой низкой ошибкой. Важно установить аргумент TendsToZero
к true
добавить полюс так, чтобы подгонка имела тенденцию обнулять как S бесконечность подходов. Это удовлетворяет требование, чтобы иметь еще один полюс, чем количество нулей в матрице GPZ.
fit = rational(freq,data,'Tolerance',-40,'TendsToZero',true,'MaxPoles',8,'Display','on');
nSurrogate=1; reduced to 100.0% min achievable error=-Inf init: np=0 errdb=0 np=0 errdb=-3.33309 np=2 errdb=-49.9298 Number of poles, np=2 After removing unstable poles, np=2 After removing high-Q poles, np=2 After calculate residues, errdb=-50.1853 final: np=2 errdb=-50.1853
rational
функция возвращает полюса и остатки, но необходимо преобразовать их в нули, полюса и усиления для блока CTLE с помощью функции zpk.
[z,p,~,dcgain]=zpk(fit);
Нули, полюса и усиления, выведенные zpk, должны быть отформатированы как Матрица GPZ для использования в блоке CTLE. CTLE может быть сконфигурирован, чтобы использовать параметр Спецификации GPZ Matrix
где модули для усилений, полюсов и нулей являются дБ, Гц и Гц, соответственно. Выход функции zpk должен быть переформатирован для этих модулей для использования в качестве GPZ Matrix.
Примечание: это - хорошая практика, чтобы инициализировать GPZ Matrix
в случае, если набор входных данных изменяется между одним анализом на другого.
gpz = zeros(1,length(p)*2); gpz(1,1) = 20*log10(abs(dcgain)); gpz(1,2:2:length(p)*2) = p/(2*pi); gpz(1,3:2:length(z)*2+1) = z/(2*pi);
serdes.CTLE
блок может использоваться, чтобы сгенерировать график наложения результатов подгонки в сравнении с набором входных данных.
myctle = serdes.CTLE('GPZ',gpz,'SymbolTime',40e-12,'Specification','GPZ Matrix'); [f,H] = plot(myctle); figure(3), semilogx(f*1e-9,db(H),rawfreq*1e-9,db(rawdata)) grid on xlabel('GHz'),ylabel('dB') legend('Fit','Data')
Запустите приложение SerDes Designer. Поместите блок CTLE после аналоговой модели приемника. Выберите CTLE и из панели Параметров блоков, установите параметр Спецификации на GPZ Matrix
. Опционально, можно или ввести от имени GPZ Matrix
переменная (в этом примере, "gpz")
, или скопируйте значения с GPZ Matrix
график ячейки и вставка это к Усилению подпирает нулевой параметр матрицы шестами.
В приложении SerDes Designer постройте Передаточную функцию CTLE и Импульсный Ответ от кнопки Add Plots. Можно переместить панели, чтобы показать два графика путем перетаскивания каждой панели в окне SerDes Designer.
Затем нажмите, Export> Делают IBIS Моделью AMI для кнопки SerDes System. Модель IBIS-AMI может загрузиться в соответствующий инструмент EDA, чтобы построить Импульсный Ответ из модели. В целях корреляции можно сравнить графики для Импульсного Ответа из приложения SerDes Designer и инструмента EDA.
CTLE | SerDes Designer | serdes.CTLE
| rational
(RF Toolbox)