2018年5月15日火曜日

自作クローニングケーブルにダイオードが必要な理由

 自作クローニングケーブルを紹介しているBLOG等をいくつか見かけますが、内容に怪しい点があるものがあるので、改めて基本的な考え方を説明します。

 次図はネットで拾ったIC-R6の回路図のCI-Vインターフェイス部分です。CI-Vは1対1のインターフェイスではなく初期のイーサネット(10BASE5)で使われたような多重アクセス/衝突検出(MA/CD)的な考え方で作られており、1本の信号線を共有して数台を並列に接続できるように考えられています。各装置はランダムに送信を行います。当然起こる信号の衝突はソフト的に検出・再送することで解決するように考えられています。
 次図ではCI-V信号はQ503(E-B間)や抵抗(R504)を通じてH(3.3V)にプルアップされているとともに、TXD信号でトランジスタスイッチ(Q504)をONにすることでL(0V)に落とすようになっています。並列に接続された複数台の何れかの1台がLの信号を出せばCI-Vの信号はLになる、いわゆるWired-ORという初期PCのバスに使われていた接続法で、この回路のCI-V信号を並列に何台繋いでも電気的に問題は起きません。

一方、FT232RLなどの一般的なシリアルインターフェイスICの出力(TXD)は次図のQ1とQ2(何れもFET)のように構成され、Q1でH側、Q2でL側に引っ張るようにできています。もちろんQ1とQ2は同時にONにはならず、信号によってどちらかがON、他方がOFFになりHまたはLが出力されます。この回路は並列接続を行うようには考えられていません。
 これとIC-R6とを直接接続したのが次の回路図です。
  IC-R6とクローニングケーブルはそれぞれ独立に信号を出すので、各々がHかLを出すとすれば4通りの組み合わせが考えられます。そのなかで問題になるのはIC-R6がL、クローニングケーブルがHの信号を出そうとするときで、赤点線で示したようにQ1,Q504で構成される電源~接地を直結するルートが構成され過大な電流が流れる可能性があります。この時CI-Vの信号(電圧)は不安定な状態になります。
 私の使っているFT234Xの場合Q1,Q2はFETでドライブ能力は十数mA程度ですがQ504の2SC4738は100mA以上電流が流せるので相対的にQ504が強く、このままでも見かけ上動くかもしれません。一方Q1のドライブ能力が高いICを使うとLでもCI-Vの電圧が十分下がりきらずエラーが多発したり通信できないかもしれません。
   これを防ぐために、次図のようにダイオード(D1)を入れてQ1-Q504の直結ルートを防ぎWired-OR接続に変えます。つまり実質的にQ1が機能しないようにするわけです。またQ2がON時にCI-V信号のLの電圧を低く抑えるためD1には順方向電圧降下の少ないショットキーバリヤーダイオードを使うのが望ましいです。このときQ1の代わりにR1を入れてCI-Vをプルアップしノイズマージンを稼ぎます(無くても動く場合が多いでしょう)。

 
  
このようにすることでCI-Vインターフェイスを正常に機能させることが出来ます。またIC-R6の並列接続にも耐えられるようになります。もし クローニングケーブルを自作したけどエラーが多発する場合や上手く機能しない場合はD1、R1を入れてみてください。
 なおクローニングケーブル側に用いられる電圧ですが、USBからは5Vが供給されますが、RS-232Cに使われる電圧は5Vの場合と3.3Vあるいはその他の電圧が設定できる場合もあります(以前は標準的な5Vがそのまま用いられていましたが現在は3.3Vの場合が多いようです)。一方インターフェイスICのRXDの閾値はC-MOSのように電源電圧の半分の場合とTTLのように1.5V位の場合があります。汎用性という意味では3.3Vであれば両方に対応できます。私の使っているFT232xやFT234XではUSBから供給される5VをIC内部で3.3Vに落として使っているとうです。この場合は出力がC-MOSコンパチ、入力がTTLコンパチでノイズマージンが大きくなります。


 そこで1つ気になるのはR1のプルアップに5Vしか取れない場合でインターフェイスICのRS-232c電源に内部で生成した+3.3Vを使っている場合です。この場合CI-VがHの状態ではQ1には逆方向に電圧がかかることになります。私は自己責任でこのままの状態で使っていますし秋月のFT234Xの基板にはI/O=3.3V(5V tolerant)と書いてありますので問題ないと思います。気になる方はR1に直列に2~3個のシリコンダイオードを入れて電圧を落としてください。あるいはR1は無くても動くかもしれません。

0 件のコメント:

コメントを投稿