11,9K подписчиков

1-битный "процессор"? Да! Знакомьтесь - MC14500 - артефакт контроллеростроения

6,3K прочитали

Читатели канала знает, что разрядность ЭВМ может быть самой разной, причем не обязательно кратной байту. Многие знают, что разрядность ЭВМ в целом совершенно не обязательно определяется разрядностью процессора. Существуют процессоры выполняющие последовательную обработку потока данных изменяющейся разрядности. Во времена микропроцессоров разрядность машин обычно кратна байту и составляет 8/16/32, а последнее время чаще всего 64 бита.

Но существовал и "процессор" обрабатывающий всего 1 бит, причем он не был ориентирован на последовательную обработку. Более того, он вообще не был ориентирован на вычисления. Именно поэтому я и заключил слово процессор в кавычки.

Микросхема MC14500, тот самый однобитный процессор, была разработана и выпускалась Motorola. Впрочем, почему выпускалась? Эту микросхему можно найти и сегодня. Вот вполне свежий Datasheet (ориентировочно 1995 год) на нее на сайте farnell.com. Да, этот процессор не слишком известен, но это не делает его менее интересным.

Фотография микросхем MC14500, причем 1993 года выпуска. С сайта wikichip.org
Фотография микросхем MC14500, причем 1993 года выпуска. С сайта wikichip.org

Сама Motorola обозначила MC14500 как "Промышленный блок управления" - Industrial Control Unit (ICU), что совершенно четко указывает на ее область применения. При этом ее внутренняя суть обозначена как "a single–bit CMOS processor" - однобитный КМОП процессор. Так что это действительно процессор, с точки зрения Motorola. И ориентирован он на системы принятия решений на основе однобитной входной информации.

Вскоре после появления в продаже микросхем MC14500 была выпущена книга

что бы помочь разработчикам устройств на базе этой микросхемы. Книга пару раз переиздавалась, насколько знаю.

Зачем?

Самый первый вопрос, который возникает у очень многих, - зачем все это было нужно? Чем не устраивали классические микропроцессоры и микроконтроллеры? Что бы ответить на этот вопрос нужно посмотреть, когда MC14500 появилась на свет. Но точная дата появления этой микросхемы в продаже неизвестна, найти не удалось. Указывается только конец 70-х годов прошлого века. Иногда можно встретить упоминания 1976 года, но редко.

В это время промышленные релейные автоматы вытеснялись электронными, включая устройства на микросхемах дискретной логики. Но была и серьезная проблема, которая практически не встречалась в релейных автоматах. Дело в том, что электронные автоматы были слишком чувствительны к помехам, уровень которых промышленности высок. Поэтому в промышленных автоматах использовались или микросхемы высокопороговой логики (например, наша серия 511), или логические модули на транзисторах (например, серии "Логика"). Повторюсь, что речь идет именно о 70-х годах прошлого века.

Микропроцессоры начали появляться в первой половине 70-х годов прошлого века (TMS1000, Intel4004), но они очень плохо подходили для устройств промышленной автоматики. Основные причины:

  • Низкий уровень помехоустойчивости
  • Ориентация на построение ЭВМ. Промышленной автоматике не требуются вычислительные возможности, но требуется удобство подключения входных и выходных сигналов.
  • Высокая стоимость

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

Я говорил об этом с статье

Однокристальные ЭВМ, микроконтроллеры, были ориентированы на простую работу с дискретными сигналами, что и требовалось в промышленной автоматике. Но с помехоустойчивостью проблемы сохранялись. Да и появились микроконтроллеры позже микропроцессоров, что не удивительно. Одним из первых был микроконтроллер Intel 8048 (семейство MCS-48), который появился в 1976 году. Обратите внимание, это было практически одновременно с нашей MC14500. 8048 оказался не слишком удачным и удобным, поэтому был вытеснен 8051, который появился в 1980 году. Это то самое популярное семейство MCS-51, которое живо и по сей день. Но сегодня речь не о нем, а о MC14500.

Так что MC14500 был одним из вариантов использования процессоров в промышленной автоматике. Причем при его разработке, в отличии от 8048, уделялось внимание и помехоустойчивости. Диапазон питающих напряжений от 5 до 15 В (максимум 18 В). У нашей 511 серии напряжение питания тоже 15 В. Снижение стоимости достигалось максимальным упрощением процессора, к этому еще вернемся. Но вот с простотой работы с дискретными входными/выходными сигналами все далеко не так радужно.

Образец для подражания - релейные автоматы

Специалисты Motorola, которые разрабатывали MC14500 обратили внимание именно на устройства промышленной автоматики, на специфику их функциональности. Вот цитата из вступления той книги, ссылку на которую давал чуть ранее:

"A large number of the problems found in controlling electronic and electromechanical devices involve decision oriented tasks. In addition, these decisions usually result in commands as simple as turning something on or off. Some examples are: Is the limit switch closed? Has the timer interval ended? Turn 011 pump PI7 when relays A, B, and Care closed. Send 20 pulses to the triac. Turn on the TlO: light. Count 60 pulses and start motor M I, and an infinity of like jobs."

То есть, очень многие задачи сводятся к простому анализу событий/состояний связанных с элементами управления, управляемыми элементами, состояниями самого автомата. И достаточно простым реакциям на эти события/состояния. Эта функциональность достаточно просто реализовывалась теми самыми релейными автоматами. Но электромеханические реле обладают и рядом недостатков, вот еще одна цитата из вступления:

"There are, of course, many ways to solve these types of problems. Originally, conceptually simple and easily maintained relays were used extensively. However, relays are bulky, expensive, consume a great deal of power, suffer in terms of long range reliability and also from the fact that they do not lend themselves easily to system changes."

Реле довольно большие и их обмотки потребляют заметную мощность. Кроме того, контакты снижают надежность реле при долговременном использовании. Это все логично и очевидно, но здесь отмечен и еще один недостаток, который весьма важен, хоть и не столь очевиден. Релейные схемы не позволяют так легко вносить изменения в работу релейного автомата. Да, можно добавить управляемые оператором переключатели, но это лишь немного увеличивает количество вариантов поведения автомата. Причем замена реле транзисторами или логическими микросхемами не решает проблему изменения работы автомата. Вот еще одна цитата из книги:

"Next came solid state logic. These devices are quite small, have become extremely inexpensive, consume afraction of the power of a relay and have tremendous long term reliability while remaining conceptually simple and easily maintainable. However, they still suffer from the fact that, once in the system, they are not easily programmable and system changes cannot be made quickly and inexpensively"

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

Motorola описала свой подход, при этом указав, почему обычные процессоры оказываются плохим вариантом. Еще одна, последняя, цитата из вступления к книге:

"Computers alld microcomputers may also be used, but they telld to overcomplicate the task and often require highly trained personnel to develop and maintain the system. A simpler device, designed to operate on inputs and outputs one-at-atime and configured to resemble a relay system, was introduced. These devices became known to the controls industry as Programmable Logic Controllers (PLC)."

Здесь ключевое значение имеют два момента:

  • "A simpler device, designed to operate on inputs and outputs one-at-atime and configured to resemble a relay system". Простое устройство по поведению сходное с релейными системами.
  • "These devices became known to the controls industry as Programmable Logic Controllers (PLC)". Такие устройства стали как Программируемые Логические Контроллеры. Мы их сегодня знаем как ПЛК (PLC). Это подразумевает изменение работы такого устройства с помощью изменения программы.

Раз MC14500 работает "подобно релейным автоматам", то давайте кратко посмотрим, как эти автоматы устроены.

Релейные автоматы

Точнее, релейно-контактные автоматы. Как следует из названия, их основным элементом является электромагнитное реле. А реле состоит из двух основных элементов:

  • одна или несколько катушек
  • Одна или несколько контактных групп на размыкание/замыкание/переключение

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

Очень кратко, но наглядно, о реализации логических схем на электромагнитных реле, я рассказывал с статье

Там же приводил простую релейную схему. Но релейные автоматы могут быть куда более сложными. Вот пример схемы релейного автомата лифта

Схема релейного автомата лифта
Схема релейного автомата лифта

Последовательное и параллельное включение различных контактов реле позволяет реализовывать различные логические функции. Если контакты использовать не только для коммутации нагрузок, но и для коммутации катушек реле, то мы можем получить и более сложные логические функции, например, "Исключающее ИЛИ". И даже последовательностные схемы и триггеры.

Хорошо видно, что релейные схемы не обладают вычислительными способностями, но логические схемы на их основе позволяют анализировать простые события/состояния, что дает возможность формировать простые управляющие воздействия. Это и есть то самое "принятие решений", которое отметили в Motorola. Результат вычисления значения логической функции, которая задается включением контактов реле и элементов управления (кнопки, переключатели, концевые выключатели, и т.д.), определяет состояние нагрузки, включена/выключена. То есть, протекание тока через нагрузку. Причем нагрузкой может быть и катушка реле.

Сложность логической функции, количество переменных, может быть значительным. Но мы знаем, что сложную логическую функцию многих переменных мы можем реализовать на простых функциях всего двух переменных. А для функции "НЕ" нужна только одна переменная.

Все это и легло в основу концепции MC14500. Две логических переменных на входе, изменяемая программно логическая функция, одна логическая переменная на выходе, как результат применения логической функции к входным переменным. То есть, обработка ровно одного бита. Максимальное упрощение.

MC14500 как программируемая логическая ячейка

На ICU MC14500 можно взглянуть и с другой стороны. Можно рассматривать эту микросхему как универсальный логический элемент, функция которого задается программно.И мы получаем отдаленного предка логической ячейки, которая может стать ячейкой ПЛМ. И с этой точки зрения MC14500 наиболее интересна. Но конечно в историческом аспекте, если говорить о дне сегодняшнем.

Тем не менее, это не просто логическая ячейка, это именно элемент логического однобитного процессора. В ней имеет регистр-защелка входных данных и регистр результата. Вот функциональная схема (из документации 93 года на микросхему)

Функциональная схема MC14500. Из документации
Функциональная схема MC14500. Из документации

Регистр команды с дешифратором команд определяет выполняемую логическим устройством (LU) машинную команду. Всего таких команд 16. И это не только логические функции. Вот полный набор команд

Набор команд MC14500. Из документации
Набор команд MC14500. Из документации

Кроме логических команд есть команды загрузки и сохранения. И команды управления флагами перехода/возврата.

Но, если присмотреться внимательно, то станет видно, что не хватает одного очень важного элемента - счетчика команд! И именно поэтому набор команд включает команды управления флагами, а не команды перехода/возврата. Таким образом, процессор, или ICU, с точки зрения Motorola, с точки зрения дня сегодняшнего превращается в процессорный элемент! Это не полноценный процессор, а лишь элемент процессора. Увы...

Система на базе MC14500

Для получения хотя бы самой минимальной (базовой) системы на MC14500 нам придется добавить довольно много компонентов. Вот максимально упрощенная функциональная схема такой системы

Базовая (минимальная) система на основе MC14500. Из книги, ссылка на которую дана в начале статьи
Базовая (минимальная) система на основе MC14500. Из книги, ссылка на которую дана в начале статьи

В самом центре расположилась наша MC14500 (ICU). Память внешняя, по отношению к ICU, что в то время не считалось недостатком, это было типовым. Но здесь и счетчик команд внешний, на базе реверсивного счетчика MC14516. При этом адреса команд программы управляются не ICU, а внешней логикой. Входной сигнал выбирается внешним регистром MC14512, а выходной защелкивается в внешнем регистре MC14599. И это гораздо сложнее, чем в полноценном (по тем временам) микроконтроллере 8048.

Если же посмотреть на более полную функциональную схему минимальной системы, то становится еще более грустно

Детальная функциональная схема минимальной системы на основе MC14500. Из книги, ссылка на которую дана в начале статьи
Детальная функциональная схема минимальной системы на основе MC14500. Из книги, ссылка на которую дана в начале статьи

Сможете найти здесь собственно MC14500? В книге есть и принципиальная схема демонстрационной системы на MC14500, вот она

Принципиальная схема демонстрационной системы на MC14500. Из книги, ссылка на которую дана в начале статьи
Принципиальная схема демонстрационной системы на MC14500. Из книги, ссылка на которую дана в начале статьи

Что бы вы смогли найти здесь ICU я выделил его красным прямоугольником. И эта схема сложнее, чем ПЛК на той же 8048. Причем эта демонстрационная система не поддерживает переходы и подпрограммы. Это наглядная демонстрация разности подходов специализированного процессора, эмулирующего поведение релейных схем, и полноценной однокристальной микроЭВМ (микроконтроллера). Теперь не трудно понять, почему MC14500 не обрела большой популярности.

В книге можно найти и схему системы на MC14500, которая поддерживает переходы и подпрограммы. Я не буду ее приводить, заинтересовавшиеся найдут ее в 12 главе книги.

MC14500 как программируемый релейный автомат

Но давайте посмотрим, кратко, как Motorola использовала свою концепцию программируемого релейного автомата при описании принципов построения и работы систем на MC14500. Лишь на одном примере. Сначала сопоставляется схема релейного автомата с логическим эквивалентом

Сопоставление схемы релейного автомата и логической схемы (на логических элементах). Из книги о MC14500
Сопоставление схемы релейного автомата и логической схемы (на логических элементах). Из книги о MC14500

Поскольку обозначения контактов на релейных схемах здесь иное, я отметил это на иллюстрации. Это не конденсаторы, как может показаться, а контакты реле (кнопок, переключателей). После этого можно реализовывать логическую схему (функцию) программно

Программа для MC14500, которая реализует логическую функцию, соответствующую логической схеме, соответствующую релейному автомату. Иллюстрация из книги о MC14500
Программа для MC14500, которая реализует логическую функцию, соответствующую логической схеме, соответствующую релейному автомату. Иллюстрация из книги о MC14500

Последний столбец здесь является комментарием, который поясняет, что именно, и как именно, происходит при выполнении этой программы. Первый столбец это номера строк. Таким образом, собственно программа это второй и третий столбец иллюстрации.

Таким образом Motorola и пыталась показать, что релейную схему легко преобразовать в программу и этому легко научить существующего специалиста про релейной автоматике. Но, в отличии от релейных автоматов и их аналогов на логических микросхемах, можно создать достаточно универсальный автомат (уже ПЛК), который потом можно использовать в самых разных ситуациях, ведь его поведение легко изменяется программно. Можно экономить "на железе" за счет введения дополнительного уровня в виде программирования. Это усложнение, но это же и удешевление.

Заключение

Лежащие в основе концепции MC14500 подходы достаточно логичны. Но в том виде, как это было реализовано, MC14500 почти вчистую проиграла микроконтроллерам, пусть и в виде однокристальных микроЭВМ. При этом примеры в книге, да и демонстрационная система, не раскрывали в полной мере потенциал MC14500. Ведь она работала в статическом режиме, поэтому можно было собирать куда более интересные системы с использованием сразу нескольких таких ICU. Не было необходимости именно в последовательной обработке набора сигналов. Можно было собирать систему так, как делалось на реле, из множества отдельных элементов.

Впрочем, все это уже лишь история. Вряд ли сегодня здравомыслящий человек будет собирать систему на MC14500. Но сама концепция, пусть и сильно измененная, легла в основу ПЛМ. Это история, которая не состоит из одних лишь побед. Но иногда и неудачное решение, которое казалось полным поражением, может использоваться для чего-то нового, которое станет успехом.

До новых встреч!