インテル MCS-48

Intel 8048マイクロコントローラ
UV EPROMを搭載した8749
HP3478Aマルチメーターに使用されているIntel 8049マイクロコントローラ。このチップは1984年の第2週に製造されました。
Intel 8749ダイ
Intel 8048レジスタ[要引用]
0 90 80 70 60 50 40 30 20 10 0(ビット位置)
メインレジスター
 アキュムレータ
パソコンプログラムカウンター​ 
タイマー/カウンター
 Tタイマー
プログラムステータスワード
 CY交流F0学士1スタック
 DBFF1
注: プログラマが認識できるその他のすべてのレジスタとスタックは RAM に割り当てられます。

Intel初のマイクロコントローラであるMCS-48マイクロコントローラシリーズは、1976年に発売されました。最初の製品は8048、8035、8748でした。8048 [ 1 ]このファミリー最も有名な製品と言えるでしょう。当初、このファミリーはNMOS(n型金属酸化膜半導体)技術を用いて製造されていました。1980年代初頭にはCMOS技術での提供が開始されました。CMOS技術を採用していた旧設計をサポートするため、1990年代まで製造されました。

MCS-48シリーズは、改良ハーバード・アーキテクチャを採用し、内部または外部プログラムROMと64~256バイトの内部(オンチップ)RAMを備えています。I /Oは、プログラムやデータとは独立した独自のアドレス空間にマッピングされています。

MCS-48シリーズは最終的に大成功を収めたMCS-51シリーズに置き換えられましたが、その低価格、幅広い入手性、メモリ効率の高い1バイト命令セット、そして成熟した開発ツールにより、2000年頃まで高い人気を維持しました。そのため、テレビのリモコン、コンピューターのキーボード、玩具など、大量生産されコスト重視の民生用電子機器に使用されています。

変種

80492KBのマスクROM(8748と8749はEPROM)を搭載しており、4KBの外部ROMに置き換えることができます。また、128 バイトRAMと27個の I/Oポートを備えています。[2]マイクロコントローラの発振器ブロックは、クロック入力周波数を3分周し、その結果をさらに5つのマシンステートに分割します。最大11MHzの水晶周波数を使用すると、 シングルサイクル命令で0.73MIPSの性能が得られます 。命令の約70%はシングルバイトまたはシングルサイクル命令ですが、30%は2サイクルまたは2バイト命令を必要とするため、典型的な性能は0.5MIPS程度になります。

マイクロコントローラ[要出典]
デバイスプログラムメモリデータメモリ備考
80201K × 8 ROM64 × 8 RAM8048のサブセット、20ピン、13本のI/Oラインのみ
80211K × 8 ROM64 × 8 RAM8048 のサブセット、28 ピン、21 I/O ライン
80222K × 8 ROM64 × 8 RAM8048のサブセット、A/Dコンバータ
8035なし64 × 8 RAM
8038なし64 × 8 RAM
8039なし128 × 8 RAM
8040なし256 × 8 RAM
80481K × 8 ROM64 × 8 RAM27×I/Oポート
80492K × 8 ROM128 × 8 RAM27×I/Oポート
80504K x 8 ROM256 × 8 RAM
86481K × 8 OTP EPROM64 × 8 RAM工場出荷時のOTP EPROM
87481K × 8 EPROM [3]64×8 RAM [3]4Kプログラムメモリ拡張可能、[3] 2×8ビットタイマー、27×I/Oポート
87492K × 8 EPROM128 × 8 RAM2×8ビットタイマー、27×I/Oポート
87P50拡張ROMソケット256 × 8 RAM2758/2716/2732 EPROM用ピギーバックソケット付き
Intel P8242 - AT互換機用Phoenixファームウェア搭載キーボードコントローラ
ナショナルセミコンダクターNS87P50D-6 – 87P50ピギーバックマイクロコントローラのセカンドソース
ユニバーサル ペリフェラル インターフェース
デバイスプログラムメモリデータメモリ備考
80411K × 8 ROM64 × 8 RAMユニバーサル ペリフェラル インターフェース (UPI)
8041AH1K × 8 ROM128 × 8 RAMUPI
8741A1K × 8 EPROM64 × 8 RAMUPI、8041のEPROMバージョン
8741AH1K × 8 OTP EPROM128 × 8 RAMUPI、OTP EPROM版8041AH
8042AH2K × 8 ROM256 × 8 RAMUPI
82422K × 8 ROM256 × 8 RAMUPI、キーボードコントローラファームウェアがプリプログラムされている[4]
87422K × 8 EPROM128 × 8 RAMUPI、EPROMバージョン
8742AH2K × 8 OTP EPROM256 × 8 RAMUPI、OTP EPROM版8042AH

用途

MCS-48シリーズは、コンピュータや端末のキーボードで広く使用され、キーの押下をデジタル回路が理解できるプロトコルに変換しました。これによりシリアル通信も可能になり、外付けキーボードのケーブルに必要な導体の数を削減できました。マイクロプロセッサは少なくとも1972年からキーボードに使用されており、以前のディスクリート設計を簡素化しました。8048は1978年の発売以来、この用途で使用されています。[要出典]

1979年に発売されたTandy/Radio Shack TRS-80 Model IIのキーボードには8021が使用されていました。[5] 8021プロセッサはキーマトリックスをスキャンし、スイッチのオン/オフを8ビットコードに変換し、そのコードをメインシステムのキーボードインターフェースにシリアル送信します。また、インジケータLEDのオン/オフを切り替えるコマンドも受け付けます。8021は、TRS-80 Model 12、12B、16、16B、およびTandy 6000/6000HDのキーボードにも使用されていました。[6]

オリジナルのIBM PCキーボードとその前身であるIBM System/23 Datamasterのキーボードは、内部マイクロコントローラとして8048を使用していました[7] PC ATは、I/Oポートアドレス0x60〜63のPCのIntel 8255周辺機器インタフェースチップを、ポートアドレス0x600x64を介してアクセス可能な8042に置き換えました。[8]キーボードインタフェースの管理に加えて、8042はATのIntel 80286 CPUのA20ラインゲーティング機能を制御し、ソフトウェアから80286をリセットするように命令することができました(80386およびそれ以降のプロセッサとは異なり、80286はリセットする以外に保護モードからリアルモード切り替える方法がありませんでした)。後のPC互換機は8042の機能をスーパーI/Oデバイスに統合しました。

8048は、マグナボックス・オデッセイ² ビデオゲーム機コルグ・トライデントシリーズ[9]コルグ・ポリ61 [10] ローランド・ジュピター4、ローランド・プロマーズ[11]といった アナログシンセサイザーに搭載された。シンクレアQLは、キーボード、ジョイスティックポート、RS-232入力、オーディオの制御に、近縁種のインテル8049を採用した。ROM非搭載の8035派生型は、任天堂のアーケードゲーム『ドンキーコング』のBGMと一部の効果音を生成するために使用された。

命令セット

MCS-48 のすべての命令は 1 バイトまたは 2 バイトの長さで、命令の 70% は 1 バイトです。MCS-48 は、4096 バイトのプログラム メモリ、256 バイトの RAM、および 8 つのポート I/O アドレスをアドレス指定できます。ほとんどの算術演算および論理演算では、アキュムレータをパラメータおよび宛先として使用します。8 つのメモリ位置はレジスタとしてマップされるため、多くの命令に埋め込まれた 3 ビット フィールドによってアドレス指定できます。これらのレジスタのうち 2 つはメモリ ポインタとして使用できます。条件分岐は、現在の 256 バイトのページにのみアクセスできます。JMP および CALL は 2048 の位置に直接アクセスできます。4096 バイトのプログラム空間全体にアクセスするには、扱いにくいメモリ バンク選択命令を使用する必要があります。ただし、RET 命令はアドレス空間のどこにでも戻ることができます。割り込みは、迅速なコンテキスト スイッチ用の代替レジスタと、RETR 命令によるフラグの状態の復元機能によって十分にサポートされています。すべての命令は 1 マシン サイクルまたは 2 マシン サイクルで実行されます。各マシン サイクルには 15 個の外部クロックが必要です。

オペコードオペランドニモニックサイクル説明
76543210
00000000いいえ1操作なし
00000010OUTLバス、A2バスラッチ ← A
アルイ0011データ追加 ADDC MOV ORL ANL XRL2A ← A 演算番号
アディ00100追加JMP追加2PC ← DBF:addhi:addlo
0000101EN/DIS I1I ← 0 (EN) または I ← 1 (DIS)
0000011112月A1A ← A - 1
00001000INS A、バス2A ← バス
000010PPAで、Pp2A ← ポート(p) (ポート1-2)
00001PPMOVD A、Pp2A 0-3 ← 8243 ポート(p); A 4-7 ← 0 (ポート 4-7)
アルミ000RINC XCH ORL ANL ADD ADDC
MOVAA XRL MOVAa
1dest ← dest ALU @Rr (@R0、@R1 のみ; DEC なし)
アルミ1RRRINC XCH ORL ANL ADD ADDC
MOVAA DEC XRL MOVAa
1宛先 ← 宛先 ALU Rr
少し10010住所JBb アドレス2A ∧ (1 << b) の場合、 PC 0-7 ← アドレス
アディ10100追加追加を呼ぶ2(SP) ← PSW 4-7 :PC; SP ← SP + 1; PC ← DBF:addhi:addlo
00010110住所JTF アドレス2TF = 1の場合、PC 0-7 ← アドレス(タイマーフラグ設定)
00010111INC A1A ← A + 1
001T0101EN/DIS TCNTI1TCNTI ← 0 (EN) または TCNTI ← 1 (DIS) (タイマー/カウンター割り込み)
001F0110住所JNT0 JT0 アドレス2F = T0の場合、PC 0-7 ← アドレス(テスト入力0)
00100111CLR A1A ← 0
00110111CPL A1A ← ¬A
001110PPOUTL Pp、A2ポート(p) ← A (ポート1-2)
00111PPMOVD Pp、A28243 ポート(p) ← A 0-3 (ポート 4-7)
01000010移動A、T1A ← T (タイマーをAに移動)
010T0101STRT CNT/T1T = 0の場合はカウントを開始し、そうでない場合はタイマーを開始する
010F0110住所JNT1 JT1 アドレス2F = T1の場合、PC 0-7 ← アドレス(テスト入力1)
01000111スワップA1A 0-3 ↔ A 4-7
01010111DA A1A 0-4 > 9 または AC = 1 の場合、A ← A + 6;

A 4-7 > 9 または C = 1の場合、A ← A + 0x60

01100010動画 T、A1T ← A (Aをタイマーに移動)
01100101TCNTを停止1タイマーを止めてカウントする
01100111RRC A1C ← A 0 ; A 0-6 ← A 1-7 ; A 7 ← C
01110101ENT0 クロック1T0をクロック出力として設定する
01110110住所JF1 アドレス2F1 = 1の場合、PC 0-7 ← アドレス
01110111RR A1A 0-6 ← A 1-7 ; A 7 ← A 0
10000011RET2SP ← SP - 1; PC ← (SP)
1000101CLR ファンクション1Fn ← 0
10000110住所JNI アドレス2入力 = 0 の場合、PC 0-7 ← アドレス(テスト割り込み入力が低)
10001000データORLバス、#2A ← バス ∨ #
100010PPデータORL Pp、#2A ← ポート(p) ∨ # (ポート1-2)
10001PPORLD Pp、A28243 ポート(p) ← 8243 ポート(p) ∨ A 0-3 (ポート 4-7)
10010011RETR2SP ← SP - 1; PC ← (SP); PSW 4-7 ← (SP)
1010101CPL Fn1Fn ← ¬Fn
10010111CLR C1C ← 0
10011000データANLバス、#2A ← バス ∧ #
100110PPデータANL Pp、#2A ← ポート(p) ∧ # (ポート1-2)
10011PPANLD Pp、A28243 ポート(p) ← 8243 ポート(p) ∧ A 0-3 (ポート 4-7)
10100011移動A、@A2A ← ROM(PC 8-11 :A) (プログラムメモリの読み取り)
10100111CPL C1C ← ¬C
10110011JMPP @A2PC 0-7 ← A (間接JMP)
10110110住所JF0 アドレス2F0 = 1の場合、PC 0-7 ← アドレス
1100101選択RBn1BS ← n (レジスタバンクを選択)
11000110住所JZ アドレス2A = 0の場合、PC 0-7 ← アドレス
11000111移動 A、PSW1A ← PSW
11010111移動 PSW、A1PSW ← A
11100011MOVP3 A、@A2A ← ROM(0011:A) (ページ3のプログラムメモリの読み取り)
1110101SEL MBn1DBF ← n (メモリバンクを選択: PC 11
111F0110住所JNC JC アドレス2F = Cの場合、PC 0-7 ← アドレス
11100111RL A1A 1-7 ← A 0-6 ; A 0 ← A 7
11101RRR住所DJNZ Rr、アドレス2Rr ← Rr - 1; Rr ≠ 0 の場合、PC 0-7 ← アドレス
11110111RLC A1C ← A 7 ; A 1-7 ← A 0-6 ; A 0 ← C
76543210オペランドニモニックサイクル説明
RRRまたはR3210アルミALUI #immed
R0 @R00000A,# を加算 (A ← A + #)
R1 @R10001INC arg (arg ← arg + 1)ADDC A,# (A ← A + # + C)
R20010XCH A,arg (A ↔ arg)MOV R,# (R ← #)
R30011
R40100ORL A,arg (A ← A ∨ arg)ORL A,# (A ← A ∨ #)
R50101ANL A,arg (A ← A ∧ arg)ANL A,# (A ← A ∧ #)
R60110ADD A,arg (A ← A + arg)
R70111ADDC A,arg (A ← A + arg + C)
1010MOV arg,A (arg ← A)
1100DEC arg (arg ← arg - 1)
1101XRL A,arg (A ← A ⊻ arg)XRL A,# (A ← A ⊻ #)
1111MOV A,arg (A ← arg)
RRRまたはR3210アルミALUI #immed

派生マイクロコントローラ

フィリップス・セミコンダクターズ(現NXP)は、このシリーズの製造ライセンスを所有し、このアーキテクチャに基づいてMAB8400ファミリーを開発しました。これらはI²Cインターフェースを統合した最初のマイクロコントローラであり、フィリップス米国ではマグナボックス)の最初のコンパクトディスクプレーヤー(例:CD-100)に搭載されました。[12]

参照

参考文献

  1. ^ Laws, David; Blume Jr., Henry; Ekiss, John; Feng, Yung; Kline, Barbara; Raphael, Howard; Stamm, David (2008-07-30). Intel 8048マイクロコントローラの開発と普及に関するオーラル・ヒストリー・パネル(PDF) . 2014年12月27日時点のオリジナル(PDF)からのアーカイブ。
  2. ^ インテルコーポレーション 1978年。
  3. ^ abc Hayes, John P. (1978).コンピュータアーキテクチャと組織. McGraw-Hill International Book Company. pp.  57– 59. ISBN 0-07-027363-4
  4. ^ 「UPI-41AH/42AH ユニバーサル・ペリフェラル・インターフェース 8ビット・スレーブ・マイクロコントローラ」(PDF) . Intel. 1994年11月. p. 2. 2022年7月19日閲覧
  5. ^ TRS-80 モデル II テクニカルリファレンスマニュアル。ラジオシャック。135 ページ。
  6. ^ Tandy 6000/6000HD サービスマニュアル. Tandy/Radio Shack. 1985年. p. 213.
  7. ^ 「セクション4:キーボード」、テクニカルリファレンス:パーソナルコンピュータ、パーソナルコンピュータハードウェアリファレンスライブラリ(改訂版)、IBM、1984年4月
  8. ^ 「セクション 1: システムボード」、テクニカルリファレンス: パーソナルコンピュータ AT、パーソナルコンピュータハードウェアリファレンスライブラリ、IBM、1985年9月
  9. ^ 「Korg Trident サービスマニュアル」Korg、p. 4 。 2018年2月10日閲覧– Synthfool経由。
  10. ^ 「Korg Poly-61 サービスマニュアル」(PDF) 。 2010年6月2日時点のオリジナル(PDF)からアーカイブ2013年3月7日閲覧。
  11. ^ Gordon Reid (2004年11月). 「ローランドの歴史 パート1: 1930–1978」. 『ローランドの歴史』 . Sound On Sound Magazine . 2010年11月29日閲覧
  12. ^ データシート (pdf) Philips MAB8400ファミリー

参考文献

MCS-48
  • MCS-48 シングルコンポーネントマイクロコンピュータ(アプリケーションセミナーノートブック)。Intel Corporation。1978年。
  • MCS-48マイクロコンピュータ ユーザーズマニュアル(PDF)。Intel Corporation。1978年。
  • Smith, Lionel; Moore, Cecil (1979年1月). 「8049マイクロコンピュータ用シリアルI/Oおよび数学ユーティリティ」. Intel Corporation. アプリケーションノート AP-49.
  • Intel MCS-48マイクロコンピュータ用高速エミュレータ。Intel Corporation。1979年8月。アプリケーションノートAP-55A。
  • Dahm, Phil; Rosenberg, Stuart (1979年12月). Intel MCS-48およびUPI-41Aマイクロコントローラ. Intel Corporation. 信頼性レポートRR-25.
  • マイクロコントローラハンドブック(PDF)。Intel。1984年。注文番号210918-002。
  • 8ビット組み込みコントローラ(PDF) . Intel. 1991. 注文番号 270645-003.
UPI-41
  • Intel (1980). UPI-41A ユーザーズマニュアル(PDF) . 注文番号 9800504-02 Rev. B.
  • マイクロプロセッサ周辺装置 UPI-41A/41AH/42/42AH ユーザーズマニュアル(PDF) . Intel Corporation. 1993年10月. 231318-006.
  • ビーストン、ヨハン;カーン、ジム(1980年5月)「8741A/8041Aデジタルカセットコントローラ」インテルコーポレーション アプリケーションノート AP-90
  • MCS-48ファミリーのアーキテクチャ
  • Coprolite 8048 プロジェクト( Wayback Machineより)(2014年7月17日アーカイブ)
  • コンピュータ歴史博物館、インテル 8048 マイクロコントローラ口述歴史パネル
  • マイクロコントローラ NEC 8741(シリコンチップの画像)
「https://en.wikipedia.org/w/index.php?title=Intel_MCS-48&oldid=1317919833」から取得