前回紹介した、怪しいボードの話の続きです。
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 が進んで、すぐに書き込みが終了します。電源を切ると初期化されるので、このモードは、全部接続したままになります。

その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に書き込んだ内容で動作します。

その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に書き込んだ内容で動作します。


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