68HC08 (HC08)
68HC08、または一般的にHC08と略されるこのシリーズは、かつて
モトローラ・セミコンダクタとして知られ、後に
フリースケール・セミコンダクタとなった企業によって開発された、非常に広範なラインナップを誇る
8ビットマイクロコントローラファミリです。このファミリは、多岐にわたる
組み込みシステムアプリケーションへの対応を目的として設計されました。
アーキテクチャと互換性
HC08は、その先代にあたるMotorola 68HC05プロセッサと命令レベルで完全なコード互換性を有しています。これにより、既存の68HC05向けのソフトウェア資産を容易に活用することが可能でした。
また、Motorola 6800シリーズ以降のプロセッサが共通して受け継いできた伝統に従い、HC08は
ノイマン型アーキテクチャを採用しています。これは、プログラム命令とデータを同一のメモリ空間上に配置する方式です。さらに、入出力ポートや周辺モジュールへのアクセスには、メモリ空間の一部を割り当てる
メモリマップドI/O|メモリマップドI_O方式を用いています。
CPUレジスタ構成
HC08コアは、効率的な処理のために以下の5つの主要なCPUレジスタを内蔵しています。これらはメモリ空間とは別に設けられています。
A (アキュムレータ):
8ビット長のレジスタで、演算やデータ転送の主要なオペランドとして使用されます。
H:X (インデックスレジスタ):
16ビット長のレジスタで、主にメモリ上のデータへのインデックス付きアクセスに使用されます。特筆すべきは、一部の命令において、この
16ビットレジスタを構成する上位バイト(H)と下位バイト(X)をそれぞれ独立した
8ビットレジスタとして参照・操作できる点です。
SP (スタックポインタ):
16ビット長のレジスタで、サブプログラム呼び出しからの戻りアドレスや一時的なデータの一時退避に用いられるスタック領域の現在位置を示します。
PC (プログラムカウンタ):
16ビット長のレジスタで、次に実行されるべき命令が格納されているメモリ上のアドレスを示します。プログラムの実行フローを制御します。
CCR (コンディションコードレジスタ):
8ビット長のレジスタで、直前の演算結果の状態(例えば、ゼロフラグ、キャリーフラグ、ネガティブフラグなど)を示す各種ステータスフラグを保持します。プログラムの条件分岐などで利用されます。
ファミリの多様性と特徴
HC08ファミリは、単一のコアから派生した数十種類に及ぶプロセッサファミリで構成されています。これは、異なる組み込みアプリケーションが要求する多様なニーズに応えるためです。
各ファミリは、実装されるピン数、内蔵される周辺モジュール、そして全体的な処理能力において幅広いバリエーションを持っています。例えば、物理的なパッケージは8ピンの小型なものから64ピンの比較的大規模なものまで存在します。また、内蔵されるインターフェースも、USB 1.1コントローラや、車載ネットワークなどで使用されるLINインターフェースなど、多岐にわたります。
派生コア
HC08コアから派生、あるいは後継として、以下のコアが存在します。
Freescale RS08: HC08コアをベースとしながらも、リソースを削減し、よりコスト効率とシンプルなシステム構成を可能にしたバージョンです。
*
Freescale HCS08: HC08コアの後継として開発された、次世代のコアアーキテクチャです。
これらの派生コアも、HC08が築き上げた基盤の上に、さらなる進化や特定用途への最適化を実現しています。
HC08ファミリは、その豊富なラインナップと旧機種との互換性、そして柔軟なアーキテクチャにより、家電製品、自動車用電子機器、産業用制御システムなど、幅広い
組み込みシステム分野で広く採用され、重要な役割を果たしました。