Звонок от Intel

Две макетных платы, которые давно лежат без дела, напомнили историю из советских времен, когда было очень по­пу­ляр­но самим собирать различные электронные схемы — образование многим это позволяло, на­вы­ки были, а дефицит «товаров народного потребления» только подхлестывал интерес к самоделкам. Спектр домашних конструкций был до­воль­но широким — от квад­ро-усилителей и виниловых вертушек с тан­ген­ци­аль­ным тонармом, до индикаторов ро­е­ния пчел в улье и автоматических выключателей света в ту­а­ле­те.

Особенно популярными были всевозможные электронные часы, а те, что выполнены на индикаторах тле­ю­ще­го раз­ря­да типа ИН12 переживают вторую молодость и сейчас. Детали добывались на пред­при­я­ти­ях обо­рон­ной про­мыш­лен­но­с­ти, конструкции опи­сы­ва­лись на страницах ра­ди­о­лю­би­тель­ской пе­ри­о­ди­ки, вы­зы­вая все­со­юз­ный по­иск де­фи­цит­ных ми­кро­схем, например, К284СС2 — для ама­тор­ских до­ра­бо­ток маг­ни­то­фо­на системой шумопонижения Dolby B из журнала «Радио» за 1976 год. Не­ко­то­рые раз­ра­бот­ки шли в народ пря­мо из ла­бо­ра­то­рий раз­лич­ных НИИ и заводских КБ, ми­нуя ши­ро­кую ог­лас­ку, и тем са­мым, при­да­вая ве­щам экс­клю­зив­ность.

Процессорная история

В начале 1986 года я разработал мелодичный квартирный звонок на процессоре К580ВМ80 (советский ана­лог 8-ми раз­ряд­но­го процессора Intel 8080). В нем было запрограммировано 24 мелодии, при каждом на­жа­тии кнопки двер­но­го звон­ка звучала новая, выбранная по случайному закону. В то время в бы­ту еще ши­ро­ко ис­поль­зо­ва­лась лам­по­вая тех­ни­ка, «од­но­крис­та­лок» не было и в помине, и эта игрушка ка­за­лась чем-то кос­ми­че­ским и очень ори­ги­наль­ным.

Мелодичный квартирный звонок на процессоре К580ВМ80 (советский аналог 8-ми разрядного процессора Intel 8080), в котором запрограммировано 24 мелодии, и при каждом нажатии кнопки дверного звонка звучала новая, выбранная случайно

 

Документацию (схему и прошивку в виде микросхемы К573РФ5) дал мне один знакомый, который работал на ки­ев­ском НПО «Кристалл», где делали и процессоры, и память. Как потом выяснилось, там и придумали эту иг­руш­ку — для мо­ло­дых лю­дей из Ки­ев­ск­ого НИИ «Ми­кро­при­бор» это было одной из форм са­мо­ре­а­ли­за­ции: эле­мен­т­ная база есть, до­ку­мен­та­ция есть, сред­с­т­ва раз­ра­бот­ки — рабочий ин­ст­ру­мент все­г­да под ру­кой, про­г­рам­ма­тор ПЗУ — не проблема, сво­бод­ное от работы рабочее время тоже бы­ло. Грех не вос­поль­зо­вать­ся, осо­бен­но с учетом того, что двер­ной зво­нок на ми­кро­про­цес­со­ре казался очень ори­ги­наль­ным, а ча­сы к то­му вре­ме­ни уже из­ряд­но всем надоели.

Мелодии были двух типов: детские песни из мультфильмов и популярные шлягеры того времени. Все ПЗУ бы­ло за­пол­не­но ими до отказа. Сама программа занимала байт 100, остальное (около 1,8 КБ) — мелодии. Я на ско­рую руку сде­лал плат­ку, при этом умудрился тактовый генератор К580ГФ24 установить зеркально, но уст­ра­нять ошибку не стал — же­ла­ние по­ско­рей услы­шать, как работает настоящий ми­кро­про­цес­сор, было силь­нее.

Звонок было очень удобно установить в корпусе трансляционного громкоговорителя, используя и динамик и ре­гу­ля­тор гром­ко­с­ти. Единственное неудобство было в необходимости использования дополнительной кноп­ки на са­мом гром­ко­го­во­ри­те­ле для принудительного отключения питания, если процессор вдруг за­вис­нет. К счас­тью, у меня уже был опыт ра­бо­ты с про­цес­со­ра­ми — я к тому времени с большим трудом, но все же сде­лал свой ра­ди­о­лю­би­тель­ский ком­пью­тер «Микро-80», поэтому при исправном ПЗУ зво­нок не сра­зу, но за­ра­бо­тал.

На гостей музыкальный мажордом производил неизгладимое впечатление — некоторые на­жи­ма­ли кно­п­ку по не­сколь­ку раз. Зво­нок проработал на квартире у родителей примерно до 2000 г., потом вы­шел из строя блок пи­та­ния и чинить его было недосуг. Да и интересы уже были совсем другие… Звонок я снял, а платы уш­ли на хра­не­ние в даль­ний ящик. Документацию ценности не представляла, поэтому канула в ле­ту. Ис­то­рия эта уже по­ч­ти стерлась из мо­ей жиз­ни, но случайная встреча с «остатками былой роскоши» ос­ве­жи­ла в па­мя­ти не­дав­нее про­ш­лое.

Вторая молодость

Мне очень захотелось включить это устройство и вспомнить атмосферу молодости. По плате я восстановил прин­ци­пи­аль­ную схему звонка:

Принципиальная схема звонка на базе процессора Intel 8080

 

При анализе схемы звонка я обратил вни­ма­ние на то, как изящ­но разработчики решили проблему ми­ни­ми­за­ции ап­па­рат­ных затрат. Суть ее в том, что К580ВМ80 — это не од­но­крис­тал­ка, а центральный про­цес­сор для мик­ро-ЭВМ, пусть и не самый совершенный. Поэтому в его обвязке требуется дешифраторов ад­ре­са ПЗУ, пор­ты ввода-вывода, про­г­рам­мный генератор случайных чисел и как-то обходить отсутствие кон­т­рол­ле­ра сис­тем­ной шины.

В отсутствии оперативной памяти программное обеспечение не использовало стек, оперируя, не считая ре­гист­ра-ак­ку­му­ля­то­ра, только тремя регистровыми парами. Замечу, что Stackless-технология в будущем ста­ла вос­тре­бо­ван­ной в по­стро­е­нии первых BIOS.

Ситуация осложнялась тем, что i8080 и его клоны по­зи­ци­о­ни­ро­ва­лись для ми­кро­ком­пью­те­ров. Их при­ме­не­ние для встра­и­ва­е­мых решений было не самым лучшим выбором. Эту нишу занимал Intel 8048 и его ана­лог К1810ВЕ48, у ко­то­рых на борту имелись порты ввода-вывода, таймеры, ПЗУ, небольшое ОЗУ, при­ми­тив­ная система ап­па­рат­ных пре­ры­ва­ний, встро­ен­ный так­то­вый ге­не­ра­тор. Они требовали всего од­ну линию питания +5В.

У К580ВМ80 всего этого нет, и разработчики игрушки прибегли к ряду технологических трюков: им пришлось ис­поль­зо­вать микросхему формирователя тактовых последовательностей К580ГФ24 (Intel 8224), что было оп­рав­да­но спе­ци­фи­кой про­цес­со­ра. Он был оснащен встроенной схемой формирования сигнала Reset (са­мое ин­те­рес­ное, что вме­с­то квар­ца в дан­ном случае прекрасно работает конденсатор 8,2 пФ), хотя этот чип до­ста­точ­но чув­ст­ви­те­лен к вре­мен­ной ди­а­грам­ме тактовых фаз и использует сигнал с амплитудой +12В.

Порты вывода были реализованы очень ост­ро­ум­но — сигнал мелодии формируется командами раз­ре­шить пре­ры­ва­ние и за­пре­тить пре­ры­ва­ние. Это позволяет сигнал разрешения прерывания INTE пе­ре­во­дить в со­сто­я­ние ло­ги­че­ской «еди­ни­цы» или логического «нуля». Вводя между командами пре­ры­ва­ния различную во вре­ме­ни задержку, мож­но бы­ло ге­не­ри­ро­вать раз­лич­ные ме­ло­дии.

Команда на выключение питания после отработки ме­ло­дии по­да­ет­ся по команде процессора HALT (видимо, в ко­ман­де раз­ра­бот­чи­ков Intel были немцы), на выходе процессора WAIT при этом формируется высокий уро­вень и ре­ле вы­клю­ча­ет пи­та­ние. Кнопка звонка под­клю­че­на па­рал­лельvно контактам реле, которые в свою оче­редь включены в раз­рыв пер­вич­ной об­мот­ки тран­с­фор­ма­то­ра питания.

Дешифратор ПЗУ сделан при помощи одного адресного вывода А15. Если там «0» (процессор К580ВМ80 на­чи­на­ет вы­пол­нять команды с нулевого адреса), то ПЗУ подключено к шине данных. При обращении к ад­ре­сам вы­ше 32767-го ПЗУ переводится в 3-е состояние. Это сделано для того, чтобы по шине данных D0 мож­но бы­ло при­ни­мать сигнал от аппаратной части генератора случайного числа, собранной на транзисторе VT1.

Генератор случайных чисел работает следующим образом: программно организованный счетчик номера ме­ло­дии с ну­ля в цикле увеличивает на 1 свое состояние, и на каждом шаге приращения содержимого счет­чи­ка про­ве­ря­ет­ся со­сто­я­ние разряда D0. При этом на адресном разряде A15 устанавливается «1» . Тран­зис­тор VT1 че­рез ре­зис­тор R5 от­крыт, на входе D0 присутствует высокий лог уровень через резистор R4, при этом кон­ден­са­тор С2 по­сте­пен­но за­ря­жа­ет­ся от пе­ре­мен­но­го на­пря­же­ния через диод VD3, и резисторы R3 и R5, про­ти­во­дей­с­т­вуя заряду конденсатора С1. В мо­мент за­кры­тия тран­зис­то­ра (сигнал сброса уже дол­жен про­йти) на линии данных D0 по­яв­ля­ет­ся ло­ги­че­ская «еди­ни­ца», счет­чик ос­та­нав­ли­ва­ет­ся при этом, ус­пев мно­го­крат­но переполниться, и оставшееся число в счетчике ис­поль­зу­ет­ся в качестве номера вос­про­из­во­ди­мой ме­ло­дии. Поскольку при включении фаза питающего напряжения при­об­ре­та­ет случайное зна­че­ние, — на­пря­же­ние в сети может колебаться — и номер мелодии будет случайным, по­сколь­ку кон­ден­са­тор С2 каж­дый раз бу­дет заряжаться до отпирающего напряжения за разные промежутки времени от­но­си­тель­но сиг­на­ла сбро­са. Ме­тод капризный и нестабильный, но достаточно просто реализуем ап­па­рат­но. При этом, как ока­за­лось впо­след­с­т­вии, не все мелодии были равновероятны. Но, как известно, за все нужно пла­тить и та­кая осо­бен­ность ста­ла рас­пла­той за простоту реализации. При подключении питания зво­нок за­ра­бо­тал сра­зу, и я ус­лы­шал давно за­бы­тые ме­ло­дии.

Post Factum

Один знакомый в конце 80-х во время кооперативного бума захотел попробовать выпускать этот звонок се­рий­но, но к то­му времени уже появились CMOS-микросхемы 1830ВЕ51 (Intel 80C51) и PIC-контроллеры со сверх­ма­лым то­ко­пот­реб­ле­ни­ем, позволяющие делать звонок на двух пальчиковых батарейках и одной мик­ро­схе­ме. Понятно, что ис­поль­зо­ва­ние i8080 в таких условиях не могло иметь коммерческого успеха в прин­ци­пе. Тем не ме­нее, опыт­ный об­ра­зец все же был из­го­тов­лен, где из пижонских соображений стоял на­сто­я­щий эле­мент па­мя­ти i2716 и процессор TMS8080A от Texas Instrumets, но в серию это устройство пой­ти не мог­ло по со­об­ра­же­ни­ям рентабельности.

Коммерческая версия дверного звонка с использованием процессора TMS8080A от Texas Instrumets

 

Макет на TMS8080A тоже достался мне, и он оказался работоспособным. Благодаря наличию панельки там мож­но бы­ло про­ве­рить запасы старых процессоров К580ИК80 — все они оказались исправными.

«Коммерческая» плата была разведена без ошибок, имела отличную от моей топологию, и довольно ка­чес­т­вен­ную для тех времен металлизацию отверстий. Единственное, что мне не понравилось в этой пла­те — это слиш­ком тонкие дорожки, особенно по питанию. Но, как ни странно, все работает. До сих пор ра­бо­та­ет. Эта му­зы­ка те­перь будет длить­ся веч­но…