H8/3048CPUの特徴
H8のページに戻る
H8は、当初は8ビットCPU(汎用レジスタ長16ビット)でしたが、現在は完全な16ビットCPU(汎用レジスタ長32ビット)のものもあります。もちろん、現在私が注目しているのはH8/3048という16ビットCPUです。
詳しくは日立のページを見ていただくとして、H8/3048の特徴を以下に挙げます。
CPUコアの特徴
・16MHz動作(秋月は20MHzでも動くと言っています(^^;)
・外部バス16ビットの完全な16ビットCPU
・リニアな24ビットアドレス空間
・直交性の高い32ビット×7本の汎用レジスタ(16ビット×14、または8ビット×14としても使用可)
(日立は32ビット×8本と言っていますが、普通スタックポインタは汎用レジスタとして数えないでしょう。)
主な内蔵デバイス
・EEPROM 128Kバイト
・RAM 4Kバイト
・16ビットタイマ×5
・シリアルポート×2
・DMAコントローラ
・A/Dコンバータ
・D/Aコンバータ
・その他、ウオッチドッグタイマ、タイミングパターンコントローラ、スマートカードインタフェースなど
ここが気に入った!
これらの特徴の中で、とくに気に入ったのは以下の点です。
・リニアなアドレス空間
セグメント、バンク(MSX的に言えばスロット、マッパー)などの切替えをせずに広大なメモリ空間を自由にアクセスできます。
・豊富な汎用レジスタ
レジスタ数が多いので楽です。たとえば、Z80からの移植をする場合、以下のようにレジスタを対応させれば簡単に移植できます。(ただ、Z80側が裏レジスタまでふんだんに駆使しているプログラムだとちょっと考えないといけませんが。)
バイトレジスタ
|
|
ワードレジスタ(アドレスポインタ)
|
Z80
|
H8
|
Z80
|
H8
|
A
|
R0L
|
BC
|
ER1
|
B
|
R1H
|
DE
|
ER2
|
C
|
R1L
|
HL
|
ER3
|
D
|
R2H
|
IX
|
ER4
|
E
|
R2L
|
IY
|
ER5
|
H
|
R3H
|
|
L
|
R3L
|
また、レジスタに変なクセがなく、非常に素直にプログラムが組めるのも魅力的です。たとえば、Z80だと
EX DE,HL
ADD HL,BC
EX DE,HL ; ようするにDEにBCを足したい
ADD.L ER1,ER2
・EEPROM内蔵
従来、この手の制御用CPUボードは、プログラムを焼くのにROMライタが必要でした。ROMライタは個人が趣味で買うにはちょっと勇気が必要です(私は買いましたが)。ですから、例えばZ80ボードなどを使って面白いものを作って発表しても、それを追体験できる人は極めて少数でした。
H8はROMライタを必要としませんので、そういった点はかなり解消されます。
・A/D、D/Aコンバータ内蔵
H8はA/D、D/Aコンバータを内蔵しています。また、15KHz程度の周期で割り込み処理を行うのも楽勝です(まだ試していないのですが、DMAコントローラを使えばもっと早いレートの処理も可能と思われます)。それらを使えば音声処理もそこそこのレベルで可能です。DSPなどにはかないませんが、ホビー用途には十分でしょう。
また、アナログジョイスティック(DOS/V機で使われているもの)を繋ぐなど、夢はどんどん広がります。
ちょっと「あれれ」な点
いいことばかりではなく、Z80に慣れた人間にはちょっと戸惑う点もあるのですが。
・アセンブラの表記が<転送元><転送先>という順番である
慣れの問題なのですが。でもいまだに私も時々転送元と転送先を逆に書いてしまうことがあります。
・奇数番地にワードデータ、ロングワードデータを置けない
・上位バイト、下位バイトの順がメモリ上でZ80と逆になる
これらの点は「慣れの問題」では済まされなくて、こういったことに強く依存しているプログラムは移植にちょっと手間がかかります。
しかし、H8のメリットはこれらを補って余りあると思います。