Знаете это чувство, когда ты весь такой прогрессор, начитался про попаданцев, которые в древнем мире внедряли паровые машины, и думаешь: «Вот попаду в прошлое - точно всех удивлю»? У меня было так же. Очнулся в первой половине восьмидесятых. Не в Древнем Риме, а в самом что ни на есть научно-техническом мире - Советском Союзе, где вокруг летают спутники, работают ядерные реакторы, а микросхемы уже выпускают серийно.

«Отлично, - подумал я. - Вот оно, моё время. Сейчас я им покажу флеш-память. Расскажу, что можно обойтись без всех этих дисководов, винчестеров и прочей механики. Что нужна всего лишь маленькая микросхема, которая не боится тряски и хранит данные без питания. Пластиковая карта для метро, паспорт с чипом, платёжка без магнитной полосы - всё это возможно уже сейчас!» Эти чип карты даже сейчас массово изготавливаются и используются.

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

Всё началось с того, что я, как честный инженер, решил не бежать впереди паровоза, а сначала изучить элементную базу. Начал я с самого логичного - с постоянных запоминающих устройств, ПЗУ. Ведь именно на них, по идее, можно было бы хранить данные, которые не стираются при отключении питания. Концепция-то правильная.

И вот передо мной лежит целая россыпь микросхем. Разных годов, разных корпусов, с разным содержанием золота. И каждая - как маленькая история о том, почему прогресс - это боль.

Карточка первая: К155РЕ3. ПЗУ, которое программируют… пережиганием

Год начала выпуска: примерно 1982.

Организация памяти: 32 слова по 8 разрядов. Итого - 256 бит.

Корпус: DIP-16, пластиковый, 16 ножек. Масса - около 2 граммов.

Содержание золота: порядка 0,003-0,004 грамма. Мизер.

Технология: биполярная, TTL-логика. Программируется пережиганием плавких перемычек.

И вот тут начинается самое интересное. Чтобы записать единицу, нужно физически сжечь перемычку внутри кристалла, подав на нужный вывод напряжение программирования. Казалось бы, ничего сложного: ставишь адрес, подаёшь 12,5 вольт на нужный разряд, и готово. Но есть нюанс. Коэффициент программируемости - всего 0,3. Это официальная цифра, заметьте. Если с первого раза перемычка не перегорела, рекомендуется повышать напряжение ступенями по 0,5 В вплоть до 14 В. То есть ты сидишь и методично увеличиваешь напряжение, молясь, чтобы перемычка прогорела раньше, чем сгорит весь кристалл.

И вот представь себе карту метро на 256 поездок. Это в 32 байта - идеально! Ровно столько, сколько может вместить К155РЕ3. Каждая поездка - один пережжённый бит. Но что происходит, когда ты хочешь «добавить» поездку? Ты берёшь микросхему, в которой уже пережжено 29 перемычек, и пытаешься пережечь тридцатую. И тут - брак. Перемычка не прогорает. Ты повышаешь напряжение. 12,5 В. 13 В. 13,5 В. 14 В. Перемычка держится. А потом… пробивает что-то другое. Микросхема уходит в мир иной. И вместе с ней - возможно все 255 оплаченных поездок. Пассажир стоит у турникета, прикладывает карту - а там тишина.

А ещё, по свидетельствам практиков, пережжённые перемычки со временем восстанавливались. Да, вы не ослышались. Микросхема, которую ты прошил год назад, вдруг начинает «вспоминать» старые данные, потому что перемычка физически не разрушилась до конца, а «залечилась». Это не баг, это фича советской микроэлектроники. Представь: ты едешь в метро, а карта вдруг решает, что ты уже проехал эту поездку. Или наоборот - что не проехал, хотя ты только что прошёл турникет.

Карточка вторая: К565РТ5. 512 байт, дождаться бы

Год начала выпуска: примерно 1985.

Организация памяти: 512×8. 4096 бит - 512 байт.

Корпус: DIP-24.

Содержание золота: не указано, но, судя по серии, тоже с позолоченными выводами.

Технология: ТТЛШ, однократно программируемое ПЗУ.

И вот тут я задумался. 512 байт. Это уже 4096 поездок в метро! Это уже полноценный проездной на год. Экономика - так себе, но по крайней мере надо просто подождать начала второй половины 80х. Только все проблемы программирования К155РЕ3 к ней тоже относятся.

Но по крайней мере простые ID-карты и ключи доступа на этой базе были возможны. Ты программируешь уникальный код, записываешь его в микросхему, вставляешь в пластиковую карту - и вот тебе пропуск. Никакой механики, никаких магнитных полос, которые размагничиваются. Только кремний и золото.

Параллельный интерфейс: золотые контакты и паршивые разъёмы

И тут я подумал: а как вообще эта карта будет подключаться к считывателю? Параллельный интерфейс - это до 10 адресных линий + 8 линий данных + управление. Это минимум 20 контактов. И эти контакты должны быть золочёными - иначе они окислятся за месяц. А разъёмы в СССР, как известно, были… паршивыми. Они разваливались, теряли контакт, окислялись. Представь: ты вставляешь карту в турникет метро, а контакт не срабатывает. Или срабатывает, но не на всех линиях. Или срабатывает, но с дребезгом - и микросхема получает ложный адрес и считывает не тот байт.

И это я ещё не говорю про золотые контакты на самой карте. В советской промышленности золото использовалось, но его было мало. На микросхему - 0,003–0,004 грамма. На разъём - ещё меньше. И если контакты не позолочены, они окисляются. А если окисляются - теряют контакт. А если теряют контакт - карта не работает. И пассажир стоит у турникета, трясёт картой, дует на неё, трёт о пальто - и ничего не помогает. Потому что контакт - паршивый.

Карточка третья: К573РФ1. УФ-эра, или Стирание под лампой

Год начала выпуска: есть данные о документации 1982 года.

Организация памяти: 1К×8. 8 килобит - 1024 байта.

Корпус: керамический DIP-24 с кварцевым окошком. Масса - не более 5 г.

Содержание золота: около 0,037 грамма. Это вам не 0,003.

Технология: n-МНОП, с плавающим затвором. Стирается ультрафиолетом.

И вот тут я, наконец, увидел что-то, что работает. Не идеально, но работает. Программируется она электрически: подаёшь +12 В на нужные выводы, и заряд «загоняется» на плавающий затвор. А стирается - ультрафиолетом через кварцевое окошко. То есть: вынул из устройства, положил под УФ-лампу на 15–30 минут, подождал, пока заряд «стечёт», вынул, вставил в программатор, записал новое содержимое, вернул обратно.

У микросхемы К573РФ1 100 циклов записи, но необязательно ее переписывать целиком. Один раз стерли, а затем зашиваем байт за байтом на минус - 1024 поездки.

Для лабораторного стенда - ладно и для прототипа - сойдёт. Для карты метро - категорически нет. Эта керамика в золоте стоит как целая зарплата и в пластике эта серия начала выпускаться только в конце 80х.

источник ru.wikipedia.org
источник ru.wikipedia.org

Карточка четвёртая: КР558РР1. Электрическое стирание, но с изюминкой

Год начала выпуска: начало 80-х, как минимум с 1982 года.

Организация памяти: 256×8. 2 килобита - 256 байт.

Корпус: 405.24-7, 24-выводной. Масса - 2,5 грамма.

Содержание золота: не указано в открытых источниках.

Технология: p-МНОП. Электрическое стирание и запись.

И вот тут я, наивный прогрессор, обрадовался. «О! Электрическое стирание! Это же то, что нужно!» Я полез в документацию. И через минуту понял, что это не то, что нужно. Это то, что нужно бояться. От чего можно просыпаться в три часа ночи в холодном поту.

Эта микросхема требует трёх напряжений питания. +5 В, −12 В просто для работы. И для программирования −30 В. Причём, и это самое главное, эти −30 В подаются прямо на выводы данных. На шину данных.

Прочитайте ещё раз. Минус тридцать вольт. На шину данных.

Эти же выводы используются для чтения. К ним подключён микроконтроллер. Или любая другая логика. И в момент записи на них приходит напряжение, которое мгновенно пробивает входные защитные диоды любого современного контроллера. Это не просто неудобно. Это смертельно опасно для всей схемы. Ошибся с коммутацией - и у тебя минус не только микросхема, но и процессор, и вся плата, и, возможно, настроение на неделю.

А если ты, не дай бог, коснёшься этих выводов рукой в момент программирования? Ну, −30 В - это не смертельно, но ощутимо. Это как схватить за оба вывода электролитического конденсатора после выключения питания.

Карточка пятая: КР1601РР1. Надежда прогрессора

Год выпуска: 1985. Да опять ждем этого года минимум.

Организация памяти: 1К×4. 4 килобита. И это, внимание, четыре бита в слове. То есть байт нужно записывать в два приёма или ставить две такие микросхемы.

Корпус: DIP-24, масса - до 5 граммов.

Технология: МНОП, электрическое стирание и запись.

Эта микросхема стала знаменитой благодаря микрокалькулятору «Электроника МК-52». Первый советский калькулятор с энергонезависимой памятью! Он мог сохранять программы при выключении питания. Целых 4 килобита! Это же прорыв!

Но для карты доступа это всё ещё не годилось. Три напряжения питания, из которых одно - минус двенадцать. Отдельный вывод для подачи минус тридцати трёх вольт при программировании - Ну хоть не на 8 линий шины данных - уже радость! Четыре бита в слове.

И вот что меня добило окончательно. Гарантийный срок сохранения информации при отключенном питании составляет от 3000 часов до 5 лет. 3000 часов - это примерно 4 месяца. Четыре месяца, Карл! Ты программируешь карту доступа, кладёшь её в стол, уезжаешь в командировку на полгода, возвращаешься - а данные исчезли. Производитель гарантирует это. Официально. В документации. И не говорите мне про «на практике дольше» - я видел эти гарантии. Четыре месяца. Точка.

А ещё эта микросхема требует определённой последовательности подачи питания. При включении: сначала +5 В, затем −12 В, и последним - напряжение программирования −32 В. При выключении - в обратном порядке. Ошибёшься с последовательностью - и микросхема уйдёт в мир иной. Просто так. Без предупреждения. Потому что МНОП-структуры нежные, и они не прощают ошибок.

Зарядовый насос: как из +12 В получить −33 В и поседеть

Раз уж мы заговорили о −33 В, давай поговорим о том, как их получить. В микросхеме нет встроенного насоса. Это не современные EEPROM, где высокое напряжение генерируется внутри кристалла. Здесь высокое напряжение должно приходить извне. И для этого нужен внешний источник питания, который из +12 В сделает −33 В.

Самый простой путь - зарядовый насос, он же умножитель напряжения. Это лестница из диодов и конденсаторов, которая работает так. Сначала ключ замыкается, и конденсатор заряжается до +12 В. Потом ключ размыкается, и мы меняем его контакты местами. Теперь конденсатор, заряженный до +12 В, оказывается подключён так, что его плюс соединён с землёй, а минус - с выходом. И на выходе получается −12 В. Потому что мы перевернули заряженный конденсатор.

Повторяем эту операцию три раза. Первый каскад: −12 В. Второй: −24 В. Третий: −36 В. Потом стабилитрон на 33 В срезает лишнее. И вот у тебя есть −33 В для программирования.

Но это не бесплатно. Каждый каскад - это диоды, конденсаторы, генератор импульсов. И каждый каскад теряет часть напряжения на диодах. И каждый каскад греется. И каждый каскад может выйти из строя. И если один из них выйдет - у тебя не будет напряжения программирования. А если будет, но не то - ты сожжёшь микросхему.

Что, если всё-таки попробовать?

Хорошо, предположим, я решил использовать КР1601РР1 для флешки. Допустим, мне нужно 64 килобайта. Одна микросхема - 4 килобита, то есть 512 байт. Делим 64 килобайта на 512 байт и получаем 128 микросхем. 128 микросхем на одной карте. Каждая - 24 ножки. Каждая требует +5 В и −12 В. И каждая требует −33 В для программирования.

Считаем контакты на разъёме. Адресные линии: 10 бит на одну микросхему, но их можно запараллелить между всеми микросхемами. Линии данных: 4 бита на микросхему, но их нужно мультиплексировать между 128 микросхемами. Управление: CS, RD, PR, ER на каждую микросхему. Итого - минимум 40 контактов на разъёме. Сорок золочёных контактов, каждый из которых может окислиться, потерять контакт, сработать с дребезгом.

И это флешка будет размером с кирпич, потребляет десятки ватт и боится любого неосторожного движения. 128 микросхем на одной плате. И каждая может выйти из строя в любой момент. А если одна выйдёт - вся карта превратится в бесполезный кусок текстолита.

Вместо послесловия

Я, попаданец из будущего, привыкший к тому, что «энергонезависимая память» - это просто и дёшево, смотрел на эти микросхемы и понимал: я не смогу их использовать для того, что задумал. Не потому, что они не работают. А потому, что их использование - это подвиг. А подвиги, как известно, плохо масштабируются на производстве пластиковых карт.

Так что я закрыл папку с даташитами, налил себе чаю (хорошо, хоть чай в 1985-м был) и подумал: «Ладно. Может быть, не карты. Может быть, что-то попроще». А потом посмотрел на КР1601РР1 ещё раз. И на её три напряжения. И на её четыре бита. И на её гарантию в четыре месяца. И понял, что даже «попроще» - это целый проект.

Прогрессор из меня в тот день вышел так себе. Но зато я наконец-то понял, почему современные микросхемы такие, какие они есть. Потому что кто-то прошёл через эти три напряжения, четыре бита, минус тридцать вольт на шине данных и гарантию в четыре месяца. И сделал так, чтобы нам больше не приходилось через это проходить.

А если серьёзно - эти микросхемы работали. В них хранили данные. На них делали устройства. Просто это была работа на пределе - на пределе технологии, на пределе удобства, на пределе риска. И то, что сегодня мы можем не думать об этом, - заслуга тех, кто думал об этом тогда.