Мой глитч.

Опубликовано в рубрике "Статьи", 25.11.2011.
Тэги: , , , автор:

Посмотрите на схему:

image

Естественно, сходу не понятно, что тут не так, но я помогу.

Сигнал, который проходит по красной стрелке прекращает подачу синего сигнала на вход U2. Но на красной ветке есть задержка, возникающая за счет того, что сигнал проходит через целых два триггера. Разница в задержках вышла порядка 10нс.

Вот, что получается на выходе схемы:

image

Не смотря, на то, что на выходе стоят неповоротливые силовые компоненты, разница в задержках таки проникает на выход. Вот та последняя иголка – и есть глитч.

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

Если бы процесс был непериодический, то найти такую иголку было бы совсем сложно.

Что делать, если проморгал такую ситуацию? Решение тут обычно нетривиальные: можно поставить RC (или просто С, речь ведь идет о наносекндах) цепочку.

У меня-же получилось обойтись малой кровью и заменить 74HC74 на 74AC74 – он намного быстрее и успевает сработать еще до того, как И-НЕ переключились.

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




Комментарии
  1. shworker написал(а) 25th Ноябрь, 2011 в 21:54

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

  2. monos написал(а) 26th Ноябрь, 2011 в 4:34

    У ус37324, согласно ДШ, задержка по фронту ==25 наносек, шпилька в 10 нан не должна пролазить на выход драйвера.

  3. BSVi написал(а) 26th Ноябрь, 2011 в 8:28

    Это — задержка. То-есть, шиплька в 10 нс вылезет на выходе но с задержкой в 25нс 🙂

    Кстати, я до сих пор так и не знаю вот такую штуку — как определить, на сигнал какой длительности компаратор сработает. У компараторов указывается propagation delay — но это ничего не говорит о скорости срабатывания, которая должна, по идее, значительно превышать задержку распространения.

  4. monos написал(а) 26th Ноябрь, 2011 в 9:27

    >То-есть, шиплька в 10 нс вылезет на выходе но с задержкой в 25нс
    Ага… Правильно. Там другой параметр учитывается: время фронта У вых, т.е. если входной сигнал короче фронта У вых, то на выходе импульса правильной амплитуды не получится…

  5. alex_1045 написал(а) 2nd Декабрь, 2011 в 5:18

    У этого явления есть название — это гонка сигналов. Сильно досаждает разработчикам на элементах низкого уровня интеграции. Один из способов борьбы — тактируемые схемы, а применение RC цепочек — это не очень хорошо (они же нестабильные по температуре, задержка также зависит от от уровня срабатывания последующего элемента, который тоже может плавать, возможна даже возникновение генерации на ВЧ в последующем элементе, если фронт сигнала на его входе будет слишком плавный, а сам элемент достаточно быстродействующий…). Поэтому и стараются избегать применение RC цепочек по цепям распространения сигналов, повторяемость схемы из-за этого становится недостаточно высокой. Это я помню еще с курса лекций по цифровой схемотехнике 🙂 Всем удачи в разработках!

  6. Magnum написал(а) 18th Декабрь, 2011 в 15:12

    Во первых схема не дорисована! Не схема, а какой-то огрызок.
    Во вторых совершенно не понятно (возможно из-за недоросованности), как на выход вообще пролезло столько импульсов, ведь первый же фронт должен записать в U5A нулевое значение, которое тут же запретит дальнейшее распространение входного согнала!
    Вцелом же можно сделать вывод о том что схема спроектирована принципиально неверно из-за чего и получаются всякого рода глютчи.

  7. BSVi написал(а) 18th Декабрь, 2011 в 22:59

    >Во первых схема не дорисована!
    Естественно, нарисовано толькото, что важно для понимания.

    >первый же фронт должен записать в U5A нулевое значение
    только если пин nPR не держится в нулевом состоянии, но это тут не важно.

    >из-за чего и получаются всякого рода глютчи.
    не неверно, а с ошибкой. Если бы ошибки не было, то я бы про это не писал.

  8. Magnum написал(а) 19th Декабрь, 2011 в 1:46

    Да но тут принципиально неверно указана ошибка — применение «медленной» логики, а решение — применение более скоростной. Наверняка можно было решить проблему в пределах «медленной» логики, с применением идеологически верной схемотехники.

  9. alex_1045 написал(а) 26th Декабрь, 2011 в 11:07

    Совершенно согласен с Magnum по поводу применения «медленной» и «быстрой» логики. Так не надо делать никогда! Нужно правильное схемотехническое решение, с учетом особенностей применяемых элементов. Например, можно применить парафазные сигналы (как например в 500 серии есть прямые и инверсные выходы у одного и того же элемента, или выходы Q и не Q D-триггеров 74 серии), вот здесь и нужен подобный вариант — «прямой» сигнал на входе U1C и его инверсия на входе U1B, но этот сигнал должен прийти либо с одного и того же элемента, либо с одинаковыми задержками по разным путям следования… В этом-то и заключается сложность создания надежных схем, надо уметь обходить такие неприятные моменты. Я бы применил либо тактируемые схемы либо сделал парафазные сигналы на входах 9 и 4 U1, например на 2-х элементах «исключающее ИЛИ» (их можно использовать как управляемые инверторы, один включить инвертором, второй — повторителем, входной сигнал — общий) вместо одного U1D. Так как задержки распространения сигналов через элементы на одном кристалле практически одинаковые, то «иголка» на выходе схемы должна будет исчезнуть… По-моему так 🙂

  10. BSVi написал(а) 29th Декабрь, 2011 в 18:22

    Ошибка, естественно не в медленной логике, а в моих руках использование логики разных скоростей — это «костыль», позволяющий не переделывать плату после того, как я лажанул.

  11. alex_1045 написал(а) 31st Декабрь, 2011 в 6:36

    НУ тогда понятно… 🙂 У нас в таких ситуациях обычно делали на разведенных платах небольшой кусочек макетной платы, куда можно было добавить пару корпусов для исправления найденных проблем. Монтаж там ведется на проводках, которые затем можно приклеить к плате лаком. Не могу припомнить ни одного случая, чтобы это не пригодились при настройке… 🙂 Конечно, после отладки опытных образцов платы переделывались, для серии они уже были без этих макетных участков, но зато и опытный образец работал как надо.

  12. Magnum написал(а) 8th Январь, 2012 в 5:15

    Для исключения таких казусов и придумали ПЛИСы. В новых разработках можно заложить вместо этого что-то типа EPM7032 и там уже смело экспериментировать.

  13. BSVi написал(а) 8th Январь, 2012 в 11:20

    Изначально, я это делал на xc9536. Но есть пару сообщений о том, что рядом с сильными магнитными полями содержимое flash-памяти может слететь. Не знаю, на сколько это правда, но так как схема простая, просто сделал ее на чистой логике.

  14. Magnum написал(а) 10th Январь, 2012 в 18:14

    Ну, если это некий шим-драйвер то зачем изобретать велосипед? Их же есть на любой вкус и цвет, от простых со внешними ключами, до полностью интегрированных, включая катушку на кристалле.

  15. BSVi написал(а) 10th Январь, 2012 в 18:17

    Веловипед, потому, что не нашел такого, как мне нужно. Собственно, вот он во всей красе:

    https://bsvi.me/utc-datasheet/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.