FC2カウンター FPGAの部屋 今日の教訓
FC2ブログ

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

FPGAの部屋

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

今日の教訓

今日は教訓をいくつか。他山の石としてください。

DDR SDRAMコントローラはデータや制御信号(DQS等)を入出力ともIOBのDDRレジスタにマップしないと実現はおぼつかない。
セミナに行った時にIOBにマップしないでも大丈夫な方法も教えてもらったが、基本的にはIOBのレジスタを使ったほうが安全。
今日、チップスコープの結果を見て、どうもおかしいと思って調べてみた。FPGA Editorで見ると、IOBにマップされているはずのレジスタがIOBの外に出ていた。これじゃ、だめだ。IOBに入っていると思って、制約もかけていなかった。
原因は、

1.MAPのプロパティ中の"Pack I/O Registers/Latches into IOBs"プロパティを"For Inputs and Outputs"にしておいて、IOBに入るように推定されるようにしておいてもIOB入らない事があった。
これは制約で直接指定した。このように
INST "U_ddr_cont_inf/DDR_CONT/read_data_module_inst/dq_rise[*]" IOB = TRUE;

2.Virtex2のIOBは、入力用FF、出力用FFのリセットが共通になっている。出力がDDRレジスタ・プリミティブを使用していて、IOBの入力用FFにする予定のHDL記述のリセットと異なると、当然ながらIOBの入力用FFは使用されない。そういう場合は入力用FFのリセットが削除できるので削除したらOKとなった。

3.出力のトライステート・バッファの制御はFFからの出力で皆さん制御していると思います。それをIOBに入れたかったがDQS用の制御FFが入ってなかった。これもVirtex2のIOBの制限で、出力FFのクロックと出力トライステート・バッファ制御用FFのクロックは同一でなければならなかったようだ。
クロックが違っているので、IOBに入れるのは無理となった。これは、MAXDELAY制約をそのネットに加えて、良しとした。

(FPGA EditorでIOBを見ると構造が良くわかると思います。)
この3つを厳密に適用したら、大丈夫になったようだ。まだ火曜日に再度やってみるまで安心できないかもしれないが、今日のところは単発アクセスは完璧だ。バースト・アクセスは、今の回路では検証できないので保留。単発が完璧でチップスコープが使えれば、バーストの検証も難しくないと思われる。だが、現在の動作周波数は83MHzである。これを133.33MHzまで上げなくては。。。
http://marsee101.blog19.fc2.com/blog-entry-32.htmlでカスケード接続DCMがおかしいと書いたが、もしかすると大丈夫だったかもしれない。もう一度確かめる予定。
133MHz水晶は、DVIボードの製造元に売ってくれるかどうか問い合わせ中。あっても悪いことは無いので、購入したい。
  1. 2005年10月07日 14:46 |
  2. FPGAチップ内の配線方法
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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