Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Z80 )
Перейти к навигации Перейти к поиску

Распиновка оригинального корпуса микросхемы DIP40 Z80

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

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

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

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

История [ править ]

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

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

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

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

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

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

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

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

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

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

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

Дизайн [ править ]

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

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

Модель программирования и набор регистров 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, [22] где процессор может быстро переключаться с одного банка на другой; [23] функция, полезная для ускорения реакции на одноуровневые прерывания с высоким приоритетом. Аналогичная функция присутствовала в 2200, но никогда не была реализована в Intel. Двойной набор регистров очень полезен во встроенной роли, поскольку он улучшает производительность обработки прерываний, но нашел широкое применение в роли персонального компьютера в качестве дополнительного набора общих регистров для сложного кода, такого как арифметика с плавающей запятой или домашние компьютерные игры.

Регистры [ править ]

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

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

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

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

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

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

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

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

Ассемблер Z80 [ править ]

Datapoint 2200 и Intel 8008 [ править ]

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

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

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

Новый синтаксис [ править ]

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

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

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

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

Набор инструкций и кодировка [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

Ошибки [ править ]

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

Пример кода [ править ]

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

Выполнение инструкции [ править ]

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

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

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

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

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

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

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

  • PIO Z84C2008

  • CTC Z84C3008

  • SIO Z84C4008

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

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

Вторые источники и производные [ править ]

Вторые источники [ править ]

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

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

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

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

  • Mostek Z80: MK3880

  • NEC μPD780C

  • Sharp LH0080

  • Toshiba Z84C00

  • Советский клон T34BM1 Z80

Производные [ править ]

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

  • Hitachi HD64180

  • Зилог Z180

  • Зилог Z280

  • Toshiba TMPZ84C015

Известные применения [ править ]

Настольные компьютеры [ править ]

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

В конце 1970-х - начале 1980-х Z80 использовался в большом количестве довольно анонимных бизнес-ориентированных машин с операционной системой CP / M , комбинация, которая доминировала на рынке в то время. [58] [59] Четыре хорошо известных примера бизнес-компьютеров Z80 с CP / M - это Heathkit H89 , портативный Osborne 1 , серия Kaypro и Epson QX-10 . Менее известным был дорогой высококлассный Otrona Attache. [60] В некоторых системах использовалось многозадачное программное обеспечение операционной системы (например, MP / M или Morrow's Micronix) для совместного использования одного процессора несколькими одновременными пользователями..

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

Было представлено несколько домашних компьютеров, которые использовали Z80 в качестве основного процессора или в качестве дополнительного модуля для доступа к программному обеспечению, написанному для Z80. Примечательны серии TRS-80 , включая исходную модель (позже переименованную в «Модель I»), Модель II , Модель III и Модель 4 , которые были оснащены Z80 в качестве основного производителя, и некоторые (но не все) другие Модели TRS-80, в которых Z80 использовался в качестве основного или вспомогательного процессора. Еще одна примечательная и уникальная машина - DEC Rainbow 100 , в которой использовались как Intel 8088 и ЦП Z80 для поддержки 8-битных приложений CP / M-80, работающих на Z80, или приложений CP / M-86 (или ограниченных MS-DOS), работающих на 8088.

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

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

Использование Z80 в более легких устройствах с батарейным питанием стало более распространенным с появлением CMOS-версий процессора. Он также вдохновил на разработку других процессоров на основе КМОП, таких как LH5801 [61] от Sharp. Sharp PC-1500 , A BASIC -programmable карманный компьютер был выпущен в 1981 году, а затем улучшенному Sharp PC-1600 в 1986 году и Sharp PC-E220 в 1991 году ноутбуки , которые могли бы запустить CP / M операционной системы так же , как на рабочем столе машины последовали с Epson PX-8 Geneva в 1984 году, а в 1985 году Epson PX-4 и Bondwell-2. В то время как рынок ноутбуков в последующие годы перешел на более мощные процессоры Intel 8086 и операционную систему MS-DOS, все еще появлялись легкие системы на базе Z80 с более длительным временем автономной работы, такие как Cambridge Z88 в 1988 году и Amstrad NC100. в 1992 год Z80 происхождения Z8S180 также нашли свой путь в ранний перьевом работать персональный цифровой помощник , то Amstrad PenPad PDA600 в 1993 году в Гонконге на основе VTech выпустила линейку небольших портативных компьютеров , называемых «Lasers» , основанную на Z80. [62] [63] Последние два были Laser PC5 [64] и PC6. [65]CIDCO MailStation Mivo 100, первый выпущенный в 1999 году, был автономным портативным устройством электронной почты, с микроконтроллером Z80 основе. [66]

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

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

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

Zilog Z80 долгое время был популярным микропроцессором во встроенных системах и ядрах микроконтроллеров [24], где он широко используется и сегодня. [4] [69] Z80 применяется в бытовой электронике , промышленных товарах и электронных музыкальных инструментах. Например, Z80 была использована в новаторской музыки синтезатора Prophet-5 , [70] , а также в первом MIDI - синтезатора Prophet 600 . [71] Casio использовала Z80A в своей игровой приставке PV-1000 .

Большое количество аркадных видеоигр начала 1980-х, включая феноменальный хит Pac-Man , содержат процессоры Z80.

Z80 использовался в консолях Sega Master System и Sega Game Gear . Происхождение Sega содержит Z80, со своим собственным 8 Кбайтом оперативной памяти, которая проходит параллельно с MC68000 основного процессором, имеет прямой доступ к звуковым чипам системы и ввод / вывод (контроллер) портам, и переключаемого путь данных к шина основной памяти 68000 (обеспечивающая доступ к 64-килобайтной основной ОЗУ, программному картриджу и всему видеочипу); Помимо обеспечения обратной совместимости с играми Master System, Z80 часто используется для управления звуком в программном обеспечении Genesis [72] .

Процессоры Z80 также использовались в новаторской и популярной серии графических калькуляторов TI-8x от Texas Instruments , начиная с 1990 года с TI-81 , который оснащен Z80 с тактовой частотой 2 МГц. Большинство высокопроизводительных калькуляторов этой серии, начиная с TI-82 и TI-85 , имеют тактовую частоту своих процессоров Z80 на частоте 6 МГц или выше. Некоторые модели с именами TI-8x используют другие процессоры, такие как M68000, но подавляющее большинство основано на Z80. На них можно запускать собранные или скомпилированные пользовательские программы в виде машинного кода Z80.

В конце 1980-х годов серия советских стационарных телефонов под названием «АОН» включала Z80; Эти телефоны расширили набор функций стационарной линии с помощью идентификатора вызывающего абонента , различных мелодий звонка в зависимости от вызывающего абонента, быстрого набора и т. д. [73] Во второй половине девяностых годов производители этих телефонов перешли на 8051-совместимые микроконтроллеры, чтобы снизить энергопотребление и предотвратить перегрев компактных стенных бородавок.

См. Также [ править ]

  • Zilog eZ80
  • Автобус С-100
  • SymbOS
  • Z88DK
  • Тренировочная система Micro-Professor MPF-I , Z80

Сноски [ править ]

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

Дальнейшее чтение [ править ]

Даташиты и руководства
  • Технический паспорт Z80 (NMOS) ; Зилог; 10 страниц; 1978 г.
  • Z80 Data Book (NMOS) ; Зилог; 131 страница; 1978 г.
  • Технический паспорт Z80 (NMOS и CMOS) ; Зилог; 36 страниц; 2002. Исправление
  • Руководство пользователя Z80 (NMOS и CMOS) ; Зилог; 332 страницы; 2016 г.
  • Руководство пользователя периферийных устройств Z80 (NMOS и CMOS) ; Зилог; 330 страниц; 2001 г.
Книги по оборудованию
  • Создайте свой собственный компьютер 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. (архив)

Внешние ссылки [ править ]