Smart-USB Plus製品は、1台のホストPCと1台のボードをUSB接続して運用することを前提としています。
1台のホストPCに複数台のSmart-USB Plus製品を接続して運用すると、一台あたりのUSBデータ転送帯域が低下します。
【複数台の運用方法】
通常、USBバスに接続されるデバイス(ボード)には、ホストPCから0~127までのアドレスが割り当てられます。これは自動で割り振られるので、このアドレスを使用してデバイス(ボード)を識別する事を推奨していません(下記、注意の項目を参照してください)。
Smart-USB Plus製品ボードには、FPGAに直結した4bit-ディップスイッチがあります。このディップスイッチの設定をホストPCが読み出し、ボードのアドレスとすることで、複数台の運用ができます。
ディップスイッチの設定は、FPGA内の任意のハードウエアレジスタNo.Xで読み出せるようにしておきます。
1台のホストPCにボードを5台接続した時の具体的な手順は以下の通りです。
準備として5台のボードに任意のアドレスを割り付け(DipSWの設定)、それぞれボードA~Eに接続すると想定します。
1台目 : アドレス0 「DipSW=1111に設定したボードA」
2台目 : アドレス1 「DipSW=1110に設定したボードB」
3台目 : アドレス2 「DipSW=1101に設定したボードC」
4台目 : アドレス3 「DipSW=1100に設定したボードD」
5台目 : アドレス4 「DipSW=1011に設定したボードE」
(DipSWは ON="1"=Lowレベル、 OFF="0"=Highレベル)
次にボードをUSBバスに接続します。
そしてボード制御用のAPIに含まれている関数「CebGetDeviceID」を制御アプリケーションから実行します。
実行後、接続しているボードの台数分のデバイスIDが返されるので、返されたすべてのデバイスIDに対してレジスタNo.Xを読み出します。デバイスIDと読み出したレジスタNo.Xの値が次の関係にあるとします。
ホストPCが管理している デバイスID |
レジスタN0.Xを 読み出した値 |
ボード上の DipSW設定 |
実際に接続している ボード |
100 | 3 |
1100 |
4台目のボードD |
101 | 4 | 1011 | 5台目のボードE |
102 | 2 | 1101 | 3台目のボードC |
103 | 0 | 1111 | 1台目のボードA |
104 | 1 | 1110 | 2台目のボードB |
(注意)
ホストPCが管理しているデバイスIDは電源投入またはボードリセットを行うたびに変化することに注意してください。
この様にボードのデバイスIDは変化してしまいますので、デバイスIDによる決め打ちはせずに、デバイスIDとレジスタNo.Xの値によって識別してください。
また、ア制御アプリケーション起動時とUSBバスに変化(ボードをを抜き差したり、ボードリセットを行った時)が生じた時に、毎回必ずボードアドレスの解決を行ってください。
なお、上記のシーケンスを簡略する手段として、「CebFindDevice」APIを追加しています。
API仕様書を参考にして御利用ください。