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

 
 
> Кратковременное КЗ на КМОП-выходах микросхем, насколько опасно/вредно ?
artymen
сообщение Apr 28 2010, 18:52
Сообщение #1


Участник
*

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



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


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 32)
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
Александр Куличо...
сообщение Apr 29 2010, 11:51
Сообщение #16


Местный
***

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



Цитата
я уже четвертый раз объясняю: память, получив сигнал CS считывает с шины данные спустя 10нс, это значит, что МК ДОЛЖЕН успеть за это время их выставить

Память считывает с шины данные по фронту /CS, который должен нужно подавать не ранее, чем через 7нс (tcw) после спада. А данные МК ДОЛЖЕН выставить как минимум за t_DW (5ns) до этого фронта (который Вы формируете сами). При этом ограничений на максимальное время низкого уровня на /CS нет.

На рисунке ниже время между красными вертикалями можно растянуть до бесконечности.


Цитата
просто обычно принято, что процессор намного быстрее памяти

Процессор на тактовой 1МГц прекрасно работает с 10-нс памятью. Иначе пришлось бы иcкать память с временем доступа >1000ns
Цитата
и вовсе необязательно дергать каждый раз /CS, /WE и /OE туда-сюда, а достаточно лишь зафиксировать их в соотвествующие режиму уровни ?

При чтении - можно только менять адреса. Для записи при активных уровнях на /CS и /WE менять адрес нельзя. В некоторых типах микросхем адрес менять можно, но только через определенное время удержания адреса, которое отсчитывается после спада /CS или /WE
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
V_G
сообщение Apr 29 2010, 12:53
Сообщение #17


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

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



Так я и не понял, зачем фиксировать WE, OE в каком-то статичном состоянии (честно, смотреть конкретные временные диаграммы лень, но принципы управления всеми ИС памяти одинаковы).
Выставляйте данные при неактивных WE, OE, выбирайте нужную ИС чипселектом и инициируйте запись по WE! То же для чтения (OE). Или вам для WE, OE ножек не хватает?
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 13:03
Сообщение #18


Участник
*

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



ааа, все, понял ! что-то я протупил. совсем уж запутался в даташите, теперь все объясняется :D спасибо ! smile.gif
а вот дурацкие коллизии все равно где-нибудь да будут вылазить при любых комбинациях управления двумя сигналами из трех и при всех вомзожных режимах чтения/записи. самое идеальное, что можно сделать, это через дешифратор переключать микрухи, тогда они переключатсья будут одновременно, да только вот задержки у них разные, они отличаются как между схемами, так и еще в зависимости от направления изменения состояния, в-среднем получатся коллизии ну минимум 4-5 нс. Ну хоть 4-5 нс то можно допустить ?
Цитата
Выставляйте данные при неактивных WE, OE, выбирайте нужную ИС чипселектом и инициируйте запись по WE! То же для чтения (OE). Или вам для WE, OE ножек не хватает?
да, вся проблема только в этом, т.е. приходится идти на какие-то схемотехнические комбинации, и пока мне не удалось придумать так, чтобы ни одной коллизии нигде не возникало

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


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


Участник
*

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



А как вообще проблема решается, когда на общей шине, например, 10 буферных регистров, и все они имеют разные задержки, да еще в зависимости от направления переключения и уровней, в которые они должны перейти, или с которых уйти ? МК каждым персонально управляет, запоминая, что каждый выдавал в последний раз (а инфа может быть уже неактуальная, пока регистр был отключен, на него могли новые данные поступить, и когда его включишь, неизвестно с какой задержкой выставятся данные), сравнивая и выбирая нужную послеовательность переключения ??? Какое-то садомазо получается.... А если через дешифратор, то переключение будет происходить одновременно, и коллизия обязательно возникнет хотя бы при одной комбинации...

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


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


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

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



Цитата(artymen @ Apr 29 2010, 18:54) *
А как вообще проблема решается, когда на общей шине, например, 10 буферных регистров, и все они имеют разные задержки, да еще в зависимости от направления переключения и уровней, в которые они должны перейти, или с которых уйти ?


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

Сообщение отредактировал rezident - Apr 30 2010, 20:26
Причина редактирования: Нарушение п.3.4 Правил форума.
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Apr 29 2010, 16:21
Сообщение #21


Местный
***

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



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

Сигнал CS на каждый буфер/микросхему памяти решает эту проблему. Дешифраторы обычно имеют вывод разрешения. Та что можно между разными CS-ами организовывать зазоры, которые должны быть больше, чем самая максимальная задержка перехода буферных регистров в 3-е состояние.

Для используемых микросхем памяти коллизий вроде не предвидится, если данные снимать вместе с фронтом /CS (время удержания данных t_DH для них == 0). Но удобнее, конечно, было бы ипользовать для 2х корпусов разные CSы Или запись осуществлять не по /CS, а по /WE. Кстати, у Вас вывод /WE жестко засажен на землю или как? Если подключен к контроллеру, то почему используете запись по /CS?

Цитата
самое идеальное, что можно сделать, это через дешифратор переключать микрухи

Самое идеальное - это использовать штатные выводы микросхемы памяти и использовать их по прямому назначению, как выше рекомендовал V_G, а не заниматься извратом типа "запись по CS".
Алгоритм следующий:
1. выбираете CS-ом нужную микросхему(банк памяти).
2а. Для записи в нее используете /WE (/CS при этом "дергать" не надо).
2б. Для чтения, соответственно, используете /OE. При последовательных чтениях можно только менять адрес (при /ОЕ==0).
Для переключения на вторую микросхему:
1. Отдельной командой выставляете на /CS и /OE уровень лог."1" (если его там не было)
2. Далее выбираете CS-ом вторую микросхему. Зазор минимум в 1 такт процессора между п.1 и п.2 обеспечит выдержку времени t_OHZ (5ns)
3. Запись/чтение - аналогично пунктам выше.
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 17:16
Сообщение #22


Участник
*

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



ну это понятно, коль тремя сигналами управлять. я то двумя только хочу, в этом и состояит вся проблема. На шине сидит МК, память и буферный регистр. А еще эти сигналы должны обеспечить выключение/включение буфера.
Цитата
Сигнал CS на каждый буфер/микросхему памяти решает эту проблему. Дешифраторы обычно имеют вывод разрешения. Та что можно между разными CS-ами организовывать зазоры, которые должны быть больше, чем самая максимальная задержка перехода буферных регистров в 3-е состояние.
на вывод разрешения тоже сигнал нужен, а все, кончились smile.gif тем более во время зазора дешифратор выдает hi-z, а не фиксированные единицы, которые выключили бы все микросхемы.

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

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


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


Местный
***

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



Цитата
во время зазора дешифратор выдает hi-z

Это смотря какой дешифратор. Эти выдают "1": 74HC155, 74HC139
Цитата
А еще эти сигналы должны обеспечить выключение/включение буфера.

Буфер включается тоже лог."0"? Какой тип буфера?
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 17:36
Сообщение #24


Участник
*

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



да. 74AC374N

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


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


Местный
***

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



Т.е., если я правильно понимаю, режимы работы следующие (предположил, что /CS идет на вход буфера /ОЕ через инвертор):

Код
/OE - всегда в "0"
/CS /WE  
  0   0  - запись данных в память
  0   1  - чтение данных из памяти
  1   х  -  чтение данных из буфера
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 18:14
Сообщение #26


Участник
*

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



да, на данный момент этот вариант занимает лидирующее место в моей голове smile.gif

о ! похоже, что 74*257 отлично решает все проблемы ! только вот бы найти 8битный аналог, чтобы вторую микросхему не городить... щас внимательно даташит посмотрю и продумаю, вдруг какой фокус опять возникнет... smile.gif

а, не, он не двунаправленный...


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


Местный
***

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



Стробом на буфер тоже контроллер управляет? Если да, то рассмотрите возможность применения 74AC373, соединив ее выводы LE и /OE вместе
При 1 на этих ногах данные будут попадать на выходы защелок внутри микросхемы, но не будут проходить на выход, а при переходе в 0 данные появятся на выходе, и вход не будет на них влиять.
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 18:29
Сообщение #28


Участник
*

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



нет

Цитата
При 1 на этих ногах данные будут попадать на выходы защелок внутри микросхемы, но не будут проходить на выход, а при переходе в 0 данные появятся на выходе, и вход не будет на них влиять.
да мне не важно, что на входе буфера и как это пройдет на выход, важно, чтобы выход не создавал конфликта на шине


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


Местный
***

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



Тогда самый простой вариант, если есть место на плате, - это поставить в разрыв на шину данных буфера резисторы по 330..500 Ом.
Насчет длительности коллизий. Вроде как для 74AC374 максимальное время " Output Disable Time" при 3,3В составляет ~14.5 нс, а не 8,5
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 29 2010, 19:37
Сообщение #30


Участник
*

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



значит смириться с коллизиями, погасив их резисторами ?
я брал typical для температуры 25 градусов, только промахнулся, 10.5 нс тогда получается

З.Ы. а почему тогда резисторы не встроены уже, раз они так легко решают проблему коллизий... тут какой то подвох есть ? wink.gif


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


Местный
***

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



да, уменьшение выходного тока и, как следствие, снижение частоты/завалы фронтов при увеличении емкости нагрузки (количества подключенных входов)
Go to the top of the page
 
+Quote Post
artymen
сообщение Apr 30 2010, 08:17
Сообщение #32


Участник
*

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



Я придумал, как решить проблему ! Этот вариант я рассматривал и забраковал, когда еще неверно представлял режим работы памяти, теперь он подходит.
На вход /OE буфера будет подаваться логическое "НЕ И" из /CS и /WE. Таким образом, буфер будет включен только при высоких уровнях /CS и /WE. В режиме чтения сигналы будут фиксированы так, что буфер будет отключен и МК спокойно будет читать из памяти, переключая лишь адрес, а запись я обеспечу 3-им циклом (/CS controlled), где /WE будет фиксирован в низком уровне, и можно будет спокойно дергать /CS-ом, не вызывая дергания буфера с коллизиями. Ну а переход между режимами чтения и записи я буду осуществлять такой последовательностью переключения сигналов, чтобы не позволить им одновременно быть высокого уровня, тем самым предовтратив даже кратковременное вкючение буфера.

Правда, /CS-ом мне очень удобно было два счетчика-регистра инкрементировать, которые адрес выставляют для памяти, поэтому при чтении все-таки придется дергать /CS-ом, но синхронно с /WE (надеюсь, МК обновляет пины одновременно, ну или хотя бы с разницей в 1-2нс, которые могут привести к кратковременному выполнению условия "НЕ И", но 1-2нс то можно позволить, я надеюсь ? тем более, у меня компоненты далеко не высокоскоростные, и, я полагаю, емкости проводников и нагрузки не сопоставимы с такими крутыми фронтами, чтобы за 1-2 нс ток успел сильно вырасти, а уж тем более еще продержаться).

Ну и плюс, при написании программы, мне придется быть очень внимательным, учитывая все ньюансы извращенной логики, заложенной мною схемотехнически smile.gif Столько мучений, чтобы отвоевать у МК свободный пин ninja.gif

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


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


Местный
***

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



Цитата
На вход /OE буфера будет подаваться логическое "НЕ И" из /CS и /WE

Вы, скорее всего, имели ввиду логическое И-НЕ. Вернее, 2И-НЕ
Цитата
Столько мучений, чтобы отвоевать у МК свободный пин

Да уж. Здесь проще было бы взять камень побольше. В итоговом случае, возможно, все вышло бы дешевле, если разработка не серийная (учитывая стоимость места на ПП и затраченное время).

Вы бы привели общую блок-схему устройства с кратким описанием. Может, совмесными усилиями и отвоевали бы пару-другую пинов для памяти. Или сами рассмотрите, например, возможность применения сдвиговых регистров с параллельным входом/выходом (74hc595, 74hc165, 74hc299...).
Цитата
при чтении все-таки придется дергать /CS-ом, но синхронно с /WE

а то, что это передергивание эквивалентно записи в память - не помешает?
Go to the top of the page
 
+Quote Post

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

 


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


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