2017.1.10
前へ
次へ
ホームページトップへ戻る


16ビットマイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第10回]


●UMCS(Upper Memory Chip Select Register)

新年になってから、あっという間にもう10日間が過ぎてしまいました。
元日から今日までずっと独立大作戦に取り組んでおりました。
やっとND80Z3.5のZB3BASICシステムが独立できそうなところまできました。
近いうちにその成果をご報告いたしますので、今しばらくお待ちください。

さて今回は前回に続いてPCBレジスタの初期設定についての説明です。
AM188が起動して最初に実行する初期設定の部分です。

[00053]                     ;
[00054] F000  BAA0FF        START0:MOV DX,FFA0;umcs
[00055] F003  B83FE0            MOV AX,E03F;128k,noready
[00056] F006  EF                OUT DX,AX

I/OアドレスFFA0(およびFFA1)にE03Fを出力しています。
FFA0は前回引用したPCBマップ(部分)の一番下にあります。
UMCS(Upper Memory Chip Select Register)です。

AM188には6本のメモリチップセレクト端子(UCS、LCS、MCS3〜MCS0)と、6本のI/Oセレクト端子(PCS6〜PCS5、PCS3〜PCS0)があります。
各チップセレクト端子はそれぞれを対象とするPCBレジスタに必要な設定をした後に使用可能になります。
ただしUCSを定義するUMCSレジスタだけはリセット時に初期値が設定されて、起動直後からアクティブになります。


[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual

メモリセレクト端子6本の内、最も基本的なものがUCSとLCSです。
UMCSはUCSを設定するレジスタ名です。
UMCSで設定するメモリセレクト範囲の上限はFFFFFに固定されていて、下限はプログラムで可変できるようになっています。
FFFFFが上限アドレスということから、UCSは通常はプログラムROMのセレクト端子に接続します。


[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual

UMCSはリセット後には初期値としてF03Bが設定されます。
UCSがアクティブであるアドレス範囲はF0000〜FFFFFの64KBになります。
これはハードウェア上のアクセス可能な範囲で、それをソフトウェアでアクセスできるかどうかは、CS(Code Segment)レジスタの設定によって決ります。
起動直後にはソフトウェアでアクセス可能な範囲はFFFF0〜FFFFFの16バイトに限られます([第7回]参照])。
そのようにソフトウェアでアクセスできるメモリ範囲はCSレジスタなどのセグメントレジスタで設定した範囲になるのですが、それとは別にハードウェアとしてアクセス可能なメモリ範囲を設定しておく必要があります。
16ビット版TK−80モニタプログラムでは最初にUMCSレジスタにE03Fを設定しています。
AM188のUCSは最大512KBのメモリ範囲をアクセス可能ですが、プログラムROMとして当面はそんなに大きなメモリは必要ありません。
使い勝手を考えて128KBの27C1001を実装するつもりですからその設定値になります。

16ビットマイコンボードの製作[第10回]
2017.1.10upload

前へ
次へ
ホームページトップへ戻る