GOWINのGW1NR_9をバウンダリスキャンすることができた
以前、GOWINに連絡して代理店経由でGW1NR_9のBSDLファイルをもらったのですが、実際にスキャンしようとすると、ステータスレジスタの値が違うというエラーが出てバウンダリスキャンが出来ませんでした。
ついに問題が解決して正常にバウンダリスキャンができました。
原因は、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化してスキャンしています。
バウンダリスキャンができたので気を良くして、さらに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のFPGAの論理合成をして動かしているのではなく、バウンダリスキャンでI/Oを乗っ取って、パソコンからGPIOのようにして動かしていることにご注目ください。
私はGOWINの論理合成ツールをダウンロードしていないので開発は全くできないのですが、I/Oだけならバウンダリスキャンを使ってこのように動かすことができます。
| 固定リンク
コメント