2019-09-24 21:08 — asano
カテゴリー:
メモリ基板、確かにメモリではあるのですがそれだけでもないので「EMILY Board」と名付けました。
Environment for Microprocessor Introduction ... の略というのはもちろん後からのこじつけで、二式大型飛行艇の連合国側コードネームからの命名です。
写真は鹿児島の鹿屋航空基地資料館に展示されている二式大型飛行艇、唯一の現存する機体のはずです。
これだけではなんなのでこれまで書かなかった資料編をお送りします。
コネクタ ピン配置
まずは基板上部のCPUボードへのコネクタです。
ピン | 信号 | 備考 | ピン | 信号 | 備考 |
---|---|---|---|---|---|
1 | VCC | EMILY Boardから+5Vを供給 | 2 | VCC | EMILY Boardから+5Vを供給 |
3 | RESET | EMILY Boardが駆動(Open-Drain) | 4 | ||
5 | RD | 6 | |||
7 | WR | 8 | |||
9 | A0 | 10 | |||
11 | A1 | 12 | |||
13 | A2 | 14 | |||
15 | A3 | 16 | |||
17 | A4 | 18 | |||
19 | A5 | 20 | |||
21 | A6 | 22 | |||
23 | A7 | 24 | |||
25 | A8 | 26 | |||
27 | A9 | 28 | |||
29 | A10 | 30 | |||
31 | A11 | 32 | |||
33 | GND | 34 | GND |
ピン | 信号 | 備考 | ピン | 信号 | 備考 |
---|---|---|---|---|---|
1 | CS0 | D0~D7のセレクト | 2 | CS1 | 予約:D8~D15のセレクト |
3 | D0 | 4 | D8 | 予約 | |
5 | D1 | 6 | D9 | 予約 | |
7 | D2 | 8 | D10 | 予約 | |
9 | D3 | 10 | D11 | 予約 | |
11 | D4 | 12 | D12 | 予約 | |
13 | D5 | 14 | D13 | 予約 | |
15 | D6 | 16 | D14 | 予約 | |
17 | D7 | 18 | D15 | 予約 | |
19 | GND | 20 | GND |
6502ボードのようにCPUボード側でアドレスデコードする場合はCS0, CS1を使うことが多いと思いますが、RD, WRを使うこともできます。
将来の16ビットバスへの拡張も考慮していて、その場合はIDT7134ののったボードをもう1枚追加してこの2つのコネクタは並列に接続します(ATmega164から追加したIDT7134へのアクセスのコネクタは別途追加)。バイト書き込みにはCS0, CS1を使用します。
さらに32ビットバスへの拡張には34ピンは共通に使用し、20ピンのコネクタをD16~D31用に追加を考えています。
続いてターミナル接続用のコネクタ(基板右下)です。TTL-232R-5Vを2本接続できます。
ピン | 信号 | 備考 | ピン | 信号 | 備考 |
---|---|---|---|---|---|
1 | GND | 2 | GND | ||
3 | N.C | 4 | N.C | ||
5 | N.C | 6 | N.C | ||
7 | RxD1 | 8 | RxD0 | ||
9 | TxD1 | 10 | TxD0 | ||
11 | N.C | 12 | N.C |
基板に近い下側のRxD0, TxD0はこのEMILY Board自体をコントロールするためのポートです。Universal Monitor同様Dump, Set, Punch, Loadの各コマンドでメモリ内容を参照・変更することができます。その他、共有メモリのアドレス変更、RESETを使用してターゲットCPUの停止・リセットができます。
上側のRxD1, TxD1は共有メモリ経由でターゲットCPUから使えるポートです。
共有メモリ
ターゲットCPUからEMILY Boardに要求を出すための共有メモリのフォーマットです。4k×8bitのメモリ空間のうち任意の16バイト境界に置くことができます。
Offset | Name | Remarks |
---|---|---|
+0x00 | Signature | 必ず0xA5 |
+0x01 | Handshake | ターゲットCPUは0xCC、EMILY Boardは0x33を書く |
+0x02 | Command | ターゲットCPUからEMILY Boardへのコマンド |
+0x03 | Status | EMILY BoardからターゲットCPUへのステータス |
+0x04 | Data[0] | |
+0x05 | Data[1] | 現時点では未使用 |
... | ... | ... |
+0x0F | Data[11] | 現時点では未使用 |
ターゲットCPUはHandshakeが0x33であることを確認し、Command, Dataを書いてからHandshakeに0xCCを書きます。
EMILY BoardはHandshakeが0xCCになるのを待ってCommand, Dataを取り出して要求を処理します。処理が終わったらStatus, Dataを書いてからHandshakeに0x33を書きます。
ターゲットCPUはHandshakeが0x33になるのをまってからStatus, Dataを取り出します。
現在定義されているコマンドは以下の4つのみです。
Command | Name | Description |
---|---|---|
0x00 | INIT | 現状特に何もしません。 |
0x01 | CONOUT | Data[0]の内容をTxD1に出力します。 |
0x02 | CONIN | RxD1の入力を待ってData[0]に入れます。 |
0x03 | CONST | RxD1に入力があれば0x01、無ければ0x00をData[0]に入れます。 |
上記のどのコマンドも異常終了は無いのでStatusは0x00となります。未定義のCommandの場合はStatusは0xFFになります。
ATmega164 ポート割り当て
コントローラのATmega164のポート割り当ては以下のようになっています。
Port | Bit | Name | Description |
---|---|---|---|
A | DB[7:0] | IDT7134のデータバス ALEH, ALELでラッチしIDT7134のアドレス指定にも使用 |
|
B | 0 | CS0 | IDT7134のCEL(D0~D7) |
1 | CS1 | IDT7134のCEL(D8~D15) (予約) | |
2 | CS2 | IDT7134のCEL(D16~D23) (予約) | |
3 | CS3 | IDT7134のCEL(D24~D31) (予約) | |
4 | RESET | ターゲットへのRESET | |
5 | 未使用 | ||
6 | 未使用 | ||
7 | 未使用 | ||
C | 0 | SCL | (予約) |
1 | SDA | (予約) | |
2 | 未使用 | ||
3 | 未使用 | ||
4 | 未使用 | ||
5 | 未使用 | ||
6 | 未使用 | ||
7 | 未使用 | ||
D | 0 | RxD0 | |
1 | TxD0 | ||
2 | RxD1 | ||
3 | TxD1 | ||
4 | ALEH | DB[3:0]をIDT7134のA[11:8]としてラッチ | |
5 | ALEL | DB[7:0]をIDT7134のA[7:0]としてラッチ | |
6 | RD | IDT7134のOEL | |
7 | WR | IDT7134のWEL |
Add new comment