WDC 65C816

WDC 65C816
PDIP40パッケージ
一般情報
発売1985年、40年前 (1985)
共通メーカー
パフォーマンス
最大CPU クロックレート1MHz~14MHz
データ幅
  • 8(外部)
  • 16(内部)
アドレス幅24ビット
アーキテクチャと分類
命令セット6502
命令数92
物理的仕様
パッケージ
  • 40ピンDIP
  • 44ピンPLCC、その他
製品、モデル、バリエーション
バリエーション
    • W65C802(W65C02とピン互換)
    • W65C265 (MCU)
歴史
前身
後継機種WDC 65C832 [1] [2] [3] (未発売)

W65C816S 65C816または65816とも呼ばれる)はWestern Design Center (WDC)が開発・販売した16ビットマイクロプロセッサ(MPU)です。1985年に発売されたW65C816Sは、WDC 65C02 8ビットMPUの強化版であり、WDC 65C02自体は、MOS Technology 6502 NMOS MPUのCMOS強化版です。65C816は、 Apple IIGSのCPUであり、改造版はスーパーファミコンにも搭載されています。

部品番号の65」は65C02互換モードに由来し、「 816」はMPUが8ビットと16ビットの レジスタサイズを選択できることを意味します。16ビットレジスタのサポートに加え、W65C816Sはメモリアドレッシングを24ビットに拡張し、最大16MBのランダムアクセスメモリをサポートしますまた強化された命令セットと16ビットスタックポインタに加え、システムハードウェア管理を向上させるための新しい電気信号をいくつか備えています。

リセット、W65C816Sは「エミュレーションモード」で起動します。つまり、実質的に65C02として動作します。その後、W65C816Sは2つの命令シーケンスで「ネイティブモード」に切り替えることができ、すべての拡張機能が有効になります。同時に、ほとんどの65C02ソフトウェアとの下位互換性も維持されます。ただし、 NMOS版の先祖とピン互換の代替品であるPDIP40版の65C02とは異なり、PDIP40版のW65C816Sは他の6502ファミリMPUとはピン互換ではありません。

W65C802または65802、65C816と完全なソフトウェア互換性を備えており、6502および65C02とも電気的互換性があります。そのため、W65C802は、6502または65C02を搭載したほとんどのシステムで代替品として使用できます。W65C802はピン数が限られており、マルチプレクサも使用していないため、24ビットアドレスを出力できず、アドレス空間は64KBに制限されます。W65C802は現在生産されていません。

歴史

W65C816SマイクロプロセッサのPLCC-44バージョン。シングルボードコンピュータに搭載されている様子

1981年、WDCの創設者兼CEOであるビル・メンシュは、主にロックウェル・セミコンダクターシネルテックを製造パートナーとして、65C02の開発に着手しました。65C02の主な目標は、オリジナルの6502のNMOSプロセスからCMOSプロセスへの移行でした。これにより、任意のクロック速度で1/10から1/20程度の消費電力を大幅に低減することが可能になりましたまたサポートれる最大クロック速度を上げることも求められていました。65C02の設計は NMOS 6502に存在したチップエラッタ(例えば、悪名高いバグ)に対処し、既存の命令の一部に新しい命令と新しいアドレッシングモードを導入しました。[4]JMP (<addr>)

W65C816Sの開発は、メンシュがApple Computer社にApple IIシリーズのパーソナルコンピュータの新バージョンについて相談し、グラフィックやサウンドの向上などを検討したことを受けて、1982年に開始されました。Apple社は、当時Apple IIで使用されていた6502とソフトウェア互換性を持ちつつ、より多くのメモリをアドレス指定でき、16ビットワードのロードとストアが可能なMPUを求めていました。[5]こうして65C816が誕生し、1984年3月に完成しました。同年後半にはApple社とAtari社にサンプルが提供され、1985年に正式リリースされました。[6]メンシュの設計プロセスでは、妹のキャサリンが協力し、デバイスのレイアウトの一部を担当しました。[5]

同じプロセスから65C802も生まれ、内部は65C816と全く同じだった。両者は同じ製造ラインで生産され、チップを外部ピンに接続する最後の金属化工程でのみ相違があった。65C802では、これらのピンはオリジナルの6502と同じレイアウトになっていたため、CPUの16ビット処理能力を維持しながら、そのまま置き換えることができた。しかし、オリジナルのピン配置を採用していたため、アドレス指定ピンは16本しかなく、外部メモリは64KBしかアクセスできなかった。[7]ハードウェアメーカーがプロジェクトをゼロから設計する場合、通常、65C802ではなく65C816が使用され、その結果、後者は生産中止となった。

その後、Appleは65C816をApple IIGSコンピュータに搭載しました。65C816の基本設計は、1980年代半ばから後半、そして1990年代初頭にかけて、 VLSI Technology[8] GTE三洋電機などによってセカンドソース化されました。

1990年代には、65C816と65C02の両方が完全スタティックコアへと移行し、レジスタの内容を失うことなくプロセッサのØ2クロックを完全に停止することが可能になりました。この機能と非同期スタティックRAMの使用により、スタンバイ状態での消費電力を最小限に抑えた設計が可能になりました。

2025年4月現在、W65C816SはWDCから40ピンPDIPPLCC44、または44ピンTQFPパッケージで入手可能で、W65C265を介したMCUとして[9] 、 ASIC統合用のIPコアとしても入手可能です[10] [11](例えば、WinbondのW55V9xシリーズのTVエデュテインメント IC [12])。

W65C802P

特長

WDC 65C816レジスタ
2 32 22 120 19 181 71 61 51 41 31 21 11 00 90 80 70 60 50 40 30 20 10 0(ビット位置)
メインレジスタ
BAアキュムレータCの組み合わせ)
インデックスレジスタ
XXインデックス
YYインデックス
00000000DP ダイレクトページポインター
00000000SPスタックポインター
0000000000000000データバンクレジスタ
PB プログラムバンクプログラムカウンター
ステータスレジスタ
nvmxdizcプログラムステータスレジスタ
eプログラムステータスレジスタモードフラグ

WDC 65C816の機能:

  • 完全に静的なCMOS設計により、消費電力が低く (  MHzで 300 µ A )、ノイズ耐性が向上します。
  • 広い動作電圧範囲: 1.8 V ~ 5.0 V ± 5%。
  • 動作周波数範囲が広く、単相クロック ソースを使用して、5 ボルトで公式最大 14 MHz ( SuperCPUでは 20 MHz)。
  • エミュレーションモードでは、NMOS 6502およびCMOS 65C02とのソフトウェア互換性が確保されます(ただし、ドキュメント化されていないオペコードは除く)。65C816の256個のオペコードはすべて、どちらの動作モードでも機能します。
  • 24 ビットのメモリ アドレス指定により、16 MB のメモリ空間にアクセスできます。
  • 16 ビットALUアキュムレータ( C)、スタック ポインタ( SP)、およびインデックス レジスタ(XおよびY)。
  • 16 ビットの直接ページ (ゼロ ページとも呼ばれる) レジスタ ( DP)。
  • 8ビットのデータバンク(DB)レジスタとプログラムバンク(PB)レジスタは、24ビットのコードアドレスとデータアドレスのビット16~23を生成します。プログラムレジスタとデータバンクレジスタが独立しているため、プログラムのセグメント化と16MBの線形データアドレス指定が可能です。
  • 有効なデータ アドレス ( VDA) と有効なプログラム アドレス ( VPA) は、メモリ認定、デュアルキャッシュ、およびサイクル スチールDMA実装の出力を制御します。
  • 割り込みベクターVPBがフェッチされていることを示すベクター プル ( ) 制御出力
  • Abort ( ) 入力と関連するベクターは、ページ フォールトやメモリ アクセス違反ABORTBなどのバス エラー状態のプロセッサ修復をサポートします。
  • 直接ページ レジスタおよびスタック相対アドレス指定により、再入可能再帰的、および再配置可能なプログラミングが可能になります。
  • 24 個のアドレッシング モード- 65C02 に実装されたほとんどの新しいオペコードを含む、 256 個のオペコードを使用する92 個の命令を備えた 13 個のオリジナル 6502 モード。
  • ブロック コピー命令 (MVNおよび) を使用すると、最小限のコードでRAMMVPの 1 つの領域から別の領域にデータ構造を高速にコピーできます。
  • Wait-for-Interrupt ( WAI) 命令と Stop-the-Clock ( ) 命令により、消費電力がSTPさらに削減され割り込み遅延が減少し、外部イベントとの同期が可能になります。
  • 関連付けられたベクトルを持つコプロセッサ( )命令は、浮動小数点プロセッサCOPなどのコプロセッサ構成をサポートします
  • 将来の 2 バイト オペコード用に予約された「エスケープ」( WDM) 命令と将来の設計へのリンク (WDM は W65C816S の設計者であるWilliam D. Menschのイニシャルです)。

以前のモデルとの比較

2つのモード

65C816には2つの動作モードがあります。1つは「エミュレーションモード」で、16ビット演算は表示されず(インデックスレジスタは8ビットに強制されます)、チップは6502と非常によく似ており、オペコードのサイクルタイミングも同じです。もう1つは「ネイティブモード」で、すべての新機能が公開されます。CPUは電源投入時またはリセット時に自動的にエミュレーションモードに入り、異なるピンレイアウトに対応するために必要な回路変更を行うことで、65(C)02との置き換えが可能です。[4]

16ビットレジスタ

ネイティブモードで動作する場合の65C816の最も顕著な変更点は、各種レジスタが8ビットから16ビットに拡張されたことです。この機能強化は、アキュムレータ(A)、XインデックスY レジスタ( )、スタックポインタ( )に影響します。プログラムカウンタ)はこれまで常に16ビットでしたが、SPこれには影響しません。 [13]PC

ネイティブモードで動作する場合、ステータスレジスタの2つのビットの意味が変わります。オリジナルの6502では、ビット4と5は使用されていませんでしたが、ビット4はブレーク(b)フラグと呼ばれていました。ネイティブモードでは、ビット4がxフラグになり、ビット5がmフラグになります。これらのビットは、インデックスレジスタx)とアキュムレータ/メモリ(m)のサイズが8ビットか16ビットかを制御します。これらのビットが0の場合は16ビット、1の場合は8ビットになります。これらのビットは、プロセッサの電源投入時またはリセット時には1に固定されますが、プロセッサがネイティブモードに切り替わると変更可能になります。[13]

ネイティブモードでの動作では、アキュムレータレジスタとインデックスレジスタは、プログラマの判断により、REPおよびSEP命令を使用してステータスレジスタのビットを操作することmで、16ビットまたは8ビットのサイズに設定できますx。この機能により、プログラマはワードサイズとバイトサイズのどちらのデータに対しても演算を実行できます。アキュムレータレジスタとインデックスレジスタのサイズは独立して設定できるため、例えば、アキュムレータレジスタを8ビット、インデックスレジスタを16ビットに設定することで、ポインタ演算を実行することなく、64KBの範囲で個々のバイトを操作できます。

レジスタサイズが16ビットに設定されている場合、メモリアクセスは1クロックサイクルあたり1バイトの速度で、連続する2バイトをフェッチまたはストアします。したがって、ROR <addr>アキュムレータが16ビットに設定されているときに、リード・モディファイ・ライト命令(例:)を使用すると、連続する1バイトではなく2バイトのメモリに影響し、アキュムレータが8ビットに設定されているときよりも多くのクロックサイクルを消費します。同様に、すべての算術演算と論理演算は16ビット演算となります。[14]

24ビットアドレッシング

ネイティブモードで実行中のシステムのもう1つの大きな変更点は、メモリモデルが6502のオリジナルの16ビット形式から24ビット形式に拡張されたことです。65C816は、データバンクレジスタ(DB)とプログラムバンクレジスタ(PB)という2つの8ビットレジスタを使用してアドレスのビット16~23を設定し、実質的に24ビットアドレスを生成します。どちらの場合も、「バンク」とは、アドレス範囲 で囲まれた連続した64KBのメモリセグメントを指します。$xx0000–$xxFFFFここでxx、 はバンクアドレス、つまり実効アドレスのビット16~23です。 と はどちらもDB電源投入時またはリセット時PBに に初期化されます。 [15]$00

オペコードまたはオペランドのフェッチサイクル中、プログラムカウンタ( )PBの先頭に が付加され、24ビットの実効アドレスが形成されます。「ラップ」(ゼロに戻る)した場合、はインクリメントされません。したがって、プログラムは実行中のバンクの境界によって制限されます。このメモリモデルから、分岐やサブルーチンのターゲットは、分岐または呼び出しを行う命令と同じバンクに存在する必要があることが示唆されます。ただし、「ロング」ジャンプやサブルーチン呼び出しによって別のバンクのコードが実行される場合は除きます。 を直接変更できるプログラム的な手段はありません。[16]PCPCPBPB

データフェッチまたはストアサイクル中、DB16ビットデータアドレスの先頭に が付加され、データがアクセスされる24ビットの実効アドレスが形成されます。このプロセッサ特性により、16ビットアドレスを使用してデータ要素を参照する6502または65C02コードを正常に実行できます。 とは異なりPBDBはプログラム制御下で変更可能であり、16ビットアドレス指定の限界を超えてデータにアクセスするために行われる可能性があります。また、DBアドレスが現在 にあるバンクの限界を超えてインデックス付けされた場合、 は一時的にインクリメントされますDBDB24ビットアドレスがデータフェッチ/ストア命令のオペランドとして指定された場合、または実効アドレスが直接(ゼロ)ページまたはハードウェアスタックにある場合は、 は無視されます。後者の場合、暗黙のバンクが$00実効アドレスの生成に使用されます。[17]

レジスタセットには、16 ビットのダイレクトページレジスタ ( ) が追加されました。これは、以前はゼロページDPと呼ばれていたもののベースアドレスを設定しますが、現在はダイレクトページと呼ばれています。ダイレクトページアドレッシングでは 8 ビットアドレスを使用するため、16 ビットまたは 24 ビットアドレスを使用する場合よりもアクセスが高速になります。また、間接参照を提供する一部のアドレッシングモードは、ダイレクトページでのみ可能です。65(c)02 では、ダイレクトページは常にメモリの最初の 256 バイトであるため、「ゼロページ」と呼ばれます。ネイティブモードでは、65C816 は、16 ビットの開始アドレスを に書き込むことで、バンク (メモリの最初の 64 KB)内の任意の場所にダイレクト (ゼロ) ページを再配置できます。が正確なページ境界に設定されていない場合、つまり の値が でない場合(は最上位バイト)、1 サイクルのアクセスペナルティが発生します。 [18]$00DPDPDP$xx00xx

モード間の切り替え

現在の動作モードはエミュレーション(e)ビットに格納されます。ステータスレジスタ( )の以前の6つのフラグセットに新しいビットxとビットをすでに追加しているため、新しいモードビットを保持するのに十分なビットが残っていませんでした。代わりに、モードビットを「非表示」のままにして直接アクセスできないようにするという独自の解決策が使用されました。(e X change C arry with E mulation)命令は、エミュレーションビットの値をキャリー()ビット( のビット0)と交換します。例えば、プロセッサの起動後にネイティブモードに入りたい場合は、 を使用してキャリービットをクリアし、 エミュレーションビットに書き込みます。[19] 65c02エミュレーションモードに戻るには、 を使用してキャリービットをクリアし、その後、使用エミュレーションビットに書き込みます。[20]mSRXCEcSRCLCXCESECXCE

65C816は内部的に完全な16ビット設計です。 のビットmxビットは、SRユーザーレジスタ(アキュムレータとインデックス)がシステムの他の部分にどのように表示されるかを決定します。リセットすると、65C816は6502エミュレーションモードで起動し、とがmxロックされます1。したがって、レジスタは8ビットサイズにロックされます。アキュムレータ( -アキュムレータ)の最上位バイト(MSB)には直接アクセスできませんが、 命令を使用してBアキュムレータ( -アキュムレータ)の最下位バイト(LSB)と交換できます。MSBが にロックされているインデックスレジスタ(および)には、対応する操作はありませんAXBAXY$00

ネイティブモードに切り替えると、Xとの最上位ビットYはゼロになり、B-アキュムレータは変更されません。mのビットSRがクリアされている場合、B-アキュムレータは-アキュムレータと「連結」され、A16ビットレジスタ(-Cアキュムレータと呼ばれます)を形成します。アキュムレータまたはメモリを含むロード/ストア操作、または算術/論理演算は16ビット操作となり、16ビット値のフェッチ/ストアには2つのバスサイクルが必要です。

xのビットがクリアされている場合SR、両方のインデックスレジスタは16ビットに設定されます。例えば、アドレスのインデックスに使用する場合、LDA SOMEWHERE,Xインデックスレジスタの16ビット値がベースアドレスに加算され、実効アドレスが生成されます。

mのビットが設定されている場合SR、アキュムレータは8ビットレジスタに戻り、その後のアキュムレータに対する操作は、いくつかの例外を除き、8ビット操作になります。アキュムレータは、 16ビットに設定された時点の値を保持します。例外は、ダイレクトページレジスタ( )とスタックポインタ( )をアキュムレータとの間Bで転送する命令です。これらの操作は、のビットの状態に関係なく、ネイティブモードでは常に16ビット幅ですDPSPmSR

xビットが設定されるSR、インデックスレジスタが8ビットに戻るだけでなく、16ビット幅だったときにMSBにあったものはすべて失われます。これはアセンブリ言語プログラマにとって忘れてはならないことです。[21]

用途

65C816派生型に基づくシステム:

参照

参考文献

引用文献

  1. ^ Mensch, William D. “A Report on the 65c832”. 2024年4月7日時点のオリジナルよりアーカイブ。 2024年4月7日閲覧
  2. ^ 「W65C832 情報、仕様、およびデータシート(1990年3月)」(PDF) . ReActive Micro . 2010年9月6日 [1990年3月] . 2024年4月7日時点のオリジナルよりアーカイブ(PDF) . 2024年4月7日閲覧
  3. ^ 「W65C832 情報、仕様、およびデータシート」(PDF) . 6502.org . 2023年6月30日時点のオリジナル(PDF)からアーカイブ。 2024年4月7日閲覧
  4. ^ ab Eyes & Lichty 1986、42ページ。
  5. ^ ab 「ウィリアム・デイビッド「ビル」メンシュ・ジュニアの口述歴史」(PDF)。2014年11月10日。
  6. ^ Eyes & Lichty 1986年、44ページ。
  7. ^ Eyes & Lichty 1986年、45ページ。
  8. ^ Application Specific Logic Products Data Book 1988. VLSI Technology Inc. 1988. pp.  257– 279 . 2024年3月18日閲覧
  9. ^ “W65C265S 16ビットマイクロコントローラ”. The Western Design Center, Inc. 2021年1月5日. 2024年4月2日時点のオリジナルよりアーカイブ。 2025年4月12日閲覧
  10. ^ “W65C816 8/16ビットマイクロプロセッサ”. The Western Design Center, Inc. 2021年1月5日. 2023年11月15日時点のオリジナルよりアーカイブ2024年4月7日閲覧。
  11. ^ “W65C265S 8/16ビットマイクロコントローラ”. The Western Design Center, Inc. 2021年1月5日. 2024年4月7日時点のオリジナルよりアーカイブ。 2024年4月7日閲覧
  12. ^ 「W55V92 TV-toyコントローラ データシート」(PDF) . Arrow Electronics . 2006年5月2日. 2024年6月12日閲覧
  13. ^ ab Eyes & Lichty 1986、46ページ。
  14. ^ Eyes & Lichty 1986年、52ページ。
  15. ^ Eyes & Lichty 1986年、53ページ。
  16. ^ Eyes & Lichty 1986年、54ページ。
  17. ^ Eyes & Lichty 1986年、55ページ。
  18. ^ Eyes & Lichty 1986年、80ページ。
  19. ^ Eyes & Lichty 1986年、64ページ。
  20. ^ Eyes & Lichty 1986年、65ページ。
  21. ^ Eyes & Lichty 1986年、51ページ。
  22. ^ 「Commander X16GS FAQ」. Github . 2025年8月8日閲覧
  23. ^ "F256K". Foenix Retro Systems .

参考文献

  • アイズ、デイビッド、リッチティ、ロン (1986)。65816のプログラミング ― 6502、65C02、65802を含む。プレンティス・ホール。ISBN 978-0893037895

さらに詳しい情報

  • 65C816 データシート; Western Design Center; 55 ページ; 2018 年。
  • Eyes, David and Ron Lichty; Programming the 65816: Including the 6502, 65C02, and 65802 ; Brady Publishing; 636ページ; 2015
  • フィッシャー、マイケル; 65816/65802 アセンブリ言語プログラミング; Osborne/McGraw-Hill; 686ページ; 1986
  • 65C816ウェブページ – ウェスタンデザインセンター
  • 6502/65C02/65C816命令セットの解読
  • 65816/65C816 技術文書 – zophar.net
  • 6502プログラマのための65816入門 -ブレット・タブケによるコモドールワールドの記事。CMDの命令セットの概要を含む
  • 65C816の割り込みの調査 – 65C816の割り込み処理に関する詳細な説明
Retrieved from "https://en.wikipedia.org/w/index.php?title=WDC_65C816&oldid=1320518327"