Motorola 6800

08.02.2021

Motorola 6800 — первый 8-ми разрядный микропроцессор фирмы Motorola. Его разработка была закончена в начале 1974 года, практически одновременно с микропроцессором Intel 8080. Однако из-за технологических трудностей его массовое производство началось лишь более полугода спустя после начала поставок 8080. Это привело к тому, что первые популярные микрокомпьютеры были сделаны на Intel 8080.

Система команд 6800 включает 72 документированные команды, использующие 7 методов адресации, а также несколько недокументированных бесполезных команд, из которых лишь команда «Halt and Catch Fire» (HCF) полезна при поиске дефектов шины адреса. Возможно, это был первый микропроцессор с индексным регистром. Считается, что архитектура процессора 6800 заимствована у PDP-11.

Первая версия кристалла 6800 1974 года содержала 4000 транзисторов, но технология была устаревшей относительно конкурентов и процент выхода годных микросхем при производстве низок. Через 1.5 года кристалл был переработан на более новую (depletion-mode)[1] технологию, что позволило резко увеличить ПВГ и одновременно поднять тактовую частоту до 2 МГЦ, но число транзисторов при этом увеличилось до 5000. С марта 1977 начался выпуск улучшенной версии 6800 — процессора 6802. Он не нуждался в задающем генераторе 6875 и имел внутри кристалла ОЗУ в 128 байт, но число транзисторов в нём увеличилось уже до 11 тысяч. 6808 — отбраковка 6802 без ОЗУ на кристалле.

На этом развитие и история самого процессора 6800 закончились. Микроконтроллеры, начиная с 6801 имели уже расширенную систему команд, а 6809, разработанный в 1979 году, это несовместимый по кодам команд процессор, хотя при наличии исходного текста, — программы, написанные для 6800, перетранслируются под 6809, что упрощало апгрейд.

Программная модель

A — Аккумулятор A
B — Аккумулятор B
X — Индексный регистр
PC — Программный счётчик
SP — Указатель стека
CCR — Регистр флагов (Conditional Code Register)

Применение 6800

6800 как процессор для ЭВМ имел сравнительно скромный успех лишь в микрокомпьютерах первой волны (1975—1978). Роль сыграла случайность и субъективный фактор, — ошибочный маркетинг (6800 вначале не продавался в розницу) и разработчики процессоров Motorola в 70-тые годы постоянно опаздывали. Злую шутку сыграли бывшие разработчики 6800, организовавшие свою фирму и выпустившие в 1975 году значительно более дешёвый процессор MOS 6502. Его агрессивный маркетинг, преувеличенная реклама и демпинговая ценовая политика существенно снизили использование 6800.

Хотя успех микроконтроллеров серии 680x (которые производятся до сих пор) доказал, что архитектура процессора и его система команд вполне конкурентны. В 1977 году 6800 на такте 2 МГЦ превзошёл вдвое по производительности процессор 8080, но другие конкуренты сработали лучше, — к тому времени появился Z80 с частотой 4 МГЦ. Процессор 6800 лишь проложил путь к ставшему самым лучшим 8-разрядным процессором 6809.

Процессор 6800, если и уступал по производительности процессору 8080, то немного. Это ещё раз проиллюстрировал созданный в конце 80-тых успешный болгарский компьютер Пылдин-601. В нём уже устаревший на 15 лет болгарский клон 6800 на частоте всего 1 МГЦ работал с графикой 640*200, ничуть не медленнее, чем аналогичные машины, имеющие такой же экран, но использующие процессор 8080 на такте 2 МГЦ.

В середине 1970-тых годов микрокомпьютеры использовали в основном любители. Первые микрокомпьютеры продавались посылторгом в виде набора деталей для самостоятельной сборки. Для непосвященных такой компьютер был бесполезен, да и для опытных пользователей был по существу лишь дорогой игрушкой. Пользователю первые микрокомпьютеры могли предложить лишь Tiny BASIC[2] и несколько десятков простых текстовых игр на нём. Микрокомпьютеры первой волны не имели экранной памяти в адресном пространстве ЦП (выводили на терминал на скорости 150 бод), потому не могли предложить динамичных игр, существенно уступая первым бытовым компьютерам в качестве и количестве программ, конструктивному удобству и цене.

6800 в качестве процессора использовали компьютеры SWTPC 6800, MITS Altair 680 (дешёвый вариант Altair 8800), Ohio Scientific, Gimix, Smoke Signal Broadcasting, Midwest Scientific и Newbear 77/68 и игровая консоль APF MP1000. Некоторые из этих моделей были пиратскими клонами. Самым развитым и массовым был SWTPC 6800, но в целом большую часть рынка подобных изделий захватили процессоры 8080 и 6502.

Эти компьютеры полукустарным способом выпускали мелкие фирмы из нескольких десятков сотрудников и к 1978 году по мере появления первых массово выпускаемых промышленных изделий (VIC-20, TRS-80, Apple-II) все эти фирмы, кроме SWTPC, разорились и вышли из бизнеса. Фирма SWTPC продержалась до начала 80-тых, хотя для этого процессор в компьютере пришлось заменить на более мощный 6809.

Помимо компьютеров, процессор 6800 нашёл применение в кассовых терминалах, автомобилях и игровых автоматах 70-тых годов. Изделия на процессоре 6800 были более дешёвыми, чем аналогичные на 8080, что вызывалось наличием у последнего 3-х источников питания, большим числом БИС обрамления и тем, что код 8080 менее компактный, что было важно при высокой стоимости ОЗУ и ПЗУ. Но при том же времени доступа к ОЗУ Intel 8080 обеспечивал большую производительность.

Дальнейшее развитие системы команд 6800 связано с микроконтроллерами. На этом рынке производным от 6800 микроконтроллерам удалось преуспеть.

Микроконтроллеры

6802 — процессор, но наличие внутри кристалла ОЗУ позволяло его использовать и как двухкристальный микроконтроллер, для чего он работал в паре с 6846, содержащим ПЗУ, таймер и порты.

Микроконтроллеры 6801, 6803 и 6805 ещё можно относить к процессорам 6800, хотя они и отличаются от 6800/6802 наличием дополнительных команд, тем не менее их можно использовать как процессор и построить на них компьютер полностью совместимый с 6800. Последующие микроконтроллеры на базе 6800 уже не совместимы, имеют другую архитектуру и строго говоря не должны входить в семейство 6800.

Разработка однокристального микроконтроллера 6801 была закончена одновременно с 6802. Он объединял на одном кристалле улучшенный вариант 6802 (добавлено 10 новых команд, в том числе аппаратно реализованное умножение) с внутренним генератором, ПЗУ 2 кБ, ОЗУ 128 байт, последовательный интерфейс, один 16-разрядный таймер и 29 I/O портов. А 6803 — это вариант 6801 с внешним ПЗУ. Первый опыт применения 6801 в контроллере автомобиля оказался неудачным, — контроллер ощутимо увеличивал цену автомобиля. Высокая цена первых 6801 была обусловлена проблемами технологии из-за большого числа транзисторов на кристалле (их было 35 000, что больше, чем у 8086 и 8088). Чтобы исправить ситуацию, в 1979 был выпущен изначально разрабатываемый как «low cost» — упрощённый вариант 6801 под именем 6805, который, благодаря низкой цене, получил широкое распространение (и выпускается до сих пор как 68HC05).

Но и 6801 не был заброшен. В начале 80-тых его кристалл был переработан по новой технологии, что позволило в новой версии 6801/U4 не только многократно снизить цену, но одновременно существенно улучшить параметры. Hitachi выпустила более развитый клон 6801, имеющий доп.команды под именем HD63x01 (x — A/B/C — означают тактовую частоту), а затем и полностью свой процессор HD63x03 (уже в DIP 64) в который добавлены два параллельных порта, второй таймер, удвоено ОЗУ и ПЗУ, введены режимы энергосбережения. Оба японских процессора прогоняют команды за меньшее число тактов.

В 1985 году в микроконтроллер 6801 был добавлен второй индексный регистр, улучшены битовые операции. Этот микроконтроллер под наименованием 68HC11 производился в множестве вариаций (и производится до сих пор), хотя из-за наличия второго индексного регистра логичнее считать его производным от 6809. В начале 90-тых на смену 68HC05 пришёл 68HC08. В 1995 году на базе MC68HC11 был разработан MC68HC12. Но все эти микроконтроллеры имеют отношение к 6800 лишь по происхождению и имеют другую архитектуру и систему команд.

Микроконтроллеры производные от 6800 широко использовались в автомобилестроении, контроллерах промышленного оборудования (роботизированные линии производства), а микроконтроллер 6803 в 1983 году был применён в качестве ЦП в бытовом компьютере TRS-80 MC-10 и в его европейском клоне Matra Alice (а также в более развитых версиях Alice 32 и Alice 90).

Периферия

  • MC6810 ОЗУ на 128 байт
  • MC6818 часы реального времени (использовались в IBM PC AT)
  • MC6820/6821 «PIA» адаптер параллельного интерфейса (GPIO / параллельный порт)
  • MC6828 «PIC» контроллер прерываний
  • MC6830 ПЗУ на 1 Кб
  • MC6840 счётчик/таймер
  • MC6843 контроллер дисковода
  • MC6844 DMA-контроллер
  • MC6845 контроллер ЭЛТ (использовался в MDA и CGA)
  • MC6846 ПЗУ + счётчик/таймер + порты I/O
  • MC6847 «VDG» — видеоконтроллер
  • MC6850 «ACIA» — адаптер асинхронного последовательного интерфейса
  • MC6852 «SSDA» — синхронный последовательный интерфейс
  • MC6854 «ADLC» — усовершенствованный связной контроллер
  • MC6860 модем на 600 бод
  • MC6862 модулятор для модема на 2400 бод
  • MC6870 задающий генератор для 6800
  • MC6875 улучшенная версия MC6870
  • MC6883 «SAM» — вспомогательная БИС для VDG 6847 и контроллер DMA

Клоны и производные

В НРБ производился полный клон процессора 6800 под названием СМ601, который использовался в промышленных контроллерах и одном бытовом компьютере. Японская фирма Hitachi кроме выпуска по лицензии клонов микропроцессоров Motorola, разработала собственные улучшенные их версии — Hitachi 6301 и Hitachi 6303 с расширенным набором инструкций, которые могли выполнять код, написанный для 6800.

На основе 6800 были разработаны однокристальные контроллеры Freescale 68HC08, Freescale 68HC11 и Freescale 68HC12.