カードエッジコネクタ仕様


 Z-1/FX-890Pには外部回路を繋げるためのコネクタがカードエッジコネクタと30pinコネクタの二つが用意されています。
ここではこの内のカードエッジコネクタについて説明します。

 カードエッジコネクタは本体上部中央のカバー内にあります。
Z-1系ではこのカバーは簡単に外れるようになっているのですが、FX-890Pでは一度裏蓋を外さないと取れないようになっているので注意して下さい。

1.ピン配置

 カードエッジコネクタの仕様はSHARP製ポケコンPC-G801と互換性があります。


コネクタを正面から見た場合のピン配置

ピン番号 名称 方向 説明
Vcc   +5V出力
Vcc   +5V出力
ALE out アドレスラッチイネーブル
CS1 out チップセレクト1
CS2 out チップセレクト2
RSTO out リセット出力
Vin   +5V入力
INT in 割り込み入力
WR out ライト信号
10 RD out リード信号
11 A17 out アドレスバス
12 A16 out アドレスバス
13 S1 out CPUステータス1
14 S2 out CPUステータス2
15 D7 in/out データバス
16 D6 in/out データバス
17 D5 in/out データバス
18 D4 in/out データバス
19 D3 in/out データバス
20 D2 in/out データバス
21 D1 in/out データバス
22 D0 in/out データバス
23 A15 out アドレスバス
24 A14 out アドレスバス
25 A13 out アドレスバス
26 A12 out アドレスバス
27 A11 out アドレスバス
28 A10 out アドレスバス
29 A9 out アドレスバス
30 A8 out アドレスバス
31 A7 out アドレスバス
32 A6 out アドレスバス
33 A5 out アドレスバス
34 A4 out アドレスバス
35 A3 out アドレスバス
36 A2 out アドレスバス
37 A1 out アドレスバス
38 A0 out アドレスバス
39 GND   グランド
40 GND   グランド

※「方向」のin/outはポケコン側から見たときの信号の流れを示しています。
※+5V出力は電源OFF時にも供給されています。
※RSTOは電源OFF時およびリセット時にHIレベルになります。

2.電気特性

 電圧レベルはTTL(HIレベル=5V/LOWレベル=0V)で、許容電流はIOL=4mA、IOH=2mAです。
ただし、電源ラインの許容電流は1mAしかありません。
なのでTTLなICに直接信号線を接続しても大丈夫ですが、電源をポケコン側から取る場合はあまり負荷を掛けないように注意する必要があります。 
大事を取るなら電源は外部に取るほうが良いでしょう。

 各信号線のタイミングは、

この様になっています。
したがって外部機器から見た場合、CS1もしくはCS2がLOWの状態でRDもしくはWRがLOW→HIに立ち上がったタイミングでデータのやり取りを行なう事になります。

 余談ですが、Z-1/FX-890Pで使用されているCPUである80C188EBのアドレスバスとデータバスは本来は多重化されているためそのままでは使用することが出来ません。
そこで、アドレスバスとデータバスの信号を分離するために使用されるのがALEで、ALEがHI→LOWに立ち下がるタイミングでラッチを行なうことでアドレスラインを取り出す事が出来ます。(データラインはタイミングの関係上直接接続して使う事が出来ます。)
 しかし、カードエッジに出ているアドレスバスとデータバスはZ-1/FX-890Pに搭載されているSC(スタンダードセル)というLSIによりすでに信号が分離されているため、この辺の事は考えなくても良くなっています。

 INTは外部機器側からポケコン側へ割り込み要求を行う為のpinです。
カードエッジの割り込み要求はCPUの「外部割込み4(INT4)」に対応しており、外部機器から任意のタイミングで割り込みを発生させる事が出来ます。
ただし、カードエッジ割り込みを有効にするためにはペリフェラル制御ブロックで各種パラメータを設定してやる必要があり、通常状態ではカードエッジ割り込みは無効になっています。(詳しくは後述

 S1/S2については良く分かりません。
CPUの同名pinと同等だとするとS0が出ていないため利用価値が無い(S0〜S2の3bitでCPUの状態を通知するから)のだが…。

 Vinはその名の通り電源を繋げばポケコンを駆動させられ…るはず。(回路を見た限りでは)
もっとも実際にココに電源を繋いでみた訳ではないのでなんとも言えないですけど。

3.データ入出力

 カードエッジに外部機器を接続しただけではポケコン側からアクセスすることはできません。
カードエッジにアクセスするためにはカードエッジのアドレスラインをCPUにマッピングしてやる必要があるのです。
 具体的にはカードエッジに出ている2本のチップセレクトをCPUの論理アドレスのどの範囲で有効にするかをペリフェラル制御ブロックで設定することになります。(設定次第ではアドレス空間ではなくI/O空間にマッピングすることもできます。)
ここで注意して欲しいのは、カードエッジに出てくるアドレスとCPUからアクセスする際のアドレスは異なっていると言う点です。


マッピング時のイメージ

これはカードエッジ側はいちいちアドレスデコード部などを作る必要はなく、単にチップセレクトさえ見ていれば良いという事を意味しています。

4.設定方法

 ペリフェラル制御ブロック(PCB)はI/O空間の0000H〜00FFHに配置されています。
そしてカードエッジに出ているCS1とCS2はPCBではそれぞれGCS4とGCS5に対応しています。

I/O 名称 機能
90H GCS4 Start GCS4チャネルスタートレジスタ
92H GCS4 Stop GCS4チャネルストップレジスタ
94H GCS5 Start GCS5チャネルスタートレジスタ
96H GCS5 Stop GCS5チャネルストップレジスタ
マッピングを行なうアドレスは上位10ビットで指定できるため、メモリ空間では1024バイト単位、I/O空間では64バイト単位で任意の位置に配置する事が出来ます。
また、マッピングを行なった領域がオーバーラップするようにも設定できます。
ただしオーバーラップしているアドレスにアクセスした場合は複数のチップセレクトが同時にアクティブになるため、普通はこのような使い方はしないと思いますが。
 終了アドレスは設定値-1が実際のアドレスとなります。
 Z-1/FX-890PでメモリとI/Oがどのように使用されているかというと、

メモリマップ

I/Oマップ
このようになっています。
メモリマップにおいてメモリが32KBの場合はRAM32KB、同64KBの場合はRAM64KBのところまでRAMが配置されています。
ここで未使用またはユーザー開放と書かれている部分にマッピングを行なうのが良いでしょう。
 では実際にどのようにして設定を行なうのかをプログラムで示します。
例)
 カードエッジのCS1を使用し、CS1に割り当てるアドレスの範囲は01000Hで、これをメモリアドレスB0000H〜に割り当てる場合。
MOV AX,0B000H # 開始アドレスはB0000Hでウェイト数は0
OUT 90H,AX # GCS4(CS1) Startに設定
MOV AX,0B10AH # 終了アドレスはB1000H-1でメモリ空間にマッピングしウェイトは無効
OUT 92H,AX  # GCS4(CS1) Stopに設定 
IRET
 Z-1/FX-890Pは電源を入れる度にシステムの設定が初期化されるため、これらの設定は毎回実行してやる必要があります。

5.カードエッジ割り込み

 カードエッジに出ているINTを使用することでポケコン側に任意のタイミングで割り込みを発生させることができます。
この時発生する割り込みは外部割込み4で、これに関連しているのが割り込みコントロールレジスタI4CON(I/O:16H)とベクタ11H(メモリアドレス:00044H)です。

 外部割込み4が発生するとベクタ11Hで指定されたルーチンに処理が移行されます。
割り込みルーチン内での注意点は、
 では実際にどのようにして設定を行なうのかをプログラムで示します。
例)
 カードエッジ割り込みで処理を行なうルーチンをCARDINTとし、INTがLOW→HIに変化した時に割り込みを行なう場合。
CLI # 割り込みを禁止する
MOV BX,0044H # ベクタ11Hに対応するベクタアドレス
MOV WORD PTR [BX],OFFSET CARDINT # 処理ルーチンのオフセットアドレスを設定
ADD BX,2
MOV WORD PTR [BX],SEGMENT CARDINT # 処理ルーチンのセグメントアドレスを設定
MOV AX,0007H # 優先度7でエッジモードで割り込み許可
OUT 16H,AX # I4CONにパラメータ設定
STI # 割り込みを許可する

例)
 カードエッジ割り込みを禁止するとき。

CLI # 割り込みを禁止する
MOV AX,000FH # カードエッジ割り込みは禁止
OUT 16H,AX # I4CONにパラメータ設定
STI # 割り込みを許可する

6.本書について

 本書は「Z-1/FX-890P活用研究(工学社)」に記載されていたカードエッジコネクタ関連の記事を編集し直したものです。

 なお、本書の内容について工学社およびCASIOに問い合わせる事はおやめください。

NIFTY-Serve YHW02344
村中 昭雄(STEAR)