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