FC2カウンター FPGAの部屋 DDR2 SDRAMコントローラを試しにインプリメント
FC2ブログ

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

FPGAの部屋

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

DDR2 SDRAMコントローラを試しにインプリメント

いままでシミュレーションしてきたファイルがどのようにVirtex4のロジックに割り当てられるかが興味があったので、クロック周期のUCFだけ書いてISEツールに後はお任せでインプリメントしてみた。
そうしたところ、このようにDDRレジスタのところでエラーが出てしまった。
OLOGIC_Error_080126.png

その部分のソースはこうなっている。

    // Instantiate Output DDR registers
    generate
    genvar i;
        for (i=DDR2_DATA_WIDTH-1; i>=0; i=i-1) begin: WRDATA_OUT
            FDDRCPE WRDATA_DDR2_OUT (
                .Q(ddr2_out[i]),
                .D0(wrdata_3d[i]),
                .D1(wrdata_4d_half[i]),
                .C0(clk),
                .C1(clkx),
                .CE(dqs_enable_3d[i/8]),
                .CLR(reset),
                .PRE(gnd)
            );
        end
    endgenerate


FDDRCPEがVirtex4ではサポートされていないのかとソフトウェアマニュアルのライブラリガイドを見ると、FDDRCPEはVirtex4とSpartan3のみプリミティブとしてサポートだそうだ。
でもおかしい。前に”Virtex5, Virtex4, Spartan3Eのインプリメント結果”というブログの記事で、Virtex5, Virtex4, Spartan3EのDDR SDRAMコントローラのインプリメント(MAP)結果を比較している。このときにVirtex4でもDDR SDRAMコントローラをインプリメントしてプロジェクトも残っているはず。。。
探してみるとVirtex4用のDDR SDRAMコントローラがあって、今同じISEのバーション(ISE9.2SP4)でインプリメントしてみたが、問題なくできた。
試しにFPGA Editorで見てみたが、問題なくOLOGICにアサインできているようだ。(下の図参照 ddr_dq0のOLOGIC)
OLOGIC_FPGA_Editor_080126.png

どちらも同じFDDRCPEを使っていて、どこか違うか良くわからない。確かにうまく行ったほうは周辺の入力表示回路がついていて、出力パッドのインターフェース規格(SSTL2-1)がUCFに書いてあるがそれだけの違いだ。
よくわからないが、せっかくVirtex4の勉強もしながらのDDR2 SDRAMコントローラの作製なので、OLOGICで書き換えることにした。
そういえばVirtex4の勉強のときも、ILOGICは勉強したが、OLOGICはやっていなかった。Virtex2と同じだと思っていた。FPGA EditorでOLOGICの図を見るとFFが1つ増えている。何に使うのだろう。Virtex4のOLOGICについて勉強することにした。

2008/01/28:追記
上のエラーはddr2_dqのVerilogファイルのポート宣言がoutputだけになっていたためだった。inoutに変更したら、FDDRCPEプリミティブを使用してもMAPが成功するようになった。
今のところVirtex4のDDR出力レジスタ用プリミティブODDRを使う方法がよくわからない。現在、FDDRCPEやFDDRRSEと同じように使おうとするとエラーになってしまっている。
  1. 2008年01月26日 06:13 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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