« XILINXのJTAGケーブル拡張を調査(1) | トップページ | MPSSE-JTAGを理解する »

2020.03.09

GOWINのGW1NR_9をバウンダリスキャンすることができた

以前、GOWINに連絡して代理店経由でGW1NR_9のBSDLファイルをもらったのですが、実際にスキャンしようとすると、ステータスレジスタの値が違うというエラーが出てバウンダリスキャンが出来ませんでした。

ついに問題が解決して正常にバウンダリスキャンができました。

Gowin_gw1nr9_bscan

原因は、GW1NR_9で実際にキャプチャされたステータスは0x11なのに、BSDLファイルの中に書かれていたINSTRUCTION_CAPTUREが、

attribute INSTRUCTION_CAPTURE of GW1NR_9_XXqfn88 : entity is "00011X01";

となっていたことでした。

これを

attribute INSTRUCTION_CAPTURE of GW1NR_9_XXqfn88 : entity is "0001XX01";

に書き換えたところ、うまくスキャンできるようになったというわけです。

上の画面は、実機としてTrenzElectronic社のTEC0117-01を使って、オンボードのFT2232をUSB-JTAG化してスキャンしています。

Gowin_jtag

バウンダリスキャンができたので気を良くして、さらにMITOUJTAG ProのJTAGスクリプト機能を使ってLEDを点滅させてみます。

 

まず、default.pinという名前でピン定義ファイルを作ります。

LED 86 85 84 83 82 81 80 79
USER_BTN 77

それから、以下のスクリプトを書きます。

#include "default.h"
JEXPORT int jmain() {
j_bypass();
j_extest(); // AJFGで端子を操作するにはこの行を有効にしてください
int i = 1;
while(1) {
LED <= i;
if((int)USER_BTN == 0) i = (i << 1) | ((i & 0x80) ? 1 : 0);
else i = (i >> 1) | ((i & 0x1) ? 0x80 : 0);
Sleep(100);
}
j_bypass();
return 0;
}

これで実行すると、LEDの点灯している箇所が流れていって、ボタンを押している間だけ逆回転するというLED流星が流れます。

Gowin_mitoujtag_pro

GOWINのFPGAの論理合成をして動かしているのではなく、バウンダリスキャンでI/Oを乗っ取って、パソコンからGPIOのようにして動かしていることにご注目ください。

私はGOWINの論理合成ツールをダウンロードしていないので開発は全くできないのですが、I/Oだけならバウンダリスキャンを使ってこのように動かすことができます。

|

« XILINXのJTAGケーブル拡張を調査(1) | トップページ | MPSSE-JTAGを理解する »

コメント

コメントを書く



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




« XILINXのJTAGケーブル拡張を調査(1) | トップページ | MPSSE-JTAGを理解する »