Зилог Z80 - Zilog Z80

Зилог Z80
Zilog Z80.jpg
Z80, произведенный в июне 1976 года, согласно дате.
Общая информация
ЗапущенМарт 1976 г.
Общий производитель (и)
Спектакль
Максимум. ЦПУ тактовая частотаОт 2,5, 4, 6, 8 МГц до 10 МГц с вариантом CMOS до 20 МГц и бинарно-совместимыми производными (от Zilog) до 33 и 50 МГц.
Оригинал Z80 DIP40 распиновка корпуса микросхемы

В Z80 является 8 бит микропроцессор представлен Зилог как стартап компания первый продукт. Z80 был разработан Федерико Фаггин в конце 1974 года и разработан им и его 11 сотрудниками, начиная с начала 1975 года. Первые рабочие образцы были доставлены в марте 1976 года, и он был официально представлен на рынке в июле 1976 года. На доходы от Z80 компания построила свой собственный фабрики чипов и выросла до более чем тысячи сотрудников за следующие два года.[2]

Zilog Z80 - это программно-совместимый расширение и улучшение Intel 8080 и, как это, было в основном нацелено на встроенные системы. Хотя Z80 использовался в этой роли, он также стал одним из наиболее широко используемых Процессоры в настольные компьютеры и домашние компьютеры с 1970-х до середины 1980-х гг.[3][4] Это также было распространено в военных приложениях, музыкальное оборудование Такие как синтезаторы (словно Роланд Юпитер-8 ), и монетный аркадные игры конца 1970-х - начала 1980-х, включая Pac-Man.

Zilog передал лицензию Z80 в США. Synertek и Mostek, который помог им с первоначальным производством, а также европейским второстепенный источник производитель, SGS. В дизайн также был скопирован несколькими японскими, восточноевропейскими и советскими производителями.[я] Это завоевало признание Z80 на мировом рынке, поскольку крупные компании, такие как NEC, Toshiba, Острый, и Hitachi начали производство устройства (или собственных Z80-совместимых клонов или разработок).

В последние десятилетия Zilog переориентировался на постоянно растущий рынок встраиваемых систем и на новейшие Z80-совместимые. микроконтроллер семья, полностью конвейерный 24 бит eZ80 с линейный 16 МБ диапазон адресов, был успешно представлен наряду с более простым Z80 и Z180 товары.

История

Реклама 8-битного микропроцессора Zilog Z-80 в мае 1976 г.
Фото оригинального Zilog Z80 микропроцессор дизайн в истощение nMOS. Общий умереть размер 3545 × 3350 мкм. (Настоящий чип изготовлен в 1990 году.)

Z80 появился, когда физик Федерико Фаггин ушел Intel в конце 1974 года основал Zilog с Ральф Унгерманн [Это ]. В Fairchild Semiconductor, а позже в Intel Фаггин работал над фундаментальными транзистор и полупроводник технология изготовления. Он также разработал базовую методологию проектирования, используемую для запоминающих устройств и микропроцессоров в Intel, и руководил работой над Intel 4004, 8080 и несколько других микросхем. Масатоши Шима, главный разработчик логических и транзисторных уровней для 4004 и 8080 под руководством Фаггина, присоединился к команде Zilog.

По словам разработчиков, основные цели для ЦП Z80 (и его дополнительной поддержки и периферийных ИС)[ii]) были такие продукты, как интеллектуальные терминалы, принтеры высокого класса и продвинутый кассовые аппараты а также телеком оборудование, промышленные роботы и другие виды автоматизация оборудование.

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

Ранние модели Z80 производились Synertek и Mostek до того, как у Zilog была готова собственная производственная фабрика в конце 1976 года. Эти компании были выбраны потому, что они могли производить ионная имплантация необходимо для создания режим истощения МОП-транзисторы что конструкция Z80 использовалась в качестве нагрузочных транзисторов, чтобы справиться с одним источником питания 5 В.[iii]

Фаггин разработал Набор инструкций быть двоичная совместимость с Intel 8080[6][7] так что большая часть кода 8080, особенно CP / M Операционная система и Intel PL / M компилятор для 8080 (а также его сгенерированный код) будет работать без изменений на новом ЦП Z80. Масатоши Шима разработал большую часть микроархитектура а также уровни затвора и транзистора ЦП Z80 при поддержке небольшого числа инженеров и макет люди.[8][9] Генеральный директор Федерико Фаггин действительно активно участвовал в работе над компоновкой микросхемы вместе с двумя преданными компоновщиками. По словам Фаггина, он работал по 80 часов в неделю, чтобы уложиться в плотный график, установленный финансовыми инвесторами.[10]

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

  • Расширенный Набор инструкций[11] включая однобитную адресацию, сдвигает / поворачивает память и регистры, кроме аккумулятор, повернуть инструкции для BCD числовые строки в памяти, цикл программы, программа счетчика относительных скачков, блочная копия, блокировать ввод, вывод (I / O) и инструкции по поиску байтов.[12] Z80 включает в себя флаг переполнения и лучше поддерживает 8- и 16-битную арифметику со знаком.[iv]
  • Новые IX и IY индексные регистры с инструкциями по прямому база +компенсировать обращаясь
  • Лучше прерывать система
    • Более автоматический и общий векторизованная система прерываний, режим 2, в первую очередь предназначенные для линейки счетчиков / таймеров, контроллеров прямого доступа к памяти и связи Zilog, а также для системы прерываний с фиксированным вектором, режим 1, для простых систем с минимальным оборудованием (с режим 0 является 8080-совместимым режимом).[13]
    • Немаскируемое прерывание (NMI), которое может использоваться для ответа на ситуации отключения питания или другие высокоприоритетные события (и позволяет минималистичной системе Z80 легко реализовать двухуровневую схему прерывания в режим 1).
    • Два отдельных зарегистрировать файлы, которые можно быстро переключить, чтобы ускорить реакцию на прерывает такие как быстрые асинхронные обработчики событий или многозадачность диспетчер. Хотя они не предназначались в качестве дополнительных регистров для общего кода, тем не менее они использовались таким образом в некоторых приложениях.[v]
  • Требуется меньше оборудования для источник питания, генерация часов и интерфейс для памяти и ввода / вывода
    • Один блок питания на 5 Вольт (8080 необходимо -5 В / + 5 В / + 12 В).
    • Однофазные часы на 5 Вольт (8080 требовался высокоамплитудный (от 9 до 12 В) неперекрывающийся двухфазные часы ).
    • Встроенный DRAM обновить механизм, который в противном случае должен был бы быть обеспечен внешней схемой.[vi]
    • Не мультиплексированные шины (у 8080 сигналы состояния мультиплексированы на шину данных).
  • Специальная функция сброса, которая очищает только счетчик программ, так что один ЦП Z80 может использоваться в системе разработки, такой как внутрисхемный эмулятор.[14]

Z80 пришел на смену 8080 и его потомку, 8085, на рынке процессоров,[15] и стал одним из самых популярных 8-битных процессоров.[3][4] Zilog был на несколько лет позже, чем Intel (с его 80C85), чтобы произвести маломощный ЦП CMOS, и это привело к тому, что чип Intel впервые стал использоваться с портативными компьютерами с батарейным питанием, такими как Tandy / Radio Shack. TRS-80 Модель 100 Ноутбук с апреля 1983 года. Однако в последующие годы CMOS Z80 будет доминировать на этом рынке.

Некоторые организации, такие как British Telecom, остался верен 8085 для встраиваемых приложений благодаря тому, что они были знакомы с ним, а также его встроенной поддержкой последовательного интерфейса и многоуровневой архитектуры прерываний. Возможно, ключом к первоначальному успеху Z80 было встроенное обновление DRAM и другие функции, которые позволили создавать системы с меньшим количеством поддерживаемых микросхем (Z80 встроенные системы обычно используют статическая RAM и, следовательно, это обновление не требуется).

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

Дизайн

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

Примерная структурная схема Z80. Нет специального сумматора для смещений или отдельного инкрементора для R, и нет необходимости в более чем одном 16-битном временном регистре WZ (хотя защелки инкрементатора также используются в качестве 16-битного временного регистра в других контекстах). Регистры ПК и IR помещены в отдельную группу со съемным сегментом шины, чтобы можно было обновлять эти регистры параллельно с основным банком регистров.[20]

Модель программирования и набор регистров Z80 довольно обычные, в конечном счете основанные на структуре регистров Datapoint 2200. Z80 был разработан как расширение Intel 8080, созданный теми же инженерами, который, в свою очередь, был расширением 8008. 8008 был в основном PMOS реализация ЦП на основе TTL Datapoint 2200.[viii]

Конструкция 2200 позволяла объединять 8-битные регистры H и L (High и Low) в 16-битный адресный регистр HL.[ix] В 8080 эта пара была добавлена ​​также к парам BC и 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,[21] где процессор может быстро переключаться с одного банка на другой;[22] функция, полезная для ускорения реакции на одноуровневые прерывания с высоким приоритетом. Подобная функция присутствовала в 2200, но никогда не была реализована в Intel. Двойной набор регистров очень полезен во встроенной роли, так как он улучшает производительность обработки прерываний, но нашел широкое применение в роли персонального компьютера в качестве дополнительного набора общих регистров для сложного кода, такого как плавающая точка арифметика или домашние компьютерные игры.

Регистры

Регистры Z80
15141312111009080706050403020100(битовая позиция)
Основные регистры
АФлагиAF (аккумулятор и флаги)
BCдо н.э
DEDE
ЧАСLHL (косвенный адрес)
Альтернативные регистры
А 'ФлагиAF' (аккумулятор и флаги)
B 'C 'до н.э'
D 'E 'DE'
ЧАС'L 'HL' (косвенный адрес)
Индексные регистры
IXяndex Икс
IYяndex Y
SPSзакрепка пласточка
Другие регистры
 яявектор прерывания
 ррсчетчик efresh
Счетчик команд
ПКппрограмма Cвстречный
Регистр статуса
 SZ-ЧАС-п /VNCFлаги

Как и в 8080, 8-битные регистры обычно объединяются в пары для получения 16-битных версий. Регистры, совместимые с 8080[23] находятся:

  • AF: 8 бит аккумулятор (A) и биты флага (F) перенос, ноль, минус, четность / переполнение, половинный перенос (используется для BCD ), а также флаг сложения / вычитания (обычно называемый N) также для BCD
  • до н.э: 16-битный регистр данных / адреса или два 8-битных регистра
  • DE: 16-битный регистр данных / адреса или два 8-битных регистра
  • HL: 16-битный аккумулятор / адресный регистр или два 8-битных регистра
  • SP: указатель стека, 16 бит
  • ПК: счетчик программ, 16 бит

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

  • IX: 16-битный индекс или базовый регистр для 8-битных немедленных смещений
  • IY: 16-битный индекс или базовый регистр для 8-битных немедленных смещений
  • я: базовый регистр вектора прерывания, 8 бит
  • р: Счетчик обновления DRAM, 8 бит (msb не считается)
  • AF ': альтернативный (или теневой) аккумулятор и флаги (включается и выключается с помощью EX AF, AF ' )
  • ДО Н.Э', DE ' и HL ': альтернативные (или теневые) регистры (включается и выключается с помощью EXX)
  • Четыре бита состояния прерывания и состояния режима прерывания

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

В обновить регистр, р, увеличивается каждый раз, когда ЦП выбирает код операции (или префикс кода операции) и не имеет простой связи с выполнением программы. Иногда это использовалось для создания псевдослучайный числа в играх, а также в схемах защиты ПО.[нужна цитата ] Он также использовался как «аппаратный» счетчик в некоторых проектах; Примером этого является ZX81, что позволяет отслеживать положение персонажей на экране телевизора, вызывая прерывание на обернуть вокруг (подключив INT к A6).

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

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

Язык ассемблера Z80

Datapoint 2200 и Intel 8008

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

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

Intel 8008
Datapoint 2200
Intel 8080
Intel 8085
Зилог Z80Intel 8086 /
Intel 8088
до ок. 1973 г.ок. 1974 г.19761978
LBCMOV B,CLD B,CMOV BL,CL
--LDAX BLD А,(до н.э)MOV AL,[BX]
LAMMOV А,MLD А,(HL)MOV AL,[BP]
LBMMOV B,MLD B,(HL)MOV BL,[BP]
--STAX DLD (DE),АMOV [DX],AL[Икс]
LMAMOV M,АLD (HL),АMOV [BP],AL
LMCMOV M,CLD (HL),CMOV [BP],CL
LDI 56МВИ D,56LD D,56MOV DL,56
LMI 56МВИ M,56LD (HL),56MOV байт ptr [BP],56
--LDA 1234LD А,(1234)MOV AL,[1234]
--STA 1234LD (1234),АMOV [1234],AL
----LD B,(IX+56)MOV BL,[SI+56]
----LD (IX+56),CMOV [SI+56],CL
----LD (IY+56),78MOV байт ptr [DI+56],78
--LXI B,1234LD до н.э,1234MOV BX,1234
--LXI ЧАС,1234LD HL,1234MOV BP,1234
--SHLD 1234LD (1234),HLMOV [1234],BP
--LHLD 1234LD HL,(1234)MOV BP,[1234]
----LD до н.э,(1234)MOV BX,[1234]
----LD IX,(1234)MOV SI,[1234]

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

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

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

  • Все регистры и пары регистров явно обозначаются своими полными именами.
  • Круглые скобки постоянно используются для обозначения «содержимого памяти в» (постоянный адрес или разыменование указателя переменной), за исключением некоторых инструкций перехода.[27]
  • Все инструкции загрузки и сохранения используют одно и то же мнемоническое имя LD для LOAD (возврат к упрощенному словарю Datapoint 2200); другие общие инструкции, такие как ADD и INC, используют одну и ту же мнемонику независимо от режима адресации или размера операнда. Это возможно, потому что сами операнды несут достаточно информации.

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

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

Набор инструкций и кодировка

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

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

В оригинальном Z80 нет инструкций по умножению.[31] Различные размеры и варианты добавлений, сдвигов и поворотов несколько по-разному влияют на флаги, потому что большинство свойств изменения флага 8080 было скопировано. Однако бит P флага четности 8080 (бит 2) называется P / V (четность / переполнение) в Z80, поскольку он служит дополнительной цели индикатора переполнения с дополнением до двух, отсутствующей в 8080. Арифметические инструкции на Z80 установил его для указания переполнения, а не контроля четности, в то время как побитовые инструкции по-прежнему используют его как флаг четности. Этот новый флаг переполнения используется для всех новых 16-разрядных операций, специфичных для Z80 (АЦП, SBC), а также для 8-битных арифметических операций, хотя 16-битные операции унаследованы от 8080 (ДОБАВИТЬ, INC, DEC) не влияют на это. Кроме того, бит 1 регистра флагов (резервный бит на 8080) используется как флаг N, который указывает, была ли последняя выполненная арифметическая команда вычитанием или сложением. Версия Z80 DAA инструкция (Decimal Adjust Accumulator для BCD арифметики) проверяет флаг N и ведет себя соответствующим образом, поэтому (гипотетическое) вычитание с последующим последующим DAA даст другой результат на старом 8080, чем на Z80. Однако, скорее всего, это будет ошибочный код на 8080, так как DAA был определен для добавления только на этом процессоре.

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

Новые команды передачи блоков могут перемещать до 64 килобайт из памяти в память или между памятью и периферийными портами ввода-вывода. Блокировать инструкции LDIR и LDDR (LoaD, Increment / Decrement, Repeat) используйте HL для указания на адрес источника, DE на адрес назначения и BC в качестве счетчика байтов. Байты копируются из источника в место назначения, указатели увеличиваются или уменьшаются, а счетчик байтов уменьшается до тех пор, пока BC не достигнет нуля. Неповторяющиеся версии LDI и LDD переместите один байт и увеличьте указатели и счетчик байтов, который, если станет нулевым, сбрасывает флаг P / V. Соответствующие инструкции ввода-вывода из памяти ИНИР, INDR, ОТИР, OTDR, INI, IND, OUTI и OUTD действуют аналогично. Z80 может вводить и выводить любой регистр в порт ввода / вывода, используя регистр C для обозначения порта (8080 выполняет ввод / вывод только через аккумулятор A).

Последняя группа инструкций блока выполняет CP операция сравнения между байтом (HL) и аккумулятором A. Регистровая пара DE не используется. Повторяющиеся версии CPIR и CPDR завершаться только в том случае, если BC обнуляется или найдено совпадение. HL слева указывает на байт после (CPIR) или до (CPDR) соответствующий байт. Если совпадение не найдено, флаг Z сбрасывается. Есть неповторяющиеся версии ИПЦ и CPD.

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

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

Индексные регистры имеют параллельную инструкцию для JP (HL), который JP (XY). Это часто наблюдается в стек-ориентированных языках, таких как Четвертый которые в конце каждого слова Forth (атомарные подпрограммы, составляющие язык) должны безоговорочно возвращаться к своим подпрограммам интерпретатора потоков. Обычно эта инструкция перехода появляется в приложении много сотен раз, и использование JP (XY) скорее, чем JP РЕЗЬБА сохраняет байт и два t-состояния каждое вхождение. Это, естественно, делает индексный регистр недоступным для любого другого использования, иначе необходимость постоянно перезагружать его снизит его эффективность.

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

Недокументированные инструкции

Индексные регистры IX и IY были задуманы как гибкие 16-битные указатели, расширяющие возможность управления памятью, кадрами стека и структурами данных. Официально они считались только 16-битными. На самом деле они были реализованы в виде пары 8-битных регистров,[33] таким же образом, как регистр HL, который доступен либо как 16 бит, либо отдельно как регистр ЧАСкайф и Lрегистры вл. Двоичные коды операций (машинный язык) были идентичны, но им предшествовал новый префикс кода операции.[34] Zilog опубликовал коды операций и связанную с ними мнемонику для предполагаемых функций, но не задокументировал тот факт, что каждый код операции, позволяющий манипулировать регистрами H и L, одинаково действителен для 8-битных частей регистров IX и IY. Например, код операции 26h, за которым следует непосредственное значение байта (LD H, п) загрузит это значение в регистр H. Предшествие этой двухбайтовой инструкции префиксу кода операции регистра IX, DD, вместо этого привело бы к загрузке 8 старших битов регистра IX с тем же значением. Заметным исключением из этого правила были бы инструкции, похожие на LD H, (IX + d) которые используют регистры HL и IX или IY в одной инструкции;[34] в этом случае префикс DD применяется только к части инструкции (IX + d). Половинки регистров XY могут также содержать операнды для 8-битных арифметических, логических и сравнительных инструкций, оставляя обычные 8-битные регистры для другого использования. Недокументированная возможность увеличивать и уменьшать верхнюю половину индексного регистра позволила легко расширить диапазон обычных индексированных инструкций, не прибегая к законным ДОБАВИТЬ / SBC XY, DE или же ДОБАВИТЬ / SBC XY, BC.

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

Ошибки

В OTDR инструкция не соответствует документации Z80. Оба OTDR и ОТИР инструкции должны оставлять флаг переноса (C) неизменным. В ОТИР инструкция работает правильно; однако во время выполнения OTDR команда, флаг переноса принимает результаты ложного сравнения между аккумулятором (A) и последним выходом 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 - ; Скопируйте блок памяти из одного места в другое. ; ; Регистры входа ; BC - количество байтов для копирования ; DE - Адрес блока исходных данных ; HL - Адрес целевого блока данных ; ; Регистры возврата ; BC - ноль             орг     1000ч       ; Начало в 1000ч. memcpy      общественный петля        ld      а,б         ; Тест BC,             или же      c           ; Если BC = 0,             Ret     z           ;Возвращаться             ld      а,(де)      ; Загрузить A из (DE)             ld      (гл),а      ; Сохранить A в (HL)             inc     де          ; Приращение DE             inc     гл          ; Приращение HL             декабрь     до н.э          ; Декремент BC             jp      петля        ; Повторяем цикл             конец

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

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

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

М-циклы

инструкцияM1M2M3M4M5M6
1[37]INC до н.экод операции
2[38]ДОБАВИТЬ А,пкод операциип
3[39]ДОБАВИТЬ HL,DEкод операциивнутреннийвнутренний
4[40]НАБОР б,(HL)префикскод операцииR (HL), установитьВт (HL)
5[41]LD (IX+d),ппрефикскод операцииdn, добавитьW (IX + d)
6[42]INC (IY+d)префикскод операцииdДобавитьR (IY + d), incW (IY + d)

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

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

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

Содержимое регистра обновления R отправляется по нижней половине адресной шины вместе с сигналом управления обновлением, в то время как ЦП декодирует и выполняет выбранную команду. Во время обновления содержимое регистра прерывания I отправляется на верхнюю половину адресной шины.[43]

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

Zilog представила ряд периферийных компонентов для Z80, которые поддерживают систему обработки прерываний Z80 и адресное пространство ввода-вывода. К ним относятся канал счетчика / таймера (CTC),[44] SIO (последовательный ввод-вывод), DMA (прямой доступ к памяти), PIO (параллельный ввод-вывод) и DART (передатчик с двумя асинхронными приемниками). По мере развития продуктовой линейки маломощные, высокоскоростные и CMOS были представлены версии этих чипов.

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

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

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

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

Mostek, который произвел первый Z80 для Zilog, предложил его в качестве второго источника как MK3880. SGS-Thomson (сейчас STMicroelectronics ) тоже был вторым источником с их Z8400. Резкий и NEC разработали вторые источники для NMOS Z80, LH0080 и µPD780C, соответственно. LH0080 использовался в различных домашних и персональных компьютерах Sharp и других японских производителей, в том числе Sony Компьютеры MSX, а также ряд компьютеров в Sharp MZ серии.[46]

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

В Восточная Германия, нелицензионный клон Z80, известный как U880, был изготовлен. Он был очень популярен и использовался в Роботрон 's и VEB Mikroelektronik Mühlhausen компьютерные системы (такие как KC85 -серии), а также во многих самодельных компьютерных системах. В Румыния может быть найден другой нелицензионный клон с именем MMN80CPU и произведен Микроэлектроника, используется в домашних компьютерах, таких как TIM-S, HC, COBRA.

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

Производные

Совместим с оригинальным Z80
  • Hitachi разработал HD64180, микрокодированный и частично динамический Z80 в CMOS, со встроенными периферийными устройствами и простым MMU, дающим 1МБ адресное пространство. Позже он был вторым источником Zilog, первоначально как Z64180, а затем в виде слегка модифицированного Z180[47] протокол шины и тайминги лучше адаптированы к периферийным чипам Z80. Z180 поддерживался и развивался под именем Zilog, новейшие версии основаны на полностью статическом ядре S180 / L180 с очень низким энергопотреблением и EMI (шумом).
  • Toshiba разработали 84-контактные Z84013 / Z84C13 и 100-контактные Z84015 / Z84C15 серии «интеллектуальных периферийных контроллеров», в основном обычные ядра NMOS и CMOS Z80 с периферийными устройствами Z80, таймер Watch Dog, сброс при включении и генератор состояния ожидания на том же чипе. Изготовлены по Острый а также Toshiba. Эти продукты сегодня являются вторыми поставщиками Zilog.[48]
  • 32-битный Z80-совместимый Zilog Z380, представленный в 1994 году, используется в основном в телекоммуникационном оборудовании.[нужна цитата ]
  • Zilog совместим с полностью конвейерным Z80 eZ80[49] с длиной слова 8/16/24 бит и линейным адресным пространством 16 МБ был представлен в 2001 году. Он существует в версиях со встроенным чипом SRAM или же флэш-память, а также со встроенной периферией. Один вариант имеет чип MAC (контроллер доступа к среде), а доступное программное обеспечение включает Стек TCP / IP. В отличие от Z800 и Z280 добавлено лишь несколько инструкций (в основном Правоохранительные органы, Горох, и загрузка с переменным адресом 16/24 бита), но вместо этого инструкции выполняются от 2 до 11 раз с большей эффективностью тактового цикла, чем на исходном Z80 (со средним значением около 3-5 раз). В настоящее время он предназначен для тактовых частот до 50 МГц.
  • Кавасаки разработал двоично-совместимый KL5C8400, который примерно в 1,2–1,3 раза эффективнее тактового цикла, чем оригинальный Z80, и может работать на частоте до 33 МГц. Kawasaki также производит семейство KL5C80A1x, в котором есть периферийные устройства, а также небольшая оперативная память на кристалле; он имеет примерно такой же эффективный тактовый цикл, как eZ80, и может работать на частоте до 10 МГц (2006 г.).[50]
  • NEC µPD9002 был гибридным процессором, совместимым как с Z80, так и с x86 семьи.
  • Семейство чипов аудиопроцессора Chinese Actions Semiconductor (ATJ2085 и другие) содержит Z80-совместимый MCU вместе с 24-битным выделенным процессором DSP.[51] Эти чипы используются во многих MP3-плеерах и медиаплеерах.
  • Синтезируемые программные ядра T80 (VHDL) и TV80 (Verilog) доступны на OpenCores.org.[52]
Несовместимо
  • В Toshiba TLCS 900 серий большого объема (в основном OTP ) микроконтроллеры на базе Z80; они используют одну и ту же базовую структуру регистров BC, DE, HL, IX, IY и в основном те же самые инструкции, но не совместимы на двоичном уровне, тогда как предыдущий TLCS 90 совместим с Z80.[53]
  • В NEC 78K микроконтроллеры серии основаны на Z80; они имеют одинаковую базовую структуру регистров BC, DE, HL и имеют похожие (но по-разному названные) инструкции; не бинарно совместимый.
Частично совместим
Больше не производится
  • В Корпорация ASCII R800 был быстрым 16-битным процессором, используемым в MSX TurboR компьютеры; это было программное обеспечение, но не аппаратно совместимое с Z80 (синхронизация сигнала, распиновка и функции контактов отличаются от Z80).
  • NMOS Зилога Z800 и CMOS Z280 были 16-битными реализациями Z80 (до HD64180 / Z180 ) с выгружаемым адресным пространством MMU размером 16 МБ; они добавили множество ортогонализаций и режимов адресации в набор команд Z80. Функции миникомпьютера, такие как пользовательский и системный режимы, поддержка многопроцессора, MMU на кристалле, кеш-память инструкций и данных и т. Д., Рассматривались скорее как более сложные, чем функциональные возможности и поддержка разработчика встроенных систем (обычно ориентированных на электронику). это также затрудняло прогнозирование времени выполнения инструкций.[нужна цитата ]
  • Определенный аркадные игры Такие как Панг /Buster Bros использовать зашифрованный ЦП "Kabuki" Z80 производства Технология СБИС, где ключи дешифрования хранятся во внутреннем память с батарейным питанием, чтобы избежать пиратства и нелегальных пиратских игр.[56]

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

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

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

В конце 1970-х - начале 1980-х Z80 использовался в большом количестве довольно анонимных бизнес-ориентированных машин с CP / M операционная система, комбинация, которая доминировала на рынке в то время.[57][58] Четыре хорошо известных примера бизнес-компьютеров Z80, работающих под управлением CP / M: Heathkit H89 портативный Осборн 1, то Кайпро серии и Epson QX-10. Менее известными были дорогие high-end Отрона Атташе.[59] В некоторых системах использовалось многозадачное программное обеспечение операционной системы (например, МП / м или Morrow's Micronix) для совместного использования одного процессора между несколькими одновременные пользователи.

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

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

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

Портативные и карманные компьютеры

Использование Z80 в более легких устройствах с батарейным питанием стало более распространенным с появлением КМОП-версий процессора. Он также вдохновил на разработку других процессоров на базе CMOS, таких как LH5801.[60] от Sharp. В Sharp PC-1500, а БАЗОВЫЙ -программируемый карманный компьютер был выпущен в 1981 году, за ним последовала улучшенная Sharp PC-1600 в 1986 году и Sharp PC-E220 в 1991 г. Ноутбуки который мог запускать операционную систему CP / M так же, как настольные машины с Epson PX-8 Женева в 1984 г., а в 1985 г. Epson PX-4 и Бондвелл-2. В то время как рынок ноутбуков в последующие годы переместился в Intel 8086 процессоры и операционная система MS-DOS, легкие системы на базе Z80 с более длительным временем автономной работы, такие как Кембридж Z88 в 1988 г. и Амстрад NC100 в 1992 году. Производный от Z80 Z8S180 также нашла свое место в раннем управляемый ручкой персональный цифровой помощник, то Amstrad PenPad PDA600 в 1993 году. Базируется в Гонконге. VTech произвела линейку небольших портативных компьютеров под названием «Лазеры» на базе Z80.[61][62] Последние два были Laser PC5[63] и PC6.[64]

Начиная с ТИ-81 в 1990 году Texas Instruments произвела длинная линия графических калькуляторов на базе Z80. В Серия TI-84 Plus, представленный в 2004 году, все еще находится в производстве по состоянию на 2020 год. Серия TI-84 Plus CE, представленный в 2015 году, использует производный от Z80 Zilog eZ80 процессор, который также все еще находится в производстве по состоянию на 2020 год. TI также произвела линейку карманных органайзеров (завершенных в 2000 году) с использованием процессоров Toshiba на базе ядра Z80; первым из них был TI PS-6200[65] и после продолжительного производства нескольких десятков моделей кульминацией стала серия PocketMate.[66] Более поздние модели Sharp Wizard серия персональных органайзеров была основана на Z80.

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

На базе Z80 АТС. Z80 - это третий чип слева, справа от чипа с написанной от руки белой этикеткой.

Zilog Z80 долгое время был популярным микропроцессором в встроенные системы и микроконтроллер ядра[23] где он остается широко используемым сегодня.[3][67] Приложения Z80 включают использование в бытовая электроника, промышленные товары и электронные музыкальные инструменты. Например, Z80 использовался в новаторском музыкальном синтезаторе. Пророк-5,[68] как и в первом MIDI-синтезаторе Пророк 600.[69] Casio использовал Z80A в своем ПВ-1000 игровая приставка. Z80 использовался в Мастер Система и Игровое снаряжение консоли. В Sega Genesis содержит Z80, который управляет звуковыми чипами системы и обеспечивает обратную совместимость с играми Master System.

В конце 1980-х годов серия Советский стационарные телефоны под названием "AON" отличались Z80; эти телефоны расширили набор функций стационарной связи за счет идентификатор вызывающего абонента, разные мелодии на основе звонящего, Быстрый набор и так далее.[70]

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

Сноски

  1. ^ Zilog включил в схему микросхемы несколько «ловушек», чтобы попытаться задержать это копирование. По словам Фаггина, инженер NEC позже сказал ему, что им потребовалось несколько месяцев работы, прежде чем они смогли запустить свой μPD780.
  2. ^ Они были названы Z80 CTC (счетчик / таймер), Z80 DMA (прямой доступ к памяти), Z80 DART (двойной асинхронный приемник-передатчик), Z80 SIO (контроллер синхронной связи) и Z80 PIO (параллельный ввод / вывод).
  3. ^ Zilog производила Z80, а также большинство других своих продуктов в течение многих лет, пока они не продали свои заводы и стать "басни "Компания они сегодня.
  4. ^ Хотя 8080 имел 16-битное сложение и 16-битное инструкции увеличения и уменьшения, в нем не было явного 16-битного вычитания и флага переполнения. Z80 дополнил это инструкциями ADC HL, rr и SBC HL, rr, которые соответственно устанавливают новый флаг переполнения. (ADD HL, совместимый с 8080, rr не поддерживает.)
  5. ^ В частности, для одновременной обработки 32-битных мантиссы из двух операнды в 40-битном плавающая точка формат, используемый в Sinclair домашние компьютеры. Они также использовались аналогичным образом в некоторых более ранних, но менее известных компьютерах на базе Z80, таких как шведский ABC 80 и ABC 800.
  6. ^ Поскольку это обновление не требует передачи каких-либо данных, а только выводит последовательные адреса строк, оно занимает менее 1,5 T-состояний. Выделенный сигнал M1 (машинный цикл один) в Z80 можно использовать, чтобы обеспечить микросхемам памяти такое же время доступа для выборки инструкций, что и для доступа к данным, то есть почти два полных T-состояния из 4T принести цикл (а также из данных 3T читать цикл). Z80 может использовать память с тем же диапазоном времени доступа, что и 8080 (или 8086) при той же тактовой частоте. Этот длинный сигнал M1 (по отношению к часам) также означал, что Z80 может использовать внутреннюю частоту примерно в 4-5 раз большую, чем 6800, 6502 или аналогичные, с использованием того же типа памяти.
  7. ^ В отличие от исходной версии nMOS, которая использовала динамические защелки и не могла быть остановлена ​​более чем на несколько тысяч тактов.
  8. ^ Связанные 8086 Семья также унаследовала этот дизайн регистра.
  9. ^ Этот указатель переменной HL был фактически единственным способом доступа к памяти (для данных) в Datapoint 2200, а следовательно, и в Intel 8008. Прямые адреса не могли использоваться для доступа к данным.
  10. ^ На самом деле невозможно закодировать эту инструкцию на Intel 8086 или более поздние версии. См. Справочные руководства Intel.

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

  1. ^ Согласно устной истории с Федерико Фаггин, только в CMOS, National не выпускала версию NMOS.
  2. ^ Источник: Устная история Федерико Фаггина.
  3. ^ а б c Балч, Марк (18.06.2003). «Основы цифровых технологий». Полный цифровой дизайн: полное руководство по цифровой электронике и архитектуре компьютерных систем. Профессиональная инженерия. Нью Йорк, Нью Йорк: McGraw-Hill Professional. п. 122. ISBN  0-07-140927-0.
  4. ^ а б Отчет Seybold о профессиональных вычислениях. Публикации Сейболда. 1983 г. В 8-битном мире два самых популярных микрокомпьютера - это компьютерные чипы Z80 и 6502.
  5. ^ Андерсон (1994), п. 51.
  6. ^ Андерсон (1994), п. 57.
  7. ^ а б Брок, Джеральд В. (2003). Вторая информационная революция. Издательство Гарвардского университета. ISBN  978-0-674-01178-6.
  8. ^ «История 8-бит: путешествие далеко за короткое время». InfoWorld. Vol. 4 шт. 47. Пало-Альто, Калифорния: Popular Computing Inc., 1982-11-29. С. 58–60. ISSN  0199-6649.
  9. ^ Шима, Масатоши; Федерико Фаггин; Ральф Унгерманн (1976-08-19). «Набор микросхем Z-80 знаменует третье поколение микропроцессоров». Электроника. Нью-Йорк. 49 (17): 32–33 Макгроу – Хилл.
  10. ^ См. Устную историю Федерико Фаггина.
  11. ^ Матур (1989). Введение в микропроцессоры. п. 111. ISBN  978-0-07-460222-5. Регистровая архитектура Z80 более инновационная, чем у 8085.
  12. ^ Ciarcia 1981, стр. 31,32
  13. ^ а б Вай-Кай Чен (2002). Справочник по схемам и фильтрам. CRC Press. п. 1943 г. ISBN  978-0-8493-0912-0. обработка прерывания начинается в соответствии с методом прерывания, предусмотренным IM я, я= 0, 1 или 2, инструкция. Если я= 1, для прямого метода в ПК загружается 0038H. Если я= 0, для векторного метода устройство прерывания имеет возможность поместить код операции для одного байта. Если я= 2, для косвенного векторного метода прерыватель должен поместить байт. Затем Z80 использует этот байт, где один из 128 векторов прерывания может быть выбран байтом.
  14. ^ «Специальный сброс Z80».
  15. ^ Адриан, Андре. "Z80, 8-битный вычислитель чисел".
  16. ^ Популярные вычисления. Макгроу-Хилл. 1983. с. 15.
  17. ^ Марков, Джон (1982-10-18). «Быстрый Z80 Zilog повышает производительность с 8 до 16 бит». InfoWorld. InfoWorld Media Group. п. 1. ISSN  0199-6649.
  18. ^ Электронный дизайн. Хайден. 1988. стр. 142. Помимо поддержки всего набора команд Z80, Z180
  19. ^ Ганссл, Джек Г. (1992). "Z80 жив!". Разработчики выбрали архитектуру, совместимую с Z80, предоставляя пользователям Z80 полностью совместимый с программным обеспечением путь обновления. Процессор 64180 выполняет каждую инструкцию Z80 точно так же, как Z80.
  20. ^ «Вплоть до кремния: как реализованы регистры Z80».
  21. ^ Килобод. 1001001. 1977. с. 22.
  22. ^ Закс, Родней (1982). Программирование Z80 (3-е изд.). SYBEX. п. 62. ISBN  978-0-89588-069-7.
  23. ^ а б c Стив Хит. (2003). Проектирование встроенных систем. Оксфорд: Newnes. п. 21. ISBN  978-0-7506-5546-0.
  24. ^ "Z80 Flag Affection". www.z80.info. Томас Шеррер. Получено 2016-06-14.
  25. ^ Франк Дурда IV. "Набор команд 8080 / Z80". Архивировано из оригинал на 2016-02-11. Получено 2009-07-22.
  26. ^ Прыгать (JP) инструкции, которые загружают счетчик программ с новым адресом инструкции, сами по себе не обращаются к памяти. Абсолютная и относительная формы перехода отражают это, опуская круглые скобки в их операндах. Инструкции перехода на основе регистра, такие как "JP (HL)"включать круглые скобки в явное отклонение от этого соглашения.«Руководство пользователя Z80 Relocating Macro Assembler» (PDF). п. БИ 2. Архивировано из оригинал (PDF) на 2011-07-20. Получено 2009-06-04.
  27. ^ Скэнлон, Лео Дж. (1988). 8086/8088/80286 язык ассемблера. Брэди Книги. п.12. ISBN  978-0-13-246919-7. […] 8086 программно совместим с 8080 на уровне ассемблера. […]
  28. ^ Нельсон, Росс П. (январь 1989 г.) [1988]. Книга 80386: Руководство программиста на языке ассемблера для 80386. Серия программ Microsoft (1-е изд.). Microsoft Press. п. 2. ISBN  978-1-55615-138-5. […] An Intel программа-переводчик могла конвертировать 8080 программы на ассемблере в 8086 программы на ассемблере […]
  29. ^ а б «Введение в процессор Z80». Зилог. 1995 г. Он имеет язык из 252 корневых инструкций и с зарезервированными 4 байтами в качестве префиксов, обращается к дополнительным 308 инструкциям.
  30. ^ Санчес, Хулио; Кантон, Мария П. (2008). Программные решения для инженеров и ученых. Тейлор и Фрэнсис. п. 65. ISBN  978-1-4200-4302-0. 8-битные микропроцессоры, предшествовавшие семейству 80x86 (такие как Intel 8080, Zilog Z80 и Motorola), не включали умножение.
  31. ^ "Наборы инструкций для 8080 / Z80". Быстрый и грязный ассемблер 8080. Фрэнк Дурда. Архивировано из оригинал на 2016-02-11. Получено 2016-07-25.
  32. ^ Froehlich, Роберт А. (1984). Каталог и каталог бесплатного программного обеспечения. Crown Publishers. п. 133. ISBN  978-0-517-55448-7. Недокументированные коды Z80 допускают 8-битные операции с регистрами IX и IY.
  33. ^ а б Бот, Жакко Дж. Т. "Недокументированные инструкции Z80". Дом процессора Z80. Если код операции работает с регистрами HL, H или L, то, если этому коду операции предшествует #DD (или #FD), он работает на IX, IXH или IXL (или IY, IYH, IYL), за некоторыми исключениями. Исключение составляют такие инструкции, как LD H, IXH и LD L, IYH.
  34. ^ Робин Никсон Расширенное руководство пользователя Amstrad Notepad , Робин Никсон, 1993 ISBN  1-85058-515-6, страницы 219-223
  35. ^ Зилог (2005). Z80 Family CPU Руководство пользователя (PDF). Зилог. п. 11.
  36. ^ Ciarcia 1981, п. 65
  37. ^ Закс, Родней (1989). Программирование Z80. Sybex. п. 200. ISBN  978-0-89588-069-7. ADD A, n Добавить аккумулятор с немедленными данными n. ПАМЯТЬ Время: 2 млн циклов; 7 т состояний.
  38. ^ Ciarcia 1981, п. 63
  39. ^ Ciarcia 1981, п. 77
  40. ^ Ciarcia 1981, п. 36
  41. ^ Ciarcia 1981, п. 58
  42. ^ "Руководство пользователя Z80, Специальные регистры стр. 3". www.zilog.com. Зилог. Получено 2016-06-14.
  43. ^ "Руководство пользователя периферийных устройств ЦП семейства Z80" (PDF). Лист данных EEWORLD. ЗиЛОГ. 2001. Архивировано с оригинал (PDF) на 2014-05-02. Получено 2014-04-30.
  44. ^ Янг, Шон (1998). «Недокументированные функции Z80 (в поведении программного обеспечения)». Инструкции ввода-вывода используют всю адресную шину, а не только младшие 8 бит. Фактически, у вас может быть 65536 портов ввода / вывода в системе Z80 (Spectrum использует это). IN r, (C), OUT (C), r и все инструкции блока ввода-вывода помещают весь BC на адресную шину. IN A, (n) и OUT (n), A помещают A * 256 + n на адресную шину.
  45. ^ «Обзор серии SHARP MZ». SharpMZ.org. Архивировано из оригинал на 2008-03-27. Получено 2011-07-28. Большинство MZ используют 8-битный процессор LH0080 / Z80 [...]
  46. ^ Ганссл, Джек Г. (1992). "Z80 жив!". 64180 - это поставляемое Hitachi ядро ​​Z80 с многочисленными встроенными "дополнениями". Версия Zilog - Z180, по сути, та же самая деталь.
  47. ^ Ганссл, Джек Г. (1992). "Z80 жив!". И Toshiba, и Zilog продают 84013 и 84015, которые представляют собой ядра Z80 с обычными периферийными устройствами Z80, встроенными в плату.
  48. ^ «Семейство продуктов EZ80 ACCLAIM». Зилог.
  49. ^ Электронный бизнес в Азии. Cahners Asia Limited. 1997. стр. 5. Kawasaki KL5C80A12, KL5C80A16 и KL5C8400 - высокоскоростные 8-битные MCU и CPU. Их код процессора, KC80, совместим с Zilog Z80 на двоичном уровне. KC80 выполняет инструкции примерно в четыре раза быстрее, чем Z80, при той же тактовой частоте.
  50. ^ «Характеристики оборудования». S1mp3.org. 2005.
  51. ^ "Проекты :: OpenCores".
  52. ^ «Раздел 6 Тенденции рынка MOS MPU, MCU и периферийных устройств» (PDF). п. 16.
  53. ^ Аксельсон, Ян (2003). Встроенный Ethernet и Интернет в комплекте. Исследование Лейквью. п. 93. ISBN  978-1-931448-00-0. Микропроцессор Rabbit 3000 компании Rabbit Semiconductor, который является значительно улучшенной и усовершенствованной производной почтенного микропроцессора Z80 от ZiLOG, Inc.
  54. ^ Хайдер, Камаль; Перрин, Боб (2004). Проектирование встроенных систем с использованием микропроцессора Rabbit 3000. Newnes. п. 32. ISBN  978-0-7506-7872-8. Части Rabbit основаны на архитектуре Zilog Z180, хотя они не являются бинарно совместимыми с частями Zilog.
  55. ^ Круз, Эдуардо (23 ноября 2014 г.). "Arcade Hacker: Capcom Kabuki CPU - Intro".
  56. ^ Хольц, Герман (1985). Компьютерные рабочие станции. Чепмен и Холл. п. 223. ISBN  978-0-412-00491-9. и CP / M продолжали доминировать в 8-битном мире микрокомпьютеров.
  57. ^ Дворжак, Джон К. (1982-05-10). «После CP / M объектно-ориентированные операционные системы могут выйти вперед». InfoWorld. Vol. 4 шт. 18. Медиа-группа InfoWorld. п. 20. ISSN  0199-6649. Идея универсальной операционной системы все еще находится в зачаточном состоянии. Во многих смыслах это начинается с CP / M и мешанины компьютеров ранних 8080 и Z80.
  58. ^ «Атташе Отрона». Музей старых компьютеров Стива. Стивен Стенгель. Получено 2019-03-05.
  59. ^ "Справочное техническое руководство по Sharp PC-1500" (PDF).
  60. ^ «Ноутбук бедняка». Google Книги. Популярная механика, апрель 1991 г., стр. 120. Апрель 1991 г.. Получено 2018-04-11.
  61. ^ «Лазер ПК4». Музей старых компьютеров. Получено 2018-04-11.
  62. ^ «Лазер PC5 от VTech». Larwe точка com. Получено 2018-04-11.
  63. ^ «Лазер ПК6». Perfect Solutions точка com. Идеальные решения. Архивировано из оригинал на 2018-05-21. Получено 2018-04-11.
  64. ^ "Texas Instruments PS-6200". Музей калькуляторов Датамат. Йорг Вернер. Получено 2019-06-18.
  65. ^ "Texas Instruments PocketMate 100". Музей калькуляторов Датамат. Йорг Вернер. Получено 2019-06-18.
  66. ^ Ян Р. Синклер. (2000). Практическое руководство по электронике. Оксфорд, Англетер: Newnes. п. 204. ISBN  978-0-7506-4585-0.
  67. ^ "Винтажные синтезаторы Гордона Рейда - последовательные схемы: Пророк 5 и Пророк 10". www.gordonreid.co.uk.
  68. ^ "Prophet 600: классический синтезатор получает апгрейд процессора". 2014-03-19.
  69. ^ «Делаем демку для старого телефона - AONDEMO». habr.com.

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

Даташиты и руководства
Книги по оборудованию
  • Создайте свой собственный компьютер Z80 - Рекомендации по проектированию и примечания по применению; 1-е изд; Стив Чиарсия; Байтовые книги; 332 страницы; 1981; ISBN  978-0070109629. (архив)
  • Микропроцессор Z80 - архитектура, интерфейс, программирование и дизайн; 1-е изд; Рамеш Гаонкар; Макмиллан; 674 страницы; 1988; ISBN  978-0675205405. (архив)
  • Z80 Руководство пользователя - Назначение контактов, сигналы управления, периферийные устройства и многое другое; 1-е изд; Джозеф Карр; Отдыхай; 338 страниц; 1980; ISBN  978-0835995177. (архив)
  • Методы взаимодействия с микропроцессором; 3-е изд; Родней Закс и Остин Лизи; Sybex; 466 страниц; 1979; ISBN  978-0-89588-029-1. (архив)
Книги по программному обеспечению
  • Программирование Z80; 3-е изд; Родней Закс; Sybex; 630 страниц; 1980; ISBN  978-0895880949. (архив)
  • Программирование на языке ассемблера Z80; 1-е изд; Лэнс Левенталь; Осборн / Макгроу-Хилл; 642 страницы; 1979; ISBN  978-0931988219. (архив)
  • Язык ассемблера 8080 / Z80 - методы улучшенного программирования; 1-е изд; Алан Миллер; Джон Уайли и сыновья; 332 страницы; 1981; ISBN  978-0471081241. (архив)
  • Программирование на языках ассемблера Z80 и 8080; 1-е изд; Кейт Спраклен; Хайден; 180 страниц; 1979; ISBN  978-0810451674. (архив)
  • Практическое программирование на микрокомпьютере - Z80 - включая исходный код для резидентного ассемблера и монитора отладки; 1-е изд; Уолтер Веллер; Северная технология; 501 страница; 1978; ISBN  978-0930594053. (архив)
  • Подпрограммы языка ассемблера Z80; 1-е изд; Лэнс Левенталь и Уинтроп Сэвилл; Осборн / Макгроу-Хилл; 512 страниц; 1983; ISBN  978-0931988912. (архив)
  • Недокументированный Z80 Документированный; Шон Янг; v0.91; 52 страницы; 2005 г. (архив)
Справочные карты
  • Справочная карта для микропроцессора Z80; Ширли и Нанос; Nanos Systems; 16 страниц; 1981 г. (архив)
  • Справочная карта микропроцессора Z80; Джеймс Льюис; Micro Logic; 2 страницы; 1981 г. (архив)

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

Симуляторы / Эмуляторы
Доски
FPGA