FPGAの部屋

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

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

カテゴリ: プリント基板の作成過程

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

”SDRAM動作不良”で書いたとおりに小さい基板のうち3枚のうち2枚がSDRAMの書き読みで1bit間違ってしまうという不具合があった。業者に送って調べてもらったところダンピング抵抗用の抵抗アレイで隣同士がショートしていたようだ。
そのうちの一枚は更にPowerPCのコア電圧用DC-DCコンバータの電圧を決定する抵抗が実装不良でオープンになっていた。PowerPCが動作しないのでコア電圧を測ったら1.3Vのはずが0.8Vになっていたのでわかったのだった。
他のところの実装は大丈夫だろうか?これでは他のところも怪しいだろう。そのつもりでチェックしなければ。。。

DWMの1月号を見ていたら表面実装品の半田付けの特集があった”チップ部品はんだ不良の原因とその処方せん”やはりここに書いてあったのと同様に電極両端のはんだのぬれがアンバランスでチップ立ちしてしまったのかな?そんなに浮いているようには見えなかったのだが。。。

周波数の偏差はプロトコル側とLVDS側の動作周波数に明確な差をつけて動作するようになった。
SDR SDRAMの読み書きが1ビット反転する状況は変わらない。どうやらSDRAMの根本かダンピング抵抗当たりでとなりのデータビットとショートしているようだ。それでオール0とオール1の読み書きは大丈夫でも、0x55555555や0xaaaaaaaaは1bit間違ってしまうのだろう。業者に送り返して手直しを依頼しようと思う。しかし、3枚作ったうちの2枚がこんな状態で、正常の基板が1枚のみでは非常に困る
最初にブログに公開した時はかなり規則的に誤るビットがずれているように思えたのだが、それはSDRAMテストプログラムのバグだったようだ。

またまた、プリント基板のデータバスの信号品質について問題が出ている。
データバスはFPGA-SDRAM-PowerPCとつながっている。
以前は実際の配線前の目安ということで波形を出してもらったのだが、実際に配線したら長くなったということで今度はSDRAMからの出力信号も信号の変化点で乱れるようになってしまった。
こうなると信号が安定してる場所にセットアップ時間を設定するためにPowerPCへのクロックを遅らせることになる。そうするとPowerPCからSDRAMへのデータ転送のときにセットアップ時間がきつくなり破綻してしまう。
解決策としては今FPGAの元にダンピング抵抗を入れてもらってシミュレーションしてもらっているが、それでもだめならレイアウトを見直すしかないかもしれない。
それとも今FPGAからSDRAMとPowerPCへつながっているデータバスを分けるとか。小さい基板だけだが、大きなほうはピンの余裕がないのでその場合は周波数を落とすことになるだろう。

スパルタン3Eスタータキットはまだ本格的に使っていない。ちょこちょこサンプルプロジェクトをやっている。今はLCDをどう表示するか知るためにマニュアルを読んでいる。

伝送線路シミュレーションが出てきたがその意味の解析に苦戦中だ。
クロックの伝送線路シミュレーション結果はこの前のブログに書いたし、きれいな波形にしなければいけないというので、どういう波形が必要がわかるため楽だった。
でもデータバスなどはFPGA,SDRAM,PowerPCの3つ一筆書きでつながっているので、端から真ん中のSDRAMにデータ転送する場合の波形が悪くなる。
タイミングのダイアグラムは考えてあったのだが、波形の乱れによって、だいぶマージンが減りそうだ。どのように計算したらよいかが良くわからないので困っている。おまけにクロックはフェーズシフトする予定なのでどの位置に来ればよいかがいまいちイメージがわかない。
データにクロックを重ね合わせて自分で見られれば一発なんだけど。考えすぎて胃が痛くなってきた。
一応、ターミネータをつけてもちょっと改善できないかどうかをやってみてもらえることになった。
やはりLVCOMSデータバス133MHzは反射が多いのか?スルーレートを変えるという方法もあるな。。。
でもあまりシミュレーションお願いしていると悪そうだし。。。ああ.....自分でやりたい。

それから伝送線路シミュレーションは67MHzのクロックでやっているが、例えばLVDS受信用ICだとLVDSで来た信号を受けてLVCOMSでクロックとデータを送ってくる。実際のデータはクロックのようには変化はしない。
そのクロックに対してデータの有効時間が仕様で指定されている。これがクロックの前、少なくとも2ns前から有効になっていると書いてあったら、伝送線路シミュレーションの立ち上がり、立下りから2ns付近の点で反射が起こってスレッショルド近くまで反射があったらまずいのだろうか?

いろいろ詳しく解析すると悩んでくるが、なるべく波形を改善してもらって作ってもらえばいいのだろうか?
LVDS受信ICの件は違うが、なまじクロックをシフトできると悩んでくる。

↑このページのトップヘ