目次

アーキテクチャ概要

 i8048のアーキテクチャは、次のブロック図を見ると理解できます。



 次のブロックに分けて見ていきます。


 各ブロックの概要を見ていきます。


内蔵ROM  内蔵ROMは、i8048では1024バイトと規定。  国内で使われている8ピンのPICの内蔵FlashROMの  サイズが512バイトから2048バイト程度。発売年を  考えると、そこそこに大きな容量でしょう。  ただし、内蔵ROMを殺して外部ROMのプログラムを  読み出して実行できるカラクリを用意していた  ので、1024バイトの2倍、4倍という容量も使う  ことはできます。
内蔵RAM  内蔵RAMは、i8048では64バイトと規定。  CPUの中には、汎用レジスタを持たないで  内蔵RAMに8バイトx2を確保していると  いうのが特徴でしょう。  最近のマイコンでは、CPU内部にレジスタを持ちますが  i8048の頃は、容量の関係からRAM上に汎用レジスタを  用意するのは、特段珍しいことではなかったです。  MOSTEKの6502は、RAMの$00から$FFをゼロページとして  利用するアーキテクチャでした。  汎用レジスタを256バイト持っているとして、CPU内部の  レジスタ2バイトx2に限定しています。  汎用レジスタは、RAM上におくので、CPU内部には  Accumlatorレジスタをひとつ用意するだけ。  面白いのは、汎用レジスタ、スタック、汎用レジスタ  と3ブロックを並べ、その後に汎用メモリエリアを  確保していること。  スタックが8バイトしかないので、サブルーチン  コールするときには、スタックを使い切らないか  考えておかないと、暴走させることになります。  汎用レジスタの内容を破壊したくないような使い方  では、2ブロックのレジスタを切り替えて利用する  という芸当を見せることができるでしょう。
ポート1  ポート1は、入力か出力ポートになります。  ビットごとの入出力方向を設定できず  入力あるいは出力のどちらか。
ポート2  ポート2は、4ビットごとに分けて使います。  ポート2の下位ニブルは、外部メモリのアドレス上位  4ビットを指定します。  ポート2の上位ニブルは、汎用のI/Oで使えます。
BUSインタフェース  BUSインタフェースは、外部メモリのアドレス出力と  データ入出力を担当。  アドレス出力後、データ入出力に切り替えるので  時分割マルチプレクスで、ピン数を減らす工夫が  あります。
内蔵タイマーカウンタ  内蔵タイマーカウンタは、システムクロックを480分周  したクロックをカウンタに入れて+1するか、外部の  イベントトリガーでカウンタを+1するかを選択でき  ます。  カウンタは8ビットサイズですが、初期値を与えておき  255から0に変化するときに、オーバーフロー割込みを  発生させることが可能。  システムクロックの分周クロックを利用すれば、タイマー  割込み処理に使えます  イベントトリガーをカウンタのクロックにするなら  イベントをモニタする処理に使えます。
条件分岐機構  ブロック図で、使われる信号を確認します。  信号をリストしてみます。  上からの6信号は、割込みに関係する分岐で  使い、最後の2信号はレジスタの状態を活用  すると判断できます。
制御タイミング処理  ブロック図で、使われる信号を確認します。  信号名と機能をリスト。  nINTは、外部割込みの印加で利用。  nRESETは、リセットを印加するため。  PROGは、外部にあるICをプログラムでアクセスするために利用。  EAは、内蔵ROMを殺して、外部ROMを使うとき利用。  XTALは、外付けの水晶発振子を接続。  ALEは、BUSからメモリのアドレスを出力し、ラッチする制御用。  nPSENは、外部ICからプログラムを読み込むとき利用。  nSSは、シングルステップ動作の制御で利用。  nRDは、データを入力する制御信号。  nWRは、データを出力する制御信号。

目次

inserted by FC2 system