WDC 65C816 - WDC 65C816

WDC 65C816
W65C816S8PG-14 lg.jpg
W65C816S в корпусе PDIP40
Общая информация
Запущен 1983 ; 38 лет назад ( 1983 )
Общий производитель (и)
Представление
Максимум. Тактовая частота процессора От 1 МГц до 14 МГц
Ширина данных
Ширина адреса 24
Архитектура и классификация
Набор инструкций 6502
инструкции 92
Физические характеристики
Пакет (ы)
История
Предшественник

W65C816S (также 65C816 или 65816 ) является 8/16-разрядный микропроцессор (MPU) , разработанный и продаваемый Design Center Western (WDC). Представленный в 1983 году, 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 при работе на тех же тактовых частотах. В дизайн также был включен ряд новых кодов операций и исправлений ошибок.

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

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

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

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

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

W65C802P

Функции

Регистры WDC 65816
2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (битовая позиция)
Основные регистры
B А Аккумуляторы
Индексные регистры
Икс Индекс X
Y Индекс Y
0 0 0 0 0 0 0 0 DP D Прям ая Р возрастной регистр
0 0 0 0 0 0 0 0 SP S липкости Р ointer
БД 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Д ата B ANK регистр
Счетчик команд
PB ПК Р rogram С ounter
Регистр статуса
N V м Икс D я Z C S tatus R egister

Особенности 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, предполагая, что он вносит необходимые изменения в схему, чтобы приспособиться к другому расположению выводов.

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

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

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

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

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

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

Другим важным изменением системы при работе в собственном режиме является то, что модель памяти расширена до 24-битного формата из исходного 16-битного формата 6502. 65C816 генерирует 24-битные адреса и использует два регистра, регистр банка данных ( DB) и регистр банка программ ( PB) для установки битов 16–23 действующего адреса. В обоих случаях «банк» относится к непрерывному сегменту памяти размером 64 КБ, который ограничен диапазоном адресов $bb0000-$bbFFFF, где bb- адрес банка, то есть биты 16–23 действующего адреса. Оба DBи PBинициализируются $00при включении или сбросе.

Во время цикла выборки кода операции или операндаPB добавляется к счетчику программы ( PC), чтобы сформировать 24-битный эффективный адрес. Если PC"обернуть" (вернуться к нулю), PBне будет увеличиваться. Следовательно, программа ограничена пределами банка, в котором она выполняется. Эта модель памяти подразумевает, что цели ветвления и подпрограммы должны находиться в том же банке, что и инструкция, выполняющая переход или вызов, если только «длинные» переходы или вызовы подпрограмм не используются для выполнения кода в другом банке. Нет программных средств, с помощью которых PBможно было бы напрямую изменить.

Во время цикла выборки или сохранения данных DBк 16-битному адресу данных добавляется 24-битный эффективный адрес, по которому будет осуществляться доступ к данным. Эта характеристика процессора позволяет разумно выполнять код 6502 или 65C02, который использует 16-битные адреса для ссылки на элементы данных. В отличие от этого PB, DBможно изменить под управлением программы, что-то, что может быть сделано для доступа к данным за пределами 16-разрядной адресации. Кроме того, DBбудет временно увеличиваться, если адрес проиндексирован за пределами банка, в котором он находится DB. DBигнорируется, если 24-битный адрес указан в качестве операнда для инструкции выборки / сохранения данных, или если эффективный адрес находится на прямой (нулевой) странице или в аппаратном стеке . В последнем случае подразумеваемый банк $ 00 используется для генерации действующего адреса.

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

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

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

Внутренне 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-битном режиме, будет потеряно, что программист на языке ассемблера не может позволить себе забыть.

Приложения

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

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

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

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

Цитаты

Библиография

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

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

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

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