Перейти к содержанию
    

Кратковременное КЗ на КМОП-выходах микросхем

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

сразу не выгорят, выход КМОПа это сопротивление 50-100 Ом, от глюков впрочем никто не застрахован...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем artymen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А тактовую поднять, чтобы все успевало?

Хотя непонятно, почему CS и данные у вас выставляются одновременно, это на каком контроллере и какой программой вы так сумели?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а по-моему вообще ничего страшного, сквозные токи в КМОП-логике - штатная ситуация

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Была в свое время идея - сделать на КМОП выход с открытым стоком ( готовых было не достать ) путем сжигания

верхнего транзистора.

Постигла неудача - транзистор нагревается и перестает пропускать большой ток.

Удалось только выжечь выход полностью да и то, с большим трудом.

 

Вы инвертор поставте на быстром КМОП типа LVC ( у него задержка меньше наны ).

Да и буфер тоже. Стоят они столько же, если не дешевле HC и точно дешевле 4000_ных.

А коллизии - плохо из за повышенного потребления и наводок.

Сжечь ими КМОП вряд ли удастся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А тактовую поднять, чтобы все успевало?

Хотя непонятно, почему 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

...то память прочитает невыставленные данные быстрее

Т.е. у Вас процессом записи в память у Вас управляет не контроллер, а какая-то иная часть схемы?

Обычная статическая память по спаду /CS (или /WЕ) считывает адрес, а по фронту сигнала /CS (или /WЕ) пишет(сохраняет) данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

асинхронная SRAM-память K6R4008C1D. но это не ей нужно, а мне :) просто обычно принято, что процессор намного быстрее памяти, а у меня наоборот, и отсюда такие фокусы :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делаю опытный образец, а живу в замечательном мухосранске под названием Омск, и я рад, что вообще нашел в крупнейшем в городе радиотехническом магазине буфер 74AC374N, а уж о разновидностях типа HC, LVC, да даже различных корпусах и не смею мечтать.

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

к довольно сильным помехам на питании.

 

 

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

 

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

Объясните, пожалуйста, что обозначают частоты внизу и что означают числа сверху ?

 

Что на картинке - увы, без подробностей не понятно.

Не знаю как LPC2103, а вот LPC1768 переключает внешние ноги вполне быстро. Вполне получаются 10 нс импульсы на тактовой в 100 Мгц.

Но толку то от этого... Квитирующих сигналов ведь нет.

У Вас цикл вывода как организован?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цикл вывода (Write Cycle 3, согласно даташиту): /WE и /OE фиксированны в low, устанавливается новый адрес, /CS устанавливается в low, и в течение 10нс необходимо, чтобы были выставлены данные, потом /CS устанавливается в high

Не знаю как LPC2103, а вот LPC1768 переключает внешние ноги вполне быстро. Вполне получаются 10 нс импульсы на тактовой в 100 Мгц.

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

Изменено пользователем artymen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правильно понял, Вы задачу формулируете так

1. есть сигнал СS, который управляет двумя конфликтующими микросхемами, одну активирует, вторую отключает.

2. одновременно с этим сигналам прямо в морду двум микросхемам выставляются данные

3. микросхемы меняются телами в течение 8.5 ns, пытаясь спалить друг друга.

4. памагите:)

 

Вариант только один, использовать внешний шинник, который придержит данные на эти 8.5ns, но это нереально.

Реально поставить резисторы, давят они друг друга, ну и пусть давят, снизить токи до приемлемого уровня. Да резисторы снизят крутизну фронтов, но сейчас безобразие еще хуже, и ничего, данные нормально бегают. Возможно все еще лучше станет работать. Какие там нагрузки емкостные, какая скорость обмена данными. Есть ли возможность поставить сопротивления.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, задача именно такая :)

единственный вариант, который я вижу, это сделать задержку на прохождение /CS настолько, насколько задержится выставление данных + 10нс

если ставить резисторы, то ведь это 8 штук... может проще все-таки задержку сделать ? есть же спец. схемы задержки ?

а про одинаковые данные я уже думал, увы, это невозможно

 

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

Изменено пользователем artymen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...