WDC 65C816


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

W65C816S (также 65C816 или 65816 ) является 8/16-разрядный микропроцессор (MPU) , разработанный и продаваемый Design Center Western (WDC). Представленный в 1983 году [1], W65C816S является усовершенствованной версией 8-битного MPU WDC 65C02 , который сам является расширением CMOS известного MOS Technology 6502 NMOS MPU. 65C816 был процессором для Apple IIGS и в модифицированной форме Super Nintendo Entertainment System .

Число 65 в обозначении детали связано с режимом совместимости с 65C02, а число 816 означает, что MPU имеет выбираемые 8- и 16-битные размеры регистров . В дополнение к доступности 16 - битных регистров, то W65C816S особенности расширенной адресации памяти до 24 бит , поддерживающий до 16 мегабайт в памяти с произвольным доступом , расширенным набором команд и 16 бит в указатель стека , а также несколько новых электрических сигналы для улучшенного управления аппаратным обеспечением системы.

При сбросе W65C816S запускается в «режиме эмуляции», что означает, что он в основном ведет себя как 65C02. После этого W65C816S может быть переключен в «собственный режим» с помощью двух последовательностей инструкций, в результате чего он активирует все расширенные функции, но при этом сохранит значительную степень обратной совместимости с большей частью программного обеспечения 65C02. Однако, в отличие от PDIP40 версии 65C02, которая является совместимой по выводам заменой своего предка NMOS, PDIP40 W65C816S не совместим по выводам с другими MPU семейства 6502.

К W65C816S относится W65C802 , который имел ту же внутреннюю структуру и поддержку 16 бит, но использовал 40-контактную схему, совместимую с оригинальным 6502. Это позволило использовать его в качестве замены в определенных ролях. Однако 65C802 не мог передать полный 24-битный адрес, что ограничивало его 64 КБ памяти. 65C802 и его родственники больше не производятся.

История

Версия микропроцессора W65C816S PLCC-44 , смонтированная на одноплатном компьютере .

В 1981 году Билл Менш , основатель и генеральный директор WDC, вместе со своими производственными партнерами, в первую очередь Rockwell Semiconductor и Synertek , начал разработку 65C02 . Основная цель 65C02 усилий заключалась в переходе от процесса NMOS оригинального 6502 на этой 65C02 в CMOS, что позволит ему работать на гораздо более низких уровнях мощности, где - то между 1 / 10 и 1 / 20 при работе на тех же тактовых частотах. В дизайн также был включен ряд новых кодов операций и исправлений ошибок. [2]

Разработка W65C816S началась в 1982 году после того, как Менш проконсультировался с Apple Computer по поводу новой версии серии персональных компьютеров Apple II , которые, среди прочего, должны были улучшить графику и звук. Apple хотела MPU, который был бы программно совместим с 6502, который тогда использовался в Apple II, но с возможностью адресовать больший объем памяти, а также загружать и хранить 16-битные слова. Результатом стал 65C816, законченный в марте 1984 года, образцы которого были предоставлены Apple и Atari во второй половине года, а полный выпуск - в 1985 году. [3] Меншу в процессе разработки помогала его сестра Кэтрин, которая отвечала за это. для части макета устройства.

Тот же процесс привел к созданию 65C802, который внутри был идентичен 65C816. Оба были произведены на одних и тех же производственных линиях и расходились только на последних этапах металлизации, когда микросхема подключалась к внешним контактам. В 65C802 эти контакты имели ту же схему расположения, что и у оригинального 6502, что позволяло использовать его в качестве замены при одновременном использовании 16-битной обработки ЦП. Однако, поскольку он использовал исходную распиновку, он имел только 16 контактов для адресации и, следовательно, мог получить доступ только к 64 КБ внешней памяти. [4] Обычно, когда производители оборудования разрабатывали проект с нуля, они использовали 65C816, а не 65C802, в результате чего последний снимался с производства.

Впоследствии Apple интегрировала 65C816 в компьютер Apple IIGS . Базовый дизайн 65C816 был вторичным поставщиком GTE , Sanyo и других компаний с середины до конца 1980-х - начала 1990-х годов.

В 1990-х годах как 65C816, так и 65C02 были преобразованы в полностью статическое ядро , что позволило полностью остановить тактовую частоту процессора без потери данных в любом из регистров. Эта функция, наряду с использованием асинхронной статической ОЗУ , позволила создавать проекты, которые потребляли минимальную мощность в состоянии ожидания.

По состоянию на 2019 год , то W65C816S доступен из МЦДА в 40 контактный PDIP или PLCC44 упаковки, а также в качестве ядра для СИС интеграции (например Winbond серии W55V9x «s телевизионных Edutainment ИС ). WDC, которая сама занимается производством полупроводников , работает с различными литейными заводами для производства W65C816S, а также других совместимых продуктов. Дискретные процессоры можно приобрести у ряда дистрибьюторов электроники. Для разработчиков, которые хотят включить функциональность W65C816S в настраиваемую ASIC , WDC предлагает код RTL ( уровень передачи регистров ) в Verilog .

W65C802P

Функции

Особенности WDC 65816:

  • Полностью статические КМОП - дизайн предлагает низкое потребление энергии (300 μ на 1 МГц ) и повышенная помехозащищенность.
  • Широкий диапазон рабочего напряжения : от 1,8 В до 5,0 В ± 5%.
  • Широкий рабочий диапазон частот, официально 14 МГц при 5 В, с использованием однофазного источника тактовых импульсов (любители успешно использовали 65C816 на 20 МГц).
  • Режим эмуляции обеспечивает существенную программную совместимость с NMOS 6502 и CMOS 65C02, за исключением недокументированных кодов операций . Все 256 кодов операций в 65C816 работают в обоих режимах работы.
  • 24-битная адресация памяти обеспечивает доступ к 16 МБ пространства памяти .
  • 16-битный ALU , аккумулятор (A), указатель стека (SP) и индексные регистры (X и Y).
  • 16-битный регистр прямой страницы (он же нулевая страница) (DP).
  • Регистры 8-битного банка данных (DB) и банка программ (PB), генерирующие биты 16-23 24-битного кода и адресов данных. Отдельные регистры программы и банка данных позволяют выполнять сегментацию программ и линейную адресацию данных размером 16 МБ.
  • Действительный адрес данных (VDA) и действительный программный адрес (VPA) управляют выходами для квалификации памяти, двойного кеширования и реализации DMA с циклическим захватом .
  • Управляющий выход Vector pull (VPB), указывающий, когда выбирается вектор прерывания .
  • Ввод прерывания (ABORTB) и связанный вектор поддерживают исправление процессором состояний ошибок шины, таких как сбои страниц и нарушения доступа к памяти.
  • Прямая регистровая и относительная адресация стека обеспечивает возможность повторного , рекурсивного и перемещаемого программирования.
  • 24 режима адресации - 13 исходных режимов 6502 с 92 инструкциями, использующими 256 кодов операций, включая большинство новых кодов операций, реализованных в 65C02.
  • Инструкции блочного копирования, позволяющие быстро копировать структуры данных из одной области ОЗУ в другую с минимальным кодом.
  • Инструкции ожидания прерывания (WAI) и остановки часов (STP) дополнительно снижают энергопотребление , уменьшают задержку прерывания и обеспечивают синхронизацию с внешними событиями.
  • Команда сопроцессора (COP) со связанным вектором поддерживает конфигурации сопроцессора, например процессоры с плавающей запятой.
  • Зарезервированная инструкция «escape» (WDM) для будущих двухбайтовых кодов операций и ссылка на будущие разработки. (WDM - это инициалы дизайнера W65C816S Уильяма Д. Менша .)

Сравнение с более ранними моделями

Два режима

У 65C816 есть два режима работы, «режим эмуляции», в котором 16-битные операции невидимы - индексные регистры устанавливаются на восемь битов - и чип выглядит очень похожим на 65C02, с теми же временами цикла для коды операций и «собственный режим», в котором доступны все новые функции. ЦП автоматически возвращается в режим эмуляции при включении или сбросе, что позволяет ему заменить 65C02, предполагая, что он вносит необходимые изменения в схему, чтобы приспособиться к другому расположению выводов. [2]

16-битные регистры

Наиболее очевидным изменением 65C816 при работе в собственном режиме является расширение различных регистров с 8-битного до 16-битного размера. Это улучшение влияет на аккумулятор (A), регистры индекса X и Y и указатель стека (SP). Это не влияет на счетчик программ (ПК), который всегда был 16-битным. [5]

При работе в основном режиме два бита в регистре состояния меняют свое значение. В исходном 6502 биты 4 и 5 не использовались, хотя бит 4 упоминается как флаг B (reak). В основном режиме бит 4 становится флагом x, а бит 5 становится флагом m. Эти биты определяют, являются ли индексные регистры (x) и / или аккумулятор / память (m) размером 8 или 16 бит. Нули в этих битах устанавливают 16-битные размеры, единицы устанавливают 8-битные размеры. Эти биты фиксируются в единицах, когда процессор включается или сбрасывается, но становятся изменяемыми, когда процессор переключается в основной режим. [5]

Может быть не сразу очевидно, почему нужно использовать теперь 16-битные регистры в 8-битном режиме. Переключение в 8-битный режим с использованием новых инструкций SEP(бит SEt в состоянии процессора) и REP(REset) означает, что все последующие инструкции, обращающиеся к этим регистрам, будут читать или записывать только один байт вместо двух. Например, если бит m установлен в 1, когда LDA $1234инструкция выполняется, будет прочитан только один байт по адресу $ 1234, что уменьшит количество циклов, необходимых для выполнения инструкции. [6] Это особенно полезно, например, при работе с 8-битными символьными данными. [7]

Когда размер регистров установлен на 16 бит, доступ к памяти будет обращаться к двум смежным байтам памяти за счет одного дополнительного тактового цикла. Кроме того, команда чтения-изменения-записи, например ROR <addr>, когда используется, когда аккумулятор установлен на 16 бит, будет влиять на два смежных байта памяти, а не на один. Точно так же все арифметические и логические операции будут 16-битными. [8]

24-битная адресация

Другое важное изменение в системе при работе в собственном режиме заключается в том, что модель памяти расширена до 24-битного формата из исходного 16-битного формата 6502. Это обрабатывается с помощью двух 8-битных регистров смещения, банка данных. Регистр (DB) и Регистр банков программ (PB). В большинстве случаев адреса в коде остаются в исходном 16-битном формате, но значения в DB и PB добавляются в начало, чтобы сформировать 24-битный адрес в основной памяти . Это означает, что инструкции могут обращаться к данным в банке размером 64 КБ , и если необходимо получить доступ к данным вне этого банка, необходимо изменить DB или использовать «длинную» адресацию, то есть указание 24-битного адреса в качестве операнда. к инструкции.

PB определяет, из какого банка размером 64 КБ процессор будет извлекать инструкции - не существует программных средств, с помощью которых можно было бы напрямую изменить PB. Переходы и 16-битные переходы или 16-битные вызовы подпрограмм обычно ограничиваются банком в PB ( JMP(<addr>)всегда выбирает целевой адрес из банка $ 00). Возможен 24-битный «длинный» переход или вызов подпрограммы, что превышает нормальный предел размера программы в 64 КБ. [5]

Еще одним дополнением к набору регистров является 16-битный регистр прямой страницы (DP), который устанавливает базовый адрес для того, что раньше называлось нулевой страницей, но теперь называется прямой страницей. При прямой адресации страниц используется 8-битный адрес, что обеспечивает более быстрый доступ, чем при использовании 16- или 24-битного адреса. Кроме того, некоторые режимы адресации, которые предлагают косвенную адресацию, возможны только на прямой странице. В 65 (C) 02 прямой страницей всегда являются первые 256 байтов памяти, то есть «нулевая страница». В собственном режиме 65C816 может перемещать прямую (нулевую) страницу в любое место в первых 64 КБ памяти, записывая начальный адрес в DP. Если DP не установлен на четную границу страницы, существует штраф за доступ в один цикл. [9]

Переключение между режимами

Текущий режим работы сохраняется в бите эмуляции (E). После того, как новые биты x и m уже добавлены к предыдущему набору из шести флагов в регистре состояния (SR), осталось недостаточно битов для хранения бита нового режима. Вместо этого было использовано уникальное решение, в котором бит режима был оставлен «невидимым», и к нему нельзя было получить прямой доступ. Новая XCEинструкция (обмен переносом с эмуляцией) меняет значение бита эмуляции на бит C (arry), бит 0 в регистре состояния. Например, если кто-то хочет войти в собственный режим после запуска процессора, можно использовать CLCдля CLear бит переноса, а затем XCEзаписать его в бит эмуляции. [10] Возврат в режим эмуляции 65C02 использует, SECза которым следует XCE. [7]

Внутренне 65C816 представляет собой полностью 16-битный дизайн. Биты m и x в SR определяют, как регистры пользователя (накопитель и индекс) выглядят для остальной системы. После сброса 65C816 запускается в режиме эмуляции 65C02, в котором m и x установлены в 1 и не могут быть изменены. Следовательно, регистры выглядят для остальной системы как 8-битные. Самый старший байт (MSB) аккумулятора (B-аккумулятор) не доступен напрямую, но может быть заменен на младший значащий байт (LSB) аккумулятора (A-аккумулятор) с помощью XBAинструкции. Для индексных регистров (.X и .Y) нет соответствующей операции.

При переключении в основной режим старший бит .X и .Y будет равен нулю, а B-аккумулятор не изменится. Если бит m в SR очищен, B-аккумулятор будет «объединен» с A-аккумулятором, чтобы сформировать 16-битный регистр. Загрузка / сохранение или арифметическая / логическая операция с использованием аккумулятора и / или памяти будет 16-битной операцией - для выборки / сохранения 16-битного значения требуется два цикла шины.

Если бит x в SR очищен, оба индексных регистра будут установлены в 16-битные. Если используется для индексации адреса, например, LDA SOMEWHERE,X16-битное значение в индексном регистре будет добавлено к базовому адресу, чтобы сформировать эффективный адрес.

Если в SR установлен бит m, аккумулятор вернется к 8-битному регистру, и последующие операции с аккумулятором, за некоторыми исключениями, будут 8-битными. B-аккумулятор сохранит значение, которое было, когда аккумулятор работал в 16-битном режиме. Исключением являются инструкции, которые передают регистр прямой страницы (DP) и указатель стека (SP) в / из аккумулятора. В собственном режиме эти операции всегда имеют ширину 16 бит, независимо от состояния бита m в регистре состояния.

Если установлен бит x в SR, не только индексные регистры вернутся к 8-битным, все, что было в MSB в 16-битном режиме, будет потеряно, что программист на языке ассемблера не может позволить себе забыть. [11]

Приложения

Системы на базе 65816 вариантов:

  • Желудевый коммуникатор
  • Apple IIGS
  • Super Nintendo Entertainment System : консоль «s Ricoh 5A22 CPU основан на 65C816
    • Кроме того, более 30 игр Super NES включают в себя сопроцессор Nintendo SA1 на базе 65C816 в каждом картридже.

Он также используется в усовершенствованиях C-One и SuperCPU для Commodore 64 .

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

  • Прерывания в процессорах 65xx

использованная литература

Цитаты

  1. ^ Хронология микропроцессоров (1980-1989)
  2. ^ a b Eyes & Lichty 1986 , стр. 42.
  3. ^ Eyes & Lichty 1986 , с. 44.
  4. ^ Eyes & Lichty 1986 , с. 45.
  5. ^ a b c Eyes & Lichty 1986 , стр. 46.
  6. ^ Eyes & Lichty 1986 , с. 50.
  7. ^ a b Eyes & Lichty 1986 , стр. 65.
  8. ^ Eyes & Lichty 1986 , с. 52.
  9. ^ Eyes & Lichty 1986 , с. 48.
  10. ^ Eyes & Lichty 1986 , с. 64.
  11. ^ Eyes & Lichty 1986 , с. 51.

Список используемой литературы

  • Глаза, Дэвид; Личти, Рон (1986). Программирование 65816, включая 6502, 65C02, 65802 . Прентис Холл. ISBN 978-0893037895.

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

  • 65C816 Лист данных ; Центр западного дизайна; 55 страниц; 2018.

внешние ссылки

  • Страница 65C816 - Western Design Center
  • 6502 / 65C02 / 65C816 Набор команд декодирован
  • 65816 / 65C816 Техническая документация - zophar.net
  • Статья Бретта Табке "Введение в 65816 - мир коммодоров" программиста 6502; включает сводку набора команд CMD
  • Исследование прерываний 65C816 - подробное обсуждение обработки прерываний на 65C816

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.

Источник « https://en.wikipedia.org/w/index.php?title=WDC_65C816&oldid=1032268201 »