ホーム
ニュース e-mail

oocd-5


<OpenOCD (参考)他社ハードウエアとOpenOCD>



ビーウエイブ・テクノロジーが提供するFPGAボード、およびCPLDボードには、JTAGインターフェイス専用コネクタまたは専用オープンパッドのどちらかが必ず装備されています。したがってコンフィグレーションにはOpenOCDの利用が可能であり、ビーウエイブ・テクノロジーでは実際にこれを検査や開発に用いると共に、お客様にもそのご利用をお勧めしております。主に用いているUSBインターフェイスはFT2232(*1)です。
OpenOCD+FT2232という組み合わせは、ボードの製造元に関わらず、ボードの上でJTAGチェーンが正しく構成されてさえいれば、そこに搭載されたデバイス(FPGAやCPLD)とパソコンとの間でJTAG機能を正しく仲介するはずです。しかし実際には、専用のインターフェイスやアプリケーションでは動作するもののOpenOCD+FT2232では動作しない、そのようなケースも少なからずあるようです。以下に、2枚の他社製FPGA/CPLDボードを例として、そのままではOpenOCD+FT2232が正しく動作しなかった際の状況とその対策を紹介します。

なお、ビーウエイブ・テクノロジー製のFPGAボード、およびCPLDボードにはこのような問題はありません。
また、ビーウエイブ・テクノロジーではオリジナルハードウエアにCPU(MPUやマイコン)を用いませんので、それらに関するJTAGの問題はとりあげません。また、バウンダリ・スキャンについても検討の予定はありません。






1. BASYS2(Digilent)

<デバイスリスト>
xcf02s_vo20
xc3s100e_cp132

<状況>
JTAGポートが外に出ていない。

<対策>
① USBインターフェイスIC:AT90USB2を取り外す(JTAG信号線に直列チップが無くそのままではUSBと分離できない)。
② コネクタJAの裏にパッドJ4としてTDI,TDO,TCK,GNDなどが配線されているので以下のとおり利用する。
  ・コネクタJAを取り外す。
  ・パッドJ4を利用してJTAG用6ピンコネクタを取り付ける。
    - pin1: TMS: J4でなく、新しく390Ωを介してFPGAとROMのTMSに接続する
    - pin2: TDI: J4に接続(390Ωを介してFPGAのTDIに接続されている)
    - pin3: TDO: J4に接続(直接ROMのTDOに接続されている)
    - pin4: TCK: J4に接続(390Ωを介してFPGAとROMのTCKに接続されている)
    - pin5: GND: J4に接続(GNDに接続されている)
    - pin6: VCC: J4でなく、VCC3V3に接続する

<説明>
・BASYS2では、FPGAのJTAG電源であるVCCAUX、ROMのJTAG電源であるVCCJ、共に2.5Vとなっている。
・外部JTAG電源としては、2.5Vでは動作しないUSBインターフェイスも考慮に入れ、VCC=3.3Vを出しておくのが良いだろう。
(USBインターフェイス側の入力は、FT2232の入力しきい値電圧が1.5〜1.9VなのでOK。)
(USBインターフェイスのロジック出力が3.3Vであっても、②の直列390ΩとFPGAの入力保護ダイオードで暫定的にはOK。)
・FPGAのDONE出力(VCCAUX=2.5V)とROMのCEX入力(VCCINT=3.3V)とは後者の入力VHmin=2Vで調整されている。
・ROMのCFX出力(VCC=3.3V)とFPGAのPROGB入力(VCCAUX=2.5V)とは、前者のオープンドレインと後者のプルアップで調整されている。

<考察>
しかしFPGAの動作中にVCCAUXが2.5Vであることにはあまり意味が無く、ROMのJTAGと合わせて3.3Vに統一するのがボードの構成としてはスマートである。






2. NEXYS2(Digilent)

<デバイスリスト>
xcf04s_vo20
xc3s500e_fg320

<状況>
JTAG上流側のデバイスを正しく認識しない。

<対策>
① FPGAのINITB出力(VCCO=3.3V)とROMのOE入力(VCCINT=3.3V)との接続で、プル抵抗の行先が2.5Vになっているのでこれを3.3Vに修正する。
② USBチップIC:CY7C68013の無電源時ポート状態が不明なので、このJTAGポート(TDI,TDO,TCK,TMS)にある直列チップを全て外して分離する。
③ FPGAのVCCAUXが2.5Vであるのに対しROMのVCCJが3.3Vになっているのでこれを2.5Vに修正する。

<説明>
・3.3Vロジック出力が2.5V電源にプル接続された場合の具体的な問題を確認したわけではないが、一応①の修正を行った。
・②の単独の効果については検証していない。
・NEXYS2ではFPGAのJTAG電源であるVCCAUXが2.5V、ROMのJTAG電源であるVCCJが3.3Vとなっている。
 ROMのJTAG出力は外部に出るだけでありROMのJTAG入力はVHmin=2VなのでこのままでもOKだが、③の修正は念の為に行った。
・外部JTAG電源、DONE-->CEX、CFX-->POROGBについてはBASYS2と同様に調整されている。

<考察>
デバイスの仕様書を基に、より基本的(安全)と考えられる方向の対策①②③を合わせて施した結果、動作および各ノードの信号は正常に転じた。
ただし実際にどの対策がどの程度有効であったのかについては判っていない。
このボードの電源構成とプル結線に関してはその考え方が不明であり、Xilinx社ガイドUG332にも同様の疑問点があるが、これ以上の検証を行う事はしない。
ビーウエイブ・テクノロジーではこのような電源構成やプル結線を採用しない。






3. SEF54x(BieeWave)(動作OK:以下デバイスリストのみ)

<デバイスリスト>
xcf04s_vo20
xc3s500e_fg320






4. SEF120(BieeWave)(動作OK:以下デバイスリストのみ)

<デバイスリスト>
xcf02s_vo20
xc3s100e_cp132






5. SVF42x(BieeWave)(動作OK:以下デバイスリストのみ)

<デバイスリスト>
xcf02s_vo20
xc3s400_ft256
			






(*1)
FT2232のVCCIO(I/O電源)は最低が3.0Vです。ターゲットボードのJTAG電圧が2.5Vである場合に備えるならば、FT2232の出力にはHC4050などのバッファを挿入し、ターゲットボードのJTAG電圧を引いてきてこれを駆動するのが良いでしょう。このときFT2232のVCCIOはUSB電源(5V)に固定しておくのが安全です。一方、FT2232の信号入力しきい値電圧は1.5〜1.9Vなので2.5Vレベルの入力はこのままでも可能ですが、前記バッファの空きチャネルを保護に用いるのも一案ですし、別に入力専用のバッファを準備してUSB電源でこれを駆動するという構成も悪くはありません。






ビーウエイブ・テクノロジー
bieewave.com