Этот пример показывает, как создать и моделировать схему дерева 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))