WDC 65C816

WDC 65C816
PDIP40パッケージ
一般情報
発売1985 (1985年
共通メーカー
パフォーマンス
最大CPUクロックレート1MHz~14MHz
データ幅
  • 8(外部)
  • 16(内部)
アドレス幅24ビット
物理的仕様
パッケージ
  • 40ピンDIP
  • 44ピンPLCC、その他
アーキテクチャと分類
命令セット6502
命令の数92
製品、モデル、バリエーション
変異体
    • W65C802(W65C02とピン互換)
    • W65C265 (マイコン)
歴史
先人たち
後継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は現在生産されていません。

歴史

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

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テクノロジー[ 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 12 01 91 81 71 61 51 41 31 21 11 00 90 80 70 60 50 40 30 20 10 0(ビット位置)
メインレジスター
BアキュムレータC複合)
インデックスレジスタ
XXインデックス
はいYインデックス
0 0 0 0 0 0 0 0 DP直接ページポインタ
0 0 0 0 0 0 0 0 SPスタックポインター​​
DB0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 データバンクレジスタ ​
PBパソコンプログラムバンクプログラムカウンター​​
ステータスレジスタ
nvメートル×dzcプログラムステータスレジスタ
eプログラムステータスレジスタモードフラグ

WDC 65C816 の機能:

  • 完全に静的なCMOS設計により、消費電力が低く (  1  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レジスタ( )、スタックポインタSP)に影響します。プログラムカウンタPC)は従来通り16ビットですが、これには影響しません。[ 13 ]

ネイティブモードで動作する場合、ステータスレジスタの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ビットアドレス指定

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

オペコードまたはオペランドのフェッチサイクル中、プログラムカウンタ( )PBの先頭に が付加され、24ビットの実効アドレスが形成されます。「ラップ」(ゼロに戻る)した場合、はインクリメントされません。したがって、プログラムは実行中のバンクの境界によって制限されます。このメモリモデルでは、分岐やサブルーチンのターゲットは、別のバンクのコードを実行するために「ロング」ジャンプやサブルーチン呼び出しが使用されない限り、分岐または呼び出しを行う命令と同じバンクになければなりません。バンク間で制御を移行する際のコードの一貫性を確保するため、 はが同時に設定されている場合にのみ変更できます。 [ 16 ] [ 17 ]PCPCPBPBPC

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

レジスタ セットには、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. 「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. ^ a b Eyes & Lichty 1986、42ページ。
  5. ^ a b「ウィリアム・デイビッド「ビル」メンシュ・ジュニアの口述歴史」(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. ^ a b Eyes & Lichty 1986、46ページ。
  14. ^ Eyes & Lichty 1986、52ページ。
  15. ^ Eyes & Lichty 1986、53ページ。
  16. ^ Eyes & Lichty 1986、54ページ。
  17. ^ a b 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 .

参考文献

さらに読む

  • 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