Розгляд питання про припинення шини SPI


22

Отже, у своєму попередньому запитанні я запитав про використання шини SPI на невеликій відстані для зв'язку між бортом та бортом. Мені рекомендували спробувати резистори припинення. Я розмістив резистор поруч із пунктом призначення (але не зовсім там, відстань 1 см) і заземлив його [оскільки це дошка без слідів резистора відключення, мені довелося імпровізувати. Я не міг паяти резистор на пристрій, оскільки це TQFP і має ніжні шпильки.]

З деякого базового тестування я виявив, що 1К резистор ледь зменшив перегин. 470 Ом і 180 Ом працювали краще. Чим нижче я пішов, тим краще працював. З 180 Ом, оверсайз становив приблизно вольт або трохи нижче. Зараз, на жаль, я не можу знизитись набагато більше, тому що струм більше, ніж мій MCU. Я вирішив цю проблему на поточній версії плати, використовуючи послідовно опір 330 Ом. Це призвело до перевищення 3,7 В, час підйому - 10 або 11 нс. Але я б дуже хотів "правильного" рішення на наступній редакції. Мої вимоги до частоти залишаються однаковими: 2 МГц, але я вважаю за краще 4 МГц.

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

То який тут найкращий спосіб звернення? Чи варто йти на «активне припинення», використовуючи діоди Шоткі як затискачі?

EDIT: Що стосується опору ліній: Як я вже згадував, наміром є підключення 4 зовнішніх плат. Відстань від колодки до колодки однакова для всіх (12 дюймів). Однак на такій платі, що і MCU, також є пристрої, але вони не потребують закінчень - довжина становить приблизно дюйм (або менше), і тут дуже мало (300 або mV). Сліди, що йдуть на зовнішні дошки, мають приблизно однакову довжину та ширину. 2-й шар на моїй дошці - це неперервана земна площина.


Поширеним методом є розміщення серійного резистора, який відповідає лінійному опору. Спробуйте щось на кшталт серійного припинення 50ohm. Це допоможе, якщо ви спроектували свої сліди та з'єднання дещо фіксованим опором. Спробуйте нижчі серійні закінчення, і подивіться, що ви знайдете. Він запропонував припинити землю в 32 Ом, ви можете зробити це набагато меншою потужністю, а на 3dB меншою потужністю, поставивши 64 Ом до силової рейки і 64 Ом до наземної рейки.
Кортук

@Kortuk Резистор 32 Ом, на жаль, не зменшив значно промах. Однак слід також знаходився в неправильному місці (він ніколи не мав бути термінатором) і не біля джерела, так що, можливо, це я не впевнений. Щодо опору ліній, всі лінії мають, приблизно, однакову довжину і ширину. Всі вони пробігають по цілому ґрунту площину, яка знаходиться на 2-му шарі.
Саад

1
Припинення серії відбувається у джерела, якщо розмістити його під завантаженням, воно нічого не робить. Спробуйте розмістити послідовно 50ohm біля свого джерела, щоб побачити вплив.
Кортук

Ви можете подумати про це, як описано stevenvh, там є вся лінія, що діє як конденсатор, і цей резистор виступає як R з ним за низьким проходом, якщо ви думаєте про це як згущену модель. Відповідний резистор там, якщо ви подивитеся на модель лінії електропередачі, означає, що ви маєте половину ходу хвилі амплітуди, а потім, коли вона потрапляє на інший кінець і відображає, що вона стикається до повного значення.
Кортук

Відповіді:


32

Говорити про припинення сигналу - це як відкрити банку з хробаками. Це ВЕЛИЧИНА тема, яку важко узагальнити всього за пару сотень слів. Тому я не хочу. Я збираюся залишити величезну кількість речей з цієї відповіді. Але я також надам вам велике попередження: про мережу резисторів у мережі є багато дезінформації. Насправді я б сказав, що більшість того, що знайдено в мережі, є неправильним чи оманливим. Якось я напишу щось велике і опублікую це у своєму блозі, але не сьогодні.

Перше, що слід зазначити, це те, що значення резистора, яке буде використано для вашого припинення, повинно бути пов'язане з вашим опором сліду. Більшу частину часу значення резистора таке ж, як і ваш опір сліду. Якщо ви не знаєте, що таке імпеданс сліду, вам слід це з'ясувати. Існує багато онлайн-калькуляторів імпедансу . Пошук у Google принесе ще десятки.

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

Існує багато типів припинення, але ми можемо приблизно їх розподілити на дві категорії: джерело та кінцеве припинення. Закінчення джерела відбувається у драйвера, припинення закінчення - у віддаленому кінці. У межах кожної категорії існує багато типів припинення. Кожен тип найкращий для різних цілей, і жоден тип не підходить для всього.

Ваше завершення, єдиний резистор на землю в дальньому кінці, насправді не дуже добре. Насправді це неправильно. Люди роблять це, але це не ідеально. В ідеалі цей резистор перейшов би на інший силовий рейки на половині вашої силової рейки. Отже, якщо напруга вводу / виводу становить 3,3 В, то цей резистор не буде йти на GND, а на іншу рейку потужності на половині 3,3 В (він же 1,65 В). Регулятор напруги для цієї рейки повинен бути спеціальним, оскільки він повинен подавати струм І тонути, де більшість регуляторів лише джерело струму. Регулятори, які працюють для цього використання, згадають щось про припинення на першій сторінці аркуша.

Велика проблема більшості кінцевих припинень полягає в тому, що вони споживають багато струму. Для цього є причина, але я не вдаваюся в це. Для використання з низьким струмом ми повинні подивитися на припинення джерела. Найпростіша і найпоширеніша форма припинення джерела - це простий резистор серії на виході драйвера. Значення цього резистора таке ж, як і слідовий опір.

Закінчення джерела працює інакше, ніж кінцеве припинення, але чистий ефект такий же. Він працює, контролюючи відбиття сигналу, не перешкоджаючи відбиттям в першу чергу. Через це він працює лише в тому випадку, якщо вихід драйвера подає одне навантаження. Якщо є кілька навантажень, тоді слід зробити щось інше (наприклад, використання кінцевого припинення або резисторів з декількома джерелами). Величезна перевага припинення джерела в тому, що він не завантажує драйвер, як це робиться в кінцевому терміні.

Я говорив раніше, що ваш резистор серії для припинення джерела повинен бути розташований у драйвері, і він повинен мати таке ж значення, як і ваш імпеданс сліду. Це було надмірне спрощення. Про це потрібно знати одну важливу деталь. Більшість драйверів мають певний опір на виході. Цей опір зазвичай знаходиться в діапазоні 10-30 Ом. Сума вихідного опору і ваш резистор повинні дорівнювати вашому слідовому імпедансу. Скажімо, ваш слід 50 Ом, а ваш водій - 20 Ом. У цьому випадку ваш резистор буде 30 Ом, оскільки 30 + 20 = 50. Якщо в таблицях даних не сказано, який вихідний опір / опір драйвера, то ви можете припустити, що це 20 Ом, - тоді подивіться на сигнали на друкованій платі і подивіться, чи потрібно її коригувати.

Ще одна важлива річ: коли ви дивитесь на ці сигнали на o-області, ОБОВ'ЯЗКОВО зондувати приймач. Зондування в будь-якому іншому місці, ймовірно, дасть вам спотворену форму хвилі і наштовхне на думку, що все гірше, ніж є насправді. Також переконайтесь, що ваш затискач є максимально коротким.

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


Девід, дуже дякую за вичерпну відповідь. Все це мало ідеальний сенс, але я думаю, що в моїй системі є ще одне ускладнення - лінії SPI переходять від однієї до іншої плати. Отже, оцінити імпеданс лінії може бути складно - сигнал подається на основну плату приблизно на 3 ", проходить через кабель стрічки 6", а потім знову проходить по трасі 3 ", поки не досягне свого місця призначення. ґрунт (як SCK, GND, MOSI, GND тощо). Ваша рекомендація 30-20 Ом все ще стоїть?
Saad

@Saad Те, що я робив у таких випадках (і я це дуже багато робив), - це використовувати один резистор у драйвері та налаштовувати його значення, коли прототип побудований. Це компроміс, але він працює. Насправді у мене зараз є декілька систем, які виконують SPI по 1 футових кабелях із 3-6 дюймами слідів на кожній платі. Деякі з них працюють на 30 МГц! Так, почніть з 33 або 47 Ом і налаштуйте звідти.

3
+1 вже, але схема, яка показує, як підключити припинення джерела (тобто послідовно, а не від лінії до землі), була б дуже корисною.
The Photon

16

Оскільки ви їдете на невеликі відстані, я не думаю, що резистори для закінчення є гарною ідеєю. Як ви виявили, вони повинні бути досить низькими, щоб виконати цю роботу, і тоді лінія притягує багато струму, і напруга зменшується на 2, якщо ви також ведете лінію з тим же імпедансом.

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

Таким чином, рішення полягає в зменшенні високих частот, які вам не дуже потрібні, але викликають проблеми. Це можна зробити за допомогою простого фільтра низькопрохідних RC відразу після всього, що рухає лінію. Це частково те, що зараз роблять резистори 330 Ом. Вони утворюють низькочастотний фільтр з паразитарною ємністю лінії. Мабуть, цього недостатньо і / або недостатньо передбачувано. Це можна виправити за допомогою деякої навмисної ємності на кожному рядку.

Ви хочете запустити шину на 4 МГц, а це означає, що найшвидший сигнал, який вона потребує, - це квадратна хвиля 4 МГц. Це означає, що довжина кожного рівня становить 125 нс. Скажімо, ми хочемо, щоб це було принаймні 4 постійні часу, що означає 98% часу відстоювання. Це означає, що максимальна константа часу, яку ми хочемо дозволити, - 31 нс. 31ns / 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 мс.


1

Спробуйте закінчення змінного струму (наприклад, конденсатор 470 пФ послідовно з резистором 110 Ом) і підключіть цю комбінацію серій на виході місця призначення SPI Clock до землі. Закінчення завершить приблизно 30 мА протягом тривалості часу ребра, що він може легко зробити, але нульовий струм інакше. Для двонаправленого рядка даних це стає трохи складніше. Я поклав закінчення змінного струму на 470 пФ, 220 Ом як на головний, так і на ведений кінець лінії даних SPI, і це працює, тобто прийнятний промах і підкреслення.

Я вітаю коментарі з цього приводу.


0

Не надто заглиблюючись у деталі, коли попередні пости вдарили нігтями по голові. Це зводиться до SPI, будучи неврівноваженими лініями. Навіть якщо у вас низька тактова частота, слід дотримуватися швидких країв тактових годин. У моєму випадку знайдено резистор 470 Ом послідовно з лінією SPI CLK на стороні Master. Видалення цього резистора та реалізація рішення, рекомендованого для неврівноважених ліній з Решітки та пропозицій, розміщених вище (я міг реалізувати лише половину рішення з боку підлеглого, відповідним чином підкрутив кришки фільтра), я зміг збільшити довжину мого кабелю SPI-стрічки, що розповсюджується з Від 10 см до 160 см без помилок:

Підвищення захищеності від шуму для послідовного інтерфейсу : Біла книга ґратчастого напівпровідника (липень 2014 р.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.