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


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

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

[第16回]


●I/O端子の設定(5)

今回も前回からの続きです。
今回の設定でやっとI/Oセレクト端子が使えるようになります。
今回はPACS(オフセットアドレスA4H)の設定です。
PCS端子のI/Oアドレス範囲を設定します。


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


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

PCS端子はMemory mapped I/Oとしても、I/O mappedとしても使えますが、このボードではごくノーマルに普通のI/Oアドレスに割り付けて使います。(前回MPCSレジスタのbit6を0にしてI/O mappedとしました)。
I/Oアドレスは64KBのアドレス空間ですから16ビット(A15−A0)のアドレスとして使います。
PACSレジスタのビット15〜ビット7はベースアドレスのA19〜A11を定義しますが、I/Oアドレスとして使う場合にはA19〜A16は0000を指定しなければなりません。
AM188は64KBのI/O空間にアクセス可能なのですが、6本あるPCS端子(PCS6〜PCS5、PCS3〜PCS0)はそれぞれ8ビット(256バイト)のI/Oアドレスしかアクセスできません。
Table5−6にあるように、PCS0はベースアドレス〜+255、PCS1はその上の+256〜+512というように約2KBのI/O空間に配置されます。
PACSのアドレス指定ビットの下位がA11までなのは、そこからきていると考えられます。
ともかく64KBのうちの2KBに割り当て可能ということなので、どこでもよいのですけれど、まあ真ん中当たりということでベースアドレスとしては8000Hにしました。

[2017.2.24追記]
ベースアドレスを0000Hに変更しました([第17回]参照)。
[追記ここまで]

PACSレジスタの上位9ビットが 000010000 です。
下位7ビットはReadyモードの設定とウェイトステートの設定です。
I/Oに対してどのくらいのウェイトが適切かはよく考えなければいけないところかもしれませんが、とりあえずは2ウェイトとしました。
以上によってPACSレジスタに設定する値は 0000100001110110(0876H)になります。
下のリストは前回のMPCSの設定の後の部分です。

[00066] F01C  BAA4FF            MOV DX,FFA4;pacs
[00067] F01F  B87608            MOV AX,0876;i/o base address=8000
[00068] F022  EF                OUT DX,AX
[00069] F023  BA8380            MOV DX,8083;**** 82c55
[00070] F026  B080              MOV AL,80;**** all port out
[00071] F028  EE                OUT DX,AL;****
[00072] F029  8CC8              MOV AX,CS;*****
[00073] F02B  BA8080            MOV DX,8080;*****
[00074] F02E  EF                OUT DX,AX;*****

そのように設定してから、82C55の全ポートを出力に設定し、テストとしてCS(Code Segment register)の値をAポートとBポートに出力しています。
ボード上の82C55はND80Z3.5と同様、I/Oアドレス80〜83に割り付けています。
上で説明しましたようにAM188ではI/Oアドレスは16ビットですから、上のプログラムリストのようにI/OアドレスをDXレジスタに入れて、出力する値はAXまたはALに入れて、OUT命令を実行することになります。
8086のOUT命令は16ビットアドレスを指定する場合、OUT DX,AXかOUT DX,ALしかありません。

ここまでAM188について駆け足で説明してきましたが、やっと区切りがつきましたので、AM188についてはここでしばらくお休みすることにして、次からはまた「マイコン独立大作戦」に戻って近況を報告することにいたします。

16ビットマイコンボードの製作[第16回]
2017.1.23upload
2017.2.24追記

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