|
|
  |
Кратковременное КЗ на КМОП-выходах микросхем, насколько опасно/вредно ? |
|
|
|
Apr 29 2010, 11:51
|
Местный
  
Группа: Свой
Сообщений: 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
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 29 2010, 13:03
|

Участник

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

|
ааа, все, понял ! что-то я протупил. совсем уж запутался в даташите, теперь все объясняется :D спасибо !  а вот дурацкие коллизии все равно где-нибудь да будут вылазить при любых комбинациях управления двумя сигналами из трех и при всех вомзожных режимах чтения/записи. самое идеальное, что можно сделать, это через дешифратор переключать микрухи, тогда они переключатсья будут одновременно, да только вот задержки у них разные, они отличаются как между схемами, так и еще в зависимости от направления изменения состояния, в-среднем получатся коллизии ну минимум 4-5 нс. Ну хоть 4-5 нс то можно допустить ? Цитата Выставляйте данные при неактивных WE, OE, выбирайте нужную ИС чипселектом и инициируйте запись по WE! То же для чтения (OE). Или вам для WE, OE ножек не хватает? да, вся проблема только в этом, т.е. приходится идти на какие-то схемотехнические комбинации, и пока мне не удалось придумать так, чтобы ни одной коллизии нигде не возникало
Сообщение отредактировал artymen - Apr 29 2010, 13:06
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 14:54
|

Участник

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

|
А как вообще проблема решается, когда на общей шине, например, 10 буферных регистров, и все они имеют разные задержки, да еще в зависимости от направления переключения и уровней, в которые они должны перейти, или с которых уйти ? МК каждым персонально управляет, запоминая, что каждый выдавал в последний раз (а инфа может быть уже неактуальная, пока регистр был отключен, на него могли новые данные поступить, и когда его включишь, неизвестно с какой задержкой выставятся данные), сравнивая и выбирая нужную послеовательность переключения ??? Какое-то садомазо получается.... А если через дешифратор, то переключение будет происходить одновременно, и коллизия обязательно возникнет хотя бы при одной комбинации...
Сообщение отредактировал artymen - Apr 29 2010, 14:57
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 16:05
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977

|
Цитата(artymen @ Apr 29 2010, 18:54)  А как вообще проблема решается, когда на общей шине, например, 10 буферных регистров, и все они имеют разные задержки, да еще в зависимости от направления переключения и уровней, в которые они должны перейти, или с которых уйти ? Если есть мастер на шине - то никаких проблем. Все регистры стоят на ввод. Нужный мастер переключает на вывод, ждет сколько надо, переключает на ввод, ждет сколько надо. И все с начала.
Сообщение отредактировал rezident - Apr 30 2010, 20:26
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Apr 29 2010, 16: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. Запись/чтение - аналогично пунктам выше.
|
|
|
|
|
Apr 29 2010, 17:16
|

Участник

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

|
ну это понятно, коль тремя сигналами управлять. я то двумя только хочу, в этом и состояит вся проблема. На шине сидит МК, память и буферный регистр. А еще эти сигналы должны обеспечить выключение/включение буфера. Цитата Сигнал CS на каждый буфер/микросхему памяти решает эту проблему. Дешифраторы обычно имеют вывод разрешения. Та что можно между разными CS-ами организовывать зазоры, которые должны быть больше, чем самая максимальная задержка перехода буферных регистров в 3-е состояние. на вывод разрешения тоже сигнал нужен, а все, кончились  тем более во время зазора дешифратор выдает hi-z, а не фиксированные единицы, которые выключили бы все микросхемы. в-общем, мне нужно что-то вроде дешифратора, который при переключении сначала изменяемые выходы в единицы устанавливает, ждет, и только потом переключает (или другими словами, переносит единицу плавно, или "смазанно"). в принципе, дешифратор - громко сказано, у меня всего две микросхемы. наверное, можно такую логику сделать на триггерах и/или каких-нибудь экзотичных неочевидных логических элекментах
Сообщение отредактировал artymen - Apr 29 2010, 17:18
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 17:35
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017

|
Цитата во время зазора дешифратор выдает hi-z Это смотря какой дешифратор. Эти выдают "1": 74HC155, 74HC139 Цитата А еще эти сигналы должны обеспечить выключение/включение буфера. Буфер включается тоже лог."0"? Какой тип буфера?
|
|
|
|
|
Apr 29 2010, 17:36
|

Участник

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

|
да. 74AC374N
Сообщение отредактировал artymen - Apr 29 2010, 17:37
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 18:05
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017

|
Т.е., если я правильно понимаю, режимы работы следующие (предположил, что /CS идет на вход буфера /ОЕ через инвертор): Код /OE - всегда в "0" /CS /WE 0 0 - запись данных в память 0 1 - чтение данных из памяти 1 х - чтение данных из буфера
|
|
|
|
|
Apr 29 2010, 18:14
|

Участник

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

|
да, на данный момент этот вариант занимает лидирующее место в моей голове  о ! похоже, что 74*257 отлично решает все проблемы ! только вот бы найти 8битный аналог, чтобы вторую микросхему не городить... щас внимательно даташит посмотрю и продумаю, вдруг какой фокус опять возникнет...  а, не, он не двунаправленный...
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 18:29
|

Участник

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

|
нет Цитата При 1 на этих ногах данные будут попадать на выходы защелок внутри микросхемы, но не будут проходить на выход, а при переходе в 0 данные появятся на выходе, и вход не будет на них влиять. да мне не важно, что на входе буфера и как это пройдет на выход, важно, чтобы выход не создавал конфликта на шине
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 19:37
|

Участник

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

|
значит смириться с коллизиями, погасив их резисторами ? я брал typical для температуры 25 градусов, только промахнулся, 10.5 нс тогда получается З.Ы. а почему тогда резисторы не встроены уже, раз они так легко решают проблему коллизий... тут какой то подвох есть ?
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|