FC2カウンター FPGAの部屋 Spartan3E Starter KitのDDR SDRAMコントローラについての疑問2
fc2ブログ

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

FPGAの部屋

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

Spartan3E Starter KitのDDR SDRAMコントローラについての疑問2

"Spartan3E Starter KitのDDR SDRAMコントローラについての疑問"について調べていると、Spartan3Eのライブラリの説明書にFDDRCPE(ASYNC set/reset)とFDDRRSE(SYNC set/reset)がないことがわかった。
ODDR2を使ってgeneric mapでSYNCとASYNCを切り替えるのだそうだ。さらに入力もIDDR2があるようなのでこれを使うことにした。
ODDR2を使ったソースは以下のように修正した。
IOパッド出力の最後の3ステートバッファはIOBUFとして上位にインスタンスした。(INPUTもケアするため)

    -- Insantiate three-state DDR registers
    WRDATA_DDR_TRI_INST : for i in DDR_DATA_WIDTH-1 downto 0 generate
        WRDATA_DDR_TRI : ODDR2 generic map(
            SRTYPE => "SYNC"
        )port map(
            q => out_tri(i),
            d0 => dqs_reset_2d_dqtri(i/8), -- DQSが0になる最初のクロックで1なので、一番最初の半クロックだけディスエーブル
            d1 => gnd,
            c0 => clk,
            c1 => clkx,
            ce => vcc,
            r => reset,
            s => not_dqs_enable_2d(i/8)
        );
    end generate WRDATA_DDR_TRI_INST;
    
    -- Instantiate Mask DDR registers
    WRDATA_DDR_MASK_INST : for i in DDR_DQS_DM_WIDTH-1 downto 0 generate
        WRDATA_DDR_MASK : ODDR2 generic map(
            SRTYPE => "ASYNC"
        )port map(
            q => ddr_dm(i),
            d0 => wrmask_2d(i),
            d1 => wrmask_3d_half(i),
            c0 => clk,
            c1 => clkx,
            ce => vcc,
            r => reset,
            s => gnd
        );
    end generate WRDATA_DDR_MASK_INST;


これでも最初と同様にエラーが出てしまった。
ためしに"WRDATA_DDR_TRI : ODDR2"のセットsを"s => gnd"に変更して、DQのすべてのDDRレジスタ(ODDR2もIDDR2も)のセット、リセットを同じにしたら"INTERNAL_ERROR"が出て終了してしまった。
しょうがないのでISE8.2が出るまで待ち状態とする。
  1. 2006年06月26日 12:33 |
  2. Spartan3E Starter Kit
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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