« Vivado IPインテグレータのアイコンを自由自在に変える方法 | トップページ | Cosmo-Zのディスクリを正負両対応にしたのと、Vivadoにおけるスマートなパラメタライズ »

2019.12.01

Tang nanoのJTAGを調査

秋葉原のShige ZoneでTang nanoを手に入れたので、JTAGを調査することにしました。

Tn1

Tang nanoは、中国GOWIN社のGW1N-1-LVというFPGAを搭載した小型FPGAボードです。

この基板にはTCK、TDI、TMS、TDOと書かれた端子があるので、ここにピンヘッダをはんだ付けし、フライリードケーブルを接続します。

Tn2

JTAGの電源は何Vかわかりませんが、5Vではないと思われるので、Vbank0/3と書かれたところから電源を取ります。

MITOUJTAGで普通に自動認識させてみても見つからないので、MITOUJTAGのSVFプレイヤーを使ってTDOから何か出てくるかを調査しました。

TRST OFF;
ENDIR IDLE;
ENDDR IDLE;
STATE RESET IDLE;
TIR 0 ;
HIR 0 ;
TDR 0 ;
HDR 0 ;
SIR 32 TDI (55555555) TDO (F5FFFFFF) ;

これは、TDIから0x55555555という値を入れて、F5FFFFFFというものが出てくるのを期待した構文ですが、期待値が適当なのでエラーとなります。しかし、そのときに実際にTDOから取得された値が表示されるので、動作がわかるというわけです。

結果は、

2019/12/01 22:28:18  Error:Line 9 Operation error.TDO(expected) ='F5FFFFFF' TDO(mask)='FFFFFFFF' TDO(captured)='FFFFFFFF'

となりました。

つまり、TDIから入った信号がTDOから出て来ていないわけです。FPGAはJTAGの信号を通していないことが分かります。

 

おそらくオンボードのUSB-JTAGとぶつかっているのだろうと思い、回路図を見ながらオンボードのUSB-JTAGと、JTAGコネクタの境界にあるRY1を外すことにしました。

Tn3

実際に外した写真が下のものです。

Tn_ry1

これで再びSVFプレイヤーを実行してみると、

2019/12/01 22:30:36  Error:Line 9 Operation error.TDO(expected) ='F5FFFFFF' TDO(mask)='FFFFFFFF' TDO(captured)='55555519'

となって、0x5555519という何かの値が出てくるのが確認できました。

SVFでIRに送るコードを適当に変えて、

SIR 32 TDI (ffff0fff) TDO (F5FFFFFF) ;

にしてみると、結果は

2019/12/01 22:47:53  Error:Line 9 Operation error.TDO(expected) ='F5FFFFFF' TDO(mask)='FFFFFFFF' TDO(captured)='FF0FFF19'

になりました。19という値はStatus Registerの規格に合致しているので、IRの長さは8bitと推測されます。

 

再びMITOUJTAGに戻って、GUIから自動認識させてみると、genericデバイスとして認識されました。

IDCODEは0900281Bであるようです。

Gowin_idcode

ただ、BSDLファイルがないためピンの可視化ができていません。

GW1N-1-LVのBSDLファイルが得られるかどうかは、GOWIN社のサポートに問い合わせました。

 

|

« Vivado IPインテグレータのアイコンを自由自在に変える方法 | トップページ | Cosmo-Zのディスクリを正負両対応にしたのと、Vivadoにおけるスマートなパラメタライズ »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Vivado IPインテグレータのアイコンを自由自在に変える方法 | トップページ | Cosmo-Zのディスクリを正負両対応にしたのと、Vivadoにおけるスマートなパラメタライズ »