FC2カウンター FPGAの部屋 Verilog版DDR SDRAMコントローラのバグフィックス
FC2ブログ

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

FPGAの部屋

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

Verilog版DDR SDRAMコントローラのバグフィックス

たっくさんのおかげで、Verilog版DDR SDRAMコントローラのバグが解消した。
テストベンチを作っていただいたので、ほぼバグは取れたと思う。しかし、やはり完璧なテストベンチでシミュレーションするとバグが見つかるのが早いので感激した。以前はシミュレーションは適当にやって、実機に入れてテストした。全部のモジュールができるまでテストができなかったし、最初はいい加減なテストベンチしか通してなかったので、バグがぼろぼろ出た。
今回、たっくさんの書いたテストベンチを見て、こんな風に単体テストをやらなければ、という気持ちがわいてきた。テストベンチを書く手間が増えるが、結局このほうが、デバック時間を驚異的に短縮できるだろう。テストベンチを勉強させていただいて、こんなテストベンチが書けるようになろうと思った。

Verilog版DDR SDRAMコントローラのバグはcntroller.vが4つ。

// 2008/03/03 Ver. 1.1 : equal_active_bankの比較がrow_addrだけでbank_addrを比較していなかったバグを修正
// 2008/03/05 Ver. 1.2 : カラムアドレスを超えてバーストする場合に、バンクをプリチャージしてACTコマンドを入れてからREADやWRITEコマンドを入れるが、その際にCLK0度とCLK180度のクロックの違いでアドレスが次のアドレスになってしまった。バンクアドレスのみCLK180度でラッチしたアドレスを使用した。
// 2008/03/06 Ver. 1.3 : dqs_enableを出力するステートマシンにバグがあった。WRITEして1つ間が開いてもう一度WRITEをするときにidle_detsステートに戻してしまったが、これはWRITEであることを判定してwrite_detsステートに遷移させる必要がある。
// 2008/03/07 Ver. 1.4 : row_addr, bank_addrに入れるaddressのビットフィールドが間違っていた。


addr_fifo.v, rddata_fifo.v, wr_data.vが1つだった。

// 2008/03/07 : Ver. 1.1 : wp, rpと演算する数のビット幅を制限, ビット幅の制限がないと特に-の演算をする時に符号拡張が32ビットで行われるためにfullが出力されない


現在あがっているZIPファイルは修正済みである。

結構、家でも根を詰めてデバックしていたので、いささか疲れてしまった。DDR2の方はそのうちにシミュレーションしてからバグフィックスを行う。
  1. 2008年03月07日 20:12 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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