Урок 1. Транзистор, который помнит

В картинках

Обычный транзистор делает то, что ему говорит затвор: подали 1 — открылся, подали 0 — закрылся. В этом наборе появляется новый транзистор — с памятью. Внутри у него спрятан один бит. Пока бит = 0, это обычный транзистор. Если бит = 1, он закрыт навсегда, что бы ни пришло на затвор. Из тысяч таких транзисторов сделаны ПЗУ, флешка в телефоне и микросхема GAL22V10, которую мы соберём в этом наборе: биты решают, какие провода внутри соединены, а какие нет.


1.1. Как транзистор запоминает

У обычного МОП-транзистора затвор отделён от канала тонким слоем стекла. Напряжение на затворе притягивает заряды в канал, и канал начинает проводить.

У транзистора с памятью между затвором и каналом есть второй затвор — кусочек проводника, со всех сторон окружённый стеклом. Он ни к чему не подключён, поэтому его называют плавающим. Если загнать на него электроны (для этого на транзистор подают повышенное напряжение), выйти обратно им некуда — они сидят там годами. Эти электроны заслоняют канал от обычного затвора, и транзистор больше не открывается.

  • электронов нет — бит 0, транзистор работает как обычный;
  • электроны есть — бит 1, транзистор закрыт навсегда.
кремнийистокстокзатворплавающий затворбит 0: затвор открывает каналкремнийистокстокзатворe⁻бит 1: электроны заперты — канала нет
Транзистор с памятью в разрезе. Плавающий затвор окружён стеклом. Пока на нём нет электронов, транзистор обычный; электроны на нём заслоняют канал — и транзистор закрыт навсегда.

Стереть бит — значит выгнать электроны обратно.

1.2. Немного истории

  • 1967 — идею плавающего затвора придумали в Bell Labs Дауон Канг и Саймон Зи.
  • 1971 — Дов Фроман в Intel делает 1702, первое ПЗУ, которое можно стереть и записать заново (EPROM): 2048 бит на таких транзисторах. Транзисторы в нём P-канальные. Стирали ультрафиолетом: в корпусе было кварцевое окошко, микросхему клали под лампу на 20 минут.
  • 1978 — первые программируемые матрицы PAL. Перемычки в них пережигали током, и прошить такую микросхему можно было только один раз.
  • 1985 — Lattice выпускает GAL: та же матрица, но вместо пережигаемых перемычек — транзисторы с плавающим затвором, которые стираются электрически. Ошибся в прошивке — стёр и прошил снова, прямо в программаторе.

1.3. Транзистор с памятью в симуляторе

В палитре он на той же кнопке, что и обычный транзистор. Alt-клик (или ⌘-клик) по транзистору перебирает варианты:

  • N — обычный N-канальный,
  • P — обычный P-канальный,
  • MN — N-канальный с памятью,
  • MP — P-канальный с памятью (как в Intel 1702).

Бит виден прямо на корпусе. Двойной клик по MN или MP — прошить бит (0 → 1) или стереть (1 → 0).

NGобычный NPGобычный PMNG0#14MN, бит 0: работаетMNG1#15MN, бит 1: закрытMPG0#16MP, бит 0: работаетMPG1#17MP, бит 1: закрыт
Так транзисторы выглядят на холсте. Alt-клик перебирает N → P → MN → MP. У транзистора с памятью справа внизу — бит (зелёный 0, красный 1), справа вверху — номер перемычки; с битом 1 он перечёркнут: не проводит никогда. Двойной клик меняет бит.

1.4. Опыт

Соберём то же, что для обычного транзистора: резистор подтягивает точку к VCC, транзистор садит её на землю, на точке — лампа. У транзистора три ноги: левая — затвор, верхняя и нижняя.

ДетальПровода
Power→ метка VCC
Ground→ метка GND
Resistorверхняя нога → метка VCC
нижняя нога → верхняя нога MN
MNнижняя нога → метка GND
Input→ левая нога MN (затвор)
LED→ нижняя нога резистора
VCCRлампаMNGNDтумблерзатвор
Опыт урока 1: резистор тянет точку к VCC, транзистор с памятью садит её на землю. При бите 0 лампу гасит тумблер, при бите 1 лампа горит всегда.

Поставь обычный транзистор и Alt-кликом сделай из него MN. На корпусе — бит 0.

1.5. Проверка

  1. Бит 0. Тумблер выключен — лампа горит: транзистор закрыт, резистор держит точку в 1. Включи тумблер — лампа гаснет: транзистор открылся и посадил точку на землю. Обычный транзистор.
  2. Двойной клик по MN — на корпусе бит 1. Щёлкай тумблером — лампа горит всегда. Транзистор «забыл», что он транзистор: затвор больше ничего не решает.
  3. Двойной клик ещё раз — бит 0, всё как в шаге 1. Бит стёрт.
БитТумблерЛампа
00горит
01не горит
10горит
11горит

1.6. Номер перемычки

Когда таких транзисторов в схеме сотни, у каждого должен быть свой номер — по нему файл прошивки знает, какой бит куда записать. Номер выставляется сам, когда схему сворачиваешь в чип (Ctrl+G): по положению, строка за строкой. Свой номер можно задать вручную: выдели транзистор, Cmd+E, введи число.

У чипа, внутри которого есть транзисторы с памятью, на корпусе появляется ⚙. Там видна вся карта бит, и её можно загрузить из файла прошивки .jed или сохранить в файл. Этим займёмся со следующего урока.

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