2014年02月20日

FPGA環境のWindows7対応

  最近、DE0やDE0nanoで新しい回路を作っていませんでした。


  その間にWindows7に移行していたんですが、Quartusのインストールすらしていませんでした。
  で、インストールして、試しに適当な回路を作って、テストをしてみました。

  レイアウトまでは問題なく完了しましたが、FPGAに焼きこむことが出来なくなっていました。


  USB Blaster(USB経由でFPGAにデータを送るソフト) がインストールされていない事が原因だったようです。


  以下はうちの環境での解決策です。

  環境:Windows7 32bit。Quartusのバージョンは10.1です。


 1)Altera のサイトから、USB Blasterのドライバをダウンロードする。

http://www.altera.co.jp/support/kdb/solutions/rd06212010_676.html

  ここのページの回答の最後の行の、『2)USB-BlasterドライバーをDownload、そして・・・』のDownload のリンクポインタで示されているファイル(usb-blaster.zip)をダウンロードする。

 2)usb-blaster.zip を適当な所に解凍する。Quartus をインストールしている所がいいでしょう。

 3)DE0/DE0nano にUSBケーブルをつなぎ、DE0の場合は電源を入れる。

 4)コントロールパネル − デバイスマネージャ を開く。

 5)どこかに、Altera-USB があるので、それを開く。

 6)「設定の変更」を押して、「ドライバのインストール」を押す。

 7)インストールするファイルを、先に展開したusb-blasterを指定する。


  で、使えるようになりました。6)の「ドライバのインストール」は「ドライバの更新」とか他の文言かも知れません。
 (一度インストールすると、元に戻らないようなので)


posted by えすび at 21:32| Comment(2) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする

2013年03月30日

DE0nano(1)

  DE0nano を購入しました(実は随分前に購入していましたが)。


  今、P6のFPGA化で使用しているFPGAボードのDE0の姉妹機(妹?)です。

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=593

  値段は9800円で、DE0の14800円よりもかなり安くなっています。
  その上、Cyclone4を使っていて使えるゲート規模も多く、性能はDE0よりも上です。

  実際に見た感じはかなり小さいです。どうもArduinoを意識しているようです。

DE0nano表

DE0nano裏

DE0nano比較


  3枚目が他のモノと比較した写真です。DE0、PC-6006、Arduino(ジャパニーノ)と並べてみました。


  DE0nanがDE0より安い理由は、ボードの大きさが小さい事、周辺回路がない事、のようです。
  DE0に比べて、VGA出力、SDカードインタフェース、フラッシュROM、などが実装されていません。

  DE0nanoを中心に周辺に回路を追加して、いろいろな物を作っていくという発想のようで、やはりArduino と同じような使い方を想定しているようです。

  そのため、初心者には多少ハードルが高いと思います。Arduinoを使って何かを作るような人向きですね。




  というわけで...DE0nanoを、P6の周辺機器にしようと思います。
  と言っても、単純に拡張コネクタに接続できるようにするだけですが。


  ↓設計してみました。

expand_DE0


  P6からのコネクタが通常の50pinコネクタではないですが、これはフロッピーインタフェースの時に作った、エキスパンダーを使うためです。
  DE0nanoの電源は、P6の5Vをそのまま使ってもよかったんですが、何となく+12Vから5Vに変換して使うようにしています。
  P6側の電気レベルは 5V-LVTTLで、DE0nanoの電気レベルは 3.3V-LVCMOS なので、74LCX245 でレベル変換しています。
  1本だけ足らなかったので、nRST だけ抵抗+ショットキーバリアダイオードで誤魔化しています。


  ↓実際に作ったのがコレです。

DE0nano拡張ボード表

DE0nano拡張ボード裏

DE0nano拡張ボードwithDE0

DE0nano拡張ボード装着


  DE0nano に拡張ROMとRAMを実装して、mk2と初代P6とで試してみましたが、割とあっさりと動作しました。


  動かしてから気付きましたが...DE0nanoをわざわざ買わなくても、DE0でもよかったんですねぇ。


posted by えすび at 20:27| Comment(0) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする

2012年03月16日

DE0ボードのLED

 PC-6001F で使用しているFPGAボード(DE0)ですが、LEDが結構たくさん搭載されています。

 7セグLED(4桁)、緑のLED(10個)、青のLED(2個)

 とあるんですが、これらのLEDがすべてむき出しになっています。


 これらのLEDは、通常はその上に適当なフィルタを通して使います。
 例えばブラスティックのカバーなどをかけるのが通常です。

 DE0 のボードのLEDは、フィルタがないために明るすぎるようです。
 じっと見ていると目に悪そうです。


 専用のフィルタがあればいいんですが、なかったので適当なものを探してきました。


DE0のLED対策(1)


 100円ローソンで買ってきた、プラスティック製の付箋です(下の字が透けて見える)。

 これを3枚重ねて貼ってみました。


 ↓光っていない時はこんな感じですが、

DE0のLED対策(2)



 ↓光るとこんな感じで、なかなかいい具合です。

DE0のLED対策(3)



 ちなみに液晶画面にも、傷つき防止用のフィルタを貼りました。

 こちらはPSP用のフィルタが高さが丁度だったので、横に長い部分を切って貼りました。

 これも100円ショップで買ったんですが、なかなかいい感じです。



posted by えすび at 19:31| Comment(0) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする

2011年09月29日

FPGAボードDE0の使用方法(3)と(4)

(2012-12-12:なぜか(3)をアップし忘れていました。追記します)
(2012-12-12:ここから追記)

 FPGAボードDE0 の上に回路を作るにあたり、まず簡単な回路で一通り動作することを確かめてみる。

 QuartusII を立ち上げて、新規のProject を作る。トップモジュールを設定するだけで、とりあえずOK。
 その後に、QuartusII を実行しているディレクトリの〜.qsf をエディタで直接修正して、ピンアサインなどをしていく。
 GUI経由でピンアサインなどは出来るんですが、エディタで修正する方が手っ取り早いので。

 ピンアサインをする時は、通常は図面を見ながら、なんですが、今回は DE0 のCDROMに入っている Demonstorations のファイルをコピーして使うことにするんだけど...

 Demonstorations に入っている、〜.qsf のファイルの内容がショボい。ピンアサインしかしとらんやんー。
 (辛うじて空きピンの処理は入っているが...)


 結局、いろいろ追加修正して出来たのが、このファイルです。

テスト用 qsf ファイル

 ついでに、トップモジュールがこれ。

テスト用トップモジュール


 qsf ファイルで追加した設定は、以下の通りです。

 ・292行〜
  set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" ピン名

  →I/Oバッファの明示的な指定。
   デフォルトになっているので、不要かも知れませんが、念の為。

 ・351行〜
  set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to ピン名

  →I/Oバッファのドライバビリティ(駆動能力)の設定
   デフォルトは8mA なので、必要のないバッファは4mA にする。
   VGA出力は8mA が必要なようです(Xilinx Spartan-3 Starter Kit のマニュアルがそうなってました)。

 ・410行〜
  set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to ピン名

  →信号のプルアップ抵抗の指定
   基板上で双方向信号になっているものは、外部からドライブされる可能性があるため、固定値を出力するのではなく、プルアップにしておくため。


 ・416行
  set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "AS INPUT TRI-STATED WITH WEAK PULL-UP"
  →定義されていないピンを入力モードで内部プルアップにする。これもデフォルトだが念の為。

   基板上で使っていないピンは、プルアップなしで入力ピンにすると、FPGAに悪影響があるため、出力にするか、プルアップにするのが普通。
   出力にすると、使っていないと思っていたピンが、外部からドライブされると、ショートするため、プルアップ付きの入力にすることにする。


 (注:qsf ファイル内のピン名に、ワイルドカードを使用するのはOKなんですが、QuartusII のGUIのPin Assignment を呼び出すと、ワイルドカード指定を無視するようです。Pin Assignment を使わなければ問題ありません。もしくは1ピンづつ指定するか、です。)



 FPGA の入出力ピンとして、周辺回路に対しては、次のようにする必要があります。

 FPGA => 周辺回路への出力:FPGAから何らかの信号を出力する。オープンにしたり、入力ピンにするのはNG。

 FPGA <= 周辺回路からの入力:FPGAは入力ピンにする。この信号をドライブする素子が、ドライブしない可能性がある場合は、プルアップ付きにする。

 FPGA <=> 周辺回路への入出力:通常に使用する時は、適切なタイミングで入力と出力を変える。Hi-Z になる時があるので、プルアップ付きの双方向信号に指定する。使用しない時は、プルアップ付き双方向信号指定で、Hi-Zを出力する。

 FPGA 空きピン:プルアップ付き入力、もしくは上記の『定義されていないピン』の通りにする。


 Demonstration の回路は、この指定が全く出来ていません。そのため、入力信号がフローティングになっている箇所が多数あります。ちと酷い...


 テスト用の qsf ファイル、テスト用トップモジュールは、基板の図面とにらめっこして、その辺りをケアした設定になっています。

 なのですが...(次に続く)


(2012-12-12:ここまで追記)

 テスト用の qsf ファイル、テスト用トップモジュールで、入出力信号を適切に設定して、基板として問題ないと思ったんですが...

 レイアウト後の QuartusII が出力した、PIN ファイルです。


テスト用レイアウト後のPINファイル


 一見問題ないようですが、Pin Name に『GND+』と書かれているピンが問題です(A11,A12,B11,G1,G2,G22,T1,T2,T20,T21)。


 GND+ で記載されている説明を見ると...

-- GND+ : Unused input pin. It can also be used to report unused dual-purpose pins.
-- This pin should be connected to GND. It may also be connected to a
-- valid signal on the board (low, high, or toggling) if that signal
-- is required for a different revision of the design.

 『使っていない入力ピンです。GNDに固定すべきです。(以下略)』

 DE0 のボード上では、どこにもつながっていません。また、改造してGND に落とすのも(ほぼ)不可能です。


 上記のピンは、入力クロック専用のピンのため、内部でプルアップ抵抗を設定したり、出力したりすることが出来ないピンです。


 ・基板上でどこにもつながっていない。
 ・FPGA では、入力ピンにしか設定できず、プルアップも出来ない

    ↓

  入力フローティングを回避できない!!


 これは、DE0 の設計のミスですね。使っている時に壊れないように祈るばかりです。



 同様に、GPIO1_CLKIN[1]、GPIO1_CLKIN[0]、GPIO0_CLKIN[1]、GPIO0_CLKIN[0]、の4ピンも、問題です。

 ただし、こちらは外部コネクタにつながっているので、そのコネクタからドライブするか、基板を改造して、プルアップ抵抗かプルダウン抵抗を付けるか、で対策が立てられます。

 入力フローティングの信号で、さらに長い線がつながっているので、ノイズの影響を受けやすいので、こちらは対処した方がよさそうです。

 3.3V 以外でも使うかも知れないので、プルダウン抵抗(10KΩ×4)を付けて、対策しました。


プルダウン抵抗追加


 動作的には、何も変わらないんですけどねー。


posted by えすび at 20:34| Comment(2) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする

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 | このブログの読者になる | 更新情報をチェックする

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

 FPGAボードDE0 が到着したので、使ってみる事にする。

 箱の中には紙の説明書はなし。CDROM内にマニュアルがあるという事か。
 付属品は、DCアダプタ、CDROM、USBケーブル、白いゴム足、何かのピン。
 『超簡単〜』の説明を見ると、ゴム足は、基板の金属棒に履かせるらしい。
  何かのピン(ヘッダピン)は、測定などに使うみたいで、通常は使用しないみたい。

 ACアダプタは、ボード単独で使用する時は必要だけど、USB経由でも電源を供給できるので、パソコンに接続している状況では不要になります。
 USB経由で電源を与えられればいいので、USBバッテリーを使って、液晶のモニタを付ければ、持ち運び可能なPC-6001が実現可能になるかも。


 VGAケーブルとUSBケーブルをつないで、ボードの電源を入れると、出荷状態で書き込まれている回路が動作するようで、モニタにちゃんと ALTERA DE0の文字が出ました。


posted by えすび at 13:40| Comment(0) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする

2011年09月28日

ターゲットのFPGAボードの決定

 回路を記述しても、実際のFPGAボードにインプリできないと意味がありません。

 どのFPGAをターゲットにするか、探してみました。

 FPGA単体では、特に最近のプロセスでは入手しにくく、電源の問題もあるので、評価用や研修用として発売されているFPGAボードが有力な候補です。

 とりあえず日本橋の共立電子のHPを探してみると、まともに見つかりませんでした。

 若松通商や秋月電子の方で探してみると、ヒューマンデータ(http://www.hdl.co.jp/)という会社が出しているボードがいろいろと見つかりました。

 XILINXよりもALTERAのツールに精通している事もあり、ALTERAシリーズの中から良さげなものを探すと、『EDA-003』というのがいいかなと思っていました。

 ・CycloneII EP2C5T144C8N 搭載。LE数4,608、メモリ120Kbit

 今から考えると、メモリが全然足りないんですが、価格的にこれぐらいまでかなと思っていました(ちなみに24800円)。

 他にXILINXが出している評価ボードや、ALTERAが出している評価ボードというのもありますが、直接海外に注文となるため、結構面倒です。価格もよくわからないし...

 ・XILINX:Spartan-3 Starter Kit、Spartan-3A Starter Kit、Spartan-3AN Starter Kit など。
 ・ALTERA:CycloneII スターター開発キット ドキュメントはこちら→http://www.altera.co.jp/literature/lit-devkits.jsp


 結局、ヒューマンデータのに使用かと思って、念の為大きな本屋で、CQ出版の本を探すと...

『超入門! FPGAスタータキットDE0 で始めるVerilogHDL』という本が!

 http://shop.cqpub.co.jp/hanbai/books/31/31371.html


 そこで使用されている『DE0』というボードのスペックがかなりよさげだったので、このボードにする事に決定。

 ・CycloneIII EP3C16F484 搭載。LE数15,408、メモリ504Kbit
 ・RAM:8Mbytes SDRAM
 ・ROM:4Mbytes NOR型フラッシュ
 ・SDカードソケット
 ・VGAポート
 ・PS/2ポート


 本の内容はいまいち(超入門ですから)なんですが、本を買わないとボードが購入できなくなっていました。ちなみに本は4800円。うーん...

 ネットで調べても『DEO』というボードが出てこなかったので、仕方なく本を購入して、すぐにボードの購入手続きをしました(付属のはがきを出すだけですが)。


 せっかくなので、購入した本を読んでみると...ボードの名前は『DE0』(デーイーゼロ)だという事が判明。
『デーイーオー』で検索したため、引っかからなかったようです(;_;)


 結局、DE0 は普通に入手できます。しかも今確認したら、共立電子に店頭販売しているという事が判明(13800円)。


 製造元(TERASIC) → http://www.terasic.com.tw/en/

posted by えすび at 21:03| Comment(0) | ツール:DE0・Quartus | このブログの読者になる | 更新情報をチェックする