DCJ11とTnagNano9Kの接続回路

目次

DCJ11 と Tang Nano 9K を接続する回路を作成した。互いに動いている電圧が異なり直接接続できないので、SN74VLC245 でレベル変換をして接続する。ただし DCJ11 への入力は TTL level なので、Tang Nano 9K の出力を直接接続可能だった。


main board

DCJ11 と Tang Nano 9K のインターフェイス

DCJ11 を動かした先行事例はPDP-11 を LSI 化した DCJ11 マイコンで紹介したように複数あります。そこで今回のプロジェクトでは、すでに動作実績がある方法を参考にさせてもらうことにしました。特に FPGA のポート数不足とメモリ(オンボード SDRAM)について、A2PDP11 (10) 4MB RAM の実装| ushicowを参考にさせてもらいました。

DCJ11 と Tang Nano 9K の駆動電圧変換

DCJ11 は電源と IO の電圧が 5V ですが、Tang Nano 9K の IO は 3.3V と 1.8V で動いています。そのため DCJ11 の 5V と Tang Nano 9K の 3.3V または 1.8V を直接は接続できません。

DCJ11 から Tang Nano 9K への信号

上記のように、DCJ11 は 5V の回路、Tang Nano 9K は 3.3V と 1.8V の回路で構成されています。そのため DCJ11 からの信号を Tang Nano 9K に入力することはできません。

ただし一部の IC ではトレラント機能を持っており、駆動電圧よりも高い電圧の入力を加えられることがあります。しかし Tang Nano 9K に使わ r ている FPGA の Gowin GW1NR-9 のデータシートでポートが 5V トレランとという記述を見つけることができませんでした。そのため DCJ11 と Tang Nano 9K の接続には、何らかの対処が必要です。

このような場合に使われるのが電圧レベル・シフタです。動作速度の点から、SN74CB3T3245が良かったのですが、PCBA1での入手性の点からSN74VLC245を使用することにしました。

汎用ロジック IC の入力電圧(Vi)は、通常 Vcc(電源電圧)+0.5V のように決められており、電源電圧よりも高い電圧を入力できません。しかし SN74VLC245 の 7.3 Recommended Operating Conditions を見ると Vi は 5.5V と Vcc への依存がありません。そのため DCJ11 の出力を受け入れることができます。そして、Vcc を 3.3V にすると出力が 3.3V となり安全に Tang Nano 9K に接続できます。

そこで DCJ11 からの出力信号は、全て SN74VLC245 を通して Tang Nano 9K に接続します。

Tang Nano 9K から DCJ11 への信号

反対に Tang Nano 9K の出力は 3.3V と DCJ11 の駆動電圧よりも低いため、直接接続しても壊れるということはありません。しかし論理回路的には DCJ11 は 5V を H となっているので、Tang Nano 9K の H 出力が電圧が低いために H の信号と認識されない可能性があります。

この場合には、DCJ11 の出力とは逆方向の電圧レベル・シフタを使用して電圧を上げることができます。

しかし実際の論理回路は電圧にある程度の幅を持って H や L と認識しています。そのためちょうど 5V でなくとも DCJ11 は H と認識する可能性があります。

DCJ11 のデータシートを確認すると、TEST1 と TEST2 以外の入力は全て TTL level となっています2。具体的には 2.2V 以上を H、0.6V 以下を L と認識するとのことです。そのため Tang Nano 9K の出力は 3.3V のため直接 DCJ11 に接続しても論理値が正しく認識されると考えられます。また、SN74VLC245 の DCJ11 側への出力も同様です。

そのため DCJ11 への入力に関しては、レベルの変換は必要ありません。

ただし Tang Nano 9K の 1.8V ポートについては、MOS-FET と pull-up 抵抗を使ってレベルを変換しています。また、この場合には、同時に論理値も反転(NOT)されます。

DCJ11 の ABORT 端子については、入力ではなく DCJ11 内部で ABORT が発生した場合には出力ともなります2。そのため、オープン・コレクタ回路で接続する必要があります。

FPGA のポート数の不足の解消

DCJ11 のピン数に比べて Tang Nano 9K のポート数が不足します。そのためよりポート数の多い Tang Primer 20K や 25K を考えたのですが、基板と接続するためのコネクタのピッチが非常に狭いために諦めっました。

また、この問題についてはushicowが時分割で取り込むアイデアを使っていたので3、DAL と AIO, BS 信号を取得する所でこの方法を使うことにしました。

周辺装置

DCJ11 は演算機能のみです。そのためコンピュータとなるためには、他の構成要素であるメモリと入出力装置が必要です。メモリに関しては、Tang Nano 9K が 64M bits の SDRAM を持っているので4、これを主記憶装置として使用できます。

入出力装置としては、最低限ターミナル装置が必要です。また、外部記憶装置(紙テープ装置とディスク装置)が必要です。これらは、Tang nano 9K 上で制御部分をエミュレーションします。実際のデータの保管には、外部の記憶媒体を使用します。

外部の記憶媒体として、Tang nano 上の SD カードを使う例が示されています5。しかし、紙テープを考えるとテープの交換ができない、ディスク装置で考えるとファイルシステムがないためddコマンドを使う必要があり使い勝手がよくありません。そこで、入出力の速度低下が予想されますが、Raspberry Pi を SPI で接続して外部記憶媒体として使うことにしました。またターミナル装置を切り替えることで、上手くすると DCJ11 をリモートで使えるかもしれません。

DCJ11 の回路図

picture 0

picture 1

回路図の PDF

参考サイト