HD64180

HD64180は、 日立製作所（現ルネサス エレクトロニクス）が開発したZ80バイナリ互換の8ビットCPUである。1985年に登場した。MMUやDMAコントローラなどを集積し、アドレス空間は512KB - 1MBとZ80よりも拡張された。Z80にはない乗算、除算命令を備えている。レジスタセットはZ80と同等のものを採用している。

HD64180は、アナウンスされた当初はZ80互換をうたわず、カタログ等でもCP/M-80ソフトウェア互換と説明され、そうでありながらマニュアルに掲載されている命令一覧はZ80と同等であったため、マイコンマニアの間では多少の混乱があった。1命令の実行に必要なクロック数はZ80とは異なっており、制御信号やバスのタイミングは、Z80のそれを改良した非同期バスである。

 Z80との互換性について 
 ハードウェア 
オペコードフェッチサイクルのタイミングが改善されていたおかげで同一クロックのZ80よりもメモリアクセスタイミングに余裕があったが、その相違のためにZ80系の周辺デバイスを直接接続すると割り込み制御機能を使用することができなかった。後にこの問題を解消したHD64180Zが開発された。また、ザイログよりHD64180ZのセカンドソースとしてZ64180が、その改良版としてZ180(Z80180, Z8S180)が製造された。Z180は動作モードコントロールレジスタの機能（バス切り換え）が異なっているので、多少のソフトウェアの変更が必要である。

 ソフトウェア 
信頼性強化のため、仕様にない未定義命令を実行するとトラップがかかるようになっているので、Z80ユーザーの間でよく知られていた未定義命令である、IXおよびIYレジスタの8ビット分割(IXL/IXH・IYL/IYH)には対応していない（それ以外のもの、例えばビットシフトに関する未定義命令でも同じ）。そのため、これらの命令を使用しているソフトウェアをそのまま実行することはできない。なお、トラップ発生後にセットされるフラグをチェックすることでリセットかトラップかを区別できるので、理屈としては、必要に応じてエミュレーションプログラムに処理を移し、スタックポインタの値から、不正命令によるトラップを起こしたコードを読み取って同等な処理を実行するサブルーチンを呼び出すことは可能である。しかしながら、それを実現するためのクロック数は、未定義命令を直接実行できる従来のZ80よりもはるかに増える。この種の、Z80においても動作保証が一切されていなかった未定義命令（後継チップでは公式に仕様化された）をあえて使用するのは、ゲームソフトなどで、IX, IYレジスタを、HLレジスタの代用として8ビット単位で流用しRAMへのアクセス頻度を減らし極限まで実行速度を稼ぐ場合であり、そのようなプログラムは、未定義命令以外の部分でも実行環境とするハードウェア（特定のゲーム機器やパソコンなど）に依存したコードになっているため、命令だけエミュレーションできても、そのままではバイナリ互換性がないことに変わりはない。移植のためにソースコードを修正するのであれば、その作業の一環として未定義命令の部分も書きなおせばよく、HD64180によるZ80未定義命令のエミュレーションは、実用的とは言えない。

 採用事例 
ビクターのMSX2、HC-90, HC-95に搭載された上述の通り完全な互換性がなかったため、HC-90/95には従来のZ80も搭載されているほか、富士通のFM TOWNS HRなどのCD-ROMコントローラや、KAWAI Q-80といった電子楽器、組み込み機器制御などに使用された。また、NTTの電話番号検索システムであるエンジェルラインの専用端末(ANGEL NOTE)に採用されたことでも知られている。

 型番体系 
{| border="1" class="wikitable"
|- align="center"
! 型番「HITACHI THE 64180 FAMILY HD64180 FAMILY HIGH INTEGRATION CMOS MICROCONTROLLERS」より !! Memory key or Speed !! Family Name !! Type !! Mask Version !! Package(Hitachi Package Name) !! Speed !! Temperture 
|-
|HD64=Hitachi Digital CMOS Micro||No Mark or 1=ROM Less3=Mask ROM 7=ZTAT(EPROM/UVEPROM) 8=EEPROM A=4MHz B=6MHz|| 180=180 Family || R=Interface with 63/68/80 Family Compatible  S=NPU(Network Processing Unit)  X=Single   W=EEPROM+RAM+A/D CONVERTER Z=Interface with Z80 Family Compatible ||0=MASK 0  1=MASK 1|| Y=Ceramic PGA   P=Plastic Shrink Dual Inline (Shrink DIP 64pin) (DP-64S) CP=PLCC 68pin  (CP-68) or PLCC 84pin (CP-84)  F=Flat Pack  (FP-80,FP-80B) H=Flat Pack (FP-80A) for Type S|| 4=4MHz  6=6MHz  8=8MHz 10=9.8MHz|| NO Mark=?X=Standard Temp:-20~+75℃J=Industrial Temp:-40~+85℃ 
|}

 脚注 

 外部リンク 

Category:日立のマイクロプロセッサ
Category:MSX