(マニュアルに書いてはいますが、健忘録ですね)
搭載されているFPGAは CycloneIII(EP3C16)で、このFPGAは、内部にSRAMを持っていて、このSRAMの情報から回路を構築しています。SRAMは揮発性のため、電源を切ると回路情報が失われてしまいます。
そのため、DE0 ボードでは、外付けにコンフィグ用のEPROM(EPCS4)を持っていて、電源が投入されたらこのコンフィグROMからデータをSRAMに書き込み、そして回路を構築しています(スイッチをRUNモードにしている場合)。
で、FPGAの回路データを変更する方法ですが、次の2つです。
1)既にコンフィグが終わっているFPGAに対して、外からSRAMのデータを上書きする。
2)コンフィグ用のROMのデータを書き換える。
それぞれ、メリット、デメリットがあります。以下、詳細。
1)既にコンフィグが終わっているFPGAに対して、外からSRAMのデータを上書きする。
方法としては、スイッチをRUN モードにして立ち上げ、立ち上がった後に、QuartusII のProgrammer から、SRAMデータを送り込む方法です。
送るデータは、〜.sof のファイルです。
Programmer のパネルで、左上の『Hardware Setup』を押し、USB-Blaster を選択する。
その右の『Mode』は、JTAG を選択する。
その後、下のFile に〜.sof だけの状態にする(多分、デフォルトでなっているはず)。
準備が出来たら、Start を押すと、すぐに回路データの書き込みが完了します。右上のProgress 100%(Success)になれば完了です。
書き込みが速いのが利点ですが、電源を切ると、当然前の回路データは失われます。
電源を切っても、回路データが失われないようにするためには、次の2)の方法で書き込みます。
2)コンフィグ用のROMのデータを書き換える。
手順がちょっと面倒です。
まず、〜.sof ファイルを 〜.pof ファイルに変換します。QuartusII のFile − Convert Program File ... を選びます。
Output porgramming file の項目を
Programming file type: Programmer Object file (.pof)
Configuration device: EPCS4
File name: 〜.pof(適当に名前を付ける)
と設定します(Option、Advaned は触らなくていい)
その下のInput files conver の中のSOF DATA を選択し、Add file を選んで、〜.sof を選びます。
ここまで出来たら、Genarete を押すと、〜.pof が出来ます。
設定が面倒なので、上のSave Conversion Setup ... を押して、設定を保存しておくと、次から、Open Conversion Setup Data を押すことで、設定が呼び出せて便利です。
次に〜.pof をコンフィグ用ROMに書き込みます。
まず、FPGAボードの電源を切り、スイッチをPROG にします。
その後、電源を立ち上げます(いつもの回路動作はしていないはずです)。
その後、QuartusII のProgrammerから、〜.pof を書き込みます。
Programmer のパネルで、左上の『Hardware Setup』を押し、USB-Blaster を選択する。
その右の『Mode』は、Active Serial Programming を選択する。
Active Serial Programming に、何か聞かれたら、Yes を押す(この設定を変えると、既に設定されているファイルが書き込めないけどいいですか?と言っている)
Add File... を押し、〜.pof を選ぶ。
その後、画面に追加されたファイルの右の方の項目で、Program/Configure、Verify、Blank-Check、の箇所にチェックを入れる。
準備が出来たら、Startを押します。右上のProgress 100%(Success)になれば完了です。やってみるとわかりますが、書き込みに時間が掛かります。
書き込みが完了したら、FPGAボードの電源を切り、スイッチをRUNにして、電源を立ち上げます。
正常ならば、今書き込んだ回路データで立ち上がるはずです。
通常のデバッグ作業などは1)で行い、ある程度ちゃんと動くものが出来たら2)で焼き付ける、という感じですね。


最近、DE0ボードをなけなしの金で購入いたしまして、いざ、HDL記述し書き込もうとしましたら、できませんでした。
サイトを検索しお宅様のサイトに辿り着き、ありがたかったです。
「電源を切っても、回路データが失われないようにするためには、次の2)の方法で書き込みます。」 の記事を見ました時は、感激です。
今、わたくしは、仕事を探しておりますが何せ歳なので、いろいろと困難な状況です。
でも、お宅様の記事で元気づけられました。
これからも、よろしくお願い申しあげます。
コメントありがとうございます。
慣れていない人にとっては、何が何だかわからない、というのが本当の所だと思います。
しかし、FPGA は1チップマイコンと比べて、使うのが難しいですよねぇ。
確かに、FPGA は1チップマイコンと比べて、使うのが難しいかと思います。 その昔は、Z80 CPUを使って周辺LSIと組み合わせてたものです。
只今、7segmentのデコーダ回路を書いて、おかげさまで焼いてちゃんと電源を切っても表示してくれています。
rs-232c の回路もやっています。
また、木村 真也さんの書籍も読んでおります。
これからも、えすびさんご活躍ください。
私も、昔はPC-6001をつかってました。
では..
その点、FPGAは周辺回路が結構大変(電源やらコンフィグやら)で、さらに入手性が悪いために、個人が使うのはハードルが高くなっています。
DE0などの教育用ボードを使って、やっとそれなりに簡単に回路が組める、って感じです。
RS-232C 回路は、PC-6001のエミュレータ回路でも実現しているので、よかったら参考にして下さい(UART8251.vhd)。
とりあえず、ちゃんと使えているようでよかったです。
さっそくのコメント 誠に恐縮です。
UART8251.vhdのファイルが、ちとどこにあるのかわかりませんでした。 歳のせいかも(笑)
rs-232cの受信ですが、受信状態をシーケンスでHDL記述してゆこうかと思います。
実は、受信は成功しましたが、さらに良い記述法を模索してます。
ま、できますことやら!
2013年1月15日の、「リリース(18)」の書き込みの中での
src_fpga0232_farm0051.zip
の中にあります。
その名前の通り、8251のエミュレートを行っています(ただし、同期通信は実現していない)。
参考まで。
恐縮です。 ありました。
でも、私は、VHDLは不案内なので ちと・・
しかし、700行以上も よくお書きになられる 感心する次第です。