реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Кратковременное КЗ на КМОП-выходах микросхем, насколько опасно/вредно ?
artymen
сообщение Apr 28 2010, 18:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



У меня две КМОП-микрухи разделяют общую шину данных. Что, если периодически будут возникать коллизии не дольше, чем на 8.5 нс, с интервалом, во-много раз большим ? Не выгорят ли выводы сразу, или, того хуже, не заглючит ли устройство ни с того ни с сего, скажем, через полгода ?


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 28 2010, 19:01
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Сразу не выгорят. А вот гарантию, что устройство через месяц-полгода-год-пять лет не накроется, никто, увы, не выпишет.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Apr 28 2010, 19:14
Сообщение #3


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



ИМХО попахивает кривизной дизайна. Коллизии там возникать не должны.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
proxi
сообщение Apr 28 2010, 19:35
Сообщение #4


Гуру
******

Группа: Banned
Сообщений: 2 754
Регистрация: 5-06-05
Из: Zurich
Пользователь №: 5 744



Цитата(artymen @ Apr 28 2010, 21:52) *
У меня две КМОП-микрухи разделяют общую шину данных. Что, если периодически будут возникать коллизии не дольше, чем на 8.5 нс, с интервалом, во-много раз большим ? Не выгорят ли выводы сразу, или, того хуже, не заглючит ли устройство ни с того ни с сего, скажем, через полгода ?

сразу не выгорят, выход КМОПа это сопротивление 50-100 Ом, от глюков впрочем никто не застрахован...
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 28 2010, 19:37
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



У моего МК просто очень мало свободных ног осталось, и я экономлю их, нагромождая внешнюю логику. И все шикарно выходит, за исключением этой мизерной коллизии, которая возникнет из-за того, что из-за медленности МК я вынужден выставлять сигнал выбора чипа (/CS) уже вместе с данными (заранее, т.к. принимающая память быстрее МК, в следующем такте уже опоздаю). /CS при этом через инвертор переведет другой чип в Hi-Z состояние, но это произойдет, к сожалению, с задержкой, в то время как данные микроконтроллером уже будут выставлены. (Кстати, я забыл что надо еще добавить задержку инвертора, я микросхему конкретную пока еще не выбрал.)

Значит даже эти кратковременные коллизии вредны и есть реальная необходимость реализовать задержку (хотя бы элементарно RC-цепочкой) ? Впрочем, мне придется аж 8 линий задержать...

Сообщение отредактировал artymen - Apr 28 2010, 19:39


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
V_G
сообщение Apr 28 2010, 22:54
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



А тактовую поднять, чтобы все успевало?
Хотя непонятно, почему CS и данные у вас выставляются одновременно, это на каком контроллере и какой программой вы так сумели?
И почему, если внешняя память быстрая, нельзя сначала выставить данные, а следующей командой CS, как и положено по временным диаграммам?
Потому как с вашими гонками на краю допустимых временных соотношений, вы еще можете получить и нестабильную/ненадежную запись во внешнюю память. Даже при том, что КМОП выходы не грохнутся.
Go to the top of the page
 
+Quote Post
stells
сообщение Apr 29 2010, 03:47
Сообщение #7


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



а по-моему вообще ничего страшного, сквозные токи в КМОП-логике - штатная ситуация
Go to the top of the page
 
+Quote Post
vallav
сообщение Apr 29 2010, 05:04
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(artymen @ Apr 28 2010, 23:37) *
У моего МК просто очень мало свободных ног осталось, и я экономлю их, нагромождая внешнюю логику. И все шикарно выходит, за исключением этой мизерной коллизии, которая возникнет из-за того, что из-за медленности МК я вынужден выставлять сигнал выбора чипа (/CS) уже вместе с данными (заранее, т.к. принимающая память быстрее МК, в следующем такте уже опоздаю). /CS при этом через инвертор переведет другой чип в Hi-Z состояние, но это произойдет, к сожалению, с задержкой, в то время как данные микроконтроллером уже будут выставлены. (Кстати, я забыл что надо еще добавить задержку инвертора, я микросхему конкретную пока еще не выбрал.)

Значит даже эти кратковременные коллизии вредны и есть реальная необходимость реализовать задержку (хотя бы элементарно RC-цепочкой) ? Впрочем, мне придется аж 8 линий задержать...


Была в свое время идея - сделать на КМОП выход с открытым стоком ( готовых было не достать ) путем сжигания
верхнего транзистора.
Постигла неудача - транзистор нагревается и перестает пропускать большой ток.
Удалось только выжечь выход полностью да и то, с большим трудом.

Вы инвертор поставте на быстром КМОП типа LVC ( у него задержка меньше наны ).
Да и буфер тоже. Стоят они столько же, если не дешевле HC и точно дешевле 4000_ных.
А коллизии - плохо из за повышенного потребления и наводок.
Сжечь ими КМОП вряд ли удастся.
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 05:56
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



Цитата
А тактовую поднять, чтобы все успевало?
Хотя непонятно, почему CS и данные у вас выставляются одновременно, это на каком контроллере и какой программой вы так сумели?
И почему, если внешняя память быстрая, нельзя сначала выставить данные, а следующей командой CS, как и положено по временным диаграммам?
Потому как с вашими гонками на краю допустимых временных соотношений, вы еще можете получить и нестабильную/ненадежную запись во внешнюю память. Даже при том, что КМОП выходы не грохнутся.
Тактовая частота поднята до предела. CS и данные выставляются одновременно, потому что если я сначала выставлю CS, то память прочитает невыставленные данные быстрее, чем МК в следующем такте успеет их выставить. А если я еще данные выставлю раньше CS, то коллизия возрастет еще больше, т.к. CS схемотехнически переводит другой чип в Hi-Z, а не МК отдельным сигналом. Никаких гонок нету, если конечно не окажется, что МК не одновременно обновляет состояния своих выводов

Цитата
Вы инвертор поставте на быстром КМОП типа LVC ( у него задержка меньше наны ).
Да и буфер тоже. Стоят они столько же, если не дешевле HC и точно дешевле 4000_ных.
Я делаю опытный образец, а живу в замечательном мухосранске под названием Омск, и я рад, что вообще нашел в крупнейшем в городе радиотехническом магазине буфер 74AC374N, а уж о разновидностях типа HC, LVC, да даже различных корпусах и не смею мечтать.

Ну вот больше людей пишет, что лучше так не делать. Придется, наверно, на CS сделать такую задержку, чтобы он задержался на такт, за которым уже МК подоспеет и выставит данные. Но я даже не знаю быстродействие портов МК. Где-то читал, что LPC2103 переключает ноги с частотой не более 17МГЦ (и это в т.н. быстром режиме !), в то время как частота проца 60 МГц...

Вроде нашел. В даташите приведен ассемблерный код, переключающий пины, и скриншот осциллографа http://file.qip.ru/file/127355853/eddd6793...lipboard01.html
Объясните, пожалуйста, что обозначают частоты внизу и что означают числа сверху ?

Сообщение отредактировал artymen - Apr 29 2010, 06:39


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Apr 29 2010, 06:36
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Какая а Вас стоит память? И как она включена? а то я что-то не могу понять, куда она спешит, и почему нельзя данные подавать чуть позже CS.
Цитата
...то память прочитает невыставленные данные быстрее

Т.е. у Вас процессом записи в память у Вас управляет не контроллер, а какая-то иная часть схемы?
Обычная статическая память по спаду /CS (или /WЕ) считывает адрес, а по фронту сигнала /CS (или /WЕ) пишет(сохраняет) данные.
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 06:42
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



асинхронная SRAM-память K6R4008C1D. но это не ей нужно, а мне smile.gif просто обычно принято, что процессор намного быстрее памяти, а у меня наоборот, и отсюда такие фокусы smile.gif
Цитата
Т.е. у Вас процессом записи в память у Вас управляет не контроллер, а какая-то иная часть схемы?
нет. я уже четвертый раз объясняю: память, получив сигнал CS считывает с шины данные спустя 10нс, это значит, что МК ДОЛЖЕН успеть за это время их выставить, но следующий такт наступит только через 17нс, а указанные в этом такте данные выставятся еще спустя через 34 нс (если я правильно понимаю быстродействие портов МК). едниственный способ сократить эту задержку (а точнее, вообще убрать) - одновременно выставить и CS и данные, но сигнал CS помимо своей основной функции отключает другую конфликтующую микросхему от шины, но происходит это с задержкой, и пока та микросхема будет отключаться 8.5 нс, ее данные будут конфликтовать с уже выставленными МК данными. Я могу, конечно, сначала отключить ту микросхему отдельным сигналом, после чего спокойно записывать в память, но это потребует дополнительного пина МК, а пины дефицитные

Сообщение отредактировал artymen - Apr 29 2010, 07:20


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
vallav
сообщение Apr 29 2010, 07:23
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(artymen @ Apr 29 2010, 09:56) *
Я делаю опытный образец, а живу в замечательном мухосранске под названием Омск, и я рад, что вообще нашел в крупнейшем в городе радиотехническом магазине буфер 74AC374N, а уж о разновидностях типа HC, LVC, да даже различных корпусах и не смею мечтать.

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


Цитата(artymen @ Apr 29 2010, 09:56) *
Ну вот больше людей пишет, что лучше так не делать. Придется, наверно, на CS сделать такую задержку, чтобы он задержался на такт, за которым уже МК подоспеет и выставит данные. Но я даже не знаю быстродействие портов МК. Где-то читал, что LPC2103 переключает ноги с частотой не более 17МГЦ (и это в т.н. быстром режиме !), в то время как частота проца 60 МГц...

Вроде нашел. В даташите приведен ассемблерный код, переключающий пины, и скриншот осциллографа http://file.qip.ru/file/127355853/eddd6793...lipboard01.html
Объясните, пожалуйста, что обозначают частоты внизу и что означают числа сверху ?


Что на картинке - увы, без подробностей не понятно.
Не знаю как LPC2103, а вот LPC1768 переключает внешние ноги вполне быстро. Вполне получаются 10 нс импульсы на тактовой в 100 Мгц.
Но толку то от этого... Квитирующих сигналов ведь нет.
У Вас цикл вывода как организован?
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 07:51
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



Цикл вывода (Write Cycle 3, согласно даташиту): /WE и /OE фиксированны в low, устанавливается новый адрес, /CS устанавливается в low, и в течение 10нс необходимо, чтобы были выставлены данные, потом /CS устанавливается в high
Цитата
Не знаю как LPC2103, а вот LPC1768 переключает внешние ноги вполне быстро. Вполне получаются 10 нс импульсы на тактовой в 100 Мгц.

А 10 нс это что ? Время между выполнением процессором инструкции загрузки в портовый регистр значения и переходом пина в новое состояние ? Кстати, я как то не задумывался, что из флеша код может выполняться медленнее, чем из оперативки...

Сообщение отредактировал artymen - Apr 29 2010, 07:52


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
lackertong
сообщение Apr 29 2010, 08:58
Сообщение #14





Группа: Участник
Сообщений: 5
Регистрация: 29-04-10
Пользователь №: 56 971



Если я правильно понял, Вы задачу формулируете так
1. есть сигнал СS, который управляет двумя конфликтующими микросхемами, одну активирует, вторую отключает.
2. одновременно с этим сигналам прямо в морду двум микросхемам выставляются данные
3. микросхемы меняются телами в течение 8.5 ns, пытаясь спалить друг друга.
4. памагитеsmile.gif

Вариант только один, использовать внешний шинник, который придержит данные на эти 8.5ns, но это нереально.
Реально поставить резисторы, давят они друг друга, ну и пусть давят, снизить токи до приемлемого уровня. Да резисторы снизят крутизну фронтов, но сейчас безобразие еще хуже, и ничего, данные нормально бегают. Возможно все еще лучше станет работать. Какие там нагрузки емкостные, какая скорость обмена данными. Есть ли возможность поставить сопротивления.
Еще вариант, две микросхемы давят друг друга потому что у них разные данные. А если перед сменой шины выставить на обоих одинаковые данные. Тогда давить не будут.
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 09:20
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



да, задача именно такая smile.gif
единственный вариант, который я вижу, это сделать задержку на прохождение /CS настолько, насколько задержится выставление данных + 10нс
если ставить резисторы, то ведь это 8 штук... может проще все-таки задержку сделать ? есть же спец. схемы задержки ?
а про одинаковые данные я уже думал, увы, это невозможно

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

Сообщение отредактировал artymen - Apr 29 2010, 09:57


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 03:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.04339 секунд с 7
ELECTRONIX ©2004-2016