Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дребезг на GPIO LPC-2106
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
makc
В моем проекте на шине между LPC-2106 и Xilinx Spartan-2 контакты LPC сконфигурированы как простые GPIO контакты и используются для формирования в том числе стробов чтения и записи данных по шине. Все бы хорошо, но выяснилась одна проблема: в ПЛИСе есть схема, которая ловит нарастающий фронт строба чтения и по нему производит некоторые действия. При этом в процессе тестирования проекта выяснилось, что иногда (не всегда) происходит нечто, эквивалентное приходу двух фронтов строба чтения. Изыскания с помощью логического анализатора показали, что на выходе LPC при переключении выходного контакта из 1 в 0 иногда проскакивает небольшая помеха длительностью до 8 нс. Т.е. получается следующая последовательность смены состояний сигнала: 11110100000000. Проскочила лишняя единица. Такая же проблема наблюдалась несколько раз и при переключении из 0 в 1.

Вопрос: кто-нибудь сталкивался с подобным дребезгом? И как с ним можно бороться?
Oldring
Цитата(makc @ Dec 29 2004, 14:20)
Изыскания с помощью логического анализатора показали, что на выходе LPC


А это не банальный звон линии из-за отражений сигнала?
makc
Цитата(Oldring @ Jan 11 2005, 22:49)
Цитата(makc @ Dec 29 2004, 14:20)
Изыскания с помощью логического анализатора показали, что на выходе LPC


А это не банальный звон линии из-за отражений сигнала?
*



Нет, не похоже.

Непонятно, как с этим правильно бороться... Пока борюсь с этим явлением в ПЛИС - ловлю фронт с помощью сдвигового регистра. Но мне это кажется не лучшим выходом из положения.
Alexandr
Я сталкивался с такой проблемой при работе с SDRAM на 100МГц. Иногда, помоему как раз на заднем фронте, проскакивал как бы мини импульс окурат в середине фронта. Вылечилось это увеличением номинала согласующего резистора, благо я его туды до этого поставил. Сам этот импульс не исчез, но он сдвинулся вверх по фронту и оказался в зоне лог. "1".
3.14
Если согласование не помогает, возможно возвратные токи по земле дают о себе знать. Можно попробовать полечит небольшим увеличением напряжения питания (мне помогло изменение с 3.1 на 3.3В).
makc
А кто-нибудь может подсказать, как правильно выбрать номинал согласующего резистора? От чего нужно оттолкнуться в этом?
3.14
В HyperLynx есть визард считающий согласующую резистор.
А вообще, надо знать выходное сопротивление буфера и дополнять его до импеданса линии.
one_man_show
По всей видимости у Вас приличные скорости, тогда тоже склонен считать, что проблема в согласовании. Только боюсь посчитать будет трудно, многое зависит и от того как разведена плата, как подведено питание. Какие у Вас скорости? Сколько и каких слоев у Вас на плате? Какова длина линий связи?
makc
to one_man_show

Скорости совсем небольшие: длина импульса (активный уровень 0) около 500 нс. Два слоя, причем никаких высокочастотных линий рядом нет. Линия, на которой возникают помехи притянута к 3.3В. Длина линии не более 4 см.
one_man_show
Значит не там ищем. А направление порта не переключаете? И вообще, может без чудес, а просто какая-то ошибка в софте?
makc
Цитата(one_man_show @ Jan 14 2005, 17:01)
Значит не там ищем. А направление порта не переключаете? И вообще, может без чудес, а просто какая-то ошибка в софте?
*


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

Еще одна странность: этот эффект проявляется не каждый раз, т.к. не регулярно. Может пройти сто раз нормально, а потом пять раз подряд проявиться. Потом еще раз пятьдесят нормально и еще разочек сбойнуть... Так что характер нерегулярный.

Ладно. Т.к. причина не ясна, то придется списать на случайный сбой и бороться с ним орг. мерами. :D
one_man_show
Жаль конечно, что нерегулярная ошибка, тогда найти трудно, согласен.

Если не секрет, чем замерили 8нс?
makc
Цитата(one_man_show @ Jan 14 2005, 20:07)
Жаль конечно, что нерегулярная ошибка, тогда найти трудно, согласен.

Если не секрет, чем замерили 8нс?
*


Если бы ошибка была регулярной, то вопросов бы не было... wink.gif

Насчет 8 нс - замер производился с помощью HPшного логического анализатора. Но и он не всегда ловил эти импульсы, хотя условие для него было четкое - ловить все, что меньше 20 нс по длительности.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.