2021-12-29 22:54 — asano
カテゴリー:
Universal Monitorの基本機能が動くようになったので、保留してあった2651を動かしてみることにします。
空きソケットに残りのICを搭載します。
コンソールドライバのソフトウェアも書かなくてはなりませんが、既に2650のプログラムには慣れているのでどうということはありません。
SCN2651Cがもちろん今回の主役、Programmable Communication Interface(PCI)と呼ばれるシリアル通信のデバイスです。同期通信にも対応していますが調歩同期のみで使用します。
下右側はSG-8002DC、ボーレート用のクロックで2651指定の5.0688MHzに設定しています。これで9600bpsまでの一般的なレートが出せます。19200bpsもできなくはありませんが約3%の誤差があります。クロック入力を4.9152MHzにすればピッタリになるそうですが今度は9600bps以下がずれてしまいます。どうせなら4.9152MHz前提にしてくれていれば良かったんですけどね。
左はEMILY Board用の24LC64です。
難しいところはなさそうだったので2651をコンソールとして使うようにUniversal Monitorをビルドして一発勝負してみたのですが、ウンともスンとも言いません。
こうなるとコンソールをEMILY Boardに戻して使えるようにし、2651への手動アクセスを試してみたくなります。ということでI(n), O(ut)コマンドを追加しました。
まずは2651のレジスタを読んでみます。ポート00~03(I/Oアドレスのデコードを省略しているので他のアドレスでも可)を読んでみるとそれぞれ00~03が読み出されます。これは2651が応答していない可能性が高いです。
2651のCEにカウンタをつないでみてもパルスが出てきません。GALの論理がおかしいのか、追加したI(n), O(ut)のプログラムがおかしいのか。
GALの入力であるM/IOやADR13-E/NEは変化しているようなのでGALが疑わしいようです。
GALを抜いてベリファイをかけてみると一致しません。GALを書き直したところCEが動くようになり、レジスタもそれらしい値が読み出されるようになりました。どうやらGALに書かれていたのは開発途中のものだったようです。
試しに手動で初期化をかけてみるとステータスも変化しTxC, RxCからクロックが出力されるようになりました。
再度2651をコンソールにしようとしましたが、やはりウンともスンとも言いません。
残るはコンソールドライバです。ソースを確認したところステータス待ちの論理が逆になっていました。これを修正したところ無事コンソールとして使えるようになりました。
コメント
4.9152MHz 対応
ん、若松さんにある SCN2661BCN なら 4.9152MHz で、38400 bps まで出せるけど、故意に SCN2651C にしたのではなかった?
#若松さんとこだと幾つか買うかどうしようか考え中の石があって、その中の一つです。8250/16550系のストックがあるし、店舗リストも何年にも渡って全然減っていないのであんまり急ぎではない感じですが。
Re: 4.9152MHz 対応
2661の存在は知っていましたが2651で十分と思って詳細まで見ていませんでした。
個人的には9600bpsを標準にしているので特に困っているわけではありません。ただ何で一般的な4.9152MHzを選ばなかったのかなぁと。
# 昔は38400bpsだったのですが、いろいろとっかえひっかえするようになるとほぼどの石でも出せる9600bpsに収束しました。
コメントを追加