FC2カウンター FPGAの部屋 キャラクタ描画テスト回路の実機デバック2(テスト回路の挿入)
FC2ブログ

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

FPGAの部屋

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

キャラクタ描画テスト回路の実機デバック2(テスト回路の挿入)

さて、ビットマップVGAコントローラはOKのようなので、DDR2 SDRAMコントローラを疑うことにした。具体的には、DDR2 SDRAMコントローラから読んでくる値が毎回正しいのかを検証することにした。Chipscope PROがあれば簡単なのだが、家ではライセンスがないので、検証回路を組んで、LEDに表示することにした。
下がBitmap_VGA_Controller.v に組み込んだ検証回路だ。

    // テスト回路
    always @(posedge clk_vga) begin
        if (reset_vga)
            start_vram_data <= 16'd0;
        else begin
            if (h_count==1 && v_count==0 && pixel_afifo_rd_en)
                start_vram_data <= vram_data_out;
        end
    end
    always @(posedge clk_vga) begin
        if (reset_vga)
            diff_start_data <= 1'b0;
        else begin
            if (h_count==1 && v_count==0 && pixel_afifo_rd_en) begin
                if (start_vram_data==vram_data_out)
                    diff_start_data <= 1'b1;
                else
                    diff_start_data <= 1'b0;
            end
        end
    end
    assign start_vram_data_out = start_vram_data[6:0];    


検証回路の動作は、h_countは水平カウンタ、v_countは垂直カウンタでそれらが1, 0で、非同期FIFOのリード・イネーブル(pixel_afifo_rd_en)が1の時のデータを1フレーム前と今とで比べて、同じだったらdiff_start_dataを1にする。これはLEDに出力する。LEDは8個あるので、後の7個にはラッチしたデータの下位7ビットを出力する。うまくいけば、diff_start_dataは1のまま、start_vram_data_outは固定された値になるはず。
これでインプリメントして、実機にダウンロード。すると、最初の列の幾つかは流れているものの、その他は流れていない画像が表示された。
Bitmap_VGAC_3_100219.jpg

最初の方は、流れているので、LEDはかなりちかちかしている。これはデータが安定しないことを示す。diff_start_dataのLEDにもちかちかしている。データがあっている時も有れば、違っている時もあるみたい。
次にh_count==1の部分をh_count==512として、ちょうど真ん中のデータを見るとdiff_start_dataもずっと1のままで、データのLEDも安定した。
理由はわからないが、安定してきたようだ。これからなぜ、安定してきたかを検証してみよう。

まずは、動いている以前のDDR2 SDRAMのバーストテストのプロジェクトをリファレンスとしてみていく。
DQ0(データバス)の入力の静的タイミングを下の図に示す。
DDR2_burst_test_1_100219.png

データパスのネットの遅延が0.411nsec でとても良い感じになっている。
つぎに、キャラクタ描画テスト回路(ビットマップVGAコントローラ)のDQ0(データバス)の入力の静的タイミングを下の図に示す。
Bitmap_VGAC_debug_7_100219.png

データパスの遅延は、3.618nsec となっていて、DDR2 SDRAMバーストテストの0.411nsec とはかけ離れてしまっている。これが原因か?

次にFPGA Editor でDQ0(データバス)の配線をチェックしてみよう。まずは、DDR2 SDRAMバーストテストのDQ0(データバス)の配線を示す。
DDR2_burst_test_3_100219.png

非常に素直に配線されている。
次に、キャラクタ描画テスト回路のDQ0(データバス)の配線をFPGA Editor で見てみよう。下の図に示す。
Bitmap_VGAC_debug_8_100219.png

なんじゃこりゃ―?というような配線になっている。少なくとも原因の1つはこれだ。。。
制約もほとんど違いがないし、なぜなんだろうか?違いがあるとすればTIG制約だな。今、TIG制約を外してやってみたが、Place & Routeでエラー発生。やはり外せない。。。やるとすれば、配線の固定をする必要があるのか?IPでも、そこまでやっているのを見たことはないが、やる必要があるならば、するしかないかな???

上記の事柄について、アドバイスやなにか情報があったら教えて下さい。
  1. 2010年02月19日 06:08 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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