FC2カウンター FPGAの部屋 うちのボードのリセット回路とFPGAのコンフィギュレーション
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

うちのボードのリセット回路とFPGAのコンフィギュレーション

最近ブログのコメントで、うちのボードのリセットがどうなっているのかを聞かれた。関係のないブログにコメントで聞かれたので、ブログに関連のないコメントはご遠慮くださいとお伝えした。皆様もご質問の際はProfileに書いてあるメールアドレスにメールください。ご質問に答えられないかもしれませんが。。。
M3_reset_curcit_070504.png

それはさて置き、うちのボードのリセット及びFPGAのコンフィギュレーションはCPLDが取り仕切っている。PowerON時のリセット信号は MAX6861 で出力している。これでCPLDをリセットして、FPGAのリセット信号DCM reset, Logic resetをアサートする。FPGAのコンフィギュレーションが終了してDONEがアサートされたら、ある一定時間経過後にDCMのリセット信号DCM resetをディアサートする。
ここでDCMだけリセットをはずすと、DCMが入力クロックにロックしてクロックを出力するのに時間がかかり、また、DCMの出力クロックを入力しているPowerPCのPLLもロックするのに時間がかかるので、それらの時間を合計しただけFPGAのロジック用のリセット信号(Logic reset) を遅延している。
DCMはlocked信号があって、周波数をロックした時には信号を出力するが、エンジニアリングサンプルを使っていた時になんか怪しそうなことがあったのと、DCMのlocked信号をCPLDにフィードバックする必要があるため、使用していない。現在はあくまでデータシートに書いてある、DCMの最大ロック時間だけWAITしている。
FPGAのコンフィギュレーションは汎用FLASH ROMにコンフィギュレーションデータを入れておいて、アドレスをCPLDから入れながらFPGAにスレーブセレクトマップモードでコンフィグしている。
この前、FPGA BBSで質問されていたxilinx LogiCOREだが、うちのVirtex2-1000ボードのコンフュギュレーション時間は61msだと回答した。でも、電源安定後100ms以内のコンフィギュレーションは、64ビットデータバスコネクタに入ることが決定されている(うちの)ボードには関係ないので、それまでに動作する仕様にはなっていない。つまりRST#がディアサートされるときのREQ64#を見ていないのだ。
PCI仕様書リビジョン2.2でのRST#がディアサートされてから最初のPCIコンフィギュレーションアクセスまでに2の25乗クロックだそうだ。これは33,554,432クロックなので15nsをかけると約500msなので、これを満たせばよいと思っている。この辺はPCIボードの起動時間に書いてある。
更に今度作ったボードのコンフィグ時間を検証してみる。今回のFPGAはVirtex2pro-30なのでコンフィギュレーションするビットは11,584,984ビットである。これをバイトにするために/8すると1,448,748バイト。1バイト当たり、とりあえず120nsかかるので、* 120ns = 173.85msで100ms以上かかってしまう。
まだコンフィグレーション用汎用FLASH ROMのアクセスタイムには余裕があるので、75nsまで縮めたとすると、* 75ns = 108.66msでぎりぎりだ。更にページモードを使用するとアクセスタイムが短くなるので100msに収まるだろう。

更に、FPGAからFPGAのリセットするための信号をCPLDに出力している。これをアサートするとFPGA自身をCPLDからリセットする。ここで問題になるのはPCIバスのベースアドレスレジスタだ。FPGAをリセットするとホストから書かれたベースアドレスも普通はクリアしてしまう。今のところクリアしているのでFPGAをリセットするとパソコンをリブートする必要がある。
FPGAからリセットした時だけ、ベースアドレスレジスタだけをクリアしないとそのまま動作できるかな?と思っている。(当然、その間に、そのアドレスにアクセスがあるとデッドロックしてしまうが。。。)

追加:上の図には書いていないがPCIバスのRST#もCPLDのリセットの条件に入っている。RST#がアクティブになるとDCM、ロジックのリセットシーケンスを再度行う。ロジックのリセットだけで良いと思うかもしれないが、以前、リブート時にPCIのクロックが停止するマザーボードがあったので、DCMがおかしくなってしまったことがあった。そのためDCMもリセットすることにした。
  1. 2007年05月05日 11:32 |
  2. プリント基板の作成過程
  3. | トラックバック:0
  4. | コメント:10

コメント

ご無沙汰です、お元気そうで何よりです
似た感じの回路を使用したことはあります
パラレル入力は、2.5Vになると思いますが、FLASHROMなんですけど、2.5V系でしょうか。
デリバリィのいい物を数年前に探したとき見つからず、3V系(29LV)を使用し、直接FPGAに入れられなかったことがありました。
  1. 2007/05/05(土) 16:05:29 |
  2. URL |
  3. NSX #-
  4. [ 編集 ]

こんにちは。

なかなか2.5Vで使えるFLASH ROMが見つかりませんでしたが。。。
東芝のTC58FVM6T2ATG-65にしました。
  1. 2007/05/05(土) 16:44:27 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

型番情報ありがとうございます、参考になります
当時私は、シリアルモードですが、一端CPLDに入れて、シリアル2.5vにしてFPGAに入れていました。BGAなので、ネット数が少なくてCADは楽かとか納得していました
  1. 2007/05/05(土) 18:24:59 |
  2. URL |
  3. NSX #-
  4. [ 編集 ]

デジキーで検索したら東芝のTC58FVM6T2ATG-65は廃品種になっていました。やはり買えないですね。

Xilinxのアプリノートではシリアルになっていましたが、FLASH ROMはセレクトマップのIO端子のままでPCIから書き込みたかったためもあって、8ビット分つないであります。つまりコンフィグデータはPCI経由で書き込みです。
  1. 2007/05/05(土) 21:14:20 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

すみませんでしたm(_"_)m

ブログに関係ないコメントの犯人は私です。(猛反省中・・・)
おまけにブログに取り上げて頂いて、なんとお礼を申し上げてよいか・・・(嬉涙)

リセット回路、参考にさせて頂きます。
最近は小ゲートのCPLDも安価に入手できるようになってきたので下手な外部回路を組むよりもCPLDを入れてリセット+αの機能を実現させるほうがよいのかもしれませんね。(CPLDをのせておけばちょっとしたハードバグ吸収できますし・・・)

#反省しておりますので今後ともよろしくお願い致します。m(_"_)m
  1. 2007/05/07(月) 10:19:59 |
  2. URL |
  3. vlog #-
  4. [ 編集 ]

vlogさん、こんにちは。

ブログのねたを提供していただきまして、ありがとうございました。今後ともよろしくお願いします。
CPLDを載せておくと、後でどうとでもなりますし、可能な限りつないであります。FPGAとのリザーブ入出力も用意しています。
  1. 2007/05/07(月) 13:37:43 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

承認待ちコメント

このコメントは管理者の承認待ちです
  1. 2007/05/15(火) 15:13:28 |
  2. |
  3. #
  4. [ 編集 ]

こんにちは。それが問題ですね。
以下の手順でやっています。

1.iMPACTでPCIバスの入ったビットファイルを汎用FLASH ROM用のダウンロードファイル(.exo)に変換。
2.FPGAにPCIバスの入ったビットファイルをダウンロードケーブル経由でダウンロード(JTAGモード)。
3.PCIを認識させるためにいったんリブート。
4.自作ツールで1.のexoファイルをFLASH ROMへ書き込み。
5.いったん電源を切って、コンフィグモードをスレーブセレクトマップに変更
6.電源を入れるとFLASH ROMから起動。

うちは数があまりないので、この方法で十分です。FLASH ROMを書けるライタがあれば数もこなせるのかもしれませんが。。。
  1. 2007/05/15(火) 16:20:20 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

承認待ちコメント

このコメントは管理者の承認待ちです
  1. 2007/05/18(金) 14:57:36 |
  2. |
  3. #
  4. [ 編集 ]

なひたふさんのMITOUJTAGを使えば、電源ONだけでFLASH ROMにデータが書き込めそうですね。そうすると、手順が少なくなって楽になりそうです。
  1. 2007/05/20(日) 23:16:40 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/479-a05e54b7
この記事にトラックバックする(FC2ブログユーザー)