Соображения об окончании шины SPI

22

Итак, в моем предыдущем вопросе я спросил об использовании шины SPI на коротком расстоянии для связи между платами. Мне порекомендовали попробовать нагрузочные резисторы. Я поместил резистор близко к месту назначения (но не совсем там, там было расстояние 1 см) и заземлил его [так как это была плата без следов нагрузочного резистора, мне пришлось импровизировать. Я не смог припаять резистор на устройстве, так как это TQFP и имеет тонкие контакты.]

В результате некоторых базовых испытаний я обнаружил, что резистор на 1 кОм едва ли уменьшил выброс. 470 Ом и 180 Ом работали лучше. Чем ниже я пошел, тем лучше это сработало. При 180 Ом перерегулирование было примерно на вольт или немного ниже. Теперь, к сожалению, я не могу пойти намного дальше, потому что ток больше, чем может выдержать мой MCU. Я исправил проблему с текущей версией платы, используя последовательное сопротивление 330 Ом. Это привело к перерегулированию до 3,7 В, а время нарастания составило 10 или 11 нс. Но мне бы очень хотелось «правильное» решение на следующей ревизии. Мои требования к частоте остаются прежними: 2 МГц, но я бы предпочел 4 МГц.

Поэтому я подумал, что мне следует спросить здесь: на следующей ревизии доски, я должен разместить мясные буферы на линиях? Поиск буфера на самом деле не проблема, но текущее потребление значительно увеличится - у меня есть 8 устройств на SPI, которые требуют завершения, и 3 линии, которые всегда активны, идут к каждому. Например, SCK идет на все 8 устройств. Каждое устройство будет иметь, скажем, согласующий резистор 100 Ом. Это ток 12 * 3,3 / 100 = 390 мА!

Так что же самое лучшее здесь? Должен ли я пойти на «активное завершение» с использованием диодов Шоттки в качестве зажимов?

РЕДАКТИРОВАТЬ: Относительно импеданса линии: Как я уже упоминал ранее, намерение состоит в том, чтобы подключить 4 внешние платы. Расстояние от площадки до площадки одинаково для всех (12 дюймов). Тем не менее, на той же плате, что и MCU, есть устройства, но они не нуждаются в окончаниях - их длина составляет около дюйма (или меньше), а перерегулирование очень мало (300 или мВ). Следы, которые идут к внешним платам, являются грубыми той же самой длины и ширины. 2-й слой на моей доске - это сплошная земля.

Саад
источник
Распространенным методом является установка последовательного резистора, который соответствует сопротивлению линии. Попробуйте что-то вроде последовательного окончания 50 Ом. Было бы полезно, если бы вы разработали свои следы и соединения как фиксированный импеданс. Попробуйте использовать более низкие серийные окончания и посмотрите, что вы найдете. Он предложил заземление на 32 Ом, вы можете на самом деле сделать это с намного меньшей мощностью, ну и на 3 дБ меньше, подключив 64 Ом к шине питания и 64 Ом к шине заземления.
Кортук
@ Kortuk 32-омный резистор, к сожалению, значительно не уменьшил перерегулирование. Тем не менее, след был также в неправильном месте (он никогда не был предназначен для использования в качестве терминатора), а не в источнике, так что это может быть, я не уверен. Что касается импеданса линии, все линии имеют примерно одинаковую длину и ширину. Все они бегут по полному плану самолета, который находится на 2-м слое.
Саад
1
Прекращение серии находится у источника, если вы поместите его в нагрузку, оно ничего не сделает. Попробуйте установить 50 Ом прямо на источник, чтобы увидеть эффект.
Кортук
Вы можете думать об этом как о том, что Стивенвх описал, что вся линия действует как конденсатор, и этот резистор действует как R с ним для низких частот, если вы думаете о ней как о сосредоточенной модели. Сопоставимый резистор там, если вы посмотрите на модель линии передачи, означает, что у вас половина хода волны амплитуды, а затем, когда он достигает другого конца и отражает его, поднимается до полной величины.
Кортук

Ответы:

32

Говорить о прекращении сигнала - все равно что открыть банку с червями. Это ОГРОМНЫЙ предмет, который сложно обобщить всего за пару сотен слов. Поэтому я не буду. Я собираюсь оставить огромное количество вещей из этого ответа. Но я также дам вам большое предупреждение: в сети есть много дезинформации о нагрузочных резисторах. На самом деле, я бы сказал, что большая часть того, что найдено в сети, неверна или вводит в заблуждение. Когда-нибудь я напишу что-то большое и опубликую это в своем блоге, но не сегодня.

Первое, что нужно отметить, это то, что значение резистора, которое будет использоваться для вашего завершения, должно быть связано с вашим полным сопротивлением. В большинстве случаев значение резистора совпадает с сопротивлением вашей трассы. Если вы не знаете, что такое импеданс трассировки, то вам следует это выяснить. Есть много онлайн-калькуляторов импеданса . Поиск в Google приведет к появлению десятков других.

Большинство трасс печатных плат имеют импеданс от 40 до 120 Ом, поэтому вы обнаружили, что нагрузочный резистор 1 кОм почти ничего не делал, а резистор 100 Ом был намного лучше.

Существует много типов завершения, но мы можем условно разделить их на две категории: исходное и конечное завершение. Завершение источника в драйвере, завершение конца в дальнем конце. Внутри каждой категории есть много типов терминации. Каждый тип лучше всего подходит для разных целей, и ни один тип не подходит для всего.

Ваше согласие, одиночный резистор, заземляющий на дальнем конце, на самом деле не очень хорошо. На самом деле это неправильно. Люди делают это, но это не идеально. В идеале этот резистор должен быть подключен к другой силовой шине на половине вашей силовой шины. Таким образом, если напряжение ввода / вывода составляет 3,3 В, тогда этот резистор не будет подключен к заземлению, а к другой силовой шине с половиной 3,3 В (или 1,65 В). Регулятор напряжения для этой шины должен быть особенным, потому что он требует источника И потребляет ток, где большинство регуляторов только источник тока. Регуляторы, которые работают для этого использования, упомянут кое-что о прекращении на первой странице таблицы.

Большая проблема большинства оконечных устройств состоит в том, что они потребляют много тока. Для этого есть причина, но я не буду вдаваться в подробности. Для слаботочного использования мы должны смотреть на завершение источника. Самая простая и наиболее распространенная форма окончания источника - это простой последовательный резистор на выходе драйвера. Значение этого резистора совпадает с полным сопротивлением.

Завершение источника работает иначе, чем окончание завершения, но общий эффект тот же. Это работает, управляя отражениями сигнала, не предотвращая отражения во-первых. Из-за этого он работает только в том случае, если выходные данные драйвера питают одну нагрузку. Если есть несколько нагрузок, то нужно сделать что-то еще (например, использовать оконечные нагрузки или резисторы с несколькими источниками). Огромным преимуществом завершения источника является то, что он не загружает ваш драйвер, как это делает конечное завершение.

Я уже говорил, что ваш последовательный резистор для окончания источника должен быть расположен в драйвере, и он должен иметь то же значение, что и ваш импеданс трассы. Это было упрощение. Есть одна важная деталь, чтобы знать об этом. Большинство драйверов имеют некоторое сопротивление на выходе. Это сопротивление обычно находится в диапазоне 10-30 Ом. Сумма выходного сопротивления и вашего резистора должна равняться сопротивлению вашей трассы. Допустим, ваш ток составляет 50 Ом, а ваш драйвер - 20 Ом. В этом случае ваш резистор будет 30 Ом с 30 + 20 = 50. Если в технических паспортах не указано выходное сопротивление / сопротивление драйвера, тогда вы можете считать, что оно составляет 20 Ом - тогда посмотрите на сигналы на печатной плате и посмотрите, нужно ли его отрегулировать.

Еще одна важная вещь: когда вы смотрите на эти сигналы в о-области, вы ДОЛЖНЫ исследовать приемник. Исследование в другом месте, скорее всего, даст вам искаженную форму волны и заставит вас думать, что все хуже, чем на самом деле. Кроме того, убедитесь, что ваш зажим заземления как можно короче.

Вывод: переключитесь на нагрузку источника с резистором от 33 до 50 Ом, и все будет в порядке. Обычные оговорки применяются.


источник
Дэвид, большое спасибо за исчерпывающий ответ. Все это имело смысл, но я думаю, что есть еще одна сложность в моей системе - линии SPI переходят с одной платы на другую. Таким образом, оценка импеданса линии может быть затруднена - сигнал проходит около 3 "на основной плате, проходит через 6" ленточный кабель и затем снова проходит 3 "трассу, пока не достигнет своего места назначения. Провода ленточного кабеля чередуются. заземление (например, SCK, GND, MOSI, GND и т. д.). Ваша рекомендация 30-20 Ом все еще остается в силе?
Saad
@Saad То, что я сделал в подобных случаях (и я сделал это много), - это использование одного резистора в драйвере и настройка его значения после создания прототипа. Это компромисс, но это работает. На самом деле у меня сейчас есть несколько систем, которые запускают SPI по 1-футовым кабелям с 3-6-дюймовыми трассами на каждой печатной плате. Некоторые из них работают на частоте 30 МГц! Да, начните с 33 или 47 Ом и настройте оттуда.
3
+1, но схема, показывающая, как подключить завершение источника (т.е. последовательно, а не от линии к земле), была бы очень полезна.
Фотон
16

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

Ваша тактовая частота не так высока, поэтому частоты, которые вам нужны для поддержки даже 4 МГц, не являются причиной проблем. Проблема в том, что у вас есть быстрые фронты, управляющие линиями, которые имеют гармоники в 100 МГц, которые вызывают проблемы. На ваших желаемых частотах у вас сосредоточенная система, а не линия передачи. Это делает вещи значительно проще.

Поэтому решение состоит в том, чтобы ослабить высокие частоты, которые вам не нужны, но вызывают проблемы. Это можно сделать с помощью простого фильтра низких частот RC сразу после всего, что приводит в движение линию. Это отчасти то, что сейчас делают резисторы на 330 Ом. Они образуют фильтр нижних частот с паразитной емкостью линии. Очевидно, этого недостаточно и / или недостаточно предсказуемо. Это можно исправить с помощью некоторой преднамеренной емкости в каждой линии.

Вы хотите, чтобы шина работала на частоте 4 МГц, а это означает, что самый быстрый сигнал, который нужно поддерживать, - это прямоугольная волна 4 МГц. Это означает, что длина каждого уровня составляет 125 нс. Допустим, мы хотим, чтобы это было как минимум 4 постоянные времени, что подразумевает 98% времени установления. Это означает, что максимальная постоянная времени, которую мы хотим разрешить, составляет 31 нс. 31 нс / 330 Ом = 94 пФ. То есть общая нагрузка на резисторы серии 330 Ом необходима для получения постоянной времени 31 нс. Всегда будет какая-то паразитная емкость, которую вы не сможете предсказать, поэтому я посмотрю, как все выглядит при 47 пФ. Это оставляет место для скрытой емкости 10-20 пФ, но не превышает максимально допустимую постоянную времени.

Последовательные резисторы должны быть как можно ближе ко всем контактам, которые управляют шиной. Это предполагает, что все остальные выводы на шине будут входами CMOS, когда один за рулем. Для линий, которые когда-либо управляются только одним выводом (например, линия синхронизации, которая управляется только ведущим устройством), поместите 47 пФ как можно ближе после резистора. Для линий, которые могут управляться разными выводами в разное время (например, MISO), поместите 47 пФ где-то посередине всех драйверов. Каждая линия получает только один конденсатор 47 пФ независимо от количества драйверов, но для каждого драйвера есть один резистор.

Вышеприведенные расчеты являются хорошим руководством для начала. Некоторые параметры не могут быть известны и поэтому учитываются заранее. Начните с 330 Ом последовательно и 47 пФ на землю, но не бойтесь что-то менять, основываясь на реальных наблюдаемых результатах.

Олин Латроп
источник
2

При отсутствии какого-либо завершения, когда сигнал отправляется от источника с очень низким импедансом к приемнику с очень высоким импедансом, сигнал будет многократно подпрыгивать назад и вперед; фаза сигнала будет переворачиваться на 180 градусов в каждом цикле.

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

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

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

Моделирование здесь демонстрирует это. Он включает в себя генератор импульсов, который вырабатывает цепочку импульсов примерно 49 раз в секунду, две линии задержки по 5 мс последовательно (время кругового срабатывания 1/50 секунды) и переключаемые нагрузочные резисторы на обоих концах.

Схема включает три SPDT-переключателя; нажмите на один, чтобы изменить его состояние. Два нижних переключателя управляют окончанием источника и назначения. Для них «вверх» означает хорошее завершение, а «вниз» - плохо. Верхний переключатель контролирует, должна ли линия управляться автоматическим генератором импульсов или ручным логическим входом. Чтобы отправить импульсы по линии вручную, переключите верхний переключатель в положение «вниз», а затем нажмите «L» рядом с ним.

Сигналы , достигающие назначения будут чистыми , если либо источник или адресат надлежащим образом прекращается. Если оба правильно завершены, напряжение принятого сигнала будет наполовину от напряжения привода. Если одно правильно завершено, а другое нет, полученное напряжение будет составлять около 91% от напряжения привода («плохие» резисторы являются «неправильными» в десять раз и, следовательно, не могут поглотить около (10/11) энергии). Если ни одно из них не прервано, полученное напряжение будет примерно в 1,665 раза больше напряжения привода, но каждые 20 мс будут появляться странные отражения.

Supercat
источник
1

Попробуйте нагрузку переменного тока (например, конденсатор емкостью 470 пФ, включенный последовательно с резистором 110 Ом) и подключите эту последовательную комбинацию от выхода назначения тактового сигнала SPI к земле. Оконечная нагрузка потребляет около 30 мА в течение времени фронта, что она может легко сделать, но в противном случае ток будет нулевым. Для двунаправленной линии данных это становится немного сложнее. Я поместил нагрузку переменного тока в 470 пФ, 220 Ом как на главный, так и на подчиненный конец линии данных SPI, и это работает, т. Е. Допустимое превышение и превышение.

Я приветствую комментарии по этому вопросу.

кругозор
источник
0

Не вдаваясь в детали, так как предыдущие посты били по голове. Все сводится к несбалансированным линиям SPI. Даже если у вас низкая тактовая частота, нужно соблюдать быстрые нс-частоты. В моем случае был найден резистор на 470 Ом последовательно с линией SPI CLK на стороне Master. Сняв этот резистор и внедрив решение, рекомендованное для несбалансированных линий из решетки, и предложения, опубликованные выше (я мог реализовать только половину решения со стороны ведомого, соответственно подправив крышки фильтра), я смог увеличить длину моего ленточного кабеля SPI от От 10 см до 160 см без ошибок связи:

Повышение помехоустойчивости для последовательного интерфейса : документ «Решетчатый полупроводник» (июль 2014 г.)

Бен
источник