W65C816S в пакете PDIP40 | |
Общая информация | |
---|---|
Запущен | 1983; 37 лет назад (1983) |
Обычный производитель (-ы) |
|
Производительность | |
Макс. CPU тактовая частота | от 1 МГц до 14 МГц |
Ширина данных |
|
Ширина адреса | 24 |
Архитектура и классификация | |
Набор команд | 6502 |
Инструкции | 92 |
Физические характеристики | |
Корпус (ы) | |
История | |
Предшественник |
|
W65C816S (также 65C816 или 65816 ) представляет собой 8/16-битный микропроцессор (MPU), разработанный и продаваемый Western Design Center (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 и его родственники больше не производятся.
В 1981 году Билл Менш, основатель и генеральный директор WDC, начал разработку 65C02 вместе со своими производственными партнерами, в первую очередь Rockwell Semiconductor и Synertek. Основная цель 65C02 заключалась в переходе от процесса NMOS оригинального 6502 к CMOS 65C02, что позволило бы ему работать на гораздо более низких уровнях мощности, где-то между ⁄ 10 и ⁄ 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 были преобразованы в полностью статическое ядро , что позволило полностью остановить тактовую частоту процессора без потери данных ни при каких обстоятельствах. регистров. Эта функция, наряду с использованием асинхронного статического ОЗУ, позволила создавать проекты, которые потребляли минимальную мощность в состоянии ожидания.
По состоянию на 2019 год W65C816S доступен от WDC в 40-контактном корпусе PDIP или PLCC44, а также в качестве ядра для ASIC интеграция (например, серия Winbond W55V9x TV Edutainment ИС ). WDC, являющаяся компанией по производству полупроводников, работает с различными литейными предприятиями для производства W65C816S, а также других совместимых продуктов. Дискретные процессоры можно приобрести у ряда дистрибьюторов электроники. Для разработчиков, которые хотят включить функциональность W65C816S в пользовательский ASIC, WDC предлагает код RTL (уровень передачи регистров ) в Verilog.
W65C802PФункции WDC 65816:
Регистры WDC 65816 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
65C816 имеет два режима работы, «режим эмуляции», в котором 16-битные операции невидимы - индексные регистры установлены на восемь битов - и чип выглядит очень похожим на 65C02, с теми же временами цикла для кодов операций и «собственным режимом», который предоставляет все новые функции.Процессор автоматически возвращается в режим эмуляции при включении или сбросе, что позволяет ему заменить 65C02, предполагая, что он вносит необходимые изменения схемы, чтобы приспособиться к другому расположению выводов.
Наиболее очевидным изменением 65C816 при работе в 16-битном режиме является расширение различных регистров с 8-битных до 16-битных значений. Это влияет на аккумулятор (A), X и Y индексные регистры и указатель стека (SP). Это не влияет на программный счетчик (PC), который всегда был 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-битном режиме операции с регистрами влияют на все 16 бит. Доступ к памяти с регистром, установленным на 16 бит, будет обращаться к двум смежным байтам памяти за счет одного дополнительного тактового цикла. В частности, команда чтения-изменения-записи, такая как ROR
, при использовании, когда аккумулятор установлен на 16 бит, будет влиять на два смежных байта памяти, а не на один. Точно так же все арифметические и логические операции будут 16-разрядными.
Другим важным изменением системы при работе в основном режиме является расширение модели памяти до 24-битный формат из исходного 16-битного формата 6502. Он обрабатывается с использованием двух 8-битных регистров смещения, регистра банка данных (DB) и регистра банка программ (PB). Адреса в коде остаются в исходном 16-битном формате, но значения в DB и PB добавляются для формирования 24-битного адреса в основной памяти. Это означает, что инструкции могут обращаться к данным в банке размером 64 КБ, и если необходимо получить доступ к данным за пределами этого банка, необходимо изменить DB или использовать «длинную» адресацию (то есть указание 24-битного адреса в качестве операнда для Инструкция).
PB определяет, из какого банка размером 64 КБ процессор будет извлекать инструкции - нет программных средств, с помощью которых можно было бы напрямую изменить PB. Переходы и 16-битные переходы или вызовы 16-битных подпрограмм обычно ограничиваются банком в PB (JMP (
всегда выбирает целевой адрес из банка $ 00). Возможен 24-битный «длинный» переход или вызов подпрограммы, который преодолевает нормальный предел размера программы в 64 КБ.
Еще одним дополнением к набору регистров является 16-битный регистр прямой страницы (DP), который устанавливает базовый адрес для того, что раньше называлось нулевой страницей, но теперь называется прямой страницей. При прямой адресации страниц используется 8-битный адрес, что обеспечивает более быстрый доступ, чем при использовании 16- или 24-битного адреса. Кроме того, некоторые режимы адресации, которые предлагают косвенную адресацию, возможны только на прямой странице. В 65 (C) 02 прямой страницей всегда являются первые 256 байтов памяти, то есть «нулевая страница». В собственном режиме 65C816 может перемещать прямую (нулевую) страницу в любое место первых 64 КБ памяти, записывая начальный адрес в 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, X
, 16-битное значение в индексном регистре будет добавлено к базовому адресу для формирования эффективного адреса.
Если бит m в SR установлен, аккумулятор вернется к 8-битному регистру, и последующие операции с аккумулятором, за некоторыми исключениями, будут 8-битными. B-аккумулятор сохранит значение, которое было, когда аккумулятор работал в 16-битном режиме. Исключением являются инструкции, которые передают регистр прямой страницы (DP) и указатель стека (SP) в / из аккумулятора. Эти операции всегда имеют ширину 16 бит в собственном режиме, независимо от состояния бита m в регистре состояния.
Если бит x в SR установлен, не только индексные регистры вернутся к 8-битным, все, что было в MSB в 16-битном режиме, будет потеряно, что программист на языке ассемблера не может себе позволить. забыть.
Системы на основе 65816 вариантов:
Он также используется в усовершенствованиях C-One и SuperCPU для Commodore 64.
Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.