stringtranslate.com

МДЦ 65C816

W65C816S (также 65C816 или 65816 ) — 16-разрядный микропроцессор ( MPU ), разработанный и продаваемый Western Design Center (WDC). Представленный в 1983 году [4] , W65C816S является улучшенной версией 8-разрядного MPU WDC 65C02 , который сам по себе является CMOS- улучшением почтенного MPU MOS Technology 6502 NMOS . 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 несовместим по выводам ни с одним другим микропроцессором семейства 6502.

W65C802 или 65802 полностью программно совместим с 65C816, но электрически совместим с 6502 и 65C02. Таким образом, 65C802 может использоваться в качестве замены в большинстве систем , оснащенных 6502 или 65C02. Однако 65C802 не может выдавать 24-битный адрес, что ограничивает его адресное пространство 64 КБ. 65C802 больше не производится.

История

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

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

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

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

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

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

По состоянию на апрель 2024 года W65C816S доступен от WDC в 40-контактном корпусе PDIP , PLCC44 или 44-контактном корпусе TQFP , как микроконтроллер через W65C265 [9] и как IP-ядра для интеграции ASIC [10] [11] (например, серия ИС для развлекательно-образовательных ТВ-приложений Winbond W55V9x [12] ).

W65C802P

Функции

Характеристики WDC 65c816:

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

Два режима

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 change C arry with Emulation ) обменивает значение бита эмуляции с битом переноса ( c), битом 0 в SR. Например, если требуется войти в собственный режим после запуска процессора, можно использовать CLCдля очистки бита переноса, а затем XCEзаписать его в бит эмуляции. [19] Возвращаясь к режиму эмуляции 65c02, используются , SECза которыми следует XCE. [20]

Внутри 65c816 представляет собой полностью 16-битную конструкцию. Биты mи определяют, как регистры пользователя (аккумулятор и индекс) отображаются в остальной части системы. После сброса 65c816 запускается в режиме эмуляции 6502, в котором и заблокированы на . Следовательно, регистры заблокированы на восьмибитном размере. Самый старший байт (MSB) аккумулятора (-аккумулятора ) недоступен напрямую, но может быть заменен на самый младший байт (LSB) аккумулятора ( -аккумулятора) с помощью инструкции. Соответствующей операции для индексных регистров ( и ), чьи MSB заблокированы на , нет .xSRmx1BAXBAXY$00

При переключении в собственный режим старший бит Xи Yбудет равен нулю, а B-аккумулятор останется неизменным. Если mбит in SRочищен, B-аккумулятор будет "связан" с A-аккумулятором, чтобы сформировать 16-битный регистр (называемый C-аккумулятором). Операция загрузки/сохранения или арифметическая/логическая операция с участием аккумулятора или памяти будет 16-битной операцией — для извлечения/сохранения 16-битного значения требуется два цикла шины.

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

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

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

Приложения

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

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

Ссылки

Цитаты

  1. ^ Mensch, William D. "A Report on the 65c832". Архивировано из оригинала 7 апреля 2024 г. Получено 7 апреля 2024 г.
  2. ^ "W65C832 Information, Specification, and Data Sheet (March 1990)" (PDF) . ReActive Micro . 6 сентября 2010 г. [март 1990 г.]. Архивировано (PDF) из оригинала 7 апреля 2024 г. . Получено 7 апреля 2024 г. .
  3. ^ "W65C832 Information, Specification, and Data Sheet" (PDF) . 6502.org . Архивировано из оригинала (PDF) 30 июня 2023 г. . Получено 7 апреля 2024 г. .
  4. ^ Хронология микропроцессоров (1980–1989)
  5. ^ ab Eyes & Lichty 1986, стр. 42.
  6. Айс и Лихти 1986, стр. 44.
  7. Айс и Лихти 1986, стр. 45.
  8. ^ Application Specific Logic Products Data Book 1988. VLSI Technology Inc. 1988. стр. 257–279 . Получено 18 марта 2024 г.
  9. ^ "W65C265S 16-битный микроконтроллер". The Western Design Center, Inc. 5 января 2021 г. Архивировано из оригинала 2 апреля 2024 г. Получено 7 апреля 2024 г.
  10. ^ "W65C816 8/16-битный микропроцессор". The Western Design Center, Inc. 5 января 2021 г. Архивировано из оригинала 15 ноября 2023 г. Получено 7 апреля 2024 г.
  11. ^ "W65C265S 8/16-битный микроконтроллер". The Western Design Center, Inc. 5 января 2021 г. Архивировано из оригинала 7 апреля 2024 г. Получено 7 апреля 2024 г.
  12. ^ "W55V92 TV-toy Controller Data Sheet" (PDF) . Arrow Electronics . 2 мая 2006 . Получено 12 июня 2024 .
  13. ^ ab Eyes & Lichty 1986, стр. 46.
  14. Айс и Лихти 1986, стр. 52.
  15. Айс и Лихти 1986, стр. 53.
  16. Айс и Лихти 1986, стр. 54.
  17. Айс и Лихти 1986, стр. 55.
  18. Айс и Лихти 1986, стр. 80.
  19. Айс и Лихти 1986, стр. 64.
  20. Айс и Лихти 1986, стр. 65.
  21. Айс и Лихти 1986, стр. 51.
  22. ^ "16-битный процессор – новые ретро-компьютеры". Foenix Retro Systems .
  23. ^ "F256K". Foenix Retro Systems .

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

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

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