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

Участник

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

|
У меня две КМОП-микрухи разделяют общую шину данных. Что, если периодически будут возникать коллизии не дольше, чем на 8.5 нс, с интервалом, во-много раз большим ? Не выгорят ли выводы сразу, или, того хуже, не заглючит ли устройство ни с того ни с сего, скажем, через полгода ?
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
Apr 28 2010, 19:35
|

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

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

Участник

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

|
У моего МК просто очень мало свободных ног осталось, и я экономлю их, нагромождая внешнюю логику. И все шикарно выходит, за исключением этой мизерной коллизии, которая возникнет из-за того, что из-за медленности МК я вынужден выставлять сигнал выбора чипа (/CS) уже вместе с данными (заранее, т.к. принимающая память быстрее МК, в следующем такте уже опоздаю). /CS при этом через инвертор переведет другой чип в Hi-Z состояние, но это произойдет, к сожалению, с задержкой, в то время как данные микроконтроллером уже будут выставлены. (Кстати, я забыл что надо еще добавить задержку инвертора, я микросхему конкретную пока еще не выбрал.)
Значит даже эти кратковременные коллизии вредны и есть реальная необходимость реализовать задержку (хотя бы элементарно RC-цепочкой) ? Впрочем, мне придется аж 8 линий задержать...
Сообщение отредактировал artymen - Apr 28 2010, 19:39
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 28 2010, 22:54
|

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

|
А тактовую поднять, чтобы все успевало? Хотя непонятно, почему CS и данные у вас выставляются одновременно, это на каком контроллере и какой программой вы так сумели? И почему, если внешняя память быстрая, нельзя сначала выставить данные, а следующей командой CS, как и положено по временным диаграммам? Потому как с вашими гонками на краю допустимых временных соотношений, вы еще можете получить и нестабильную/ненадежную запись во внешнюю память. Даже при том, что КМОП выходы не грохнутся.
|
|
|
|
|
Apr 29 2010, 05:04
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977

|
Цитата(artymen @ Apr 28 2010, 23:37)  У моего МК просто очень мало свободных ног осталось, и я экономлю их, нагромождая внешнюю логику. И все шикарно выходит, за исключением этой мизерной коллизии, которая возникнет из-за того, что из-за медленности МК я вынужден выставлять сигнал выбора чипа (/CS) уже вместе с данными (заранее, т.к. принимающая память быстрее МК, в следующем такте уже опоздаю). /CS при этом через инвертор переведет другой чип в Hi-Z состояние, но это произойдет, к сожалению, с задержкой, в то время как данные микроконтроллером уже будут выставлены. (Кстати, я забыл что надо еще добавить задержку инвертора, я микросхему конкретную пока еще не выбрал.)
Значит даже эти кратковременные коллизии вредны и есть реальная необходимость реализовать задержку (хотя бы элементарно RC-цепочкой) ? Впрочем, мне придется аж 8 линий задержать... Была в свое время идея - сделать на КМОП выход с открытым стоком ( готовых было не достать ) путем сжигания верхнего транзистора. Постигла неудача - транзистор нагревается и перестает пропускать большой ток. Удалось только выжечь выход полностью да и то, с большим трудом. Вы инвертор поставте на быстром КМОП типа LVC ( у него задержка меньше наны ). Да и буфер тоже. Стоят они столько же, если не дешевле HC и точно дешевле 4000_ных. А коллизии - плохо из за повышенного потребления и наводок. Сжечь ими КМОП вряд ли удастся.
|
|
|
|
|
Apr 29 2010, 05:56
|

Участник

Группа: Участник
Сообщений: 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
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 06:36
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017

|
Какая а Вас стоит память? И как она включена? а то я что-то не могу понять, куда она спешит, и почему нельзя данные подавать чуть позже CS. Цитата ...то память прочитает невыставленные данные быстрее Т.е. у Вас процессом записи в память у Вас управляет не контроллер, а какая-то иная часть схемы? Обычная статическая память по спаду /CS (или /WЕ) считывает адрес, а по фронту сигнала /CS (или /WЕ) пишет(сохраняет) данные.
|
|
|
|
|
Apr 29 2010, 06:42
|

Участник

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

|
асинхронная SRAM-память K6R4008C1D. но это не ей нужно, а мне  просто обычно принято, что процессор намного быстрее памяти, а у меня наоборот, и отсюда такие фокусы  Цитата Т.е. у Вас процессом записи в память у Вас управляет не контроллер, а какая-то иная часть схемы? нет. я уже четвертый раз объясняю: память, получив сигнал CS считывает с шины данные спустя 10нс, это значит, что МК ДОЛЖЕН успеть за это время их выставить, но следующий такт наступит только через 17нс, а указанные в этом такте данные выставятся еще спустя через 34 нс (если я правильно понимаю быстродействие портов МК). едниственный способ сократить эту задержку (а точнее, вообще убрать) - одновременно выставить и CS и данные, но сигнал CS помимо своей основной функции отключает другую конфликтующую микросхему от шины, но происходит это с задержкой, и пока та микросхема будет отключаться 8.5 нс, ее данные будут конфликтовать с уже выставленными МК данными. Я могу, конечно, сначала отключить ту микросхему отдельным сигналом, после чего спокойно записывать в память, но это потребует дополнительного пина МК, а пины дефицитные
Сообщение отредактировал artymen - Apr 29 2010, 07:20
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 07:23
|
Частый гость
 
Группа: Участник
Сообщений: 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 Мгц. Но толку то от этого... Квитирующих сигналов ведь нет. У Вас цикл вывода как организован?
|
|
|
|
|
Apr 29 2010, 07:51
|

Участник

Группа: Участник
Сообщений: 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
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 29 2010, 08:58
|
Группа: Участник
Сообщений: 5
Регистрация: 29-04-10
Пользователь №: 56 971

|
Если я правильно понял, Вы задачу формулируете так 1. есть сигнал СS, который управляет двумя конфликтующими микросхемами, одну активирует, вторую отключает. 2. одновременно с этим сигналам прямо в морду двум микросхемам выставляются данные 3. микросхемы меняются телами в течение 8.5 ns, пытаясь спалить друг друга. 4. памагите  Вариант только один, использовать внешний шинник, который придержит данные на эти 8.5ns, но это нереально. Реально поставить резисторы, давят они друг друга, ну и пусть давят, снизить токи до приемлемого уровня. Да резисторы снизят крутизну фронтов, но сейчас безобразие еще хуже, и ничего, данные нормально бегают. Возможно все еще лучше станет работать. Какие там нагрузки емкостные, какая скорость обмена данными. Есть ли возможность поставить сопротивления. Еще вариант, две микросхемы давят друг друга потому что у них разные данные. А если перед сменой шины выставить на обоих одинаковые данные. Тогда давить не будут.
|
|
|
|
|
Apr 29 2010, 09:20
|

Участник

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

|
да, задача именно такая  единственный вариант, который я вижу, это сделать задержку на прохождение /CS настолько, насколько задержится выставление данных + 10нс если ставить резисторы, то ведь это 8 штук... может проще все-таки задержку сделать ? есть же спец. схемы задержки ? а про одинаковые данные я уже думал, увы, это невозможно а, тьфу, че это я мучаюсь. все эти варианты циклов чтения и записи в даташите приведены лишь для того, чтобы показать какие тайминги надо выдерживать при смене управляющих сигналов ? правильно ли я понимаю, что фактически чтение/запись инициируется сменой адреса ? и вовсе необязательно дергать каждый раз /CS, /WE и /OE туда-сюда, а достаточно лишь зафиксировать их в соотвествующие режиму уровни ?
Сообщение отредактировал artymen - Apr 29 2010, 09:57
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
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 нс тогда получается З.Ы. а почему тогда резисторы не встроены уже, раз они так легко решают проблему коллизий... тут какой то подвох есть ?
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
Apr 30 2010, 08:17
|

Участник

Группа: Участник
Сообщений: 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 нс ток успел сильно вырасти, а уж тем более еще продержаться). Ну и плюс, при написании программы, мне придется быть очень внимательным, учитывая все ньюансы извращенной логики, заложенной мною схемотехнически  Столько мучений, чтобы отвоевать у МК свободный пин
Сообщение отредактировал artymen - Apr 30 2010, 08:20
--------------------
"Сознание своего несовершенства приближает к совершенству" Гёте
|
|
|
|
|
May 4 2010, 15:17
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017

|
Цитата На вход /OE буфера будет подаваться логическое "НЕ И" из /CS и /WE Вы, скорее всего, имели ввиду логическое И-НЕ. Вернее, 2И-НЕ Цитата Столько мучений, чтобы отвоевать у МК свободный пин Да уж. Здесь проще было бы взять камень побольше. В итоговом случае, возможно, все вышло бы дешевле, если разработка не серийная (учитывая стоимость места на ПП и затраченное время). Вы бы привели общую блок-схему устройства с кратким описанием. Может, совмесными усилиями и отвоевали бы пару-другую пинов для памяти. Или сами рассмотрите, например, возможность применения сдвиговых регистров с параллельным входом/выходом (74hc595, 74hc165, 74hc299...). Цитата при чтении все-таки придется дергать /CS-ом, но синхронно с /WE а то, что это передергивание эквивалентно записи в память - не помешает?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|