今日、
Interface2009年3月号を購入した。今月の特集は”はじめてのマイコン活用基礎の基礎”だった。真空管、トランジスタ、TTL(といってもHCなのでCMOS)から書いてあって、本当に基礎の基礎からのようだった。この辺は読んでいないが、なひたふさんの
”徹底解説作ればわかるPCI Express(第3回) 100MHzを超える信号を扱うロジックのFPGAへの実装法”は興味深く読ませてもらった。
Xilinx社のFPGAでまともなインターフェース回路を作るためのエッセンスが詰まっていると思う。特にDCMのDESKEW_ADJUST属性の違いはなんだろうと思っていても、検証したことがなかったので、興味深く読ませていただいた。
VALID制約は、私のブログの
”VALID制約”で書いたことがある。
最後にtxclk とそのtxclkでサンプルされるべきデータ(txdata) の制約だが、OFFSET_OUT_AFTERで制約をかけても、worst caseは制約できるのだが、best case は制約できない。よって、制約上でtxdataとtxclkの差が2nsあっても、txclkがもしかしたら2ns速い事もあって、その場合は制約違反にならないんじゃないか?と思う。だから私は、クロックとデータの遅延の値はTiming Analyzerで確認することにしている。クロックもデータも大体IOBにマップしてあるので、一度確認しておけば変動はほとんどないが。。。これは、IOBのDDRレジスタで出力するクロックとデータの相対的なタイミング関係を制約に書ければよいと思っていた。調べてみたのだが、調べた限りではそういう制約はないようだ。
後、180度位相のクロックの件だが、スライスにはクロックのインバータが用意されているので、180度位相のクロックが必要な場合は、私はそれを使うようにしている。クロックバッファももったいないし、スキューも少ないだろうと思うので。。。
いろいろ書いてしまったが、なひたふさんの記事は良くまとまっている、とてもよい記事だと思う。
- 2009年01月29日 21:15 |
- その他のFPGAの話題
-
| トラックバック:0
-
| コメント:2
当方の記事へのご感想ありがとうございます。
>DCMのDESKEW_ADJUST属性の違い
確かにわかりにくいです。
SOURCE_SYNCHRONOUSとSYSTEM_SYNCHRONOUSはどちらがいいのかという問題は、DCMに位相シフトを入れて使えば、デフォルトのままSYSTEM_SYNCHRONOUSで使うのが良いと思えてきました。
ようやく違いを理解できてきたので、いずれ当方のブログに書きます。
>txdataとtxclkの差が2nsあっても、txclkがもしかしたら2ns速い事もあって、その場合は制約違反にならないんじゃないか
そうですね。best caseは制約できません。これはかなりのネックになります。
ただ、ソース同期のデータを出力するなら、clkとdataをそれぞれODDRとOFDで作ることでそういう事態は回避できるのではないかと思います。
>180度位相のクロックの件
ユーザガイド等では、スライスの中のインバータではなく、別々のクロックを使うことが推奨されていたと思います。これはVirtex4か5以降で改善されたのではなかったかと思います。
しかしながら、0°クロックだけをたくさんつかってファンアウトに偏りが生じると、結局、片方のクロックだけに遅れが出てしまって、却ってよくないのかもしれません。一概にどちらが良いとは言えないのだと思います。
理想的なタイミングの追求は、考えれば考えるほど深みにはまってしまいます。
- 2009/02/01(日) 22:40:57 |
- URL |
- なひたふ #gUs9VHwE
- [ 編集 ]
なひさふさん、コメントありがとうございます。
本当にタイミング・ミートさせるのは条件が厳しくなってくると本当に大変ですね。
Suzaku-VでDDR2-400 のDDR2 SDRAMコントローラを作った時でも、いろいろタイミングを満たせなくて大変でした。レジスタをツリー状に複製してタイミングをミートさせたこともありました。
http://marsee101.blog19.fc2.com/blog-entry-728.html
Virtex4ではISERDESとOSERDESの構造がマニュアルに書いてないことがネックでした。これは自分で実験して確かめました。
一番苦労したのは最初にDDR SDRAMコントローラを作ろうとした時のVirtex2-6000でした。これはチップが大きく、しかもDCMが散らばっているので、複数のクロックを使うとスキューが凄く、クロック間で1ns 以上スキューが出る状態でした。大きなFPGAで複数クロックを使って高速に動作させようとすると基板段階でのクロックを入れるピンの位置の検討も必要になると思います。
本当にいろいろな面で難しいと思います。特に大きなFPGAでは、基板の段階で関連のある信号は近くに集めるようにしないと動作させるのが難しくなると思われます。フロアプランをしないとまともに動かない可能性があります。
- 2009/02/02(月) 04:51:36 |
- URL |
- marsee #f1oWVgn2
- [ 編集 ]