Цитата
А как вообще проблема решается, когда на общей шине, например, 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. Запись/чтение - аналогично пунктам выше.