2020-08-08 22:51 — asano
カテゴリー:
またEMILY Board使って新たなプロセッサが動くようになりました。
今回作ったのはIntelのMCS-51ファミリの8031/8032用のボードです。
このファミリはEA/Vppで内蔵ROMを切り離せるので8058とか8751なども使えると思いますが、8031/8032の入手性は悪くないのでわざわざROM内蔵品を使うことも無いでしょう。
左上の24LC64 EEPROMはEMILY Boardの設定用のもの、特に無くても動作します。CPUボードをいろいろ付け替える際に手間が省けるので載せています。
SN74LS573Nはアドレスラッチ、マルチプレクスバスなので必要です。今回上のコネクタと8031/8032のピン配置がうまくマッチしたので配線がとても楽でした。
GAL16V8Bはグルーロジックとして使ってみました。自分の回路でまともに(GALのテストとかではなく)使うのは初めてですね。本来は別のボードに使おうとして「GAL動かしてみた」のですが、完成はこの8031/8032ボードが先になってしまいました。中身については後ほど。
発信器はいつものSG-8002DC、周波数は11.0592MHzです。Timer 2の使える80C32ならもっと自由に選べるのですが、ボーレートジェネレータにTimer 1しか使えない8031に差し替えることも考慮してこの周波数にしています。内蔵UARTを使わないならこの周波数にこだわる必要はありません。
P80C32はちょうど手近にあったものを使いました。
6ピンのコネクタは内蔵UART用のものです。
左上の20ピンコネクタのところ、上下を接続して16ビット拡張ボードを使って8kB化できるようにしています。
ここから青線(データバス)を辿った先がアドレスラッチですが、コネクタへも8031/8032へも隣接するピン同士の接続になっているのがわかると思います。被覆剥いたりしなくてすむのとメッキ線はハンダ付けのとき押さえていなくて良いので作業しやすいのです。
最後にGALの中身についてです。
現状では次のようになっています。
Name dec;
Partno GAL16V8B;
Date 2020/07/19;
Revision 0;
Designer asano;
Company Electrelic;
Assembly E_8031;
Location dec;
Device G16V8;
/* Input */
Pin 1 = !PSEN;
Pin 2 = !RD;
Pin 3 = !WR;
Pin 4 = A12;
Pin 7 = A15;
Pin 8 = MODE;
Pin 11 = !RESIN;
/* Output */
Pin 12 = !CS0;
Pin 13 = !CS1;
Pin 17 = RESET;
Pin 18 = !WROUT;
Pin 19 = !RDOUT;
/* */
RESET = RESIN;
WROUT = WR;
RDOUT = RD # PSEN;
CS0 = !A12;
CS1 = A12;
どう見てもGAL使うまでも無いですね。インバータが2つと負論理ORなので74LS00で済んでしまいます。
なのになぜGALかというと、GAL使ってみたかったというのもありますが、メモリ構成を変えてみたいからというのがメインです。
現在はコード空間と拡張RAM空間を区別せずに8kBとしていますが、それぞれ4kBずつ割り当て、しかもそれだけだとコード空間の書き換えが出来ないので8000H以降のアドレスではコード空間用の4kBを拡張RAM空間に見せて書き込みできるように、といったことを計画しているからです。そのために使っていないA15が配線してあったりします。
コメントを追加