WDC 65C816 - WDC 65C816

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

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

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

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

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

История

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

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

Разработка W65C816S началась в 1982 году после того, как Mensch проконсультировался с Компьютер 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, Саньо и другие с середины до конца 1980-х - начала 1990-х годов.

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

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

W65C802P

Функции

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

Регистры WDC 65816
23222120191817161514131211109876543210(битовая позиция)
Основные регистры
BААккумуляторы
Индексные регистры
ИксИкс индекс
YY индекс
00000000DPDпрямой прегистр возраста
00000000SPSзакрепка пласточка
БД0000000000000000DАта Bрегистр анк
Счетчик команд
PBПКппрограмма Cвстречный
Регистр статуса
NVмИксDяZCSтатус рнапарник
  • Полностью статическая конструкция CMOS для низкого энергопотребления (300µА в 1МГц ) и повышенная помехозащищенность.
  • Широкий рабочий Напряжение диапазон: от 1,8 В до 5,0 В ± 5%.
  • Широкий рабочая частота диапазон до 14 МГц, используя однофазный источник тактовой частоты.
  • Эмуляция режим обеспечивает программную совместимость с 6502/6510, за исключением недокументированных коды операций (которые в 65C02 действуют как NOP).
  • 24-битная адресация памяти обеспечивает доступ к 16 МБ пространство памяти.
  • 16 бит ALU, аккумулятор (А), указатель стека (SP), и индексные регистры (X и Y).
  • 16-битный регистр прямой страницы (D).
  • Регистры 8-битного банка данных (DB) и банка программ (PB), генерирующие биты 16-23 24-битных данных и кодовых адресов.
  • Выходы действительного адреса данных (VDA) и действительного адреса программы (VPA) для двойного тайник и цикл кражи DMA выполнение.
  • Выход Vector Pull (VPB), чтобы указать, когда вектор прерывания адресуется.
  • Ввод прерывания (ABORTB) и связанный вектор поддерживает исправление процессором состояний ошибки шины, таких как ошибки страницы и нарушения доступа к памяти.
  • Отдельные регистры программы и банка данных позволяют программировать сегментация или 16 МБ линейной адресации (только данные).
  • Прямая регистровая и относительная адресация стека обеспечивает возможность повторно въезжающий, рекурсивный и перемещаемый программирование.
  • 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-битный режим с помощью нового СЕН (SEt бит в статусе процессора) и REP Инструкции (REset) означают, что все последующие инструкции, обращающиеся к этим регистрам, будут читать или записывать только один байт вместо двух. Например, если бит m установлен в 1, когда LDA $ 1234 При выполнении инструкции будет прочитан только один байт по адресу $ 1234, что уменьшит количество циклов, необходимых для выполнения инструкции.[6] Это особенно полезно, например, при работе с 8-битными символьными данными.[7]

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

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

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

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

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

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

Текущий режим работы сохраняется в бите эмуляции (E). После того как новые биты x и m уже добавлены к предыдущему набору из шести флагов в регистре состояния (SR), осталось недостаточно битов для хранения бита нового режима. Вместо этого было использовано уникальное решение, в котором бит режима был оставлен «невидимым», и к нему нельзя было получить прямой доступ. Новый XCE Команда (eXchange Carry with Emulation) меняет значение бита эмуляции на бит C (arry), бит 0 в регистре состояния. Например, если кто-то хочет войти в собственный режим после запуска процессора, можно использовать CLC , чтобы снять переноску, а затем 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 ГДЕ-ТО, X, 16-битное значение в индексном регистре будет добавлено к базовому адресу, чтобы сформировать эффективный адрес.

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

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

Приложения

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

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

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

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

Цитаты

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

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

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

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

Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.