DDR SDRAMのDQS信号でデータをサンプルする方法2のまえふりとなってしまって申し訳ない。
SRL16EプリミティブでFIFOを作って実際にDDR SDRAMのデータを受けるようにプロジェクト作っていたのだが、どうしてXSTでエラーになってしまう。Synplifyだと通るのだがなぜだかまだ不明だ。
うまく行ったら、ブログに書こうと思っている。
Xilinxのアプリケーションノートで見たのだが、DDR SDRAMのデータを受けるFIFOのWrite enableはかなり複雑になっているようだ。自分で作るためにはやはりLUTの遅延を考えた配置にしなければいけないようだ。やはりかなりXilinxのFPGAデバイスに精通していなければ無利だと思われる。やはり、とりあえず100MHz以下で動的位相シフトによってDDR SDRAMのデータを受けるのが良さそうだ。それでもどこがデータかを判定するのが問題だが、一回DDR SDRAMに55やAAなどのパターンを書いて、パターンを受ける位置を保存して持っていると良いかもしれないな。。。
2006.04.16
原因がわかりました。
最初にライブラリをuseするところでunisimを論理合成するときに無視するように-- pragma translate offしますが、それが反対でentityを無視するようになっていたようです。
つまり
-- pragma translate on
library UNISIM;
use UNISIM.VComponents.all;
-- pragma translate off
になっていました。正しくは
-- pragma translate off
library UNISIM;
use UNISIM.VComponents.all;
-- pragma translate on
です。こんなことでだいぶ悩んでしまいました。
でもSynplifyは大丈夫なんですね。entityキーワードがあると自動的に論理合成ONにでもなるんでしょうか?
これで論理合成できて、なかなか面白い結果も出ていますが、今日は元ダイエーがあったビルの巨大100円ショップとかに行っていてブログを書けてないので、そのうち書きます。
- 2006年04月15日 22:17 |
- DDR SDRAMコントローラ
-
| トラックバック:0
-
| コメント:0