Sim's blog

電子工作はじめてみました

9bitアナログ出力(4)

2007-04-01 15:03:37 | FPGA
Verilgソースはこんな感じ。clkは外から25MHzをいれる。Spartan3 stater kitのクロックは50MHzなので、DCMで分周して25MHzを作っています。出力のr,g,bもregにした方がよさそう。微妙にタイミングがずれてるっぽいけど、それっぽい画面が出ているのでいいことにしよう。

ソースをはると、htmlだからtabとか空白がなくなっちゃうので<pre>タグをいれてみました。tabも8になるから空白4つで置換して・・・ってめんどくさい。いずれにしろ、長いソースを貼るのはむりっぽい。なんか妙に空行になったり変。

/*
    VGA

    16  front porch
    96  horizontal sync
    48  back porch
    640 video
    total 800

    10  front porch
    2   vertical sync
    33  back porch
    480 video
    total 525
*/
module video(
    output [2:0] r, g, b,
    output reg hs = 1'b1, vs = 1'b1,
    input clk);

    reg [9:0] xc = 0, yc = 0;
    reg xe = 0, ye = 0;

    always @(posedge clk) begin
        if(xc == 800 - 1) xc <= 0; else xc <= xc + 1;
if(xc == 800 - 1) xe <= 1'b1;
if(xc == 640 - 1) xe <= 1'b0;
if(xc == 640 + 16 - 1) hs <= 1'b0;
if(xc == 640 + 16 + 96 - 1) hs <= 1'b1;
if(xc == 640 + 16 - 1) begin if(yc == 525 - 1) yc <= 0; else yc <= yc + 1;
if(yc == 525 - 1) ye <= 1'b1;
if(yc == 480 - 1) ye <= 1'b0;
if(yc == 480 + 10 - 1) vs <= 1'b0;
if(yc == 480 + 10 + 2 - 1) vs <= 1'b1;
end end wire en = xe & ye; assign b = en & yc[4] ? xc[6:4] : 0; assign r = en & yc[5] ? xc[6:4] : 0; assign g = en & yc[6] ? xc[6:4] : 0; endmodule



最新の画像もっと見る

コメントを投稿