Урок 1. Процессор банкомата: тот же, что в карте
В картинкахПосле этого урока у банкомата есть сердце — процессор, ПЗУ с программой и шина, по которой процессор читает устройства. Процессор мы не собираем заново: копируем его из своей карты и сворачиваем в чип CPU. Огонёк бежит по лампам — тот же, что в уроке 2 карты.
1.1. Идея: один процессор — разные машины
Процессор карты ничего не знает о картах. Он умеет складывать, сравнивать, переходить и читать-писать ячейки по адресу — и всё. Карту из него делает программа и то, что подключено к его адресам: матрица с ключом, провод IO. Поставь тот же процессор в банкомат, подключи клавиатуру, экран и банк — и это банкомат. Так устроены настоящие машины: один и тот же процессор стоит в стиральной машине, в клавиатуре и в банкомате.
1.2. Идея: адреса устройств
У процессора 8-битный адрес. Ячейки 0–7 — его ОЗУ (внутри CPU). Все устройства банкомата живут на адресах, где бит 4 = 1: так их выбор не задевает ОЗУ. Устройство выбирают только команды с данными — LD, ST, ADD, CMP… Число в команде (LD #26) и адрес перехода (JMP 26) устройство не трогают.
| Адрес | Чтение | Запись |
|---|---|---|
| $00–$07 | ОЗУ процессора | ОЗУ процессора |
| $10 | ключ банка, байт за байтом (урок 4) | — |
| $18, $19 | остатки счетов 1 и 2 (урок 4) | остатки счетов 1 и 2 |
| $1A | клавиатура: нажата + код (урок 2) | «нажата» — сбросить |
| $1B | случайное число (урок 5) | — |
| $1C | ответ карты (урок 5) | байт для карты |
| $1D | лампа «обмен» | SEND, сброс карты |
| $1E | — | слова экрана (урок 3) |
| $1F | — | счёт для банка (урок 4) |
| $30–$37 | — | цифры экрана (урок 3) |
| $3A | код клавиши × 16 (урок 2) | — |
1.3. Идея: шина чтения — ИЛИ всех устройств
Что прочитать, процессор узнаёт по ногам ext0–ext7. Каждое устройство подаёт свой байт через AND со своим сигналом выбора: невыбранное даёт нули. Все байты сходятся в OR8 — на выходе только байт выбранного устройства. Внутри CPU этот байт ещё раз проходит OR с ОЗУ: din = ram | ext. Пока устройств нет, ext — чёткие нули, и процессор работает как в карте.
1.4. Сборка
Тот же проект, где собрана «Платёжная карта»: на холсте CARD, CARD 2, TERM, генератор Clock, тумблеры RST и FAC. Банкомат строим справа от них.
Шаг 1. Копия ядра карты
Процессор банкомата — тот же, что в карте. Берём его из карты, а не собираем заново.
CARD → «Редактировать» → выделить всё → копировать → выйти без сохранения (сама карта не меняется) → вставить на свободное место холста, справа от карты. Дальше работаем только с копией.
Шаг 2. Убрать то, что есть только у карты
В копии остаётся ядро: АЛУ, регистр A, флаги, PC, стек, дешифратор команд, ОЗУ. Убираем то, что принадлежит карте: ПЗУ с её программой (у банкомата будет своё, снаружи процессора), личные данные (матрица), счётчик попыток TRY, порт IO, восемь ног-портов и старые ИЛИ чтения din (их заменим в шаге 3). Метки возле удалённых деталей можно оставить — ничему не мешают.
| Элемент | Как найти | Действие |
|---|---|---|
| Memory (RAM) | ПЗУ карты | удалить |
| NOT | выход которого = nir3 | удалить |
| NOT | выход которого = nir2 | удалить |
| AND | выход которого = selP | удалить |
| AND3 | выход которого = selTRY | удалить |
| AND3 | выход которого = selIO | удалить |
| AND | выход которого = pr0 | удалить |
| AND | выход которого = pr1 | удалить |
| AND | выход которого = pr2 | удалить |
| AND | выход которого = pr3 | удалить |
| AND | выход которого = pr4 | удалить |
| AND | выход которого = pr5 | удалить |
| AND | выход которого = pr6 | удалить |
| Resistor | между VCC и pb0 | удалить |
| Resistor | между VCC и pb1 | удалить |
| Resistor | между VCC и pb2 | удалить |
| Resistor | между VCC и pb3 | удалить |
| Resistor | между VCC и pb4 | удалить |
| Resistor | между VCC и pb5 | удалить |
| Resistor | между VCC и pb6 | удалить |
| Resistor | между VCC и pb7 | удалить |
| NOT | выход которого = pq0 | удалить |
| NOT | выход которого = pq1 | удалить |
| NOT | выход которого = pq2 | удалить |
| NOT | выход которого = pq3 | удалить |
| NOT | выход которого = pq4 | удалить |
| NOT | выход которого = pq5 | удалить |
| NOT | выход которого = pq6 | удалить |
| NOT | выход которого = pq7 | удалить |
| AND | выход которого = t0 | удалить |
| AND | выход которого = t1 | удалить |
| AND | выход которого = io0 | удалить |
| OR4 | выход которого = din0 | удалить |
| OR3 | выход которого = din1 | удалить |
| OR | выход которого = din2 | удалить |
| OR | выход которого = din3 | удалить |
| OR | выход которого = din4 | удалить |
| OR | выход которого = din5 | удалить |
| OR | выход которого = din6 | удалить |
| OR | выход которого = din7 | удалить |
| AND | выход которого = wOUT | удалить |
| RBIT | выход которого = pull | удалить |
| nmos | затвор pull, сток IO | удалить |
| NOT | выход которого = nFAC | удалить |
| AND | выход которого = wTRY | удалить |
| RBIT | выход которого = try0 | удалить |
| RBIT | выход которого = try1 | удалить |
| nmos | затвор pr0, сток pb0 | удалить |
| nmos | затвор pr1, сток pb1 | удалить |
| nmos | затвор pr1, сток pb4 | удалить |
| nmos | затвор pr2, сток pb2 | удалить |
| nmos | затвор pr2, сток pb4 | удалить |
| nmos | затвор pr2, сток pb5 | удалить |
| nmos | затвор pr3, сток pb1 | удалить |
| nmos | затвор pr3, сток pb3 | удалить |
| nmos | затвор pr3, сток pb4 | удалить |
| nmos | затвор pr4, сток pb0 | удалить |
| nmos | затвор pr4, сток pb1 | удалить |
| nmos | затвор pr4, сток pb6 | удалить |
| nmos | затвор pr4, сток pb7 | удалить |
| nmos | затвор pr5, сток pb0 | удалить |
| nmos | затвор pr5, сток pb1 | удалить |
| nmos | затвор pr5, сток pb2 | удалить |
| nmos | затвор pr5, сток pb4 | удалить |
| nmos | затвор pr6, сток pb1 | удалить |
| nmos | затвор pr6, сток pb2 | удалить |
| nmos | затвор pr6, сток pb3 | удалить |
| nmos | затвор pr6, сток pb7 | удалить |
| nmos | затвор pr3, сток pb6 | удалить |
| Input port | имя C1 | удалить |
| Input port | имя C2 | удалить |
| Input port | имя C3 | удалить |
| Input port | имя C4 | удалить |
| Output port | имя C7 | удалить |
| Output port | имя C8 | удалить |
| Input port | имя C5 | удалить |
| Input port | имя C6 | удалить |
Шаг 3. Чтение: ОЗУ или снаружи
Процессор читает либо свою ОЗУ (адреса 0–7), либо то, что придёт снаружи по ext0–ext7 — от устройств банкомата. Вставка 01-cpu-a.netlist.txt (Cmd+I) — эти 8 ИЛИ и порты шага 4; поставь их возле копии.
| Деталь | Нога | Метка |
|---|---|---|
| OR | I0 I1 O0 | ram0 ext0 din0 |
| OR | I0 I1 O0 | ram1 ext1 din1 |
| OR | I0 I1 O0 | ram2 ext2 din2 |
| OR | I0 I1 O0 | ram3 ext3 din3 |
| OR | I0 I1 O0 | ram4 ext4 din4 |
| OR | I0 I1 O0 | ram5 ext5 din5 |
| OR | I0 I1 O0 | ram6 ext6 din6 |
| OR | I0 I1 O0 | ram7 ext7 din7 |
Шаг 4. Ноги процессора — порты
Имя порта = метка. Входы: такт, сброс, слово команды из ПЗУ (ir0–ir15), чтение снаружи (ext0–ext7). Выходы: адрес команды для ПЗУ (pc0–pc7), регистр A (acc0–acc7 — его пишут в устройства), oST — «команда ST», запись в устройство.
| Деталь | Нога | Метка |
|---|---|---|
| Input port | имя CLK | CLK |
| Input port | имя RST | RST |
| Input port | имя ir0 | ir0 |
| Input port | имя ir1 | ir1 |
| Input port | имя ir2 | ir2 |
| Input port | имя ir3 | ir3 |
| Input port | имя ir4 | ir4 |
| Input port | имя ir5 | ir5 |
| Input port | имя ir6 | ir6 |
| Input port | имя ir7 | ir7 |
| Input port | имя ir8 | ir8 |
| Input port | имя ir9 | ir9 |
| Input port | имя ir10 | ir10 |
| Input port | имя ir11 | ir11 |
| Input port | имя ir12 | ir12 |
| Input port | имя ir13 | ir13 |
| Input port | имя ir14 | ir14 |
| Input port | имя ir15 | ir15 |
| Input port | имя ext0 | ext0 |
| Input port | имя ext1 | ext1 |
| Input port | имя ext2 | ext2 |
| Input port | имя ext3 | ext3 |
| Input port | имя ext4 | ext4 |
| Input port | имя ext5 | ext5 |
| Input port | имя ext6 | ext6 |
| Input port | имя ext7 | ext7 |
| Output port | имя pc0 | pc0 |
| Output port | имя pc1 | pc1 |
| Output port | имя pc2 | pc2 |
| Output port | имя pc3 | pc3 |
| Output port | имя pc4 | pc4 |
| Output port | имя pc5 | pc5 |
| Output port | имя pc6 | pc6 |
| Output port | имя pc7 | pc7 |
| Output port | имя acc0 | acc0 |
| Output port | имя acc1 | acc1 |
| Output port | имя acc2 | acc2 |
| Output port | имя acc3 | acc3 |
| Output port | имя acc4 | acc4 |
| Output port | имя acc5 | acc5 |
| Output port | имя acc6 | acc6 |
| Output port | имя acc7 | acc7 |
| Output port | имя oST | oST |
Шаг 5. Свернуть в чип
Выдели рамкой копию, 8 ИЛИ и порты → Ctrl+G → имя CPU. На холсте останется чип CPU без меток — удали его: чип уже в библиотеке, в шаге 7 он встанет с метками на всех ногах.
Шаг 6. ПЗУ банкомата
Memory (RAM) из палитры, ⚙: 256 words, 16b data, 16b addr, CLR выключен (как ПЗУ карты в уроке 2). Ноги A8–A15, WE, CLK и все D0–D15 — на GND.
| Деталь | Нога | Метка |
|---|---|---|
| Memory (RAM) ROM | A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 | pc0 pc1 pc2 pc3 pc4 pc5 pc6 pc7 GND GND GND GND GND GND GND GND ir0 ir1 ir2 ir3 ir4 ir5 ir6 ir7 ir8 ir9 ir10 ir11 ir12 ir13 ir14 ir15 |
Шаг 7. Процессор, адреса устройств, шина чтения
Вставка 01-cpu-b.netlist.txt (Cmd+I). Устройства банкомата живут на адресах с битом 4 = 1 (мимо ОЗУ процессора): дешифратор зажигает провод выбора sel…, а ST в выбранное устройство — провод записи st…. Всё, что процессор читает снаружи, сходится ИЛИ в ext0–ext7 — каждое через AND со своим выбором. Самих устройств ещё нет: их метки (key, bal, rn, kq…) пока пустые, но AND с невыбранным устройством даёт чёткий 0. Устройство выбирают только команды с данными — не «число» (LD #16) и не переход.
| Деталь | Нога | Метка |
|---|---|---|
| CPU | CLK RST ir0 ir1 ir2 ir3 ir4 ir5 ir6 ir7 ir8 ir9 ir10 ir11 ir12 ir13 ir14 ir15 ext0 ext1 ext2 ext3 ext4 ext5 ext6 ext7 pc0 pc1 pc2 pc3 pc4 pc5 pc6 pc7 acc0 acc1 acc2 acc3 acc4 acc5 acc6 acc7 oST | CLK RST ir0 ir1 ir2 ir3 ir4 ir5 ir6 ir7 ir8 ir9 ir10 ir11 ir12 ir13 ir14 ir15 ext0 ext1 ext2 ext3 ext4 ext5 ext6 ext7 pc0 pc1 pc2 pc3 pc4 pc5 pc6 pc7 acc0 acc1 acc2 acc3 acc4 acc5 acc6 acc7 oST |
| NOT | I0 O0 | RST nR |
| OR3 | A B C Y | ir12 ir13 ir14 op9 |
| AND | I0 I1 O0 | ir15 op9 isJ |
| NOR | I0 I1 O0 | isJ ir11 nJI |
| AND | I0 I1 O0 | ir4 nJI dev |
| NOT | I0 O0 | ir5 nir5 |
| NOT | I0 O0 | ir3 nir3 |
| AND | I0 I1 O0 | dev nir5 s1x |
| AND | I0 I1 O0 | dev ir5 s3x |
| AND | I0 I1 O0 | s1x nir3 s10 |
| AND | I0 I1 O0 | s1x ir3 s18 |
| AND | I0 I1 O0 | s3x nir3 s30 |
| AND | I0 I1 O0 | s3x ir3 s38 |
| DEC8 | I0 I1 I2 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 | ir0 ir1 ir2 a0 a1 a2 a3 a4 a5 a6 a7 |
| AND | I0 I1 O0 | s10 a0 selKEYB |
| AND | I0 I1 O0 | s18 a0 selBAL1 |
| AND | I0 I1 O0 | s18 a1 selBAL2 |
| AND | I0 I1 O0 | s18 a2 selKEY |
| AND | I0 I1 O0 | s18 a3 selRND |
| AND | I0 I1 O0 | s18 a4 selTD |
| AND | I0 I1 O0 | s18 a5 selTC |
| AND | I0 I1 O0 | s18 a6 selWRD |
| AND | I0 I1 O0 | s18 a7 selACCT |
| AND | I0 I1 O0 | s30 a0 selD0 |
| AND | I0 I1 O0 | s30 a1 selD1 |
| AND | I0 I1 O0 | s30 a2 selD2 |
| AND | I0 I1 O0 | s30 a3 selD3 |
| AND | I0 I1 O0 | s30 a4 selD4 |
| AND | I0 I1 O0 | s30 a5 selD5 |
| AND | I0 I1 O0 | s30 a6 selD6 |
| AND | I0 I1 O0 | s30 a7 selD7 |
| AND | I0 I1 O0 | s38 a2 selKEYH |
| AND | I0 I1 O0 | oST selBAL1 stBAL1 |
| AND | I0 I1 O0 | oST selBAL2 stBAL2 |
| AND | I0 I1 O0 | oST selKEY stKEY |
| AND | I0 I1 O0 | oST selTD stTD |
| AND | I0 I1 O0 | oST selTC stTC |
| AND | I0 I1 O0 | oST selWRD stWRD |
| AND | I0 I1 O0 | oST selACCT stACCT |
| AND | I0 I1 O0 | oST selD0 stD0 |
| AND | I0 I1 O0 | oST selD1 stD1 |
| AND | I0 I1 O0 | oST selD2 stD2 |
| AND | I0 I1 O0 | oST selD3 stD3 |
| AND | I0 I1 O0 | oST selD4 stD4 |
| AND | I0 I1 O0 | oST selD5 stD5 |
| AND | I0 I1 O0 | oST selD6 stD6 |
| AND | I0 I1 O0 | oST selD7 stD7 |
| AND | I0 I1 O0 | kq0 selKEYB eq0 |
| AND | I0 I1 O0 | bal1_0 selBAL1 eb1_0 |
| AND | I0 I1 O0 | bal2_0 selBAL2 eb2_0 |
| AND | I0 I1 O0 | key0 selKEY ek0 |
| AND | I0 I1 O0 | rn0 selRND er0 |
| AND | I0 I1 O0 | sr0 selTD es0 |
| AND | I0 I1 O0 | lamp selTC elp |
| OR8 | A B C D E F G H Y | eq0 eb1_0 eb2_0 ek0 er0 es0 elp GND ext0 |
| AND | I0 I1 O0 | kq1 selKEYB eq1 |
| AND | I0 I1 O0 | bal1_1 selBAL1 eb1_1 |
| AND | I0 I1 O0 | bal2_1 selBAL2 eb2_1 |
| AND | I0 I1 O0 | key1 selKEY ek1 |
| AND | I0 I1 O0 | rn1 selRND er1 |
| AND | I0 I1 O0 | sr1 selTD es1 |
| OR8 | A B C D E F G H Y | eq1 eb1_1 eb2_1 ek1 er1 es1 GND GND ext1 |
| AND | I0 I1 O0 | kq2 selKEYB eq2 |
| AND | I0 I1 O0 | bal1_2 selBAL1 eb1_2 |
| AND | I0 I1 O0 | bal2_2 selBAL2 eb2_2 |
| AND | I0 I1 O0 | key2 selKEY ek2 |
| AND | I0 I1 O0 | rn2 selRND er2 |
| AND | I0 I1 O0 | sr2 selTD es2 |
| OR8 | A B C D E F G H Y | eq2 eb1_2 eb2_2 ek2 er2 es2 GND GND ext2 |
| AND | I0 I1 O0 | kq3 selKEYB eq3 |
| AND | I0 I1 O0 | bal1_3 selBAL1 eb1_3 |
| AND | I0 I1 O0 | bal2_3 selBAL2 eb2_3 |
| AND | I0 I1 O0 | key3 selKEY ek3 |
| AND | I0 I1 O0 | rn3 selRND er3 |
| AND | I0 I1 O0 | sr3 selTD es3 |
| OR8 | A B C D E F G H Y | eq3 eb1_3 eb2_3 ek3 er3 es3 GND GND ext3 |
| AND | I0 I1 O0 | kq4 selKEYB eq4 |
| AND | I0 I1 O0 | bal1_4 selBAL1 eb1_4 |
| AND | I0 I1 O0 | bal2_4 selBAL2 eb2_4 |
| AND | I0 I1 O0 | key0 selKEYH ek4 |
| AND | I0 I1 O0 | rn4 selRND er4 |
| AND | I0 I1 O0 | sr4 selTD es4 |
| OR8 | A B C D E F G H Y | eq4 eb1_4 eb2_4 ek4 er4 es4 GND GND ext4 |
| AND | I0 I1 O0 | kq5 selKEYB eq5 |
| AND | I0 I1 O0 | bal1_5 selBAL1 eb1_5 |
| AND | I0 I1 O0 | bal2_5 selBAL2 eb2_5 |
| AND | I0 I1 O0 | key1 selKEYH ek5 |
| AND | I0 I1 O0 | rn5 selRND er5 |
| AND | I0 I1 O0 | sr5 selTD es5 |
| OR8 | A B C D E F G H Y | eq5 eb1_5 eb2_5 ek5 er5 es5 GND GND ext5 |
| AND | I0 I1 O0 | kq6 selKEYB eq6 |
| AND | I0 I1 O0 | bal1_6 selBAL1 eb1_6 |
| AND | I0 I1 O0 | bal2_6 selBAL2 eb2_6 |
| AND | I0 I1 O0 | key2 selKEYH ek6 |
| AND | I0 I1 O0 | rn6 selRND er6 |
| AND | I0 I1 O0 | sr6 selTD es6 |
| OR8 | A B C D E F G H Y | eq6 eb1_6 eb2_6 ek6 er6 es6 GND GND ext6 |
| AND | I0 I1 O0 | kq7 selKEYB eq7 |
| AND | I0 I1 O0 | bal1_7 selBAL1 eb1_7 |
| AND | I0 I1 O0 | bal2_7 selBAL2 eb2_7 |
| AND | I0 I1 O0 | key3 selKEYH ek7 |
| AND | I0 I1 O0 | down selKEY edn |
| AND | I0 I1 O0 | rn7 selRND er7 |
| AND | I0 I1 O0 | sr7 selTD es7 |
| OR8 | A B C D E F G H Y | eq7 eb1_7 eb2_7 ek7 edn er7 es7 GND ext7 |
| LED | вход | acc7 |
| LED | вход | acc6 |
| LED | вход | acc5 |
| LED | вход | acc4 |
| LED | вход | acc3 |
| LED | вход | acc2 |
| LED | вход | acc1 |
| LED | вход | acc0 |
| Display | ⚙ | ширина 8, DEC, шина pc |
Шаг 8. Программа в ПЗУ
⚙ у ROM → ⬆ → 02-lights.rom.json (огоньки из урока 2 карты). Clock — клик по корпусу до 2Hz.
1.5. Проверка
Сброс: RST включить на один-два такта (табло PC = 0) и выключить. Генератор шагает сам.
Табло — номер команды (PC, адрес в ПЗУ), восемь ламп — регистр A: огонёк бежит по лампам, а табло показывает, какая команда сейчас выполняется. Программа 02-lights:
| Такт | Табло PC | Команда | A | Лампы acc7…acc0 | Что видно |
|---|---|---|---|---|---|
| 1 | 0 | LD #1 | 1 | ○○○○○○○● | |
| 2 | 1 | LD #2 | 2 | ○○○○○○●○ | |
| 3 | 2 | LD #4 | 4 | ○○○○○●○○ | |
| 4 | 3 | LD #8 | 8 | ○○○○●○○○ | |
| 5 | 4 | LD #16 | 16 | ○○○●○○○○ | |
| 6 | 5 | LD #32 | 32 | ○○●○○○○○ | |
| 7 | 6 | LD #64 | 64 | ○●○○○○○○ | |
| 8 | 7 | LD #128 | 128 | ●○○○○○○○ | огонёк дошёл до края |
| 9 | 8 | CALL 17 | 128 | ●○○○○○○○ | табло прыгает на 17 |
| 10 | 17 | LD #255 | 255 | ●●●●●●●● | вспышка |
| 11 | 18 | LD #0 | 0 | ○○○○○○○○ | |
| 12 | 19 | RET | 0 | ○○○○○○○○ | табло возвращается на 9 |
| 13 | 9 | LD #64 | 64 | ○●○○○○○○ | огонёк бежит вправо |
Потом ⚙ у ROM → ⬆ → 03-shift.rom.json, RST включить и выключить: огонёк бежит влево через ОЗУ — по одной лампе за 3 такта (ST 0, ADD 0, JNC), после 128 гаснет на 3 такта и начинает сначала.
- Всё то же, что в уроках 2 и 3 карты: процессор из карты переехал в банкомат целым.
03-shiftскладываетAс ячейкой ОЗУ: если огонёк стоит на месте или горят все — в шаге 3 перепутаны входы ИЛИ (ramиext→din), или у одного изOR8шины чтения пустая нога (должна бытьGND).- Метки будущих устройств (
key0,bal1_0,rn0,kq0…) пока ни к чему не подключены — так и должно быть: их источники появятся в уроках 2–5. Аext0–ext7— уже чёткие 0.
CPU в библиотеке, плата не сворачивается — дальше к ней добавятся клавиатура, экран, банк и порт карты.
Вставка урока 1 (Cmd+I)
Вставка A — возле копии ядра карты (шаг 3 и 4), потом выделить всё и Ctrl+G → CPU.
# Урок 1 банкомата, вставка A — возле копии ядра карты: 8 ИЛИ чтения и 43 порта (потом выделить всё и Ctrl+G → CPU). # ---------- Чтение: ОЗУ или снаружи ----------OR(ram0, ext0, din0)OR(ram1, ext1, din1)OR(ram2, ext2, din2)OR(ram3, ext3, din3)OR(ram4, ext4, din4)OR(ram5, ext5, din5)OR(ram6, ext6, din6)OR(ram7, ext7, din7) # ---------- Ноги процессора ----------portIn{name=CLK}(CLK)portIn{name=RST}(RST)portIn{name=ir0}(ir0)portIn{name=ir1}(ir1)portIn{name=ir2}(ir2)portIn{name=ir3}(ir3)portIn{name=ir4}(ir4)portIn{name=ir5}(ir5)portIn{name=ir6}(ir6)portIn{name=ir7}(ir7)portIn{name=ir8}(ir8)portIn{name=ir9}(ir9)portIn{name=ir10}(ir10)portIn{name=ir11}(ir11)portIn{name=ir12}(ir12)portIn{name=ir13}(ir13)portIn{name=ir14}(ir14)portIn{name=ir15}(ir15)portIn{name=ext0}(ext0)portIn{name=ext1}(ext1)portIn{name=ext2}(ext2)portIn{name=ext3}(ext3)portIn{name=ext4}(ext4)portIn{name=ext5}(ext5)portIn{name=ext6}(ext6)portIn{name=ext7}(ext7)portOut{name=pc0}(pc0)portOut{name=pc1}(pc1)portOut{name=pc2}(pc2)portOut{name=pc3}(pc3)portOut{name=pc4}(pc4)portOut{name=pc5}(pc5)portOut{name=pc6}(pc6)portOut{name=pc7}(pc7)portOut{name=acc0}(acc0)portOut{name=acc1}(acc1)portOut{name=acc2}(acc2)portOut{name=acc3}(acc3)portOut{name=acc4}(acc4)portOut{name=acc5}(acc5)portOut{name=acc6}(acc6)portOut{name=acc7}(acc7)portOut{name=oST}(oST)Вставка B — на холст, справа от карт: процессор с метками, адреса устройств, шина чтения, лампы и табло.
# Урок 1 банкомата, вставка B — на холст: процессор CPU с метками, адреса устройств, шина чтения, лампы A, табло PC.# ПЗУ (Memory (RAM) ROM) — ставится вручную: шаг 5. # ---------- Процессор ----------CPU(CLK=CLK, RST=RST, ir0=ir0, ir1=ir1, ir2=ir2, ir3=ir3, ir4=ir4, ir5=ir5, ir6=ir6, ir7=ir7, ir8=ir8, ir9=ir9, ir10=ir10, ir11=ir11, ir12=ir12, ir13=ir13, ir14=ir14, ir15=ir15, ext0=ext0, ext1=ext1, ext2=ext2, ext3=ext3, ext4=ext4, ext5=ext5, ext6=ext6, ext7=ext7, pc0=pc0, pc1=pc1, pc2=pc2, pc3=pc3, pc4=pc4, pc5=pc5, pc6=pc6, pc7=pc7, acc0=acc0, acc1=acc1, acc2=acc2, acc3=acc3, acc4=acc4, acc5=acc5, acc6=acc6, acc7=acc7, oST=oST)NOT(RST, nR) # ---------- Адреса устройств ----------OR3(A=ir12, B=ir13, C=ir14, Y=op9)AND(ir15, op9, isJ)NOR(isJ, ir11, nJI)AND(ir4, nJI, dev)NOT(ir5, nir5)NOT(ir3, nir3)AND(dev, nir5, s1x)AND(dev, ir5, s3x)AND(s1x, nir3, s10)AND(s1x, ir3, s18)AND(s3x, nir3, s30)AND(s3x, ir3, s38)DEC8(I0=ir0, I1=ir1, I2=ir2, Y0=a0, Y1=a1, Y2=a2, Y3=a3, Y4=a4, Y5=a5, Y6=a6, Y7=a7)AND(s10, a0, selKEYB)AND(s18, a0, selBAL1)AND(s18, a1, selBAL2)AND(s18, a2, selKEY)AND(s18, a3, selRND)AND(s18, a4, selTD)AND(s18, a5, selTC)AND(s18, a6, selWRD)AND(s18, a7, selACCT)AND(s30, a0, selD0)AND(s30, a1, selD1)AND(s30, a2, selD2)AND(s30, a3, selD3)AND(s30, a4, selD4)AND(s30, a5, selD5)AND(s30, a6, selD6)AND(s30, a7, selD7)AND(s38, a2, selKEYH)AND(oST, selBAL1, stBAL1)AND(oST, selBAL2, stBAL2)AND(oST, selKEY, stKEY)AND(oST, selTD, stTD)AND(oST, selTC, stTC)AND(oST, selWRD, stWRD)AND(oST, selACCT, stACCT)AND(oST, selD0, stD0)AND(oST, selD1, stD1)AND(oST, selD2, stD2)AND(oST, selD3, stD3)AND(oST, selD4, stD4)AND(oST, selD5, stD5)AND(oST, selD6, stD6)AND(oST, selD7, stD7) # ---------- Шина чтения ----------AND(kq0, selKEYB, eq0)AND(bal1_0, selBAL1, eb1_0)AND(bal2_0, selBAL2, eb2_0)AND(key0, selKEY, ek0)AND(rn0, selRND, er0)AND(sr0, selTD, es0)AND(lamp, selTC, elp)OR8(A=eq0, B=eb1_0, C=eb2_0, D=ek0, E=er0, F=es0, G=elp, H=GND, Y=ext0)AND(kq1, selKEYB, eq1)AND(bal1_1, selBAL1, eb1_1)AND(bal2_1, selBAL2, eb2_1)AND(key1, selKEY, ek1)AND(rn1, selRND, er1)AND(sr1, selTD, es1)OR8(A=eq1, B=eb1_1, C=eb2_1, D=ek1, E=er1, F=es1, G=GND, H=GND, Y=ext1)AND(kq2, selKEYB, eq2)AND(bal1_2, selBAL1, eb1_2)AND(bal2_2, selBAL2, eb2_2)AND(key2, selKEY, ek2)AND(rn2, selRND, er2)AND(sr2, selTD, es2)OR8(A=eq2, B=eb1_2, C=eb2_2, D=ek2, E=er2, F=es2, G=GND, H=GND, Y=ext2)AND(kq3, selKEYB, eq3)AND(bal1_3, selBAL1, eb1_3)AND(bal2_3, selBAL2, eb2_3)AND(key3, selKEY, ek3)AND(rn3, selRND, er3)AND(sr3, selTD, es3)OR8(A=eq3, B=eb1_3, C=eb2_3, D=ek3, E=er3, F=es3, G=GND, H=GND, Y=ext3)AND(kq4, selKEYB, eq4)AND(bal1_4, selBAL1, eb1_4)AND(bal2_4, selBAL2, eb2_4)AND(key0, selKEYH, ek4)AND(rn4, selRND, er4)AND(sr4, selTD, es4)OR8(A=eq4, B=eb1_4, C=eb2_4, D=ek4, E=er4, F=es4, G=GND, H=GND, Y=ext4)AND(kq5, selKEYB, eq5)AND(bal1_5, selBAL1, eb1_5)AND(bal2_5, selBAL2, eb2_5)AND(key1, selKEYH, ek5)AND(rn5, selRND, er5)AND(sr5, selTD, es5)OR8(A=eq5, B=eb1_5, C=eb2_5, D=ek5, E=er5, F=es5, G=GND, H=GND, Y=ext5)AND(kq6, selKEYB, eq6)AND(bal1_6, selBAL1, eb1_6)AND(bal2_6, selBAL2, eb2_6)AND(key2, selKEYH, ek6)AND(rn6, selRND, er6)AND(sr6, selTD, es6)OR8(A=eq6, B=eb1_6, C=eb2_6, D=ek6, E=er6, F=es6, G=GND, H=GND, Y=ext6)AND(kq7, selKEYB, eq7)AND(bal1_7, selBAL1, eb1_7)AND(bal2_7, selBAL2, eb2_7)AND(key3, selKEYH, ek7)AND(down, selKEY, edn)AND(rn7, selRND, er7)AND(sr7, selTD, es7)OR8(A=eq7, B=eb1_7, C=eb2_7, D=ek7, E=edn, F=er7, G=es7, H=GND, Y=ext7) # ---------- Лампы A и табло PC ----------led(acc7)led(acc6)led(acc5)led(acc4)led(acc3)led(acc2)led(acc1)led(acc0)display{bits=8, base="DEC", busSource="pc"}()Не получается? Что-то не работает →