Урок 3. Память 256×4: та же схема на уровень выше

В картинках

После этого урока у вас будет RAM256x4 — 256 слов по 4 бита, 128 байт: ровно столько, сколько памяти в машине процессорного набора. Новых идей почти нет: шестнадцать чипов RAM16x4 из урока 2 собираются в большую память так же, как шестнадцать строк собирались в RAM16x4.


3.1. Идея: адрес делится пополам

Адрес 8 бит: A7 A6 A5 A4 | A3 A2 A1 A0.

  • Младшие 4 бита идут во все 16 блоков сразу — в каждом выбирают ячейку внутри блока.
  • Старшие 4 бита → DEC16 зажигает один провод b0–b15 — какой блок работает: AND(bN, WE) — запись только в этот блок; AND(выход блока, bN) — только его данные идут дальше.
  • ИЛИ 16 блоков по каждому биту — на выходе ячейка выбранного блока.
адрес00100101A7–A4 = 2A3–A0 = 5DEC16блокво все блоки: ячейка 5RAM16x4блок 0RAM16x4блок 1RAM16x4блок 2RAM16x4блок 15⋯WE и «пропустить» —только блоку 2ИЛИ блоков → Q
256×4 из шестнадцати 16×4 — та же схема на уровень выше. Младшие 4 бита адреса идут во все блоки сразу и выбирают ячейку внутри блока; старшие 4 бита через DEC16 выбирают блок: только он получает WE, только его выход проходит в ИЛИ.
Внутри RAM16x4Внутри RAM256x4
DEC16 выбирает строку WORD4DEC16 выбирает блок RAM16x4
AND(r, WE) — запись только в эту строкуAND(b, WE) — WE только этому блоку
AND(q, R) — строка отдаёт, только выбраннаяAND(Q, b) — блок отдаёт, только выбранный
ИЛИ 16 строкИЛИ 16 блоков

Пример. Адрес 0010 0101 (hex 25): старшие 0010 = 2 — работает блок 2; младшие 0101 = 5 — в нём ячейка 5. Адрес 0001 0101 (15) — ячейка 5, но блока 1: другая ячейка.

3.2. Цена

Почти вся память — защёлки: 1 024 бита × 22 транзистора. Вместе с выбором строк и деревьями ИЛИ чип RAM256x4 — 41 840 транзисторов, в семь раз больше всего процессора. В REAL такая схема считается медленно: после щелчка тумблером табло обновляется через секунду-две. В Fast — сразу.

3.3. Сборка

Шаг 1. Убрать стенд урока 2

Стенд урока 3 использует те же метки mA, mD, mQ. Две детали на одной метке — закоротка, поэтому сначала удалить стенд урока 2 (чипы в библиотеке остаются):

ЭлементДействие
Input, выход которого = mA0удалить
Input, выход которого = mA1удалить
Input, выход которого = mA2удалить
Input, выход которого = mA3удалить
Input, выход которого = mD0удалить
Input, выход которого = mD1удалить
Input, выход которого = mD2удалить
Input, выход которого = mD3удалить
Button WE, выход которого = mWEудалить
RAM16x4, выход которого = mQ0удалить
три табло (шины mA, mD, mQ)удалить

Питание VCC/GND и стенд урока 1 можно оставить.

Шаг 2. Чип RAM256x4

Что собираем. Выбор блока, 16 «запиши», 16 блоков, 64 «пропустить» и дерево ИЛИ.

ПОРТЫ-ВХОДЫ: A0, A1, A2, A3, A4, A5, A6, A7, D0, D1, D2, D3, WE · ПОРТЫ-ВЫХОДЫ: Q0, Q1, Q2, Q3

ЭлементНогаНаправлениеМетка
DEC16I0входA4
DEC16I1входA5
DEC16I2входA6
DEC16I3входA7
DEC16Y0выходb0
DEC16Y1выходb1
DEC16Y2выходb2
DEC16Y3выходb3
DEC16Y4выходb4
DEC16Y5выходb5
DEC16Y6выходb6
DEC16Y7выходb7
DEC16Y8выходb8
DEC16Y9выходb9
DEC16Y10выходb10
DEC16Y11выходb11
DEC16Y12выходb12
DEC16Y13выходb13
DEC16Y14выходb14
DEC16Y15выходb15
ANDI0входb0
ANDI1входWE
ANDO0выходw0
ANDI0входb1
ANDI1входWE
ANDO0выходw1
ANDI0входb2
ANDI1входWE
ANDO0выходw2
ANDI0входb3
ANDI1входWE
ANDO0выходw3
ANDI0входb4
ANDI1входWE
ANDO0выходw4
ANDI0входb5
ANDI1входWE
ANDO0выходw5
ANDI0входb6
ANDI1входWE
ANDO0выходw6
ANDI0входb7
ANDI1входWE
ANDO0выходw7
ANDI0входb8
ANDI1входWE
ANDO0выходw8
ANDI0входb9
ANDI1входWE
ANDO0выходw9
ANDI0входb10
ANDI1входWE
ANDO0выходw10
ANDI0входb11
ANDI1входWE
ANDO0выходw11
ANDI0входb12
ANDI1входWE
ANDO0выходw12
ANDI0входb13
ANDI1входWE
ANDO0выходw13
ANDI0входb14
ANDI1входWE
ANDO0выходw14
ANDI0входb15
ANDI1входWE
ANDO0выходw15
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw0
RAM16x4Q0выходm0_0
RAM16x4Q1выходm0_1
RAM16x4Q2выходm0_2
RAM16x4Q3выходm0_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw1
RAM16x4Q0выходm1_0
RAM16x4Q1выходm1_1
RAM16x4Q2выходm1_2
RAM16x4Q3выходm1_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw2
RAM16x4Q0выходm2_0
RAM16x4Q1выходm2_1
RAM16x4Q2выходm2_2
RAM16x4Q3выходm2_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw3
RAM16x4Q0выходm3_0
RAM16x4Q1выходm3_1
RAM16x4Q2выходm3_2
RAM16x4Q3выходm3_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw4
RAM16x4Q0выходm4_0
RAM16x4Q1выходm4_1
RAM16x4Q2выходm4_2
RAM16x4Q3выходm4_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw5
RAM16x4Q0выходm5_0
RAM16x4Q1выходm5_1
RAM16x4Q2выходm5_2
RAM16x4Q3выходm5_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw6
RAM16x4Q0выходm6_0
RAM16x4Q1выходm6_1
RAM16x4Q2выходm6_2
RAM16x4Q3выходm6_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw7
RAM16x4Q0выходm7_0
RAM16x4Q1выходm7_1
RAM16x4Q2выходm7_2
RAM16x4Q3выходm7_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw8
RAM16x4Q0выходm8_0
RAM16x4Q1выходm8_1
RAM16x4Q2выходm8_2
RAM16x4Q3выходm8_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw9
RAM16x4Q0выходm9_0
RAM16x4Q1выходm9_1
RAM16x4Q2выходm9_2
RAM16x4Q3выходm9_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw10
RAM16x4Q0выходm10_0
RAM16x4Q1выходm10_1
RAM16x4Q2выходm10_2
RAM16x4Q3выходm10_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw11
RAM16x4Q0выходm11_0
RAM16x4Q1выходm11_1
RAM16x4Q2выходm11_2
RAM16x4Q3выходm11_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw12
RAM16x4Q0выходm12_0
RAM16x4Q1выходm12_1
RAM16x4Q2выходm12_2
RAM16x4Q3выходm12_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw13
RAM16x4Q0выходm13_0
RAM16x4Q1выходm13_1
RAM16x4Q2выходm13_2
RAM16x4Q3выходm13_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw14
RAM16x4Q0выходm14_0
RAM16x4Q1выходm14_1
RAM16x4Q2выходm14_2
RAM16x4Q3выходm14_3
RAM16x4A0входA0
RAM16x4A1входA1
RAM16x4A2входA2
RAM16x4A3входA3
RAM16x4D0входD0
RAM16x4D1входD1
RAM16x4D2входD2
RAM16x4D3входD3
RAM16x4WEвходw15
RAM16x4Q0выходm15_0
RAM16x4Q1выходm15_1
RAM16x4Q2выходm15_2
RAM16x4Q3выходm15_3
ANDI0входm0_0
ANDI1входb0
ANDO0выходc0_0
ANDI0входm0_1
ANDI1входb0
ANDO0выходc0_1
ANDI0входm0_2
ANDI1входb0
ANDO0выходc0_2
ANDI0входm0_3
ANDI1входb0
ANDO0выходc0_3
ANDI0входm1_0
ANDI1входb1
ANDO0выходc1_0
ANDI0входm1_1
ANDI1входb1
ANDO0выходc1_1
ANDI0входm1_2
ANDI1входb1
ANDO0выходc1_2
ANDI0входm1_3
ANDI1входb1
ANDO0выходc1_3
ANDI0входm2_0
ANDI1входb2
ANDO0выходc2_0
ANDI0входm2_1
ANDI1входb2
ANDO0выходc2_1
ANDI0входm2_2
ANDI1входb2
ANDO0выходc2_2
ANDI0входm2_3
ANDI1входb2
ANDO0выходc2_3
ANDI0входm3_0
ANDI1входb3
ANDO0выходc3_0
ANDI0входm3_1
ANDI1входb3
ANDO0выходc3_1
ANDI0входm3_2
ANDI1входb3
ANDO0выходc3_2
ANDI0входm3_3
ANDI1входb3
ANDO0выходc3_3
ANDI0входm4_0
ANDI1входb4
ANDO0выходc4_0
ANDI0входm4_1
ANDI1входb4
ANDO0выходc4_1
ANDI0входm4_2
ANDI1входb4
ANDO0выходc4_2
ANDI0входm4_3
ANDI1входb4
ANDO0выходc4_3
ANDI0входm5_0
ANDI1входb5
ANDO0выходc5_0
ANDI0входm5_1
ANDI1входb5
ANDO0выходc5_1
ANDI0входm5_2
ANDI1входb5
ANDO0выходc5_2
ANDI0входm5_3
ANDI1входb5
ANDO0выходc5_3
ANDI0входm6_0
ANDI1входb6
ANDO0выходc6_0
ANDI0входm6_1
ANDI1входb6
ANDO0выходc6_1
ANDI0входm6_2
ANDI1входb6
ANDO0выходc6_2
ANDI0входm6_3
ANDI1входb6
ANDO0выходc6_3
ANDI0входm7_0
ANDI1входb7
ANDO0выходc7_0
ANDI0входm7_1
ANDI1входb7
ANDO0выходc7_1
ANDI0входm7_2
ANDI1входb7
ANDO0выходc7_2
ANDI0входm7_3
ANDI1входb7
ANDO0выходc7_3
ANDI0входm8_0
ANDI1входb8
ANDO0выходc8_0
ANDI0входm8_1
ANDI1входb8
ANDO0выходc8_1
ANDI0входm8_2
ANDI1входb8
ANDO0выходc8_2
ANDI0входm8_3
ANDI1входb8
ANDO0выходc8_3
ANDI0входm9_0
ANDI1входb9
ANDO0выходc9_0
ANDI0входm9_1
ANDI1входb9
ANDO0выходc9_1
ANDI0входm9_2
ANDI1входb9
ANDO0выходc9_2
ANDI0входm9_3
ANDI1входb9
ANDO0выходc9_3
ANDI0входm10_0
ANDI1входb10
ANDO0выходc10_0
ANDI0входm10_1
ANDI1входb10
ANDO0выходc10_1
ANDI0входm10_2
ANDI1входb10
ANDO0выходc10_2
ANDI0входm10_3
ANDI1входb10
ANDO0выходc10_3
ANDI0входm11_0
ANDI1входb11
ANDO0выходc11_0
ANDI0входm11_1
ANDI1входb11
ANDO0выходc11_1
ANDI0входm11_2
ANDI1входb11
ANDO0выходc11_2
ANDI0входm11_3
ANDI1входb11
ANDO0выходc11_3
ANDI0входm12_0
ANDI1входb12
ANDO0выходc12_0
ANDI0входm12_1
ANDI1входb12
ANDO0выходc12_1
ANDI0входm12_2
ANDI1входb12
ANDO0выходc12_2
ANDI0входm12_3
ANDI1входb12
ANDO0выходc12_3
ANDI0входm13_0
ANDI1входb13
ANDO0выходc13_0
ANDI0входm13_1
ANDI1входb13
ANDO0выходc13_1
ANDI0входm13_2
ANDI1входb13
ANDO0выходc13_2
ANDI0входm13_3
ANDI1входb13
ANDO0выходc13_3
ANDI0входm14_0
ANDI1входb14
ANDO0выходc14_0
ANDI0входm14_1
ANDI1входb14
ANDO0выходc14_1
ANDI0входm14_2
ANDI1входb14
ANDO0выходc14_2
ANDI0входm14_3
ANDI1входb14
ANDO0выходc14_3
ANDI0входm15_0
ANDI1входb15
ANDO0выходc15_0
ANDI0входm15_1
ANDI1входb15
ANDO0выходc15_1
ANDI0входm15_2
ANDI1входb15
ANDO0выходc15_2
ANDI0входm15_3
ANDI1входb15
ANDO0выходc15_3
OR4Aвходc0_0
OR4Bвходc1_0
OR4Cвходc2_0
OR4Dвходc3_0
OR4Yвыходg0_0
OR4Aвходc4_0
OR4Bвходc5_0
OR4Cвходc6_0
OR4Dвходc7_0
OR4Yвыходg1_0
OR4Aвходc8_0
OR4Bвходc9_0
OR4Cвходc10_0
OR4Dвходc11_0
OR4Yвыходg2_0
OR4Aвходc12_0
OR4Bвходc13_0
OR4Cвходc14_0
OR4Dвходc15_0
OR4Yвыходg3_0
OR4Aвходg0_0
OR4Bвходg1_0
OR4Cвходg2_0
OR4Dвходg3_0
OR4YвыходQ0
OR4Aвходc0_1
OR4Bвходc1_1
OR4Cвходc2_1
OR4Dвходc3_1
OR4Yвыходg0_1
OR4Aвходc4_1
OR4Bвходc5_1
OR4Cвходc6_1
OR4Dвходc7_1
OR4Yвыходg1_1
OR4Aвходc8_1
OR4Bвходc9_1
OR4Cвходc10_1
OR4Dвходc11_1
OR4Yвыходg2_1
OR4Aвходc12_1
OR4Bвходc13_1
OR4Cвходc14_1
OR4Dвходc15_1
OR4Yвыходg3_1
OR4Aвходg0_1
OR4Bвходg1_1
OR4Cвходg2_1
OR4Dвходg3_1
OR4YвыходQ1
OR4Aвходc0_2
OR4Bвходc1_2
OR4Cвходc2_2
OR4Dвходc3_2
OR4Yвыходg0_2
OR4Aвходc4_2
OR4Bвходc5_2
OR4Cвходc6_2
OR4Dвходc7_2
OR4Yвыходg1_2
OR4Aвходc8_2
OR4Bвходc9_2
OR4Cвходc10_2
OR4Dвходc11_2
OR4Yвыходg2_2
OR4Aвходc12_2
OR4Bвходc13_2
OR4Cвходc14_2
OR4Dвходc15_2
OR4Yвыходg3_2
OR4Aвходg0_2
OR4Bвходg1_2
OR4Cвходg2_2
OR4Dвходg3_2
OR4YвыходQ2
OR4Aвходc0_3
OR4Bвходc1_3
OR4Cвходc2_3
OR4Dвходc3_3
OR4Yвыходg0_3
OR4Aвходc4_3
OR4Bвходc5_3
OR4Cвходc6_3
OR4Dвходc7_3
OR4Yвыходg1_3
OR4Aвходc8_3
OR4Bвходc9_3
OR4Cвходc10_3
OR4Dвходc11_3
OR4Yвыходg2_3
OR4Aвходc12_3
OR4Bвходc13_3
OR4Cвходc14_3
OR4Dвходc15_3
OR4Yвыходg3_3
OR4Aвходg0_3
OR4Bвходg1_3
OR4Cвходg2_3
OR4Dвходg3_3
OR4YвыходQ3

Выделить всё → Ctrl+G → в библиотеке двойной клик по имени чипа → RAM256x4.

Шаг 3. Стенд

Что собираем. Восемь тумблеров адреса, четыре — данных, кнопка WE, три табло.

ЭлементНогаНаправлениеМетка
poweroutвыходVCC
groundoutвыходGND
inputOutвыходmA0
inputOutвыходmA1
inputOutвыходmA2
inputOutвыходmA3
inputOutвыходmA4
inputOutвыходmA5
inputOutвыходmA6
inputOutвыходmA7
inputOutвыходmD0
inputOutвыходmD1
inputOutвыходmD2
inputOutвыходmD3
buttonoutвыходmWE
RAM256x4A0входmA0
RAM256x4A1входmA1
RAM256x4A2входmA2
RAM256x4A3входmA3
RAM256x4A4входmA4
RAM256x4A5входmA5
RAM256x4A6входmA6
RAM256x4A7входmA7
RAM256x4D0входmD0
RAM256x4D1входmD1
RAM256x4D2входmD2
RAM256x4D3входmD3
RAM256x4WEвходmWE
RAM256x4Q0выходmQ0
RAM256x4Q1выходmQ1
RAM256x4Q2выходmQ2
RAM256x4Q3выходmQ3

Табло: адрес — ⚙ ширина 8, HEX, шина mA; данные — ширина 4, HEX, шина mD; память — ширина 4, HEX, шина mQ. В чип не сворачивать.

3.4. Проверка

Адрес на табло — две hex-цифры: левая — блок (A7–A4), правая — ячейка в блоке (A3–A0).

№Что делаешьАдрес mAДанныеТабло: адрес/данные/память
1адрес 00, значение 1, WE0000 0000000100 / 1 / 1
2адрес 01, значение 2, WE0000 0001001001 / 2 / 2
3адрес 10 (блок 1, ячейка 0), 3, WE0001 0000001110 / 3 / 3
4адрес FF (последний), 9, WE1111 11111001FF / 9 / 9
5читать адрес 000000 0000100100 / 9 / 1
6читать адрес 100001 0000100110 / 9 / 3
7читать адрес 010000 0001100101 / 9 / 2
8читать адрес FF1111 11111001FF / 9 / 9

Шаг 6 — главный: у адресов 00 и 10 одинаковые младшие биты (ячейка 0), но блоки разные — память их не путает.

Если не так:

ВидноГде смотреть
00 и 10 показывают одно и то жеDEC16 блока: I0–I3 = A4–A7 (старшие), не A0–A3
запись портит все блоки сразуWE блока N = wN = AND(bN, WE), не общий WE
читается мусор / оранжевое«пропустить»: AND(mN_i, bN) перед деревом ИЛИ

Вставка урока 3 (Cmd+I)

Сначала шаг 1 (удалить стенд урока 2), потом вставка.

# Урок 3 — память 256×4 из 16 блоков RAM16x4 + стенд.# Вставка: Cmd+I в проект с чипами уроков 1–2 (стенд урока 2 сначала удалить — те же метки mA, mD, mQ).# Адрес делится пополам: младшие A0–A3 идут во все 16 блоков, старшие A4–A7 → DEC16 выбирает блок. chip RAM256x4 {  portIn(A0)  portIn(A1)  portIn(A2)  portIn(A3)  portIn(A4)  portIn(A5)  portIn(A6)  portIn(A7)  portIn(D0)  portIn(D1)  portIn(D2)  portIn(D3)  portIn(WE)  portOut(Q0)  portOut(Q1)  portOut(Q2)  portOut(Q3)  # выбор блока по старшим битам адреса  DEC16(I0=A4, I1=A5, I2=A6, I3=A7, Y0=b0, Y1=b1, Y2=b2, Y3=b3, Y4=b4, Y5=b5, Y6=b6, Y7=b7, Y8=b8, Y9=b9, Y10=b10, Y11=b11, Y12=b12, Y13=b13, Y14=b14, Y15=b15)  # запись — только в выбранный блок  AND(b0, WE, w0)  AND(b1, WE, w1)  AND(b2, WE, w2)  AND(b3, WE, w3)  AND(b4, WE, w4)  AND(b5, WE, w5)  AND(b6, WE, w6)  AND(b7, WE, w7)  AND(b8, WE, w8)  AND(b9, WE, w9)  AND(b10, WE, w10)  AND(b11, WE, w11)  AND(b12, WE, w12)  AND(b13, WE, w13)  AND(b14, WE, w14)  AND(b15, WE, w15)  # 16 блоков: младшие биты адреса и данные — общие  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w0, Q0=m0_0, Q1=m0_1, Q2=m0_2, Q3=m0_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w1, Q0=m1_0, Q1=m1_1, Q2=m1_2, Q3=m1_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w2, Q0=m2_0, Q1=m2_1, Q2=m2_2, Q3=m2_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w3, Q0=m3_0, Q1=m3_1, Q2=m3_2, Q3=m3_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w4, Q0=m4_0, Q1=m4_1, Q2=m4_2, Q3=m4_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w5, Q0=m5_0, Q1=m5_1, Q2=m5_2, Q3=m5_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w6, Q0=m6_0, Q1=m6_1, Q2=m6_2, Q3=m6_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w7, Q0=m7_0, Q1=m7_1, Q2=m7_2, Q3=m7_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w8, Q0=m8_0, Q1=m8_1, Q2=m8_2, Q3=m8_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w9, Q0=m9_0, Q1=m9_1, Q2=m9_2, Q3=m9_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w10, Q0=m10_0, Q1=m10_1, Q2=m10_2, Q3=m10_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w11, Q0=m11_0, Q1=m11_1, Q2=m11_2, Q3=m11_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w12, Q0=m12_0, Q1=m12_1, Q2=m12_2, Q3=m12_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w13, Q0=m13_0, Q1=m13_1, Q2=m13_2, Q3=m13_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w14, Q0=m14_0, Q1=m14_1, Q2=m14_2, Q3=m14_3)  RAM16x4(A0=A0, A1=A1, A2=A2, A3=A3, D0=D0, D1=D1, D2=D2, D3=D3, WE=w15, Q0=m15_0, Q1=m15_1, Q2=m15_2, Q3=m15_3)  # выход блока проходит, только когда блок выбран  AND(m0_0, b0, c0_0)  AND(m0_1, b0, c0_1)  AND(m0_2, b0, c0_2)  AND(m0_3, b0, c0_3)  AND(m1_0, b1, c1_0)  AND(m1_1, b1, c1_1)  AND(m1_2, b1, c1_2)  AND(m1_3, b1, c1_3)  AND(m2_0, b2, c2_0)  AND(m2_1, b2, c2_1)  AND(m2_2, b2, c2_2)  AND(m2_3, b2, c2_3)  AND(m3_0, b3, c3_0)  AND(m3_1, b3, c3_1)  AND(m3_2, b3, c3_2)  AND(m3_3, b3, c3_3)  AND(m4_0, b4, c4_0)  AND(m4_1, b4, c4_1)  AND(m4_2, b4, c4_2)  AND(m4_3, b4, c4_3)  AND(m5_0, b5, c5_0)  AND(m5_1, b5, c5_1)  AND(m5_2, b5, c5_2)  AND(m5_3, b5, c5_3)  AND(m6_0, b6, c6_0)  AND(m6_1, b6, c6_1)  AND(m6_2, b6, c6_2)  AND(m6_3, b6, c6_3)  AND(m7_0, b7, c7_0)  AND(m7_1, b7, c7_1)  AND(m7_2, b7, c7_2)  AND(m7_3, b7, c7_3)  AND(m8_0, b8, c8_0)  AND(m8_1, b8, c8_1)  AND(m8_2, b8, c8_2)  AND(m8_3, b8, c8_3)  AND(m9_0, b9, c9_0)  AND(m9_1, b9, c9_1)  AND(m9_2, b9, c9_2)  AND(m9_3, b9, c9_3)  AND(m10_0, b10, c10_0)  AND(m10_1, b10, c10_1)  AND(m10_2, b10, c10_2)  AND(m10_3, b10, c10_3)  AND(m11_0, b11, c11_0)  AND(m11_1, b11, c11_1)  AND(m11_2, b11, c11_2)  AND(m11_3, b11, c11_3)  AND(m12_0, b12, c12_0)  AND(m12_1, b12, c12_1)  AND(m12_2, b12, c12_2)  AND(m12_3, b12, c12_3)  AND(m13_0, b13, c13_0)  AND(m13_1, b13, c13_1)  AND(m13_2, b13, c13_2)  AND(m13_3, b13, c13_3)  AND(m14_0, b14, c14_0)  AND(m14_1, b14, c14_1)  AND(m14_2, b14, c14_2)  AND(m14_3, b14, c14_3)  AND(m15_0, b15, c15_0)  AND(m15_1, b15, c15_1)  AND(m15_2, b15, c15_2)  AND(m15_3, b15, c15_3)  # ИЛИ 16 блоков по каждому биту: 4 × OR4 → OR4  OR4(A=c0_0, B=c1_0, C=c2_0, D=c3_0, Y=g0_0)  OR4(A=c4_0, B=c5_0, C=c6_0, D=c7_0, Y=g1_0)  OR4(A=c8_0, B=c9_0, C=c10_0, D=c11_0, Y=g2_0)  OR4(A=c12_0, B=c13_0, C=c14_0, D=c15_0, Y=g3_0)  OR4(A=g0_0, B=g1_0, C=g2_0, D=g3_0, Y=Q0)  OR4(A=c0_1, B=c1_1, C=c2_1, D=c3_1, Y=g0_1)  OR4(A=c4_1, B=c5_1, C=c6_1, D=c7_1, Y=g1_1)  OR4(A=c8_1, B=c9_1, C=c10_1, D=c11_1, Y=g2_1)  OR4(A=c12_1, B=c13_1, C=c14_1, D=c15_1, Y=g3_1)  OR4(A=g0_1, B=g1_1, C=g2_1, D=g3_1, Y=Q1)  OR4(A=c0_2, B=c1_2, C=c2_2, D=c3_2, Y=g0_2)  OR4(A=c4_2, B=c5_2, C=c6_2, D=c7_2, Y=g1_2)  OR4(A=c8_2, B=c9_2, C=c10_2, D=c11_2, Y=g2_2)  OR4(A=c12_2, B=c13_2, C=c14_2, D=c15_2, Y=g3_2)  OR4(A=g0_2, B=g1_2, C=g2_2, D=g3_2, Y=Q2)  OR4(A=c0_3, B=c1_3, C=c2_3, D=c3_3, Y=g0_3)  OR4(A=c4_3, B=c5_3, C=c6_3, D=c7_3, Y=g1_3)  OR4(A=c8_3, B=c9_3, C=c10_3, D=c11_3, Y=g2_3)  OR4(A=c12_3, B=c13_3, C=c14_3, D=c15_3, Y=g3_3)  OR4(A=g0_3, B=g1_3, C=g2_3, D=g3_3, Y=Q3)} # ---------- мини-стенд ----------power(VCC)ground(GND)# адрес (8 тумблеров) и данные для записи (4 тумблера)input(Out=mA0)input(Out=mA1)input(Out=mA2)input(Out=mA3)input(Out=mA4)input(Out=mA5)input(Out=mA6)input(Out=mA7)input(Out=mD0)input(Out=mD1)input(Out=mD2)input(Out=mD3)# кнопка записи: держишь — пишетсяbutton{label="WE", hostKey="KeyW"}(mWE)RAM256x4(A0=mA0, A1=mA1, A2=mA2, A3=mA3, A4=mA4, A5=mA5, A6=mA6, A7=mA7, D0=mD0, D1=mD1, D2=mD2, D3=mD3, WE=mWE, Q0=mQ0, Q1=mQ1, Q2=mQ2, Q3=mQ3)# табло: адрес (2 hex-цифры), что пишем, что лежит в памяти по адресуdisplay{bits=8, base="HEX", busSource="mA"}()display{bits=4, base="HEX", busSource="mD"}()display{bits=4, base="HEX", busSource="mQ"}()

Не получается? Что-то не работает →