У любителей электроники, разобравшихся в общих чертах в процессах отражения сигнала от концов линии передачи, неизбежно возникает ряд вопросов, связанных с выбором номиналов согласующих резисторов. При согласовании на стороне источника, выбор резисторов порождает две задачи: определение волнового сопротивления линии и определение внутреннего сопротивления источника сигнала. Обе задачи решаются с помощью симуляторов. Об особенностях их применения и пойдёт речь в данных статьях.

В качестве объекта симуляции используем ту же самую микросхему 5M80ZE64C5N, что применялась в предыдущей статье. Для симуляции нам потребуется модель выходного буфера микросхемы. У данной микросхемы на сайте производителя имеются две принципиально разные модели: HSPICE (осталась только на японской версии сайта) и IBIS. Концепция модели HSPICE подразумевает, что модель содержит в себе характеристики транзисторов из которых состоит выходной буфер и список соединений данных транзисторов. В открытом виде эта информация является коммерческой тайной. Поэтому модель HSPICE для данной микросхемы зашифрована алгоритмом DES и может быть просимулирована только весьма дорогим программным обеспечением компании Synopsys. Модель IBIS же представляет из себя набор вольт-амперных и переходных (реакция выходного буфера на фронт, пришедший изнутри микросхемы) характеристик. Модель IBIS не несёт данных о внутренней структуре буфера, поэтому она распространяется в открытом виде и может быть просимулирована различными пакетами, в том числе — бесплатными.

Одним из таких бесплатных пакетов является MicroCap. Его возможности не позволяют органично встроиться в процесс промышленного проектирования печатных плат. Однако, он достаточно прост в использовании и вполне подойдёт для оценочной симуляции любительских изделий.

Создадим в MicroCap несложную схему. После установки пакета и создания новой схемы («File→New→Schematic File») добавим в неё выходной буфер. Для этого:

  1. Откроем в навигаторе компонентов вкладку «Search».

  2. Укажем в поиске «IBIS».

  3. Выберем в списке IBIS_Output3. Данный буфер имеет три контакта: вход, выход и переключение в состояние HiZ. Также в списке имеется буфер IBIS_Output5 — в нём добавлены контакты питания и земли. Кроме того, при помощи IBIS можно моделировать и входы микросхемы. Но пока ограничимся наиболее простым вариантом.

  4. Щелкнем по полю схемы изображением буфера — откроются два окна.

  5. Укажем путь к модели IBIS.

  6. Поставим переключатель «View by» в положение «Model».

  7. Выберем в списке модель «max5_ttl33_io_d16» — выход 16мА, LVTTL.

  8. Так как список нельзя расширить, а названия моделей достаточно длинные, то их можно уточнять в основной таблице.

Нажмём «Ок» и продолжим.

Добавим на схему линию передачи. Для этого:

  1. Поищем компонент «TLine».

  2. Выберем единственный найденный компонент.

  3. Добавим его на схему — откроется окно его свойств.

  4. В этом окне дважды щёлкнем по строчке «MODEL=».

  5. Откроется окно для ввода названия модели линии передачи. Введём любое название.

  6. Убедимся, что тип длинной линии установлен в положение «Ideal».

  7. Введём волновое сопротивление линии.

  8. Введём задержку распространения «3.43n». Согласно моим измерениям, сигнал в кабеле RG-174 распространяется со скоростью 17,5см/нс. Соответственно, для длины 60см задержка распространения составит 3,43нс. Важное замечание: я регулярно забываю ставить «n», указывающий на «нано» и долго ищу причину, по которой на симуляции нет никаких сигналов. Не повторяйте моих ошибок :)

Теперь добавим на схему источник прямоугольных импульсов. Для этого:

  1. Найдём компонент «Pulse Source».

  2. Поместим его на схему.

  3. Как и в предыдущем случае, дважды щёлкнем по строчке «MODEL=» и введём любое название модели.

  4. Введём напряжения логического нуля и логической единицы. Выход нашего буфера инвертирован, поэтому «VONE» сделаем равным нулю, а «VZERO» — 3,3 вольтам.

  5. Зададим временны́е характеристики сигнала так, чтобы получились прямоугольные импульсы с частотой 1 мегагерц и заполнением 50/50:
    P1 = 100n
    P2 = 100.1n
    P3 = 600n
    P4 = 600.1n
    P5 = 1000n
    Их смысл представлен на схеме ниже.

Последние штрихи.

  1. Возьмём на панели сверху зе́мли и разместим их на схеме. Оба конца экрана линии передачи должны быть заземлены на схеме. Возьмём на той же панели резисторы и конденсатор. Конденсатор нужен для имитации входной ёмкости осциллографа. Для MSOX4154A она приблизительно равна 8 пикофарадам. Резистор будет имитировать мегоомный вход осциллографа. В процессе симуляции именно на этом резисторе будет измеряться напряжение.

  2. Важный момент: в MicroCap резисторы полярны. Если мы возьмём в меню второй сверху резистор (вместо четвёртого сверху), график будет начерчен вниз от 0 вольт до -3,3 вольт. Сами номиналы вписываются в поле «Value» после того, как в свойствах элемента выделена строка «RESISTANCE» или «CAPACITANCE».

  3. Меню с выбором направления резистора скрывает кнопку «Чертить провода». Воспользуемся данной кнопкой, чтобы соединить элементы на схеме.

Теперь настроим симуляцию. После того, как мы выберем пункт меню «Analysis→Transient...» у нас откроется следующее окно:

  1. Установим параметр «Maximum Run Time» в 1000n (просимулируем 1 микросекунду) и параметр «Maximum Time Step» в 10p (максимальный шаг симуляции 10 пикосекунд, избыточно точно, но пускай будет так).

  2. Установим в первой строке таблицы выводимых графиков в поле «Y Expression» параметр, который будем симулировать — напряжение на резисторе R1. Для этого впишем туда «v(r1)», автодополнение в процессе набора предложит нам этот вариант.

  3. Поставим курсор на вторую строку и удалим её нажав вверху окна кнопку «Delete». Затем также удалим третью строку.

  4. Нажмём кнопку «Run» для начала симуляции.

Насколько данная симуляция точна? Наложим данный график на реальную осциллограмму.

Совпадение не идеальное, но весьма близкое к реальности. Попробуем согласовать источник и линию на симуляторе.

  1. Добавим на схему согласующий резистор.

  2. Выберем параметр «RESISTANCE=».

  3. Впишем номинал 27 Ом и запустим симуляцию.

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

Помимо модели IBIS, для корректной симуляции нужно знать волновое сопротивление линии передачи.

Для вычисления которого можно воспользоваться бесплатным калькулятором «Saturn PCB Design Toolkit»:

  1. Откроем в нём вкладку «Conductor Impedance».

  2. Выберем тип линии (её сечение будет изображено на картинке) — копланарная линия.

  3. Введём геометрические параметры.

  4. Диэлектрическая проницаемость текстолита FR4 указана по умолчанию верно — 4,6.

  5. Нажмём «Solve» и получим результат… отличающийся от реальности приблизительно на 10%.

Описанных инструментов будет достаточно для многих любительских проектов. Однако, не исключено, что после прочтения данной статьи могли остаться вопросы. К примеру:

  • Как посчитать импеданс линии на плате точнее, чем +/-10% ?

  • Является ли проводник на заглавной картинке копланарной линией?

  • Отличается ли скорость распространения сигнала по коаксиальному кабелю RG-174 и по текстолиту FR4?

В следующей части я постараюсь прямо или косвенно ответить на эти и другие вопросы, рассмотрев пакеты симуляции, за которые платят деньги.

Комментарии (10)


  1. Astroscope
    27.10.2021 20:23

    По моему дилетантскому мнению неточность расчета линии в 10% допустима в значительном количестве реальных (как минимум хоббийных) применений, достаточно пересчитать разброс в отклонение Return Loss или VSWR от расчетного, чтобы оценить возможные последствия неточности в более привычных единицах.


    1. order227
      27.10.2021 22:48

      Исходя из практики считают обычно в ноль, то есть если надо 50 Ом, то считаю параметры линии для 50 Ом. А вот эти самые +-10% набегают уже на этапе производства из-за погрешности прессования стека, плавающего etch factor и прочих вещей.

      К тому же в реальных задачах важнее не сколько идеальное попадание в импеданс, сколько его однородность по всей длине проводника. Проводник может иметь целевые 50 Ом, но via где-то по середине трассы будет иметь импеданс 80 Ом и там будут существенные отражения, хотя казалось бы с общим импедансом все очень хорошо.


      1. quaer
        27.10.2021 23:53

        Нужна ли такая точность для цифровых линий?

        Γ = (ZL − Z0) / (ZL + Z0), VSWR = (1+ |Γ|)/ (1 − |Γ|)

        Если к примеру ZL = 50 Ом, Z0 = 25 Ом:

        Γ = (50 − 25) / (50 + 25) = 0.333, VSWR = (1+ 0.333)/ (1 − 0.333) = 2

        То есть дошло 90% мощности при 2-х кратной разнице импедансов.


        1. mikkrob
          28.10.2021 12:53
          +2

          Если бы коммуникация происходила при помощи одного единственного импульса, то, возможно, ничего так старательно согласовать было бы не нужно. В реальности, в цифровых линиях бывает проблема не только того, что отдельный импульс "выглядит" не супер прямоугольным, а ещё и того, что отражения накладываются на следующие импульсы в линии. В итоге, возникают артефакты, которые могут привести к снижению качества, или даже полной нечитаемости сигнала


          1. quaer
            28.10.2021 19:40

            В данном примере насколько большие артефакты будут и будут ли они мешать?


            1. order227
              28.10.2021 22:20

              Будут, если это ddr4 или pcie gen 4, например. Не рассчитанные via легко убьют сигнал, т.к. сигнал будет искажаться из-за многократных отражений из-за локальной неравномерности импеданса. Получить слишком большое значение BER можно легко.

              Да и потеря 10% "мощности" сигнала это критично, если линия имеет большую длину типа 100-200-300 мм и скорости порядка 5...20 GT/s. Данный кейс встречается в цифре очень часто.


              1. quaer
                28.10.2021 23:34

                Про PCI express статья:

                Interconnect Budget:

                * Loss and jitter are key parameters
                * Target impedance not as critical

                Желание перестраховаться и всё вокруг согласовать понятно, просто интересна всё-таки степень влияния.


  1. Rutel_Nsk
    27.10.2021 20:30
    +1

    А если линия находится в 2х слоях, половина на топе, вторая половина на боте (соединение через переходное отверстие).
    ПП 4 слоя, между внутренними слоями 1.5мм — внутри 2 слоя с постоянным потенциалом (земля питание). Расстояния от топа (бота) до ближайшего внутреннего слоя соответствует рассчетному импедансу. Что будет?


    1. woddy
      27.10.2021 23:24

      Переход рассчитвается аналогично но в специализированном софте. Его волновое сопротивление регулируется расстоянием до земляных виас (которые сшивают земли) и зазором до заливки.
      Второй опорный слой должен быть тоже земляной, никакого питания (по крайней мере в районе прохождения ВЧ/ диф пар)


      1. lockdok
        28.10.2021 12:53
        +1

        Можно и менять опорный слой с GND на PWR, не забывая про сшивающий конденсатор. Современные САПР позволяют автоматом менять размеры/зазоры в зависимости от слоя, по которому проложена трасса. По поводу переходов - кроме указанных вами параметров, еще может влиять форма антипада (вырез в полигонах вокруг via) и stub (который можно нивелировать с помощью backdrilling). Мы считали их в HyperLynx, благо там есть sweep-анализ, позволяющий пакетно симулировать сочетания всех указанных выше параметров в разных комбинациях для выбора лучшего варианта.