”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路18(DDR2 SDRAMコントローラのバグ)”でDDR2 SDRAMコントローラにバグがあることがわかったので修正を試みた。
まずは、シミュレーションで問題の状態が再現できれば、バグフィックスに最適な環境となるので、Veritak シミュレーションによるバグの再現に努力した。そうすると、バグが再現できた。
Veritak シミュレーションによるバグ波形を下に示す。

前回のChipScope Proの波形と見比べると、同様にプリチャージ・コマンドの前にREADコマンドが発行されていることがわかる。

バグを再現できたので、どこがバグっているかを調べた。そうすると、Controller.vにバグがあった。現在、バンクをアクテイブにしているときは、以前のROW、バンクアドレスとこれから発行されるREADやWRITEのアドレスを比較して違っていたら、プリチャージしてアクティベート・コマンドを発行するようにステートマシンが組んであったが、その比較するところにバグがあった。早速修正して、もう一度シミュレーションを行った。それを下図に示す。

きちんとプリチャージしてから、アクティベート、READコマンドの順になった。
次に修正後のChipScope Proの波形を下に示す。

シミュレーション同様に修正されたことがわかる。
さて、ここまでうまく行ったので、今度はディスプレイにCMOSカメラの画像を表示してみる。まずは白黒でやってみた。それが下図。

やったーー。。。ノイズは見事になくなった。が、モアレのような感じがある。これは、RGB4ビット幅なので、しかたないのかな?それに画素がちらついている感がある。
DDR2 SDRAMコントローラにバグが有ることがわかったので、以前のダウンロード用のソースも変更したいと思う。ちなみにバーストテストでは、WriteデータをすぐにReadしているので、ROWアドレスやバンクが変わらずに、バグがでなかった。今回はWriteとReadを非同期で行っているので、バグがわかった。やはり、検証方法の考察は大事だということがわかった。と言っても売り物のIPとしてだしているわけではないので、ゆっくりと検証したいと思う。今やっているアプリも自作のDDR2 SDRAMコントローラの検証としてもやっているつもりなのだ。
- 2010年08月27日 05:45 |
- 画像処理
-
| トラックバック:0
-
| コメント:2
そうですね。リフレッシュ境界は大丈夫だと思うのですが、後でアサーションを追加しようと思っています。
それよりも、SRAMの時は、Write、Read交互だったので、簡単だったのですが、今度は特にVGAコントローラはかなりバッファリングしてあるので、どこか最初か?データを見ただけでは良くわかりません。数はあっていると思うのですが、H, Vカウンタとデータの境界があっているか?その辺を検証しようと思っています。
- 2010/08/27(金) 21:00:32 |
- URL |
- marsee #f1oWVgn2
- [ 編集 ]