Пирамидальная память (эврика)!
На рисунке показана память, состоящая из 2+4+8+16=30 ячеек.
В зеленой рамке подробно нарисована одна ячейка памяти.
На шине ADR0-ADR3 выставляется адрес 0000-1111, всего возможно 32 адреса.
На шине ADR0-ADR3 выставляется инвертированный адрес 1111-0000.
Также имеется шина LEV0-LEV3, которая определяет уровень чтения памяти, единица может быть только на одной из линий этой шины.
Ячейка памяти устроена просто - на вход INPUT подается сигнал.
Если сигнал 1, то данные считываются из ячейки М.
Сигнал с INPUT передается дальше на два логических элемента "И", которые логически умножают его на сигнал с шины адреса и на инвертированный сигнал с этого же уровня адреса. Можно было бы использовать инвертор, но лучше один раз инвертировать сигнал, сэкономив на элементной базе.
Далее сигналы с левого и правого выхода LOG передаются на входы INPUT нижестоящих элементов.
Все шины DATA объединены в одну.
Первая ячейка имеет особенность - на нее сигнал передается не с шины LOG, а сразу с ADR0 (ячейка 0) и NADR0 (ячейка 1).
Логика работы прозрачна.
На последнем уровне логических элементов "И" нет.
В данной схеме 30 ячеек памяти и 28 элементов "И".
В матричной схеме было бы 30 ячеек памяти, 30 элементов "И" и еще логические элементы для дешифраторов.
За счет меньшего количества логических элементов происходит меньшее энергопотребление и нагрев платы.
Как видно, по сравнению с матричной схемой, мы экономим на дешифраторах, т.к. используем результаты дешифрации адреса в последующей навигации по адресам.
На картинке у нас четыре уровня адресов.
Также на картинке указано, как можно разместить четыре пирамиды на одной квадратной плате.
LI 5.09.15