МДЦ 65C816
Общая информация | |
---|---|
Запущен | 1985 год |
Общий производитель |
|
Производительность | |
Макс. процессора Тактовая частота | от 1 МГц до 14 МГц |
Ширина данных |
|
Ширина адреса | 24 бита |
Архитектура и классификация | |
Набор инструкций | 6502 |
Количество инструкций | 92 |
Физические характеристики | |
Пакеты |
|
Продукты, модели, варианты | |
Вариант |
|
История | |
Предшественники |
|
Преемник | МДЦ 65C832 [1] [2] [3] (никогда не выпускался) |
W65C816S ) — (также 65C816 или 65816 это 16-битный микропроцессор (MPU), разработанный и продаваемый Western Design Center (WDC). Представленный в 1983 году, [4] W65C816S — это усовершенствованная версия MPU WDC 65C02 8-битного , который сам по себе является усовершенствованием 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.
W65C802 полностью совместим по или 65802 программному обеспечению с 65C816, но электрически совместим с 6502 и 65C02. Следовательно, 65C802 можно использовать в качестве замены в большинстве систем, оснащенных 6502 или 65C02. Однако 65C802 не может выдавать 24-битный адрес, что ограничивает его адресное пространство размером 64 КБ. 65C802 больше не производится.
История
[ редактировать ]В 1981 году Билл Менш , основатель и генеральный директор WDC, начал разработку 65C02 вместе со своими партнерами по производству, в первую очередь Rockwell Semiconductor и Synertek . Основной целью разработки 65C02 был переход от оригинального процесса NMOS 6502 к процессу CMOS, который позволил бы ему работать на гораздо более низких уровнях мощности, где-то между 1 ⁄ 10 и 1 ⁄ 20 на любой заданной тактовой частоте. Также желательной была возможность повысить максимальную поддерживаемую тактовую частоту. В конструкции 65C02 устранены ошибки микросхемы, присутствующие в NMOS 6502 (например, печально известная JMP (<addr>)
ошибка) и представил новые инструкции и новые режимы адресации для некоторых существующих инструкций. [5]
Разработка W65C816S началась в 1982 году после того, как Менш проконсультировался с Apple Computer по поводу новой версии Apple II серии персональных компьютеров , которая, помимо прочего, имела бы улучшенную графику и звук. Apple хотела MPU, который был бы программно совместим с 6502, который тогда использовался в Apple II, но с возможностью адресации большего объема памяти, а также загрузки и хранения 16-битных слов. Результатом стал 65C816, законченный в марте 1984 года, образцы которого были предоставлены Apple и Atari во второй половине года, а полный выпуск состоялся в 1985 году. [6] В процессе проектирования Меншу помогала его сестра Кэтрин, которая отвечала за часть компоновки устройства.
Тот же процесс привел к созданию 65C802, который внутри был идентичен 65C816. Оба выпускались на одних и тех же производственных линиях и расходились только на последних этапах металлизации, когда чип подключался к внешним выводам. В 65C802 эти контакты имели ту же схему, что и в исходном 6502, что позволяло использовать его в качестве замены, сохраняя при этом возможность использования 16-битной обработки ЦП. Однако, поскольку он использовал исходную распиновку, он имел только 16 адресных контактов и, следовательно, мог получить доступ только к 64 КБ внешней памяти. [7] Обычно, когда производители оборудования разрабатывали проект с нуля, они использовали 65С816, а не 65С802, в результате чего последний снимался с производства.
Впоследствии Apple интегрировала 65C816 в компьютер Apple IIGS . Базовая конструкция 65C816 была разработана компанией VLSI Technology . [8] GTE , Sanyo и другие с середины-конца 1980-х до начала 1990-х годов.
В 1990-х годах и 65C816, и 65C02 были преобразованы в полностью статическое ядро , что позволило полностью остановить тактовую частоту Ø2 процессора без потери содержимого регистров. Эта особенность, наряду с использованием асинхронной статической оперативной памяти , позволила создавать конструкции, потребляющие минимальное энергопотребление в режиме ожидания.
По состоянию на апрель 2024 г. [update]W65C816S доступен от WDC в 40-контактном корпусе PDIP , PLCC44 или 44-контактном TQFP , а также в качестве MCU через W65C265, [9] и в качестве IP-ядер для ASIC интеграции [10] [11] (например, Winbond W55V9x. серия телевизионных образовательно-развлекательных микросхем [12] ).
Функции
[ редактировать ]
|
Особенности WDC 65c816:
- Полностью статическая конструкция КМОП обеспечивает низкое энергопотребление (300 мкА МГц 1 на частоте ) и повышенную помехоустойчивость.
- Широкий диапазон рабочего напряжения : от 1,8 В до 5,0 В ± 5%.
- Широкий диапазон рабочих частот , официально максимум 14 МГц при напряжении 5 В (20 МГц в SuperCPU ), с использованием однофазного источника тактовой частоты.
- Режим эмуляции обеспечивает существенную совместимость программного обеспечения с NMOS 6502 и CMOS 65C02, за исключением недокументированных кодов операций . Все 256 кодов операций в 65C816 работоспособны в обоих режимах работы.
- 24-битная адресация памяти обеспечивает доступ к 16 МБ памяти .
- 16-битное АЛУ , аккумулятор (
C
), указатель стека (SP
) и индексные регистры (X
иY
). - 16-битный регистр прямой страницы (также известный как нулевая страница) (
DP
). - 8-битный банк данных (
DB
) и банк программ (PB
) регистры, генерирующие биты 16–23 24-битного кода и адреса данных. Отдельные регистры банка данных и программ позволяют сегментировать программы и линейную адресацию данных размером 16 МБ. - Действительный адрес данных (
VDA
) и действительный адрес программы (VPA
) управляющие выходы для квалификации памяти, реализации двойного кэша и DMA с перехватом цикла . - Векторное притяжение (
VPB
) управляющий выход, чтобы указать, когда выборка вектора прерывания . выполняется - Прервать (
ABORTB
) входной и связанный вектор поддерживают исправление процессором ошибок шины, таких как ошибки страниц и нарушения доступа к памяти. - Прямая регистрация страниц и относительная адресация стека обеспечивают возможность реентерабельного , рекурсивного и перемещаемого программирования.
- 24 режима адресации — 13 исходных режимов 6502 с 92 инструкциями , использующими 256 кодов операций , включая большинство новых кодов операций, реализованных в 65C02.
- Инструкции по блокированию копирования (
MVN
иMVP
), позволяющий быстро копировать структуры данных из одной области оперативной памяти в другую с минимальным использованием кода. - Ожидание прерывания (
WAI
) и «Остановка часов» (STP
) инструкции дополнительно снижают энергопотребление , уменьшают задержку прерываний и обеспечивают синхронизацию с внешними событиями. - Сопроцессор (
COP
) инструкция со связанным вектором поддерживает конфигурации сопроцессора, например, процессоры с плавающей запятой . - Зарезервированный «побег» (
WDM
) инструкция для будущих двухбайтовых кодов операций и ссылка на будущие конструкции (WDM — это инициалы дизайнера W65C816S Уильяма Д. Менша ).
Сравнение с более ранними моделями
[ редактировать ]Два режима
[ редактировать ]65C816 имеет два режима работы: «режим эмуляции», в котором 16-битные операции невидимы — индексные регистры принудительно переводятся в восемь бит — и микросхема очень похожа на 6502, с теми же временами цикла для коды операций; и «собственный режим», в котором открываются все новые функции. ЦП автоматически переходит в режим эмуляции при включении питания или перезагрузке, что позволяет ему заменить 65(C)02 при условии внесения необходимых изменений в схему для соответствия другому расположению контактов. [5]
16-битные регистры
[ редактировать ]Наиболее очевидным изменением 65C816 при работе в собственном режиме является увеличение размеров различных регистров с 8 до 16 бит. Это улучшение влияет на аккумулятор ( A
), X
и Y
индексные регистры и указатель стека ( SP
). это не влияет На счетчик программ ( PC
), который всегда был 16-битным. [13]
При работе в основном режиме два бита в регистре состояния меняют свое значение. В оригинальном 6502 биты 4 и 5 не использовались, хотя бит 4 называется разрывом ( b
) флаг. В основном режиме бит 4 становится x
флаг и бит 5 становятся m
флаг. Эти биты управляют тем, будут ли индексные регистры ( x
) и аккумулятор/память ( m
) имеют размер 8 или 16 бит. Нули в этих битах задают 16-битные размеры, единицы — 8-битные. Эти биты фиксируются на единицах, когда процессор включается или сбрасывается, но становятся изменяемыми, когда процессор переключается в собственный режим. [13]
В собственном режиме размер аккумулятора и индексных регистров может быть установлен на 16 или 8 бит по усмотрению программиста с помощью REP
и SEP
инструкции по манипулированию m
и x
биты регистра состояния. Эта функция дает программисту возможность выполнять операции с данными размером как в слова, так и в байты. Поскольку размеры аккумулятора и индексного регистра устанавливаются независимо, можно, например, установить аккумулятор на восемь бит, а индексные регистры на 16 бит, что дает программисту возможность манипулировать отдельными байтами в диапазоне 64 КБ без необходимости выполнять арифметику указателей.
Когда размеры регистров установлены на 16 бит, доступ к памяти будет извлекать или сохранять два смежных байта со скоростью один байт за такт. Следовательно, инструкция чтения-изменения-записи, такая как ROR <addr>
, при использовании, когда аккумулятор установлен на 16 бит, повлияет на два смежных байта памяти, а не на один, и будет потреблять больше тактовых циклов, чем когда аккумулятор установлен на восемь бит. Аналогично, все арифметические и логические операции будут 16-битными. [14]
24-битная адресация
[ редактировать ]Другое важное изменение в системе при работе в собственном режиме заключается в том, что модель памяти расширена до 24-битного формата по сравнению с исходным 16-битным форматом 6502. 65c816 использует два 8-битных регистра, банк данных. зарегистрироваться ( DB
) и реестр банка программ ( PB
), чтобы установить биты 16–23 адреса, эффективно генерируя 24-битные адреса. В обоих случаях «банк» относится к непрерывному сегменту памяти размером 64 КБ, ограниченному диапазоном адресов. $xx0000-$xxFFFF
, где xx
— адрес банка, то есть биты 16–23 эффективного адреса. Оба DB
и PB
инициализируются как $00
при включении или сбросе. [15]
Во время кода операции или операнда цикла выборки PB
добавляется к счетчику программ ( PC
) для формирования 24-битного эффективного адреса. Должен PC
«завернуть» (возврат к нулю), PB
не будет увеличиваться. Следовательно, программа ограничена пределами банка, в котором она выполняется. В этой модели памяти подразумевается, что цели ветвей и подпрограмм должны находиться в том же банке, что и инструкция, выполняющая ветку или вызов, если только «длинные» переходы или вызовы подпрограмм не используются для выполнения кода в другом банке. Не существует программных средств, с помощью которых PB
можно изменить напрямую. [16]
Во время цикла выборки или сохранения данных DB
добавляется к 16-битному адресу данных, чтобы сформировать 24-битный эффективный адрес, по которому будет осуществляться доступ к данным. Эта характеристика процессора позволяет разумно выполнять код 6502 или 65c02, который использует 16-битные адреса для ссылки на элементы данных. В отличие от PB
, DB
может быть изменен под управлением программы, что может быть сделано для доступа к данным за пределами 16-битной адресации. Также, DB
будет временно увеличиваться, если адрес индексируется за пределами банка, который в данный момент находится в DB
. DB
игнорируется, если в качестве операнда инструкции выборки/сохранения данных указан 24-битный адрес или если эффективный адрес находится на прямой (нулевой) странице или в аппаратном стеке . В последнем случае подразумеваемый банк $00
используется для генерации эффективного адреса. [17]
Еще одним дополнением к набору регистров является 16-битный регистр прямой страницы ( DP
), который устанавливает базовый адрес для того, что раньше называлось нулевой страницей , но теперь называется прямой страницей . При прямой адресации страниц используется 8-битный адрес, что обеспечивает более быстрый доступ, чем при использовании 16- или 24-битного адреса. Кроме того, некоторые режимы адресации, предлагающие косвенную адресацию, возможны только на прямой странице. В 65(c)02 прямой страницей всегда являются первые 256 байт памяти, отсюда и «нулевая страница». В собственном режиме 65c816 может перемещать прямую (нулевую) страницу в любое место банка. $00
(первые 64 КБ памяти), записывая 16-битный начальный адрес в DP
. Существует штраф за доступ в один цикл, если DP
не установлена на точную границу страницы, то есть, если значение в DP
не $xx00
, где xx
это самый старший байт. [18]
Переключение между режимами
[ редактировать ]Текущий режим работы сохраняется в эмуляции ( e
) кусочек. Уже добавил новый x
и m
бит к предыдущему набору из шести флагов в регистре состояния ( SR
), осталось недостаточно битов для хранения бита нового режима. Вместо этого было использовано уникальное решение, в котором бит режима остался «невидимым», и к нему невозможно было получить прямой доступ. XCE
(e X изменить C arry с эмуляцией ) меняет значение бита эмуляции на перенос ( c
) бит, бит 0 в SR
. Например, если кто-то хочет войти в собственный режим после запуска процессора, можно использовать CLC
чтобы очистить бит переноса, а затем XCE
чтобы записать его в бит эмуляции. [19] При возврате в режим эмуляции 65c02 используется SEC
с последующим XCE
. [20]
Внутренне 65c816 представляет собой полностью 16-битную конструкцию. m
и x
биты в SR
определить, как пользовательские регистры (аккумулятор и индекс) будут выглядеть в остальной части системы. После сброса 65c816 запускается в режиме эмуляции 6502, в котором m
и x
привязаны к 1
. Следовательно, регистры привязаны к восьмибитному размеру. Самый старший байт (MSB) аккумулятора ( B
-аккумулятор) недоступен напрямую, но его можно заменить младшим значащим байтом (LSB) аккумулятора ( A
-аккумулятор) с помощью XBA
инструкция. Для индексных регистров нет соответствующей операции ( X
и Y
), чьи старшие разряды заблокированы по адресу $00
.
При переключении в собственный режим старший бит X
и Y
будет равно нулю, а B
-аккумулятор не изменится. Если m
немного в SR
очищается, B
-аккумулятор будет «привязан» к A
-аккумулятор для формирования 16-битного регистра (называемого C
-аккумулятор). Операция загрузки/сохранения или арифметическая/логическая операция с использованием аккумулятора или памяти будет 16-битной операцией — для выборки/сохранения 16-битного значения требуется два цикла шины.
Если x
немного в SR
очищен, оба индексных регистра будут установлены на 16 бит. Если используется для индексации адреса, например, LDA SOMEWHERE,X
16-битное значение индексного регистра будет добавлено к базовому адресу для формирования эффективного адреса.
Если m
немного в SR
установлен, аккумулятор снова станет 8-битным регистром, и последующие операции с аккумулятором, за некоторыми исключениями, будут 8-битными операциями. B
-аккумулятор сохранит значение, которое оно имело, когда аккумулятор был установлен на 16 бит. Исключение составляют инструкции, передающие регистр прямой страницы ( DP
) и указатель стека ( SP
) к/от аккумулятора. Эти операции всегда имеют ширину 16 бит в собственном режиме, независимо от состояния m
немного в SR
.
Если x
немного в SR
установлен, индексные регистры не только вернутся к 8-битному размеру, но и все, что находилось в старшем бите, пока их ширина составляла 16 бит, будет потеряно, о чем программист на языке ассемблера не может себе позволить забыть. [21]
Приложения
[ редактировать ]Системы на базе вариантов 65c816:
- Желудь-коммуникатор
- Apple IIGS
- C-One и SuperCPU Улучшения для Commodore 64
- Развлекательная система Super Nintendo : консоли процессор Ricoh 5A22 основан на процессоре 65c816.
- Кроме того, более 30 игр Super NES включают в себя Nintendo SA1 , сопроцессор на базе 65c816, в каждом картридже.
- Модель Foenix Retro Systems C256 U/U+ [22] и модель F256K [23]
См. также
[ редактировать ]Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Менш, Уильям Д. «Отчет о 65c832» . Архивировано из оригинала 7 апреля 2024 года . Проверено 7 апреля 2024 г.
- ^ «Информация, характеристики и паспорт W65C832 (март 1990 г.)» (PDF) . РеАктив Микро . 6 сентября 2010 г. [март 1990 г.]. Архивировано (PDF) из оригинала 7 апреля 2024 г. Проверено 7 апреля 2024 г.
- ^ «Информация, характеристики и паспорт W65C832» (PDF) . 6502.org . Архивировано из оригинала (PDF) 30 июня 2023 года . Проверено 7 апреля 2024 г.
- ^ Хронология микропроцессоров (1980–1989)
- ^ Перейти обратно: а б Глаза и Лихти 1986 , с. 42.
- ^ Eyes & Lichty 1986 , с. 44.
- ^ Eyes & Lichty 1986 , с. 45.
- ^ Справочник по логическим продуктам для конкретных приложений, 1988 г. . VLSI Technology Inc., 1988. стр. 257–279 . Проверено 18 марта 2024 г.
- ^ «16-битный микроконтроллер W65C265S» . Западный центр дизайна, Inc. 5 января 2021 г. Архивировано из оригинала 2 апреля 2024 г. Проверено 7 апреля 2024 г.
- ^ «W65C816 8/16-битный микропроцессор» . Западный центр дизайна, Inc. 5 января 2021 г. Архивировано из оригинала 15 ноября 2023 г. Проверено 7 апреля 2024 г.
- ^ «W65C265S 8/16-битный микроконтроллер» . Западный центр дизайна, Inc. 5 января 2021 г. Архивировано из оригинала 7 апреля 2024 г. Проверено 7 апреля 2024 г.
- ^ «Технические данные контроллера игрушки для телевизора W55V92» (PDF) . Стрелковая электроника . 2 мая 2006 года . Проверено 12 июня 2024 г.
- ^ Перейти обратно: а б Глаза и Лихти 1986 , с. 46.
- ^ Eyes & Lichty 1986 , с. 52.
- ^ Eyes & Lichty 1986 , с. 53.
- ^ Eyes & Lichty 1986 , с. 54.
- ^ Eyes & Lichty 1986 , с. 55.
- ^ Eyes & Lichty 1986 , с. 80.
- ^ Eyes & Lichty 1986 , с. 64.
- ^ Eyes & Lichty 1986 , с. 65.
- ^ Eyes & Lichty 1986 , с. 51.
- ^ «16-битный процессор — новые ретро-компьютеры» . Феникс Ретро Системы .
- ^ «Ф256К» . Феникс Ретро Системы .
Библиография
[ редактировать ]- Глаза, Дэвид; Личти, Рон (1986). Программирование 65816 – включая 6502, 65C02, 65802 . Прентис Холл. ISBN 978-0893037895 .
Дальнейшее чтение
[ редактировать ]- 65C816 Технический паспорт ; Центр западного дизайна; 55 страниц; 2018.
- Глаза, Дэвид и Рон Личти; Программирование 65816: включая 6502, 65C02 и 65802 ; Брейди Паблишинг; 636 стр; 2015 год
- Фишер, Майкл; 65816/65802 программирование на языке ассемблера ; Осборн/МакГроу-Хилл; 686 стр; 1986 год
Внешние ссылки
[ редактировать ]- Веб-страница 65C816 - Центр западного дизайна
- 6502/65C02/65C816 Раскодированный набор команд
- 65816/65C816 Техническая документация - zofar.net
- Введение программиста 6502 в 65816 - в Commodore World статья Бретта Табке ; включает CMD сводку набора команд
- Исследование прерываний 65C816 - подробное обсуждение обработки прерываний на 65C816.