2016年11月06日

FPGAボードとUSB Blasterの話

  前回紹介した、怪しいボードの話の続きです。


https://www.amazon.co.jp/gp/product/B016K4XE3E/ref=pd_sim_sbs_23_1?ie=UTF8&psc=1&refRID=7EAYPVFEJ0QA1E201SZA

  実際に使ってみました。

  ...その前に、Altera のFPGAに対して、コンフィグする手段がなかった事に気付きました(^^;)


=====================

  DE0などは、USB経由のコンフィグ手段が、ボード上に実装されているので何も要らないのですが、普通はコンフィグ用にByteBlasterや、USB Blaster などが必要になります。

  基本的にお金を掛けたくないので、自作しようとしていたのですが、Alteraの場合だと結構面倒なようです。


  Xilinxの場合だと、FT2232Dを使う手段があります。

  http://www.hmwr-lsi.co.jp/fpga/fpga_1.htm

  このページを参考に clbsrv を使用すると、iMPACTを使用してFPGAやコンフィグ用ROMに対してコンフィグが可能です。


  Alteraの場合だと、同じように出来そうなのですが、Quartusから書き込めるソフトは存在しないようです。
  そのため、新しいシリーズ(例えば、CycloneII)に対応していなかったり、コンフィグROMに書き込む事ができなかったりします。



  結局、アマゾンでこのUSBブラスターを買いました。パチもんですが。

https://www.amazon.co.jp/%E6%82%9F%E7%A9%BA-ALTERA-USB-Blaster%E4%BA%92%E6%8F%9BJTag%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-%E4%B8%A6%E8%A1%8C%E8%BC%B8%E5%85%A5%E5%93%81/dp/B00VUWNN74/ref=sr_1_1?ie=UTF8&qid=1478411751&sr=8-1&keywords=USB+Blaster

  実際に使ってみましたが、問題なく使えています。
  箱がちょっと歪んでいました。適当に組み立てた感じです。
  中を開けてみると、PIC18F14K50と、LVC244と、若干のCRのみです。

  多分、ここのページのを実装しているようです。

http://sa89a.net/mp.cgi/ele/ub.htm

  さすがに、5V/3.3V変換には、LVC244が行っています。

  初めから同人ハードだと思うと、全く問題ない範囲ですね(^^;)


=====================

  というわけで、怪しいCycloneIIボードに、怪しいUSB Blasterで書き込みテストを行いました。


  テスト用の回路です→test2.zip

  テスト用の記述と、I/Oポート、タイミングの設定などを行っていますので、展開後、quartusの下の TEST.qpf をダブルクリックして、QuartusIIを起動後、コンパイルして下さい。

  端子名に関しては、VHDL記述の最初の方にコメント文で記載しています(元のpin??では使いにくいので)。


  端子に関しては、注意点がいくつかあります。

 ・LEDGN(2:0) ボード上のLEDと、外部ピンに接続しています。"L"でLEDが点灯します。

 ・PUSHSWN ボード上のプッシュSWに接続しています。押した時に"L"ですが、離した時にオープンになるので、FPGA側でプルアップする必要があります。(TEST.qsf内の set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to PUSHSWN がプルアップ指定です)

 ・CLK50MIN ボード上の50Mの水晶発振器に接続されています。変更はできません。

 ・CLKIN(6:0) 外部ピンに接続されている、入力専用ピンです。FPGA内部のPLLへ入力したい時などに使いますが、通常の入力信号を繋いでも構いません。このピンは入力専用のため、FPGA側でプルアップなどの処理ができません。そのため、ボード外でプルアップなどをするか、常に入力信号が入るようにする必要があります。
  
 ・GPIO0_D(9:0) チップ左側の外部ピンに繋がれている、汎用の入出力ピンです。未使用時はオープンにならないように、プルアップするか、出力信号とするかをする必要があります。(TEST.qsf内の set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to GPIO0_D* がプルアップ指定です)

 ・GPIO1_D(23:0) チップ下側の外部ピンに繋がれている、汎用の入出力ピンです。GPIO0_D と同様です。

 ・GPIO2_D(17:0) チップ右側の外部ピンに繋がれている、汎用の入出力ピンです。GPIO0_D と同様です。

 ・GPIO3_D(21:0) チップ上側の外部ピンに繋がれている、汎用の入出力ピンです。GPIO0_D と同様です。


  入力専用ピンが7本もあり、これをプルアップなどの処理をする必要があるのが、ちょっと面倒ですね。
  テスト時などは、最悪オープンでもいいと思いますが、通常運用時などはちゃんと処理した方がいいと思います。


=====================

  分かっている人には必要ないかも知れませんが、コンフィグの仕方を、怪しいCycloneIIボードを例にして説明します。


  その1)FPGAのSRAMに書き込む

  コンパイル時に生成されている、test.sof を書き込みます。電源を切ると書き込んだ内容が消えます(コンフィグROMの内容が実行されます)。

  まずセットアップをします。

  1)USB-Blasterを、基板のJTAG端子に挿します。内側の方で、外側のASPの方ではありません。

  2)CycloneIIボードに、DCジャックまたは基板テストポートから、5Vを供給します。基板に逆電圧防止用のダイオードがないので、プラスマイナスを間違えないように注意して下さい。間違えると一発で壊れる可能性もあります。
  電源が供給されると、コンフィグROMの内容が実行されます。初期状態なら、LEDが点滅すると思います。

  3)USB-Blasterを、パソコンのUSB端子と接続します。最初に接続する場合は、何かメッセージが出るかも知れません。

一度もUSB-Blasterを使った事がない場合は、ドライバをインストールする必要があるかも知れません。

  4)QuartusIIのProgrammerを起動します。画面が小さいので広げておきます。USB-Blasterが正常に認識できている場合は、上部に「USB-Blaster [USB-0] 」などと表示されているはずです。表示されていない場合は、左上のHardware Setup を押して、USB-Blasterを選びます。

  5)上部のModeを、JTAG になっている事を確認します。Programmer起動時はJTAGになっていると思います。

  6)左側のSTARTを押します。右上の Progress が進んで、すぐに書き込みが終了します。電源を切ると初期化されるので、このモードは、全部接続したままになります。

161106_01_コンフィグ1.jpg



  その2)コンフィグROMに書き込む1

  1)USB-Blasterを、基板のASP端子に挿します。外側の方です。

  2)〜4)は上記と同様です。

  5)上部のModeを、Active Serial Programming にします。何かメッセージが出ますので、OKを押します。

  6)左側の Add File を押して、TEST.pof を選びます。

  7)Program/Configure、Verify、Blank-Check の下の四角を押して、チェックを付けます。

  8)左側のSTARTを押します。右上の Progress が進んで、書き込みが終了します。FPGAは書き込んだ内容で動作していて、電源を切った後でも、再度電源を入れるとコンフィグROMに書き込んだ内容で動作します。

161106_01_コンフィグ2.jpg



  その3)コンフィグROMに書き込む2

  0)QuartusIIのメニューのFile-ConvertFiles を選んで、ファイル変換プログラムを起動します。
  上から2段目のProgramming File Typeを、JTAG Indirect Configuration File (.jic) を選択します。
  その下のConfiguration decive を、ターゲットのコンフィグROM(今回は、EPCS4)を選びます。
  その下のファイル名は適当に名前を付けます。
  一番下の大きいウインド内の、一番上の行のFlash Loader を選び、その右のAdd Deviceを押して、FPGAを選びます(今回は、CycloneIIのEP2CS5)。
  その下の SOF Data を選び、Add File を選び、TEST.sofを選びます。

  この状態で、一番下の Generate を押すと、〜.jic が生成されます。


  1)USB-Blasterを、基板のJTAG端子に挿します。内側の方で、外側のASPの方ではありません。

  2)〜4)は上記と同様です。

  5)上部のModeを、JTAG になっている事を確認します。Programmer起動時はJTAGになっていると思います。

  6)最初に表示されている、TEST.sof を選び、左側の Delete を押して選択を外します。

  7)左側の Add File を押して、〜.jic を選びます。

  8)Program/Configure、Verify、Blank-Check の下の四角を押して、チェックを付けます。上側はチェック出来ないので、下側のみです。

  9)左側のSTARTを押します。右上の Progress が進んで、書き込みが終了します。書き込んだ直後は、FPGAは動作していないので、一度電源を切ります。再度電源を入れるとコンフィグROMに書き込んだ内容で動作します。

161106_01_JIC変換.jpg

161106_01_コンフィグ3.jpg



  結果は、コンフィグROMに書き込む1と同じなのですが、ASP端子が不要なので基板設計などがラクになります。


posted by えすび at 19:57| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。