Zilog Z80 - Zilog Z80


Из Википедии, свободной энциклопедии
Zilog Z80
Zilog Z80.jpg
Z80 произведен в июне 1976 года в соответствии с датой регистрации
произведенный С марта 1976 по настоящее
Обычный производитель (ы)
Максимум. CPU частота 2.5, 4, 6, 8 МГц до 10 МГц с КМОП вариант до 20 МГц и бинарных совместимых производных (от Zilog) до 33 МГц и 50 МГц.
Мая 1976 рекламы для Z-80 8-разрядного микропроцессора Zilog

Z80 процессор представляет собой 8-разрядный на основе микропроцессора . Он был введен Zilog в 1976 году как стартап компании первого продукта «s. Z80 был задуман Федерико Фаггин в конце 1974 года и разработанная им и его тогдашним 11 сотрудников на Zilog с начала 1975 до марта 1976 года, когда первые полностью рабочие образцы были доставлены. С доходами от Z80, компания построила свои заводы чипа и выросла более тысяч сотрудников в течение следующих двух лет.

Zilog Z80 был программно совместимы расширение и усиление Intel 8080 и, как это было в основном направлено на встраиваемых систем . По словам дизайнеров, основными мишенями для Z80 CPU (и его опциональной поддержкой и периферийных ИС) были продукты , такие как интеллектуальные терминалы , высокого класса принтеров и современных кассовых аппаратов , а также телекоммуникационного оборудования, промышленных роботов и других видов автоматизации оборудования. Z80 был официально представлен на рынке в июле 1976 года и стал широко использоваться и в общих настольных компьютерах , использующих CP / M и других операционных системах , а также в домашних компьютерах 1980 - х лет. Она также была распространена в военных целях, музыкального оборудования , таких как синтезаторы , и в компьютеризированной монетоприемник видеоигры конца 1970 - х и начале 1980 - х, на игровых автоматов или игровых аркадных шкафы .

Z80 был один из наиболее часто используемых процессоров в домашнем компьютерном рынке с конца 1970 - х до середины 1980-х годов. Zilog лицензию на Z80 для базирующегося в США Synertek и Mostek, которые помогли им первоначального производства, а также европейского второго источника производителя, SGS . Дизайн также был скопирован несколькими японцами, Восточной Европы и Советского Союза производителей. Это выиграл признание Z80 на мировом рынке , так как крупные компании , как NEC , Toshiba , Sharp и Hitachi начали выпускать устройства (или их собственные Z80-совместимые клоны или конструкции). В последние десятилетия Zilog была переориентирована на постоянно растущий рынок для встраиваемых систем (для которых первоначально Z80 и Z180 были разработаны) , и самый последний Z80-совместимый микроконтроллер семейства, полностью конвейерный 24-битный eZ80 с линейным 16  MB адрес диапазон , был успешно введен наряду с простой Z180 и Z80 продукции.

история

Фотография оригинального Zilog Z80 микропроцессорной дизайн в истощении нагрузки NMOS. Общая матрица размером 3545 × 3350 мкм. (Эта фактическая микросхема изготовлена в 1990 году)
Фотонегатив Z80 в DIP40 пакет чип разводка

Z80 появился, когда физик Федерико Фаггин покинул Intel в конце 1974 г. по найденному Zilog с Ральфом Ungermann . В Fairchild Semiconductor , а позже в Intel , Фаггин работал на фундаментальном транзисторе и полупроводниковые технологии производства. Он также разработал базовую методологию проектирования , используемую для памяти и микропроцессоров в Intel и вел работу на Intel 4004 , в 8080 и несколько других микросхемах. Masatoshi Shima , основная логика и транзистор уровня дизайнер 4004 и 8080 под руководством Фаггина, присоединился к команде Zilog.

К марту 1976 года, Zilog разработал Z80, а также сопроводительную ассемблере на основе системы разработки для своих клиентов, а в июле 1976 года, это был официально запущен на рынок. (Некоторые из вспомогательных и периферийных ИС Z80 были в стадии разработки в этой точке, и многие из них были запущены в течение следующего года.)

В начале Z80s были изготовлены Synertek и Mostek до Zilog имел свой собственный завод по производству готовых, в конце 1976 г. Эти компании были выбраны потому , что они могли бы сделать ионной имплантации , необходимые для создания обедненного режима MOSFETs , что конструкция Z80 , используемых в качестве нагрузки транзисторов для того чтобы справиться с одним источником питания 5 вольт.

Фаггин разработан набор команд , чтобы быть бинарным совместимы с Intel 8080 , так что большинство 8080 код, в частности, CP / M операционной системы и от Intel PL / M компилятор для 8080 (а также его сгенерированный код), будет работать без изменений на новом Z80 ЦПУ. Masatoshi Shima разработан большинство микроархитектуры , а также уровней затвора и транзистор процессора Z80, при помощи небольшого числа инженеров и компоновочных людей. Генеральный директор Федерико Фаггин фактически принимали активное участие в работе макета чипа, вместе с двумя выделенными людьми макета. Фаггин работал 80 часов в неделе в целях удовлетворения сжатых сроков , данных финансовых инвесторами, в соответствии с самими собой.

Z80 предложил много усовершенствований по сравнению с 8080:

  • Расширение набора команд , в том числе одно-битную адресацию, сдвигает / вращается на память и регистры, кроме аккумулятора , вращать инструкции для BCD числа строк в памяти, программа зацикливание , программа счетчика относительные скачки, блок копирования , блок ввода / вывода (I / O ), и инструкция поиска байт. Z80 включили флаг переполнения и имели лучшую поддержку подписанных 8- и 16-битных арифметику.
  • Нью - IX и IY индексные регистры с инструкциями по прямой базе + смещение адресации
  • Лучше прерывания системы
    • Более автоматическая и общая Векторизованная система прерываний , режим 2 , в первую очередь предназначена для линии Zilog в противоионах / таймеров, DMA и коммуникационных контроллеры, а также систем прерываний фиксированного вектора, режим 1 , для простых систем с минимальными аппаратными средствами (с режимом- существами режим 8080-совместимый).
    • A Non маскируемых прерываний (NMI) , который может быть использован для реагирования на отключение питания ситуаций или других высокоприоритетных события (и позволяя минималистичный систему Z80 легко реализовать схему прерываний два уровня в режиме 1 ).
    • Два отдельных регистр файлов , которые могут быть быстро переключаются, чтобы ускорить реакцию на прерывания , такие как быстрые асинхронные обработчики событий или многозадачный диспетчер . Несмотря на то, что они не были предназначены в качестве дополнительных регистров для общего кода, они , тем не менее использовали этот путь в некоторых приложениях.
  • Меньше аппаратных средств , необходимых для питания , генерации тактового и интерфейс к памяти ввода / вывода
    • Одиночное электропитание 5-вольтовый ( 8080 требуется -5 В / + 5 / + 12 В ).
    • Однофазный 5 В часах ( 8080 требуется большая амплитуда ( от 9 до 12 вольт) неперекрывающиеся двухфазных часов ).
    • Встроенный DRAM обновления механизм , который в противном случае пришлось бы обеспечиваться внешними схемами.
    • Номера мультиплексированных автобусы (8080 имели государственные-сигналы, мультиплексированные на шину данных).
  • Специальная функция сброса , который очищает только счетчик программ так, чтобы один процессор Z80 может быть использован в системе развития , такие как эмулятор .

Z80 принял от 8080 и его потомков, в 8085 , на рынке процессоров, и стал одним из самых популярных 8-битных процессоров. Возможно, ключ к первоначальному успеху Z80 были встроенной памяти DRAM обновления, а также другие функции , которые позволяли строить системы с меньшим количеством вспомогательных микросхем (Z80 встроенные системы обычно используют статическое ОЗУ и , следовательно , не нужно это обновление).

Для оригинальной NMOS конструкции, указанная верхний предел тактовой частоты последовательно увеличивается от вводного 2,5  МГц , с помощью хорошо известных 4 МГц (Z80A), до 6 (Z80B) и 8 МГц (Z80H). Версия NMOS была подготовлена в рамках 10 МГц , начиная с конца 1980 - х годов. CMOS версия была разработана с заданными пределами верхней частоты в диапазоне от 4 МГц до 20 МГц для версии продаваемой сегодня. Версии CMOS позволила низким энергопотреблением спать с внутренним состоянием сохраняется, не имеющий нижний предел частоты. Полностью совместимые производные HD64180 / Z180 и eZ80 в настоящее время определены для до 33 МГц и 50 МГц соответственно.

дизайн

модель программирования и набор регистров

Приблизительная блок-схема Z80. Там нет выделенного сумматора для смещения или отдельного инкрементор для R, и нет необходимости в течение более чем одного 16-битового регистра временного WZ (хотя инкрементор защелка также используется в качестве 16-битного временного регистра, в других контекстах). Это ПК и ИК-регистры, которые помещены в отдельной группе, со съемным сегменте шины, чтобы обновления этих регистров параллельно с основной банкой регистров.

Модель программирования и набор регистров является довольно обычной, в конечном счете , на основе структуры регистра DataPoint 2200 (который соответствующая 8086 семьи также унаследованной). Z80 был разработан как расширение 8080 , созданного теми же инженерами, которые в свою очередь , была продолжением 8008 . 8008 была в основном МОП реализацией TTL на основе ЦП DataPoint 2200 .

Этот оригинальный дизайн позволил регистр Н и L , чтобы быть в паре в 16-битного адресного регистра HL В 8080 это спаривание был обобщен в ВС и DE, в то время как HL также стали использоваться в качестве 16-битного аккумулятора. 8080 также ввел важный 8-битовый непосредственный режим данных для аккумуляторных операций и непосредственных 16-битовых данных для HL, BC и DE нагрузок. Кроме того, прямое 16-битное копирование между HL и памятью теперь можно, используя прямой адрес. Z80 ортогонализованы это немного дальше, делая все пары 16-битового регистра ( в том числе IX и IY) более общего назначения, с 16-битным копирование непосредственно в и из памяти.

16-битный IX и IY регистры в Z80 предназначены в первую очередь в качестве базовых адресных регистров, где конкретная команда обеспечивает постоянный сдвиг, но они также применимы в качестве 16-битных аккумуляторов, среди других вещей. Z80 также вводит новый подписанный флаг переполнения и дополняет довольно простые 16-битную арифметику 8080 с выделенными инструкциями для подписанной 16-разрядных арифметики.

В 8080 совместимые регистры AF, BC, DE, HL продублированы в виде двух отдельных банков в Z80, где процессор может быстро переключаться с одного берега на другой; Эта функция полезна для ускорения ответов на одноуровневые, с высоким приоритетом прерываний. Аналогичная функция присутствует в DataPoint 2200 , но никогда не была реализована в Intel. Двойной регистр-набор имеет смысл как Z80 (как и большинство микропроцессоров в то время) были действительно предназначены для встроенного использования, а не для персональных компьютеров, или же, чтобы быть изобретены домашними компьютеры . По словам одного из дизайнеров, Masatoshi Шима , основное внимание рынка было на высокопроизводительных принтеров, высокопроизводительных кассовых аппаратов и интеллектуальных терминалов, хотя Ральф Ungermann также увидели другие возможности, такие как компьютеры. Два набора регистров также оказался весьма полезным для сильно оптимизированная ручной сборки языка кодирования, такого как с плавающей точкой арифметика или дома в компьютерные игры.

Регистры

Регистры Z80
1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (Битовая позиция)
Основные регистры
Флаги AF (аккумулятор и флаги)
В С До нашей эры
D Е Делавэр
ЧАС L HL (непрямой адрес)
Альтернативные регистры
Флаги AF ' (аккумулятор и флаги)
BC '
DE '
ЧАС' HL ' (непрямой адрес)
Индексные регистры
IX Я NDEX X
И.Я. Я NDEX Y
SP S липкости Р ointer
Другие регистры
  я Я nterrupt вектор
  р R efresh счетчик
Счетчик команд
ПК Р rogram С ounter
регистр состояния
  S Z - ЧАС - п N С F лаги

Как и на 8080, 8-битные регистры, как правило, в паре, чтобы обеспечить 16-разрядные версии. В 8080 совместимых регистрах:

  • AF: 8-разрядный аккумулятор (А) и биты флага (F) несут, ноль, минус, четность / переполнение, полу-кэрри (используется для BCD ), и Добавить / Вычесть флаг (обычно называемый N) , и для BCD
  • BC: 16-битные данные / адрес регистр или два 8-битные регистры
  • DE: 16-битные данные / адрес регистр или два 8-битные регистры
  • HL: 16-разрядный аккумулятор / адрес регистр или два 8-битные регистры
  • SP: Указатель стека , 16 бит
  • PC: счетчик программ, 16 бит

Новые регистры, введенные с Z80 являются:

  • IX: 16-битный индекс или базовый регистр для 8-битовых непосредственных смещений или два 8-битовых регистров
  • IY: 16-битный индекс или базовый регистр для 8-битовых непосредственных смещений или два 8-битовых регистров
  • I: вектор прерывания базового регистра, 8 бит
  • R: DRAM обновления счетчик, 8 бит ( MSB не учитывается)
  • AF': Альтернативный (или теневой) аккумулятор и флаги ( переключено в и с EX AF, AF» )
  • BC', DE'И HL': альтернативный (или теневой) регистры ( переключается в и с EXX )
  • Четыре бита прерывания состояния и состояния режима прерывания

Там нет прямого доступа к альтернативным регистрам; вместо этого, две специальных инструкций, EX AF,AF'и EXXкаждый переключает один из двух мультиплексоров триггеров . Это позволяет быстро переключению контекста для прерываний обслуживания: EX AF, AF'может быть использовано отдельно, для очень простых и быстрых процедур прерывания, или вместе с EXXпоменяться весь BC, DE, HL набор. Это еще несколько раз быстрее выдвигая те же регистры на стеке . Более медленный, более низкий приоритет, или многоуровневые прерывания обычно использует стек для хранения регистров, однако.

Регистр обновления , R, увеличивает каждый раз , когда центральный процессор извлекает код операции (или префикс кода операции) и не имеет простую связи с выполнением программы. Это иногда используется для генерации псевдослучайных чисел в играх, а также в схемах защиты программного обеспечения. Он также был использован в качестве «аппаратного» счетчика в некоторых конструкциях; Примером этого является ZX81 , который позволяет ему отслеживать позиции символов на экране телевизора, вызывая прерывание на обертку вокруг (путем подключения INT А6).

Вектор прерывания регистр , Iиспользуется для Z80 определенного режима 2 прерываний (выбранных IM 2инструкцией). Он подает старшие байты базового адреса для таблицы 128-входа обычных служебных адресов , которые выбраны с помощью индекса отправленного в ЦПУ во время прерывания Acknowledge цикла; этот показатель просто младшие байты часть указателя табличного косвенного адрес , указывающий на процедуру обслуживания. Указатель идентифицирует конкретный периферийный чип или периферийную функцию или событие, где чипы обычно соединены в так называемой последовательной цепи для приоритетного разрешения. Как регистр обновления, этот регистр также иногда используется творчески; в режимах прерываний 0 и 1 (или в системе , не используя прерывания) , она может быть использована просто как другой 8-битовый регистр данных.

Инструкции LD A, R и LD A, я влияю на флагах Z80 регистра, в отличие от всех остальных LD инструкции (нагрузки). Знак (бит 7) и ноль (бит 6) флаги установлены в соответствии с данными, загруженными из исходных регистров или Refresh прерываний. Для обеих инструкций, Соотношение / флаг переполнения (бит 2) устанавливается в соответствии с текущим состоянием IFF2 триггера.

Z80 ассемблере

Datapoint 2200 и Intel 8008

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

В этом процессе, мнемоника L, для НАГРУЗКИ , была заменена различными сокращениями слов НАГРУЗКИ , МАГАЗИН и MOVE , перемешанных с другими символическими буквами. Мнемонические письмо M, для памяти ( на который ссылается HL), вынимали из внутри мнемоник инструкции , чтобы стать синтаксический отдельно стоящим операндом , а регистры и комбинации регистров стали очень непоследовательно обозначаться; либо сокращенных операндами (МВИ D, LXI H и так далее), внутри самой (ЛДА, LHLD и так далее) инструкции мнемонические, или оба одновременно (LDAX B, D STAX и так далее).

Datapoint 2200 & i8008 i8080 Z80 i8086 / i8088
Перед ca. 1973 ca. 1974 1976 1978
LBC MOV B,C LD B,C MOV BL,CL
-- LDAX B LD A,(BC) MOV AL,[BX]
LAM MOV A,M LD A,(HL) MOV AL,[BP]
LBM MOV B,M LD B,(HL) MOV BL,[BP]
-- STAX D LD (DE),A MOV [DX],AL
LMA MOV M,A LD (HL),A MOV [BP],AL
LMC MOV M,C LD (HL),C MOV [BP],CL
LDI 56 MVI D,56 LD D,56 MOV DL,56
LMI 56 MVI M,56 LD (HL),56 MOV byte ptr [BP],56
-- LDA 1234 LD A,(1234) MOV AL,[1234]
-- STA 1234 LD (1234),A MOV [1234],AL
-- -- LD B,(IX+56) MOV BL,[SI+56]
-- -- LD (IX+56),C MOV [SI+56],CL
-- -- LD (IY+56),78 MOV byte ptr [DI+56],78
-- LXI B,1234 LD BC,1234 MOV BX,1234
-- LXI H,1234 LD HL,1234 MOV BP,1234
-- SHLD 1234 LD (1234),HL MOV [1234],BP
-- LHLD 1234 LD HL,(1234) MOV BP,[1234]
-- -- LD BC,(1234) MOV BX,[1234]
-- -- LD IX,(1234) MOV SI,[1234]

Иллюстрация из четырех синтаксисов, используя образцы эквивалента, или (для 8086) очень похожи, загрузки и сохранения инструкций. Синтаксис Z80 использует круглые скобки выражения, чтобы указать, что значение должно быть использовано в качестве адреса памяти (как указано ниже), в то время как синтаксис 8086 использует скобки вместо обычных скобок для этой цели. Оба Z80 и 8086 использовать знак +, чтобы указать, что константа добавляется в базовый регистр дл образовани адреса

Новый синтаксис

Поскольку Intel утверждал, авторские права на их сборке мнемоники, новый синтаксис сборки должен быть разработан для Z80. На этот раз использовал более систематический подход:

  • Все регистры и пары регистров явно обозначаются их полные имена
  • Скобки последовательно используются для обозначения «содержимое памяти» (на постоянной или переменной адреса указателя разыменования), за исключением некоторых инструкций перехода.
  • Все инструкции загрузки и сохранения используют один и тот же мнемонические имя, LD, для НАГРУЗКИ (возвращение к упрощенным Datapoint 2200 словарем); Другие общие инструкции, такие как ADD и INC, использовать один и тот же мнемонику, независимо от режима адресации операнда или размер. Это возможно потому, что сами операнды несут достаточно информации.

Эти принципы сделали его просто найти имена и формы для всех новых команд Z80, а также orthogonalizations старых, таких как LD BC,(1234).

Помимо наименования различий, и несмотря на некоторое несоответствие в базовой структуре регистра, то Z80 и 8086 синтаксис практически изоморфны для большей части инструкций. Только весьма поверхностное сходство (например, слово MOV, или буквы X, для расширенного регистра) существуют между языками сборки 8080 и 8086, хотя 8080 программы могут быть собраны в 8086 объектный код , используя специальный ассемблер или переведена на 8086 ассемблере по программа переводчик.

Набор команд и кодирование

Z80 использует 252 из 256 доступных кодов как один байт опкоды ( «инструкция корня»); Остальные четыре коды широко используются в качестве кода операции префиксов : CB и ЭД включить дополнительные инструкции и ДД или FD выбирает IX + D или IY + D соответственно (в некоторых случаях без смещения г) вместо HL. Эта схема дает Z80 большое количество перестановок команд и регистров; Zilog классифицирует эти в 158 различных «типов инструкций», 78 из которых являются такими же , как и у Intel 8080 (допускающий работу большинства программ 8080 на Z80). В Zilog документации дополнительные группы инструкции в следующих категориях:

  • 8-битные арифметические и логические операции
  • 16-битный арифметическое
  • 8-битовые нагрузки
  • 16-разрядные нагрузки
  • Набор бит, сброс и тестирование
  • Вызов, возврат, и перезагрузка
  • Обмен, передача блока и поиск
  • арифметика общего назначения и управления CPU
  • Ввод и вывод
  • Прыгать
  • Поворот и смещение

Нет умножают инструкции не доступны в оригинальном Z80. Различные размеры и варианты дополнений, сдвигов и вращает имеют несколько различающиеся эффекты на флагах, потому что большинство флагов изменяющие свойств 8080 были скопированы. Тем не менее, бит флага четности Р 8080 (бит 2), называется P / V (четности / переполнение) в Z80, поскольку это служит дополнительной цели индикатора переполнения двоек комплемента, а недостающую функцию в 8080. Арифметические инструкции по Z80 установить его, чтобы указать переполнение вместо четности, в то время как инструкции битовых все еще используют его как флаг четности. Этот новый флаг переполнения используются для всех новых Z80 конкретных 16-битных операций (АЦП, СКИ), а также для 8-битовых арифметических операций, хотя 16-битовые операции, унаследованных от 8080 (ADD, INC, DEC) не воздействовать на него. Кроме того, бит 1 из регистра флагов (запасной бит на 8080) используется в качестве флага, N, который указывает, был ли последний арифметическая инструкция выполняется вычитание или добавление. Версия Z80 из инструкции DAA проверяет флаг N и ведет себя соответствующим образом, так что (гипотетический) с последующим вычитанием позже DAA даст другой результат на старом 8080, чем на Z80. Тем не менее, это, вероятно, будет ошибочным код на 8080, так как DAA был определен для того только на этом процессоре.

Z80 имеет шесть новых инструкций LD, которые можно загружать в DE, BC и SP регистровых пар из памяти, и память нагрузки из этих трех регистров пар, в отличие от 8080. Как и на 8080, команды загрузки не влияют на флаги (за исключением специального назначения я и R регистров нагрузки). Результат регулярного кодирования (общего с 8080) является то, что каждый из 8-битовых регистров может быть загружен из себя (например, LD A, A). Это эффективно NOP.

В отличие от 8080, то Z80 может перейти к относительному адресу (Jr вместо JP) с использованием подписанного 8-битного смещения. Только нулевой и Носите флаги могут быть проверены на эти новые два байта инструкции JR. Инструкция два байта специализирован для программы зацикливания также является новым для Z80. DJNZ (Decrement Перейти, если не ноль) принимает подписанное 8-разрядное смещение в качестве непосредственного операнда. Регистр Б уменьшается. Если результат равен нулю, то выполнение программы переходит относительно адреса ПК плюс смещение. Флаги остаются неизменными. Чтобы выполнить эквивалентную петлю на 8080 потребует отдельной инструкции декремента и прыгать (до двух байт абсолютного адреса), а регистр флага будет изменен.

Индексный регистр (IX / IY) инструкции могут быть полезны для доступа к данным , организованным в фиксированных гетерогенных структурах (например, записи ) или при фиксированных смещениях относительно переменного базовый адреса (как в рекурсивных кадрах стеки ) , а также может уменьшить размер кода путем удаления необходимо для нескольких коротких инструкций с использованием не-индексированных регистров. Тем не менее, хотя они могут сохранить скорость в некоторых случаях , когда по сравнению с длинными / сложными «эквивалентными» последовательностями простых операций, они берут на себя много дополнительного процессорное время ( например , 19 Т-состояния , чтобы иметь доступ к одному индексированной ячейке памяти по сравнению с всего лишь 11 чтобы получить доступ к памяти с использованием такого же HL и приращение его , чтобы указать на следующий). Таким образом, для простых или линейных доступов данных, IX и IY имеют тенденцию быть медленнее. Тем не менее, они могут быть полезны в тех случаях , когда «основные» регистры все заняты, устраняя необходимость сохранения / восстановления регистров. Их официально недокументированные 8-битовые половины (см ниже) , могут быть особенно полезно в этом контексте, поскольку они несут меньше , чем замедление их 16-битных родители. Аналогично, инструкции для 16-битных дополнений не особенно быстро (11 часов) в оригинале Z80; тем не менее, они примерно в два раза быстрее, чем выполнение тех же расчетов с использованием 8-битные операций, а также не менее важны, они уменьшают использование регистра.

10-летний новый microcoded Z180 дизайн изначально мог позволить себе больше «площадь кристалла», что позволяет немного более эффективной реализации ( с использованием более широкого ALU , между прочим); подобные вещи можно сказать , для Z800 , Z280 и Z380 . Однако, это не было , пока полностью конвейерный eZ80 был запущен в 2001 году , что эти инструкции , наконец , стали примерно как цикл эффективными , как это технически возможно сделать их, то есть с учетом кодировок Z80 в сочетании с возможностью сделать 8-разрядный читать или написать каждый тактовый цикл.

Незарегистрированные инструкции

Регистры индекса, IX и IY, были предназначены в качестве гибких 16 - битных указателей, повышая способность манипулировать память, стек кадры и структуры данных. Официально, они рассматривались как 16-разрядная. В действительности, они были выполнены в виде пару 8-битовых регистров, в том же образом , как и HL регистр, который доступен либо в виде 16 бит или по отдельности , как H IgH и L ква регистры. Даже двоичные коды операций ( на машинном языке) были идентичны, но предшествует новый префикс кода операции. Zilog опубликовал опкоды и связанные с ними мнемоники для предполагаемых функций, но не документировал тот факт , что каждый опкод , что позволило манипуляцию H и L регистров было в равной степени справедливо и для 8 - битовых частей IX и IY регистров. В качестве примера, код операции 26h с последующим непосредственным значением байта (LD H, N) будет загрузить значение в регистр H. Предшествующий эта инструкцию двухбайтовой с опкодом префиксом регистра IX в, DD, вместо этого привести в наиболее значимых 8 битах регистра IX загружается с тем же значением. Заметным исключением из этого было бы инструкции , аналогичные LD H, (IX + D) , которые используют как HL и IX или IY регистров в одной и той же инструкции; В этом случае префикс ДД применяется только к (IX + d) части инструкции.

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

ошибки

OTDRИнструкция не соответствует документации Z80. Оба OTDRи OTIRинструкции должны покинуть кэрри (C) флаг неизмененной. OTIRИнструкция работает правильно; Однако, во время выполнения OTDRинструкции, флаг переноса принимает результаты поддельного сравнить между аккумулятором (А) и последним выходом OTDRинструкции.

Пример кода

Следующий Z80 сборки исходный код для подпрограммы с именем , memcpyкоторый копирует блок байт данных заданного размера из одного места в другое. Важно: пример кода не обрабатывает определенный случай , когда блок назначения перекрывает источник; фатальная ошибка. Пример кода крайне неэффективно, предназначены для иллюстрации различных типов инструкций, а не лучшие практики для скорости. В частности, Z80 имеет одну команду , которая будет выполнять весь цикл ( LDIR). Блок данных копируется один байт за один раз, и перемещение данных и циклы логика использует 16-битные операции. Обратите внимание , что собранный код бинарно совместим с Intel 8080 и 8085 процессоров.

                             
                 
                 
                 
                 
                 
                 
                 
                 
                 
 
 1000            
 1000            
 1000 78         
 1001 B1         
 1002 C8         
 1003 1A         
 1004 77         
 1005 13         
 1006 23         
 1007 0B         
 1008 C3 00 10   
 100B
 ; memcpy --
 ; Copy a block of memory from one location to another.
 ;
 ; Entry registers
 ;      BC - Number of bytes to copy
 ;      DE - Address of source data block
 ;      HL - Address of target data block
 ;
 ; Return registers
 ;      BC - Zero

             org     1000h       ;Origin at 1000h
 memcpy      public
 loop        ld      a,b         ;Test BC,
             or      c           ;If BC = 0,
             ret     z           ;Return
             ld      a,(de)      ;Load A from (DE)
             ld      (hl),a      ;Store A into (HL)
             inc     de          ;Increment DE
             inc     hl          ;Increment HL
             dec     bc          ;Decrement BC
             jp      loop        ;Repeat the loop
             end

выполнения инструкции

Каждая команда выполняются на этапах, которые обычно называют машинные циклы (M-циклы), каждый из которых может принимать от трех до шести периодов тактовых импульсов (Т-циклы). Каждый М-цикл соответствует примерно один доступ к памяти или внутреннюю операцию. Многие инструкции фактически заканчиваются в течение M1 на следующей инструкции , которая известна как выборки / выполнения перекрытия .

Примеры типичных инструкций (R = чтение, W = запись)
Всего

M-циклы

инструкция M1 M2 M3 M4 M5 M6
1 INC BC опкод
2 ADD A,n опкод N
3 ADD HL,DE опкод внутренний внутренний
4 SET b,(HL) префикс опкод R (HL), множество Вт (HL)
5 LD (IX+d),n префикс опкод d п, добавить Вт (IX + d)
6 INC (IY+d) префикс опкод d добавлять R (IY + D), в т.ч. Вт (IY + d)

Циклы Z80 машины секвенирует с помощью внутреннего конечного автомата , который строит каждые М-цикл из 3, 4, 5 или 6 Т-циклы в зависимости от контекста. Это позволяет избежать громоздкой асинхронной логики и делает управляющие сигналы ведут последовательно в широком диапазоне тактовых частот. Это также означает , что более высокая частота кристалл должен быть использован , чем без этого разбиения машинных циклов (примерно в 2-3 раза выше). Это не подразумевает более жесткие требования по времени доступа к памяти , так как высокое разрешение часов позволяет более точно контролировать тайминги памяти и поэтому память может быть активным параллельно с CPU в большей степени, что позволяет более эффективно использовать доступную пропускную способность памяти.

Одним из центральных Примером этого является то, что для выборки кода операции , то Z80 и сочетает в себе два полных тактовых циклов в период доступа к памяти (М1-сигнала). В Z80 этот сигнал длится в течение относительно большей части типичного времени выполнения команд , чем в конструкции , такие как 6800 , 6502, или аналогичные, где в этот период, как правило , длится обычно 30-40% от тактового цикла. С чипом памяти доступности (т.е. время доступа около 450-250 нс в 1980 - е годы) , как правило , определяющим минимально возможное время доступа, это означает , что такие конструкции были заперты в значительно более тактовый цикл (т.е. ниже внутренней тактовой частоты) , чем Z80.

Память в целом медленно по сравнению с государственной машиной подциклов (такты) , используемые в современных микропроцессорах. Самый короткий машинный цикл , который можно безопасно использовать в внедренных конструкциях Поэтому часто ограничено время доступа к памяти, а не максимальной частота процессора (особенно это во время домашнего компьютера эры). Однако это соотношение постепенно изменилось за последние десятилетия, особенно в отношении SRAM ; cacheless, конструкции одного цикла , такие как eZ80 стали иметь гораздо более значимым в последнее время .

Содержание регистра обновления R посылаются на нижней половине адресной шины вместе с сигналом управления обновлением в то время как процессор декодирования и выполнения загруженной команды. Во время обновления содержимое регистров прерываний I рассылаются на верхней половине шины адреса.

Совместимые периферийные устройства

Zilog ввел ряд периферийных частей для Z80, все из которых поддерживают систему Z80 в обработку прерываний и ввода / вывода адресного пространства. Они включают в себя таймер / счетчик канал (КТК), в SIO (Serial Input Output) в DMA (Direct Memory Access), ПИО (Parallel Input-Output) и DART (Dual Asynchronous Receiver Transmitter). По мере развития линейки продуктов, низкое энергопотребление, высокая скорость и CMOS были введены версии этих чипов.

Как процессоров 8080, 8085 и 8086, но в отличие от процессоров , таких как Motorola 6800 и MOS Technology 6502, на Z80 и 8080 имеет отдельную линию управления и адресное пространство для инструкций ввода / вывода. В то время как некоторые компьютеры Z80 , основанные на таких , как Осборн 1 используются «Моторола стиля» памяти отображаются входной / выходные устройства, как правило , пространство ввода / вывода было использовано для решения одной из многих Zilog периферических чипов , совместимых с Z80. Чипы Zilog ввода / вывода поддерживаются новые прерывания в Z80 в режиме 2 , которые упростили обработку прерываний для большого количества периферийных устройств.

Z80 была официально описана как поддержка 16-битной адресации (64 КБ) памяти и 8-бит (256 портов) ввода / вывода-адресации. Все инструкции ввода / вывода фактически утверждают , весь 16-разрядную шину адреса. OUT (C), рег и рег В, (С) помещает содержимое всего 16 бит регистра BC на адресной шине; OUT (п), А и В А, (п) помещает содержимое регистра , на b8-b15 адресной шине и п о b0-b7 адресной шине. Конструктор может выбрать , чтобы декодировать весь 16 разрядную шину адреса на операции ввода / вывода для того , чтобы воспользоваться преимуществами этой функции, или использовать высокую половину адресной шине , чтобы выбрать подкомпоненты устройства ввода / вывода. Эта функция также используется для минимизации требований к оборудованию декодирования, например, в Amstrad CPC / PCW и ZX81 .

Вторые источники и производные

Вторые источники

Mostek «s Z80: MK3880
NEC «S μPD780C Z80 второго-источников по NEC
Sharp «s LH0080 Sharp версия Z80
T34BM1 , клон советского Z80
Toshiba TMPZ84C015; стандартный Z80 с несколькими Z80 семейства периферийных устройств на чипе в QFP корпусе
Z80 совместим Hitachi HD64180
Z180 в PLCC корпусе
Z80 совместимый R800 в QFP
Z280 в PLCC корпусе

Mostek , который произвел первый Z80 для Zilog, предложил его в качестве второго источника, MK3880. SGS-Thomson (теперь STMicroelectronics ) был второй источник, также, с их Z8400. Sharp и NEC разработала вторые источники для NMOS Z80, в LH0080, μPD780-1 и μPD780C соответственно. ΜPD780C был использован в Sinclair ZX80 и ZX81 , оригинальные версии ZX Spectrum , а также несколько MSX компьютеров, а также в музыкальных синтезаторах , таких как Oberheim OB-8 и другие, в то время как μPD780-1 (часть Z80A которая проходила в 4MHz) был использован в Сеги SG-1000 игровой консоли. LH0080 был использован в различных домашних компьютерах и персональных компьютерах , сделанных Sharp и другими японскими производителями, в том числе компьютеров Sony MSX, а также ряде компьютеров в Sharp MZ серии.

Toshiba сделала CMOS -version, то TMPZ84C00, который , как считается (но не проверено) , чтобы быть такой же конструкции также используется Zilog для своего CMOS Z84C00. Были также Z80-чипы , сделанные GoldStar (ныне LG ) и ряд BU18400 из Z80-клонов (включая DMA, PIO, CTC, DART и SIO) в NMOS и CMOS сделаны ROHM Electronics .

В Восточной Германии , нелицензионный клон Z80, известный как U880 , было изготовлено. Он был очень популярен и был использован в Robotron «s и компьютерные системы ВЭБ MIKROELEKTRONIK Muhlhausen в (такие как KC85 -рядов) , а также во многих самодельных компьютерных систем. В Румынии другой нелицензионного клон может быть найден, назван MMN80CPU и производства Microelectronica , используется в домашних компьютерах , таких как TIM-S, HC, COBRA.

Кроме того , несколько клонов Z80 были созданы в Советском Союзе , известные из которых являются T34BM1 , называемый также КР1858ВМ1 (Параллельное советский 8080-клон кр580вм80а ). Первая маркировка была использована в серии предварительного производства, в то время как второй должен был быть использован для увеличения производства. Хотя, в связи с распадом советской микроэлектроники в конце 1980 - х годов, есть много больше , чем T34BM1s КР1858ВМ1s.

производные

Совместимость с оригинальным Z80
  • Hitachi разработала HD64180 , а microcoded и частично динамический Z80 в CMOS, с на чипе периферийных устройств и простой MMU дает 1  Мб адресного пространства. Это было позже вторым получено с помощью Zilog, первоначально как Z64180, а затем в виде слегка модифицированной Z180 , который имеет протокол шины и тайминги лучше приспособлен к Z80 периферическим чипам. Z180 была сохранена , и дальнейшее развитие под названием Zilog, в новейшие версии, основываясь на полностью статическом S180 / L180 сердечника с очень низким потреблением энергии и электромагнитных помех (шума).
  • Toshiba разработала 84 контактный Z84013 / Z84C13 и 100 контактных Z84015 / Z84C15 серии «интеллектуальных периферийных контроллеров», в основном обычные NMOS и ядро CMOS Z80 с Z80 периферией, Сторожевой таймер, питание сброса и дождитесь состоянием генератора на одном чипе , Производитель Sharp , а также Toshiba. Эти продукты являются сегодня второй получены путем Zilog.
  • 32-битный Z80 , совместимая Zilog Z380 , введенный 1994 года, используется в основном в телекоммуникационном оборудовании.
  • Полностью конвейерная Z80 совместим Zilog в eZ80 с 8/16 / 24-битной разрядностью и линейными 16 МБ адресного пространством был введен в 2001 году существует в версиях с на чип SRAM или флэш - памяти , а также со встроенными периферийными устройствами. Один из вариантов имеют на чип MAC (контроллер доступа средств массовой информации) , а также доступное программное обеспечение включает в себя стек TCP / IP . В отличии от Z800 и Z280, есть только несколько добавлены инструкции ( в первую очередь , ИЕ , ПЭО , а также с переменным адрес 16/24-битными нагрузок), но инструкции вместо того, чтобы выполняться от 2 до 11 раз , как тактовый цикл эффективно , как на Оригинальный Z80 (со средним значением около 3-5 раз). В настоящее время определены для тактовых частот до 50 МГц.
  • Kawasaki разработала двоичный совместимый KL5C8400 , которая примерно 1,2-1,3 раза такт эффективнее оригинального Z80 и может быть с тактовой частотой до 33 МГц. Кавасаки также производит семейство KL5C80A1x, который имеет периферийные устройства, а также небольшой RAM на чипе; это примерно как тактовый цикл эффективной как eZ80 и может быть с тактовой частотой до 10 МГц (2006).
  • NEC uPD9002 был гибридный процессор совместим с Z80 и x86 семей.
  • Китайские действия аудиопроцессор семья Semiconductor в чипсах (ATJ2085 и другие) содержат Z80-совместимые микроконтроллеры с 24-разрядным процессором посвященного DSP. Эти чипы используются во многих MP3 и медиа - плеер продукции.
  • В T80 (VHDL) и TV80 (Verilog) синтезируемые мягкие сердечники доступны от OpenCores.org.
Несовместимый
  • Toshiba TLCS серии 900 высокого объема ( в основном OTP ) микроконтроллеры основаны на Z80; они одни и те же основные BC, DE, HL, IX, IY зарегистрировать структуру, и во многом одни и те же инструкции, но двоично не совместимы, тогда как предыдущий TLCS 90 является Z80-совместимым.
  • В NEC 78K микроконтроллеры серии основаны на Z80; они одни и те же основные BC, DE, HL структуру регистра, и имеют аналогичный (но по- другому называется) инструкция; двоично не совместимы.
Частично совместимы
больше не производится
  • ASCII - корпорация R800 был быстрый 16-битный процессор , используемый в MSX TurboR компьютеров; это программное обеспечение, аппаратное обеспечение , но не совместимы с Z80 (сигнал синхронизации, распиновка & функция штифтов отличается от Z80).
  • Zilog в NMOS - Z800 и КМОП Z280 были 16-битные Z80-реализациями (до того , как HD64180 / Z180 ) с 16 МБ выгружаемого MMU адресного пространства; они добавили много orthogonalizations и режимов адресации к набору команд Z80. Особенности миникомпьютер - такие как пользовательские и системные режимы, поддержка многопроцессорных, на чип MMU, по инструкции чипа и кэш данных и так далее - были замечены , а также большей сложностью , чем как функциональность и поддержка ( как правило , электроника, ориентированная) встроенных систем дизайнер, он также сделал это очень трудно предсказать время выполнения инструкции.
  • Некоторые аркадные игры , такие как Pang / Buster Bros использовать зашифрованное «Кабуки» Z80 процессор производства компании VLSI Technology , где ключи дешифрования хранятся во внутренней памяти с батарейной поддержкой , чтобы избежать пиратства и незаконной бутлег игры.

Известные применения

Настольные компьютеры

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

В конце 1970 - х и начале 1980-х годов Z80 был использован в большом количестве довольно анонимных бизнес-ориентированных машин с CP / M операционной системы, комбинации , которые доминировали на рынке в то время. Четыре хорошо известные примеры Z80 бизнес - компьютеров , работающих под управлением CP / M являются Heathkit H89 , портативный Osborne 1 , то Kaypro серии, а Epson QX-10 . Менее известный была дорогой высокий класс Otrona Атташе. Исследования машина изготовила 380Z микрокомпьютеры и 480Z , которые были объединены в сеть с тонким типом Ethernet LAN и CP / NET в 1981 г. Других производителей таких систем , включенные Televideo , Xerox ( 820 диапазона ), Sanyo (МВС-1000/1100/1200), Toshiba (Т100) и ряд более неясными фирм , таких как Altos , Northstar и Eagle . В некоторых системы используется Многозадачность программного обеспечения операционной системы (например , MP / M ) , чтобы разделить один процессор между несколькими одновременно работающими пользователями .

В США, Radio Shack TRS-80 , введенный в 1977 году, а также модели II, III, 4 и предложенной модели V, использовали Z80. Ряд ТРС-80 клонов были произведены компаниями , как Лобо ( Max-80 ), Lnw ( Lnw-80 ), и Hong Kong основе EACA ( видео Genie и производные TRZ-80, ПМК-80, и Дик Смит System 80 ). В Нидерландах ТРС-80 Модель III , клон был произведен , который имел возможность CP / M; это был Астра СТ-80 . Coleco Адам гибридного компьютера / игровая консоль можно использовать ColecoVision игры, а также CP / M. Рано Z80 домашний компьютер был Exidy Колдун . В Соединенном Королевстве, Sinclair Research использовали Z80 и Z80A в его ZX80 , ZX81 и ZX Spectrum домашних компьютеров. Они были проданы в США Timex как серия Timex / Sinclair. Amstrad использовали Z80A в их Amstrad CPC и PCW диапазоны и ранний Великобритании компьютер, Nascom 1 и 2 также использовали его. Z80 работает очень много домашних компьютеров , прилипшие к MSX стандарт в Японии, Азии, и в меньшей степени, в Европе и Южной Америке (около 5 миллионов в одной только Японии). Кроме того, в Японии Sharp использовал Z80 в MZ и X1 серии. Hong Kong основе VTech сделал свой лазерный 200 домашний компьютер с Z80. В Германии яблоко-CP / M гибрид под названием Base 108 в паре с Z80 с 6502. Подобным же образом Commodore 128 показан процессор Z80 вместе со своими 8502 MOS Technology процессор для совместимости с CP / M. Другие 6502 архитектура компьютеров на рынке в то время, как, например BBC Micro , Apple II , и 6510 на основе Commodore 64 , могли бы использовать Z80 с внешним блоком, вставной в карты, или расширение картриджа ПЗУ . Microsoft Z-80 SoftCard для Apple II был особенно успешным дополнением карты и один из немногих аппаратных продуктов от Microsoft эпохи.

В 1981 годе , Multitech (впоследствии Acer ) представила Microprofessor I , простую и недорогую систему обучения для микропроцессора Z80. В настоящее время он по - прежнему производится и продается компанией Flite Electronics International Limited в Саутгемптоне, Англия .

Sinclair ZX Spectrum , который использовал Z80 работает на частоте 3,5 МГц

Встроенные системы и бытовая техника

Z80 на основе УПАТС . Z80 является третьим чипом слева, справа от чипа с рукописной белой этикеткой на нем.

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

Промышленность

Бытовая электроника

  • В Amstrad NC100 / NC200 и Cambridge Z88 ноутбуков , сделанные в Соединенном Королевстве использовали Z80.
  • Amstrad в Великобритании производится рано КПК под названием PenPad или PDA600, который был построен вокруг МГц Z180 14.
  • Sinclair ZX80 , ZX81 и ZX Spectrum имел процессор Z80, ZX80 и ZX81 имел с тактовой частотой 3,25 МГц в то время как ZX Spectrum работает на частоте 3,5 МГц.
  • Hong Kong основе VTech используется Z80s в строке субноутбук и образовательных компьютеров. Последним и наиболее продвинутые из которых лазерного PC4, PC5 и PC6.
  • Sharp выпустила серию карманных компьютеров , основанная на пользовательских процессорах , которые были Z80 совместимы. Примеры включают в себя PC-1500 , PC-1600 и PC-E220 .
  • Различные научные и графические калькуляторы использовать Z80, в том числе Texas Instruments TI-73 , ТИ-81 , ТИ-82 , ТИ-83 , ТИ-83 + , TI-84 + , TI-85 и TI-86 серии.
  • Z80 часто используется в монетных аркадных играх , и обычно используется в качестве основных ЦП, звуковых или видео сопроцессоров . Pac-Man аркадные игры имеют один Z80 в качестве основного процессора, и Frogger использовал два Z80 процессора. Galaxian и аркадные игры , такие как King & Balloon и Check Человека , который использует Namco Galaxian boardset также использовать Z80 в качестве основного процессора. Другие Namco лицензированные аркадные игры , такие как Galaga и другие игры , которые используют Namco Galaga boardset , таких как Bosconian , Dig Dug , Xevious и Супер Xevious использовать три Z80 микропроцессоры работает параллельно для основного процессора, графики и звука. Позже Sega System 16, 18, X и Y; Capcom CPS1 и CPS2; SNK Neo Geo MVS использовать 68000 и комбинации Z80 как процессоры совместно или звуковые процессоры.
  • Кроме того , было найдено в домашних видео игровых консолей , такие как ColecoVision , Sega Master System и Sega Game Gear игровых консоли , как аудио и общее назначение сопроцессор в Sega Genesis и как аудио контроллер и сопроцессор к Motorola 68000 в SNK Neo-Geo .
  • Nintendo «s Game Boy и Game Boy Color портативных игровых систем , используемых в 8080-производный процессор с некоторыми инструкциями Z80 добавленными (CB префиксов), а также режимы адресации уникальный автоинкрементным / декремента. Процессор был Sharp Corporation LR35902 работает на 4.19 МГц в оригинальных и карманных моделях и 8,39 МГц в модели Color. Этот процессор был позже включен в Game Boy Advance / SP / Micro принимает новую роль в качестве сопроцессора для обратной совместимости с Game Boy / Color игр (кроме Micro) и добавить наследство 8-битные звуки дополнить цифровые отсчеты в Game Boy Advance игры.
  • Ericsson GA628 мобильный телефон использует процессор Z80.
  • В России, Z80 и его клоны были широко использованы в многофункциональных наземной линии телефонов с Caller ID.
  • Все S1 MP3 - плеер типа цифровые аудиоплееры используют набор команд Z80.

Музыкальные инструменты

Смотрите также

Сноски

Рекомендации

дальнейшее чтение

внешняя ссылка