2011年09月29日

FPGAボードDE0の使用方法(2)

 DE0のボードのFPGAに対して、回路データをどのように与えるのかをまとめておきます。
 (マニュアルに書いてはいますが、健忘録ですね)

 搭載されている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 のファイルです。


FPGAへの書き込み(sofファイル、RUNモード時)


 Programmer のパネルで、左上の『Hardware Setup』を押し、USB-Blaster を選択する。
 その右の『Mode』は、JTAG を選択する。

 その後、下のFile に〜.sof だけの状態にする(多分、デフォルトでなっているはず)。

 準備が出来たら、Start を押すと、すぐに回路データの書き込みが完了します。右上のProgress 100%(Success)になれば完了です。


 書き込みが速いのが利点ですが、電源を切ると、当然前の回路データは失われます。

 電源を切っても、回路データが失われないようにするためには、次の2)の方法で書き込みます。



 2)コンフィグ用のROMのデータを書き換える。

 手順がちょっと面倒です。


 まず、〜.sof ファイルを 〜.pof ファイルに変換します。QuartusII のFile − Convert Program File ... を選びます。


sofからpofへの変換

 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 を書き込みます。


FPGAへの書き込み(pofファイル、PROGモード時).


 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)で焼き付ける、という感じですね。

posted by えすび at 13:44| Comment(7) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして

最近、DE0ボードをなけなしの金で購入いたしまして、いざ、HDL記述し書き込もうとしましたら、できませんでした。
サイトを検索しお宅様のサイトに辿り着き、ありがたかったです。

「電源を切っても、回路データが失われないようにするためには、次の2)の方法で書き込みます。」 の記事を見ました時は、感激です。

今、わたくしは、仕事を探しておりますが何せ歳なので、いろいろと困難な状況です。
でも、お宅様の記事で元気づけられました。

これからも、よろしくお願い申しあげます。

Posted by 島田 義弘 at 2013年01月12日 02:39
>島田さん

 コメントありがとうございます。

 慣れていない人にとっては、何が何だかわからない、というのが本当の所だと思います。

 しかし、FPGA は1チップマイコンと比べて、使うのが難しいですよねぇ。

Posted by えすび at 2013年01月12日 08:41
えすびさん ちと、いろいろとあってコメントが・・

確かに、FPGA は1チップマイコンと比べて、使うのが難しいかと思います。 その昔は、Z80 CPUを使って周辺LSIと組み合わせてたものです。

只今、7segmentのデコーダ回路を書いて、おかげさまで焼いてちゃんと電源を切っても表示してくれています。

rs-232c の回路もやっています。
また、木村 真也さんの書籍も読んでおります。

これからも、えすびさんご活躍ください。
私も、昔はPC-6001をつかってました。

では..
Posted by 島田 義弘 at 2013年02月03日 09:23
1チップマイコンも、ちゃんと(?)使うのは結構大変なんですが、周辺回路はかなり簡単に出来るんですよね。

その点、FPGAは周辺回路が結構大変(電源やらコンフィグやら)で、さらに入手性が悪いために、個人が使うのはハードルが高くなっています。

DE0などの教育用ボードを使って、やっとそれなりに簡単に回路が組める、って感じです。


RS-232C 回路は、PC-6001のエミュレータ回路でも実現しているので、よかったら参考にして下さい(UART8251.vhd)。


とりあえず、ちゃんと使えているようでよかったです。
Posted by えすび at 2013年02月03日 09:36
えすびさん

さっそくのコメント 誠に恐縮です。


UART8251.vhdのファイルが、ちとどこにあるのかわかりませんでした。 歳のせいかも(笑)

rs-232cの受信ですが、受信状態をシーケンスでHDL記述してゆこうかと思います。
実は、受信は成功しましたが、さらに良い記述法を模索してます。
ま、できますことやら!
Posted by 島田 義弘 at 2013年02月03日 11:53
>> UART8251.vhdのファイルが、ちとどこにあるのかわかりませんでした。 歳のせいかも(笑)

2013年1月15日の、「リリース(18)」の書き込みの中での
src_fpga0232_farm0051.zip
の中にあります。

その名前の通り、8251のエミュレートを行っています(ただし、同期通信は実現していない)。

参考まで。
Posted by えすび at 2013年02月03日 12:03
えすびさん

恐縮です。 ありました。

でも、私は、VHDLは不案内なので ちと・・

しかし、700行以上も よくお書きになられる 感心する次第です。
Posted by 島田 義弘 at 2013年02月03日 12:17
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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