Урок 8. Карта — в чип с 8 ногами

В картинках

Всё, что собрано за семь уроков, — это и есть компьютер карты. Сворачиваем его в один чип с восемью ногами, делаем вторую карту с другой личностью — и меняем карты в тестере, как в банкомате.


8.1. Идея: карта — это то, что внутри

Снаружи у карты только то, что даёт ей терминал: питание, земля, сброс, такт и провод данных. Всё остальное — процессор, память, программа, личность — внутри. Входы карты — Input port, провод данных IO — Output port: карта сама прижимает его. Если поставить землю или FAC выходом, редактор покажет молнию: два выхода на одном проводе.

8.2. Идея: две карты — одна программа

Вторая карта — копия чипа (кнопка ⧉ в библиотеке) с другой матрицей. Программа, процессор, память — те же. Снаружи карты одинаковые; разница — 29 транзисторов из 6 500. На один вызов они отвечают по-разному — так банк и отличает карты.

CARDC1 VCCC2 RSTC3 CLKC4C5 GNDC6 FACC7 IOC8TERMIOCLKRSTSENDsr0…7lampпровод данных IOтумблеры T0–T7, SEND —снаружи, на панелиCARD 2C1 …C6C7 IOвторая карта: та же схема, другие 29 транзисторов матрицы.«Вставить» — перевесить метки терминала на её ноги.
На столе два прибора: карта — чип с восемью ногами, как контактная площадка, и тестер — чип с панелью снаружи. Между ними один провод IO. Вторую карту вставляют вместо первой — и на тот же вызов получают другой ответ.

8.3. Сборка

Тот же проект, что в уроке 7.

C1 VCCGND C5
C2 RSTFAC C6
C3 CLKIO C7
C4 —— C8

Шаг 1. Что остаётся снаружи

Снаружи чипа — то, что принадлежит терминалу, а не карте:

  • Clock (такт CLK), тумблеры RST и FAC;
  • весь переходник урока 5: резистор и транзистор TPULL на проводе IO, тумблеры T0–T7, кнопка SEND, всё от sendS до WTB, лампы sr0–sr7 и lamp;
  • Power и Ground.

Всё остальное — карта: от DEC16 урока 1 до транзисторов матрицы урока 6, вместе с табло и лампами A и PC (они окажутся внутри чипа — их видно, если провалиться в него двойным кликом).

Шаг 2. Восемь ног — порты

Возле карты поставь 8 портов. Всё, что карта получает от терминала (питание, земля, сброс, такт, FAC), — Input port: C1–C6 столбиком сверху вниз (порядок сверху вниз = порядок ног у чипа). IO — данные в обе стороны, карта сама прижимает этот провод — Output port C7, под ним пустой C8. Имя порта — двойной клик по нему. К порту — метка (сеть внутри карты):

ДетальИмя портаМеткаЧто
Input portC1VCCпитание
Input portC2RSTсброс
Input portC3CLKтакт
Input portC4—не используется
Input portC5GNDземля
Input portC6FACзаводская подготовка
Output portC7IOданные
Output portC8—не используется

C4 и C8 ни к чему не подключены — так и на настоящих картах: эти контакты есть, но не используются.

У чипа входы рисуются слева, выходы справа, поэтому ноги встанут так: слева C1–C6, справа C7 и C8 — не как на площадке, 4 и 4. Если поставить GND или FAC выходом (Output port), редактор покажет красную молнию: чип «выдаёт» сигнал на провод, который уже ведут земля и тумблер, — два выхода на одном проводе.

Шаг 3. Свернуть

Выдели рамкой карту и 8 портов (без того, что в шаге 1) → Ctrl+G → имя CARD. Программа в ПЗУ запекается в чип сама.

Шаг 4. Вставить карту в терминал

ДетальНогаМетка
CARDC1
C2
C3
C4
C5
C6
C7
C8
VCC
RST
CLK
— (не подключать)
GND
FAC
IO
— (не подключать)

8.4. Проверка

То же, что в уроке 7, — но теперь через 8 ног чипа. Сначала заводская подготовка: после свёртки чип запускается заново.

№Что сделатьЛампы (● горит)Что это
1Clock — MAX
2включить FAC и RST, подождать секунду, выключить оба○○●●●○●● 59карта-чип поздоровалась
3тумблеры T7…T0 = 0100 1110, нажать SEND○○○○○○○● 1N — счёт 1
4тумблеры T7…T0 = 0101 0000, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
5тумблеры T7…T0 = 0001 0010, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
6тумблеры T7…T0 = 0011 0100, нажать SEND●○○●○○○○ 144P 12 34 — ПИН верный
7тумблеры T7…T0 = 0100 0001, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
8тумблеры T7…T0 = 1010 0101, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
9тумблеры T7…T0 = 0011 1100, нажать SEND○●●○●○○○ 104A A5 3C — первый байт ответа ($68)
10тумблеры T7…T0 = 0101 0010, нажать SEND●●●●○●●● 247R — второй байт ($F7)

Шаг 5. Вторая карта: копия с другой личностью

В библиотеке у чипа CARD — кнопка ⧉ (копия) → имя CARD2. Копия — то же устройство: процессор, программа в ПЗУ, память. Отличаться будет только личность — транзисторы матрицы.

CARD2 → «Редактировать». Найди матрицу: 7 строк pr0–pr6 (байты 16–22) и 8 столбцов pb7–pb0 (биты). Иди по строкам сверху вниз и в каждой клетке делай то, что написано:

СтрокаБайт: было → сталоpb7pb6pb5pb4pb3pb2pb1pb0Что
pr001 → 02······+✕номер счёта
pr112 → 43·+·✕··●+ПИН, цифры 1–2
pr234 → 21··●✕·✕·+ПИН, цифры 3–4
pr35A → 21·✕+✕✕·✕+ключ, байт 1
pr4C3 → 9F●✕·+++●●ключ, байт 2
pr517 → E4+++✕·●✕✕ключ, байт 3
pr68E → 3B✕·++●✕●+ключ, байт 4

● — транзистор есть и остаётся, не трогать · ✕ — удалить · + — поставить новый · · — пусто и остаётся пустым. Новый транзистор — nmos: затвор на строку pr, сток на столбец pb, исток на GND.

Итог: удалить 14, поставить 15, оставить 8 — в матрице CARD2 ровно 23 транзистора.

Сохрани чип.

Шаг 6. Вынуть одну карту, вставить другую

Поставь CARD2 на стол рядом с CARD. В терминал вставлена та карта, на ногах которой висят метки терминала (шаг 4). Вставлена всегда одна: две карты на одних метках — два выхода на проводе IO.

ДействиеЧто сделать
вынуть CARDснять с ног CARD метки VCC, RST, CLK, GND, FAC, IO (удалить метки или отцепить провода)
вставить CARD2повесить те же 6 меток на те же ноги CARD2: C1 VCC, C2 RST, C3 CLK, C5 GND, C6 FAC, C7 IO

Новая карта ещё «с завода не пришла»: первый раз — FAC и RST. Потом проверка:

№Что сделатьЛампы (● горит)Что это
1включить FAC и RST, подождать секунду, выключить оба○○●●●○●● 59приветствие
2тумблеры T7…T0 = 0100 1110, нажать SEND○○○○○○●○ 2N — уже счёт 2
3тумблеры T7…T0 = 0101 0000, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
4тумблеры T7…T0 = 0001 0010, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
5тумблеры T7…T0 = 0011 0100, нажать SEND○●●○○○●○ 98P 12 34 — ПИН карты 1 не подходит
6тумблеры T7…T0 = 0101 0000, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
7тумблеры T7…T0 = 0100 0011, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
8тумблеры T7…T0 = 0010 0001, нажать SEND●○○●○○○○ 144P 43 21 — свой ПИН
9тумблеры T7…T0 = 0100 0001, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
10тумблеры T7…T0 = 1010 0101, нажать SEND○○○○○○○○ гаснутбайт ушёл, карта ждёт следующий
11тумблеры T7…T0 = 0011 1100, нажать SEND●●●○●○●○ 234A A5 3C — другой ответ ($EA)
12тумблеры T7…T0 = 0101 0010, нажать SEND●●○●●●○● 221R — ($DD)

На тот же вызов A5 3C карта 1 отвечала 68 F7, карта 2 — EA DD. Снаружи чипы одинаковые; разница — в 29 транзисторах матрицы из 6 500. Так банк и отличает карты: не по виду, а по ответу, который может дать только своя карта.

Вставь обратно CARD (метки — снова на её ноги), FAC и RST — и N снова отвечает 1: личность карты 1 никуда не делась, она в её транзисторах.

Шаг 7. Тестер — тоже в чип

Тестер карт (переходник урока 5) — тоже прибор: внутри электроника, снаружи панель. Свернём и его, чтобы на столе были два понятных устройства: карта и тестер. Лампы и табло внутри чипа на холсте не видны, поэтому всё, на что смотришь и что нажимаешь, остаётся снаружи: тумблеры T0–T7, кнопка SEND, лампы sr0–sr7 и lamp, табло.

Возле тестера поставь порты (имя порта = метка, двойной клик — переименовать):

ДетальИмя порта и метка
Input portCLK
Input portRST
Input portSEND
Input portT0
Input portT1
Input portT2
Input portT3
Input portT4
Input portT5
Input portT6
Input portT7
Output portsr0
Output portsr1
Output portsr2
Output portsr3
Output portsr4
Output portsr5
Output portsr6
Output portsr7
Output portlamp
Output portIO

IO — выход: тестер сам прижимает провод. Выдели рамкой электронику тестера (резистор, транзистор TPULL, всё от NOT(RST) = nRT до DFF → WTB) и порты — без тумблеров, кнопки, ламп и табло → Ctrl+G → имя TERM. Ноги TERM — на метки с теми же именами:

ДетальНогаМетка
TERMCLK
RST
SEND
T0
T1
T2
T3
T4
T5
T6
T7
sr0
sr1
sr2
sr3
sr4
sr5
sr6
sr7
lamp
IO
CLK
RST
SEND
T0
T1
T2
T3
T4
T5
T6
T7
sr0
sr1
sr2
sr3
sr4
sr5
sr6
sr7
lamp
IO

Проверка — любая строка шага «Проверка руками»: N → табло 1. Тестер внутри — 1 729 транзисторов и резистор.

⚠ Частая ошибка. При перепрошивке карты 2 удалены и транзисторы, которые у карт общие (● в сетке). Номер счёта при этом верный, а ПИН и ключ — нет. В матрице карты 2 должно быть ровно 23 транзистора.

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

Восемь портов карты — поставить возле карты, потом выделить карту вместе с ними и Ctrl+G.

# Урок 8 — 8 ног карты: порты (поставить возле карты, потом выделить карту с ними и Ctrl+G → CARD).portIn{name=C1}(VCC)portIn{name=C2}(RST)portIn{name=C3}(CLK)portIn{name=C4}(nc4)portIn{name=C5}(GND)portIn{name=C6}(FAC)portOut{name=C7}(IO)portOut{name=C8}(nc8)

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