FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。SDRAMコントローラをインプリメントしてやってみた。その結果は動作しなかった。そこでChipscopeを入れて観察してみた。このインプリメントではプリミティブをたくさん使用している。ODDRやIDDRというDDRレジスタはIOブロックに入っているので、Chipscopeに配線する物理的パスが存在しない。Chipscopeは便利なツールだが、物理的パスがないところは波形を観測できない。いうことで、1つ前のパスを観測することになる。それが下の図の信号だ。これはDDR2のライト動作をキャプチャした図だ。遅延を測定して、遅延をあわせた後だ。AAAA"を書き込んでいる。WEの1クロック手前の信号。出力用のODDRに入る前のデータ(4ビット分)。入力用IDDRの出力(4ビット分)。ps3は何かというと、初期化時に、データを書いておいて、次にIDELAYを変化させながらデータをリードしていく。最初は受かったデータは誤っているが、あるところで正しいデータになるはずである。それの遅延値をps1にロードする。その後、遅延値を増やしていくと、またデータが誤るようになるかもしれない。その値をps2とする。ps1とps2の中間の遅延値が一番良い遅延値となる。ps3が3Dとなっていて、これではおかしい。これでは、良くわからないのでシミュレーションではどうなっているかのデータと比較してみた。シミュレーションのタイミングチャートが下の図だ。wrdata_3dに"A"が出るまでの時間を測定してみると、Chipscope、シミュレーションともに3クロックで一致している。現れるまでの時間を計測するとChipscopeが6クロックで、シミュレーションが5クロックだった。インプリメントの方が予定よりも信号が遅れすぎているのかもしれない。今度は、リードの波形を示しておこうと思う。現れるまでの時間を計測するとChipscopeが8クロックで、シミュレーションが7クロックだった。これまた1クロック合わない。これは実機の受けているデータがおかしいのだと思う。これはおかしいということで、初期化時の様子を見てみることにした。リセットはSuzakuのパワーオンリセットのみだったので、リセットSWをつけないと初期化時の様子は見れないので、つけることにした。パソコンの能力が足りない。Chipscopeを入れてインプリメントするのに長い長い時間がかかる。パソコンのリプレースを真剣に考えなくちゃ。»コメントおはようございます。シミュレータの側に問題があるのかもしれません。よろしければソースをお送りください。]たっくさん、こんにちは。実機の方は、よい遅延値が見つからずに、1クロック分フルに遅延が入っている状態ですので、1クロック分遅れて見えるんだと思います。昨日、一日これをやっていましたが、他におかしいところもわかったので、もう少し、原因を追究してみます。しても原因がつかめない時にはソースをお送りしますので、よろしくお願いします。その際は、合成後のSDFバックアノテートファイルもあると助かります。URLhttps://marsee101.blog.fc2.com/tb.php/797-3e7fd179この記事にトラックバックする(FC2ブログユーザー)プロフィールAuthor:marseeFPGAの部屋へようこそ!FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。WEBブログデザイナ。