Рекомендации по прототипированию электронных схем


PDF версия

Статья написана на основе личного опыта автора с использованием некоторых советов из [1]. Приведенные рекомендации могут показаться тривиальными, но все же нам думается, что читатели смогут найти в этих советах кое-что полезное. Рекомендации применимы к широкому кругу устройств.

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

Контрольные точки

Не следует забывать о контрольных точках на печатных платах, т.к. современные печатные платы настолько миниатюрны, что щуп осциллографа не всегда удается поместить в нужную точку.
В программном коде необходимо предусмотреть точки останова, чтобы была возможность, например, измерить время выполнения функции. В случае использования сторожевого таймера (СТ) следует поставить контрольную точку на его выходе. Еще нагляднее использовать светодиод, чтобы те моменты, когда таймер отключен, были видны сразу. На время отладки программного кода удобно отключать сторожевой таймер с помощью перемычки.
Если используется сложная схема управления мощностью, то следует поставить контрольные точки на таких сигналах как сброс или степень заряда батареи. Среди внешних загрузочных устройств наиболее часто возникают проблемы со схемами флэш-памяти, ПЛИС, загружаемыми с ОЗУ и т.д. На плате должен присутствовать разъем, а также один-два вывода для отладки ПЛИС. Полностью проконтролировать работу программируемых ИС нельзя, однако некоторые сигналы проследить можно. Для этого и потребуются дополнительные выводы.
Конечно, в небольших устройствах не всегда достаточно свободного места для контрольных точек. Однако добавочная стоимость от контрольных точек и лишних разъемов несопоставимо мала по сравнению с затратами, которые уйдут на повторное проектирование. При желании отладочные элементы можно использовать только в прототипах, оставляя в готовом устройстве на их месте свободные площадки.

Резисторы

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

Неиспользуемые выводы

Неиспользуемые выводы не стоит оставлять неподключенными, чтобы уровень на них был задан. Для ИС семейства 74LS выводы (кроме выводов питания) нельзя подключать к линии питания напрямую, поскольку максимально допустимое напряжение на них равно 5,5 В, а само устройство выдерживает до 7 В. В итоге нестабильности на линии питания могут привести к выходу из строя входных транзисторов. Необходимо использовать резистор, ограничивающий входной ток. В большинстве современных КМОП-схем максимально допустимые значения для выводов и элементов совпадают, поэтому можно смело подключать выводы к линии питания напрямую, если, конечно, проект в дальнейшем не планируется переводить на элементы ТТЛ.
В схемах КМОП все выводы должны быть обязательно подключены, чтобы не возникало помех. Неиспользуемые выводы следует подключать к земле. Одно из решений — изготовить прототип, который отличается от конечного устройства. На нем необходимо выделить участки, которые наиболее вероятно будут меняться при тестировании. Это, например, ПЛИС и подобные схемы. Многие имеют горький опыт, когда приходилось заново начинать проектирование из-за того, что какой-либо вывод матрицы не был подключен или возникала потребность генерировать сигнал сложной формы на свободном выходе ПЛИС.

Тактирование

Изначально все встраиваемые модули были совместимыми. Практически все сигналы на плате были и относительно медленными с частотой не более 10 МГц и имели уровень ТТЛ. Типичное значение для логической единицы составляет 2,4 В, для нуля — 0,7 В. Однако в более современных системах применяются ИС с различными, порой несовместимыми, электрическими характеристиками. Об этом необходимо помнить и внимательно изучать соответствующий раздел документации.
Если тактовый сигнал формируется вентилем или триггером, следует удостовериться, что выходной сигнал имеет уровень КМОП. Например, это обеспечивается в сериях 74НСТ или 74АСТ/FCT. Серии ТТЛ, такие как 74LS, следует использовать только в сочетании с мощным подтягивающим к питанию резистором.
Тактовые резонаторы должны вырабатывать чистый сигнал. Нельзя допускать, чтобы этот важнейший для схемы сигнал исказили шумы. Для согласования импедансов на линии тактирования можно использовать ИС с согласующими контактами, однако делать это следует с осторожностью, т.к. в них происходит преобразование уровней КМОП в ТТЛ. Ослабить шумы и сгладить фронты сигнала поможет включенный последовательно демпфирующий резистор. Подтягивающий к питанию резистор имеет смысл использовать только в том случае, если источник питания имеет низкий импеданс.
Надежнее всего размещать схему тактирования в непосредственной близости с процессором. Если это невозможно, то следует использовать гистерезисную КМОП-схему, например 74НСТ14. Однако дополнительные вентили увеличивают задержку. Для синхронизации тактовых сигналов, если это необходимо, следует использовать специализированные формирователи с малым отклонением. В более медленных системах с частотой менее 20 МГц рекомендуется обходиться без синхронного тактирования.
После проверки всех уровней напряжения необходимо удостовериться, что выполняются требования к сигналам тактирования. Они могут быть самыми неожиданными. Например, для ИС серии 8088 необходимо, чтобы рабочий цикл занимал не более трети периода.
Времена спада и возрастания также имеют большое значение, хотя их сложно рассчитывать. Особенно это касается длинных линий, идущих по всей плате. Удобно использовать процессоры с сигналом clock-out, которые вырабатывают стабильный сигнал тактирования. Контур, в который включен процессор, не должен содержать посторонних элементов. 

Срок разработки

По мере перехода на более высокий технологический уровень элементная база быстро устаревает. Длительность проектирования — чрезвычайно важный фактор. Все производители стремятся сократить время разработки, чтобы устройства как можно раньше выходили на рынок. С другой стороны, устройства не должны быть дорогими. Это обстоятельство необходимо принимать во внимание при выборе элементной базы. Так, в дешевых устройствах можно заменить маскируемые ПЗУ однократно программируемыми эквивалентами (ОТР). Это позволит сэкономить несколько долларов при условии, что код хорошо отлажен, и его не придется много раз изменять. Конечно, если речь идет о системах стоимостью несколько тысяч рублей, данная экономия не оправдана. Но если устройство стоит несколько десятков рублей, то каждый рубль на счету.
Один из залогов успешного проекта — сохранение свободы выбора до его завершения. Предусмотреть всего нельзя, поэтому ошибки неизбежны. Когда есть возможность что-то изменить в схеме, это очень облегчает решение проблем и позволяет адаптировать характеристики устройства под требования рынка. Так, по сравнению с маскируемыми ОЗУ гораздо выгоднее использовать EPROM или флэш-память, особенно при малых тиражах. На изготовление масок уходит несколько миллионов долларов, поэтому разработчик просто обязан использовать заказанные элементы.

Сторожевые таймеры

В отличие от больших и сложных систем, таких как компьютер, в маленьких схемах ошибки в битах более критичны, даже если они вызваны не случайными импульсными помехами и носят кратковременный характер. Чаще всего ошибки возникают из-за дефектов программного или аппаратного обеспечения. Для их предотвращения используются сторожевые таймеры, которые перезапускают программу, как только она начинает выполняться неправильно.
Обычно СТ перезапускает программу несколько раз в секунду, если не пришел сигнал сброса. В случае возникновения программного сбоя таймер работает непрерывно до тех пор, пока не придет аппаратный сброс, после которого программа в идеальном случае возвращается на последнюю корректно выполненную инструкцию.
СТ должны запускать схему сброса процессора, а не генерировать прерывание. Это первое правило проектирования. Переполнение счетчика означает, что произошел сбой. Процессор может остаться в непредсказуемом состоянии, и только аппаратный сброс гарантирует возобновление правильной работы.
Часто разработчики пользуются немаскируемыми прерываниями, особенно если часть выводов не используется и есть возможность сэкономить пару вентилей. Но они не гарантируют защиту от сбоев. Иногда ошибка в программе приводит к тому, что и эти прерывания блокируются.
В то же время полагаться только на СТ нельзя, ведь если произойдет сбой, а инструкция, поддерживающая работу СТ, будет продолжать выполняться, то ошибка будет пропущена. Чтобы избежать подобных ситуаций, некоторые компании применяют сложные последовательности команд для таймера. Не самой удачной является идея записывать код сброса СТ в подпрограмму обработки прерывания, хотя она по определению работает отдельно от остального кода. Таймер будет продолжать отсчет, хотя программа уже не функционирует.
Проблема усугубляется в случае использования операционной системы реального времени, в которой надежный СТ следит за выполнением всех задач. Если одни дают сбой, а другие работают, то система продолжает функционировать неправильно. Лучше записать код для СТ как отдельную задачу, выполняемую таймером. Все другие задачи должны периодически оповещать СТ о своей работоспособности. Сторожевой таймер перезапускается только после того, как получил все сообщения. Но вот произошел сбой. Таймер сбросил и перезагрузил процессор, но насколько это разумно и безопасно? Неожиданное срабатывание СТ может привести к поломке системы, нужна аппаратная защита.

Кнопка сброса

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

Литература
1. Ganssle J. Tips on building & debugging embedded designs//www.eetimes.com/design/embedded/4210313/Tips-on-building-and-debugging-embedded-hardware-software-designs.

Оставьте отзыв

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