Этот пример показывает, как создать и моделировать схему дерева RC с помощью RF Toolbox.
В "Асимптотической Оценке Формы волны для Синхронизации Анализа" (Транзакции IEEE на Автоматизированном проектировании, Издании, 9, № 4, апрель 1990), Pillage и Rohrer представляют и моделируют схему дерева RC, которую соединяют целостность сигнала моделей и перекрестные помехи в низком - к среднечастотной МОП-схеме. Этот пример подтверждает их симуляции с помощью программного обеспечения RF Toolbox.
Их схема, воспроизведенная в следующей фигуре, состоит из 11 резисторов и 12 конденсаторов. В газете, Pillage и Rohrer:
Примените вход напряжения пандуса
Вычислите переходные ответы
Постройте выходные напряжения через два различных конденсатора, C7
и C12
.
Рисунок 1: модель дерева RC MOS соединяет с перекрестными помехами.
С программным обеспечением RF Toolbox можно программно создать эту схему в MATLAB и выполнить симуляции целостности сигнала.
Этот пример показывает:
Как использовать rfckt.seriesrlc
, rfckt.shuntrlc
, rfckt.series
и rfckt.cascade
, чтобы программно создать схему как две различных сети, в зависимости от желаемого вывода.
Как использовать analyze
, чтобы извлечь S-параметры для каждой сети с 2 портами по широкому частотному диапазону.
Как использовать s2tf
с Zsource = 0
и Zload = Inf
, чтобы вычислить передаточную функцию напряжения от входа до каждого желаемого вывода.
Как использовать rationalfit
, чтобы произвести приближения рациональной функции, которые получают идеальное поведение схемы RC в очень высокой степени точности.
Как использовать timeresp
, чтобы вычислить переходный ответ на форму волны входного напряжения.
Чтобы копировать и выходные графики, программное обеспечение RF Toolbox вычисляет выходное напряжение через C7
и C12
. С этой целью схема должна быть выражена как две отличных сети с 2 портами, каждый с соответствующим конденсатором при выводе. Рисунок 2 показывает 2 конфигурации порта для вычисления напряжения через C7
. Рисунок 3 показывает настройку для C12
. И сети с 2 портами сохраняют исходную топологию схемы и совместно используют большую часть той же структуры.
Рисунок 2: схема, чертившая как сеть с 2 портами с выводом через C7
.
Рисунок 3: схема, чертившая как сеть с 2 портами с выводом через C12
.
Все стандартные блоки формируются путем выбора соответствующих значений с функцией rfckt.shuntrlc
, показанной в рисунке 4 или функции rfckt.seriesrlc
, показанной в рисунке 5. Стандартные блоки с 2 портами затем соединяются с помощью rfckt.cascade
как показано в рисунке 6 или rfckt.series
как показано в рисунке 7.
Рисунок 4: сеть с 2 портами создается функцией rfckt.shuntrlc
.
Рисунок 5: сеть с 2 портами создается функцией rfckt.seriesrlc
.
Рисунок 6: Соединение сетей с 2 портами с функцией rfckt.cascade
.
Рисунок 7: Соединение сетей с 2 портами с функцией rfckt.series
.
Следующий код MATLAB создает фрагмент сети, совместно использованной этими двумя вариантами.
R1 = rfckt.seriesrlc('R',10); C1 = rfckt.shuntrlc('C',0.114e-12); R9 = rfckt.shuntrlc('R',48); C9 = rfckt.shuntrlc('C',0.007e-12); R10 = rfckt.shuntrlc('R',24); C10 = rfckt.shuntrlc('C',0.2e-12); R10C10 = rfckt.series('Ckts',{R10,C10}); C9R10C10 = rfckt.cascade('Ckts',{C9,R10C10}); R9C9R10C10 = rfckt.series('Ckts',{R9,C9R10C10}); R2 = rfckt.seriesrlc('R',72); C2 = rfckt.shuntrlc('C',1.238e-12); R3 = rfckt.seriesrlc('R',34); C3 = rfckt.shuntrlc('C',0.021e-12); R4 = rfckt.seriesrlc('R',96); C4 = rfckt.shuntrlc('C',0.028e-12); R5 = rfckt.seriesrlc('R',72); C5 = rfckt.shuntrlc('C',0.007e-12); R6 = rfckt.seriesrlc('R',10); C6 = rfckt.shuntrlc('C',1.048e-12); R7 = rfckt.seriesrlc('R',120); R8 = rfckt.shuntrlc('R',24); C8 = rfckt.shuntrlc('C',0.2e-12); R8C8 = rfckt.series('Ckts',{R8,C8}); sharedckt = rfckt.cascade('Ckts', ... {R1,C1,R9C9R10C10,R2,C2,R3,C3,R4,C4,R5,C5,R6,C6,R7,R8C8}); % Additional shared building blocks used in both 2-port networks. C7 = rfckt.shuntrlc('C',0.47e-12); R11C12 = rfckt.shuntrlc('R',1000,'C',1e-12);
Рисунок 2 показывает, что построение сети с 2 портами с выходным портом через C7
требует создания C11
с помощью rfckt.shuntrlc
, затем комбинируя C11
с R11
и C12
с помощью rfckt.series
, и наконец комбинируя C11R11C12
с остальной частью сети и C7
с помощью rfckt.cascade
.
Точно так же рисунок 3 показывает, что построение сети с 2 портами с выходным портом через C12
требует создания другой версии C11
(C11b
) с помощью rfckt.seriesrlc
и комбинируя все части вместе с помощью rfckt.cascade
.
C11 = rfckt.shuntrlc('C',0.1e-12); C11R11C12 = rfckt.series('Ckts',{C11,R11C12}); cktC7 = rfckt.cascade('Ckts',{sharedckt,C11R11C12,C7}); C11b = rfckt.seriesrlc('C',0.1e-12); cktC12 = rfckt.cascade('Ckts',{sharedckt,C7,C11b,R11C12});
Входной сигнал, используемый Pillage и Rohrer, является изменением напряжения от 0 до 5 вольт со временем нарастания одной наносекунды и длительностью десяти наносекунд. Следующий код MATLAB моделирует этот сигнал с 1 000 моментов времени с sampleTime
0,01 наносекунд.
Следующий код MATLAB также использует функцию logspace
, чтобы сгенерировать вектор 101 логарифмически расположенной с интервалами аналитической частоты между 1 Гц и 100 ГГц. Определение широкого набора точек частоты улучшает точность симуляции.
sampleTime = 1e-11; t = (0:1000)'*sampleTime; input = [(0:100)'*(5/100); (101:1000)'*0+5]; freq = logspace(0,11,101)';
Моделировать каждую сеть:
Функция analyze
извлекает S-параметры по заданному частотному диапазону.
Функция s2tf
, с option = 2
, вычисляет усиление от исходного напряжения до выходного напряжения. Это позволяет произвольный источник и импедансы загрузки в этом случае Zsource = 0
и Zload = Inf
. Получившийся tfC7
передаточных функций и tfC12
являются зависимыми частотой векторами данных, которые могут быть подходящими с приближением рациональной функции.
Функция rationalfit
генерирует высокоточные приближения рациональной функции. Получившиеся приближения совпадают с сетями, чтобы обработать точность машинным способом.
Функция timeresp
вычисляет аналитическое решение уравнений пространства состояний, определенных приближением рациональной функции. Эта методология достаточно быстра, чтобы позволить той продвинуть миллион битов через канал.
analyze(cktC7,freq); sparamsC7 = cktC7.AnalyzedResult.S_Parameters; tfC7 = s2tf(sparamsC7,50,0,Inf,2); fitC7 = rationalfit(freq,tfC7); outputC7 = timeresp(fitC7,input,sampleTime); analyze(cktC12,freq); sparamsC12 = cktC12.AnalyzedResult.S_Parameters; tfC12 = s2tf(sparamsC12,50,0,Inf,2); fitC12 = rationalfit(freq,tfC12); outputC12 = timeresp(fitC12,input,sampleTime);
Выходные параметры совпадают с рисунками 23 и 24 газеты Pillage и Rohrer.
figure plot(t,input,t,outputC7,'LineWidth',2) axis([0 2.5e-9 0 5.5]) title('Ramp Response of Low- to Mid-frequency MOS Circuit Interconnect with Crosstalk') xlabel('Time (sec)') ylabel('Voltage (volts)') legend('Vinput','V(C7)','Location','NorthWest') figure plot(t,input,t,outputC12,'LineWidth',2) axis([0 5e-9 0 .5]) title('Crosstalk in Low- to Mid-frequency MOS Circuit Interconnect with Ramp Input') xlabel('Time (sec)') ylabel('Voltage (volts)') legend('Vinput','V(C12)','Location','NorthEast')
Хотя не показанный в этом примере, можно также использовать функцию freqresp
, чтобы проверять поведение rationalfit
хорошо вне заданного частотного диапазона. Подгонка вне заданной области значений может иногда вызывать удивительное поведение, особенно если данные о частоте около 0 Гц (DC) не были обеспечены.
Чтобы выполнить эту проверку для приближения рациональной функции в этом примере, не прокомментируйте и запустить следующий код MATLAB.
% widerFreqs = logspace(0,12,1001); % respC7 = freqresp(fitC7,widerFreqs); % figure % loglog(freqs,abs(tfC7),'+',widerFreqs,abs(respC7)) % respC12 = freqresp(fitC12,widerFreqs); % figure % loglog(freqs,abs(tfC12),'+',widerFreqs,abs(respC12))