Intel 8051
Intel 8051 は1980年、組み込みシステム用にインテルが開発したハーバード・アーキテクチャをもつワンチップマイクロコントローラである。1980年代から1990年代初頭まで極めて広範に用いられたが、2006年現在では様々な機能拡張を施された8051互換のプロセッサコアが20以上の製造業者から出荷されている。例えばAtmel、Maxim IC、NXP、Winbond、Silicon Laboratoriesである。「8051」は型番であり、このファミリーのマイクロコントローラの名称はMCS 51である。
オリジナルの8051ファミリーはNMOSテクノロジーで製造されたが、後にはCMOS化され、80C51のように型名にCがついた。CMOS化にともない、消費電力が減り、電池で動く製品に採用しやすくなった。
主な特徴
編集- 中央処理装置 (CPU)、RAM、ROM、 シリアルポート、パラレルポート、割込用論理回路、タイマその他を内蔵している。
- データバス - 8ビット幅である。一回の操作で8ビットデータをアクセスすることができる。故に8bitマイクロプロセッサと呼ばれる。
- アドレスバス - 16ビット幅である。216番地、即ち64KBのメモリ空間をRAM、ROM独立にアクセス可能である。
- 内蔵RAM - 128バイト(データ用)。
- 内蔵ROM - 4KB(プログラム用)。
- 4ビットの双方向I/Oポート。
- シリアルポート。
- 2本の16ビットアップカウンタ。
- 2レベルの割込優先順位。
- 節電モード。
8051コアの特に有用な特徴に論理演算機能がある。これによって、ビットレベルでブーリアン型の演算が可能である。演算は内蔵レジスタとRAM間で直接かつ効率的に行うことができる。この特徴によって8051は工業界に確固とした地位を築くに至った。他にも4つの独立したレジスタセットがあり、一般的に用いられるスタックへのレジスタ退避に比べ、割込時のレイテンシー(割込発生から、割込ルーチンを実行するまでの時間)を大きく改善することができた。
8051の非同期シリアル通信端末 (UART) はデータ長を9ビットにすることができ、EIA-485環境下でアドレス付きの通信ができた。
8051ベースのマイクロコントローラは典型的には1個または2個のUARTと2個または3個のタイマ、128または256バイトの内蔵データRAM(その内16バイトはビットレベルでアドレス可能である)、128バイトまでのI/O、512バイトから128KBの内蔵プログラムメモリ、時にはかなりの容量の外付けRAMをプログラム空間用に持っている。オリジナルの8051コアは12クロックサイクルあたり1マシンサイクルを発生し、殆どの命令は1または2マシンサイクルで実行可能であった。そこで、12MHzのクロックを与えると、8051は1MIPSから0.5MIPSの性能を出した。現在一般に用いられている性能向上型の8051コアは1マシンサイクル当たりのクロックが6、4、2、果ては1クロックにまで低下しており、クロック自体も100MHz以上に達している。従って、遥かに高いMIPS値が可能である。SILab製品の全て、Dallas製品の一部、Atmel製品の若干が1クロックコアを持っている。
現在では130MHzから150MHzのシングルサイクル8051コアがFPGAなどのプログラマブルロジックデバイス用に存在し、インターネットから得られる。ASIC向けには数百MHzに及ぶものがある。例えばe8051.comのnetlistである。
現代の8051ベースのマイクロコントローラは、低電圧(ブラウンアウト)検出機能付きタイマ、オンチップ発振器、自己プログラム可能なフラッシュROMプログラムメモリ、ROM内のブートローダーコード、EEPROMによる不揮発性データ記憶領域、I2C、 SPI、USBホストインタフェース、PWM信号発生器、AD/DA変換器、リアルタイムクロック、さらに多くのカウンタとタイマ、イン-サーキットのデバグ機能、より拡張された割込ソース、さらに強力な節電モードなどの特徴を含むことも一般的である。
Cコンパイラの中には8051向きのものがある。プログラマは変数を8051が扱うことのできる6種類のメモリのどこに置くか指定することができ、8051特有のハードウェア的特徴(複数のレジスタバンク、ビット操作命令など)を活かすことができる。他の高級言語ではFORTH、BASIC、Pascal、PL/M、Modula-2が利用可能であるが、Cまたはアセンブラを用いることが多い。
8051の祖先である8048は初代IBM PCのキーボードに用いられ、キー操作をシリアルデータ列に変換し、計算機に送信した。8048ファミリーは2006年現在でもベーシックグレードのキーボードに用いられている。
8031は8051のコストカット版で、内蔵プログラムROMを持たない。
8052は8051の拡張版で、内蔵RAMが128バイトから256バイトに増え、4KBの内蔵ROMが8KBに増え、3本目の16ビットタイマを持っている。8032は8052から内蔵プログラムROMを除いたものである。後の8051ベースのマイクロコントローラがこれらの特徴を持っているので、8052と8032はさほど有用と見られなかった。
外部リンク
編集- 8051 Forum
- e8051 netlist download
- Microcontroller.com
- 8051 Tutorial (8052.com)
- Official 8051 FAQ (Link dead?)
- Intel MCS 51 series microcontrollers
- Maxim/Dallas 8051 Drop-In microcontrollers
- Open Core 8052 Cores with and without Wishbone bus
- 8051 Macro Assembler ASEM-51
- SDCC, a free open-source C compiler
- Free resources for 8051 and other development tools
この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。