概要
68HC11は、かつて
モトローラ(後に
フリースケール・セミコンダクタ、現在はNXP Semiconductorsの一部)が製造していた、高性能な
8ビットCISCマイクロコントローラファミリーです。しばしば「HC11」や「6811」と略記され、その多機能性と信頼性から、様々な
組み込みシステムの中核として広く利用されました。この
マイクロコントローラは、
モトローラの先駆的な
8ビットマイクロプロセッサである
MC6800のアーキテクチャを基盤として設計され、命令セットや内部構造にその影響が見られます。
特徴と市場での位置づけ
同時代の他の
8ビットマイクロコントローラ、例えば
モトローラの68HC05ファミリーと比較すると、68HC11は一般的に価格は高めでしたが、その価格に見合うだけの優れた処理能力と豊富な周辺機能を備えていました。これにより、より高度な制御やデータ処理が求められるアプリケーションに最適でした。具体的な用途としては、
バーコードリーダー、ホテルのカードキーシステム、産業機器の制御装置、さらには教育分野やアマチュアロボット開発など、広範な分野で採用されていました。
アーキテクチャ
68HC11の内部アーキテクチャは、
MC6800マイクロプロセッサを色濃く受け継いでいます。基本的な命令セットは
MC6800と互換性があり、既存の6800系ソフトウェア資産を活用しやすい設計となっています。主な拡張点としては、Yインデックスレジスタの追加が挙げられます。Yレジスタを使用する命令は、
MC6800には存在しないため、
オペコードの前に特定のプレフィックスバイト(0x18)が付加されることで識別されます。
マイクロコントローラのレジスタ構成は以下の通りです。
アキュムレータ (A, B): 8ビットの汎用レジスタ。多くの演算処理で使用されます。
インデックスレジスタ (X, Y): 16ビットのレジスタ。メモリのアドレス計算などに利用されます。
スタックポインタ (SP): 16ビットのレジスタ。サブルーチン呼び出しや割り込み処理におけるスタック領域を管理します。
プログラムカウンタ (PC): 16ビットのレジスタ。次に実行される命令のアドレスを指し示します。
コンディションコードレジスタ (CCRまたはステータスレジスタ): 演算結果の状態(ゼロフラグ、キャリーフラグなど)や割り込みマスクなどを保持します。
加えて、アキュムレータAとBを連結し、
16ビットのDレジスタとして扱うことができる命令も存在し、
16ビットデータの効率的な操作を可能にしています。
ブートローダ
多くの68HC11モデルには、
BUFFALO (Bit User Fast Friendly Aid to Logical Operation) と呼ばれる標準的なブートローダプログラムが内蔵されています。これは、シリアルポートを通じて外部からプログラムをダウンロードしたり、内部メモリを操作したりするための便利な機能です。特に開発初期段階やファームウェアの書き換え時に重宝されました。ただし、このブートローダは全ての68HC11チップに搭載されているわけではありません。例えば、初期の68HC11A0やA1モデルには内蔵されていませんでしたが、改良された68HC11A8モデルには搭載されています。電源投入時などにシリアルターミナルに「BUFFALO」といったプロンプトが表示される場合、それは通常、チップ内のプログラム領域が消去されていることを意味します。
入出力ポートとメモリシステム
68HC11ファミリーの各モデルは、搭載されている入出力(I/O)ポートの数が異なります。最も一般的なモデルでは、ポートA、B、C、D、Eの合計5つのポートを持ちますが、特定のモデル(例: バージョンD3)では3つのポートのみの場合もあります。ポートA、B、C、Eは通常
8ビット幅で構成されています。ポートDは多くのモデルで6ビット幅ですが、バリエーションによっては
8ビット幅を持つものも存在します。
メモリ構成に関しても柔軟性があります。多くのモデルは、プログラムを格納するためのROM(マスクROM、EPROM、EEPROM、またはフラッシュメモリ)や、データ操作のためのRAM(通常1バイトから768バイト程度)をチップ内部に備えています。さらに、最大64
キロバイトの外部メモリ空間を拡張して利用することも可能です。外部メモリを使用する場合、ポートBとポートCが
アドレスバスとデータバスとして機能します。この際、ポートCはアドレスの下位バイトとデータの両方をやり取りするため、時分割多重方式が用いられます。
各ポートは、汎用I/Oピンとしての機能に加えて、特定の周辺機能に割り当てられていることが多いです。
ポートA: タイマシステムに関連する機能(入力キャプチャ、出力比較、パルスアキュムレータなど)
ポートD: シリアル通信インターフェース(SCI: Serial Communications Interface, SPI: Serial Peripheral Interface)
ポートE: アナログ-デジタル変換器(ADC)の入力
拡張と関連プロセッサ
68HC11の機能をさらに強化するため、MC68HC24のような専用のポート変換ユニットと組み合わせて使用することが可能でした。MC68HC24を外部
アドレスバスに接続することで、ポートBやポートCの機能を補助・拡張することができます。
68HC11の成功を受けて、フリースケールは後継ファミリーを開発しました。
68HC12ファミリーは、68HC11のアーキテクチャをベースに、性能向上や機能拡張が施された
16ビットに近いアーキテクチャを持つ
マイクロコントローラです。また、
68HC16ファミリーは、68HC11からのアップグレードパスとして、比較的高い互換性を維持しつつ
16ビット化を実現したプロセッサ群として位置づけられていました。
結論
68HC11は、その堅牢なアーキテクチャ、柔軟なメモリ構成、そして豊富な周辺機能により、多様な組み込みアプリケーションで重要な役割を果たしました。現在ではより高性能な後継プロセッサに主役の座を譲っていますが、その設計思想や多くの機能は、その後の
マイクロコントローラ開発に大きな影響を与えています。