新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的VGA可移植模塊終極設計

        基于FPGA的VGA可移植模塊終極設計

        作者: 時間:2012-03-13 來源:網絡 收藏

        b) 進一步偷懶法則

        根據常用的幾種分辨率,Bingo進行了總結,以下三種應用較多,因此進一步偷懶法則,圍繞他們三者來(不在這三種以內的話,自己模仿著再寫一個):

        _640_480_60FPS_25MHz

        _800_600_72FPS_50MHz

        _1024_768_60FPS_65MHz

        Verilog語法也有define的用法,是否還記得C語言中,大工程的調試經常對相關變量的注釋,注銷來調整整個工程變量的應用,因此此處Bingo套用這種思維模式,定義以上三種模式的變量,通過修改注釋define便可以輕松修改全局。具體如下所示:

        //----------------------------------------

        //vga parameter define

        //`define VGA_640_480_60FPS_25MHz

        //`define VGA_800_600_72FPS_50MHz

        `define VGA_1024_768_60FPS_65MHz

        `ifdef VGA_640_480_60FPS_25MHz

        parameter DUTY_CYCLE = 50;

        parameter DIVIDE_DATA = 2;

        parameter MULTIPLY_DATA = 1;

        parameter H_DISP = 11'd640;

        parameter H_FRONT = 11'd16;

        parameter H_SYNC = 11'd96;

        parameter H_BACK = 11'd48;

        parameter H_TOTAL = 11'd800;

        parameter V_DISP = 10'd480;

        parameter V_FRONT = 10'd10;

        parameter V_SYNC = 10'd2;

        parameter V_BACK = 10'd33;

        parameter V_TOTAL = 10'd525;

        `endif

        `ifdef VGA_800_600_72FPS_50MHz

        parameter DUTY_CYCLE = 50;

        parameter DIVIDE_DATA = 1;

        parameter MULTIPLY_DATA = 1;

        parameter H_DISP = 11'd800;

        parameter H_FRONT = 11'd56;

        parameter H_SYNC = 11'd120;

        parameter H_BACK = 11'd64;

        parameter H_TOTAL = 11'd1040;

        parameter V_DISP = 10'd600;

        parameter V_FRONT = 10'd37;

        parameter V_SYNC = 10'd6;

        parameter V_BACK = 10'd23;

        parameter V_TOTAL = 10'd666;

        `endif

        `ifdef VGA_1024_768_60FPS_65MHz

        parameter DUTY_CYCLE = 50;

        parameter DIVIDE_DATA = 10;

        parameter MULTIPLY_DATA = 13;

        parameter H_DISP = 11'd1024;

        parameter H_FRONT = 11'd24;

        parameter H_SYNC = 11'd136;

        parameter H_BACK = 11'd160;

        parameter H_TOTAL = 11'd1344;

        parameter V_DISP = 10'd768;

        parameter V_FRONT = 10'd3;

        parameter V_SYNC = 10'd6;

        parameter V_BACK = 10'd29;

        parameter V_TOTAL = 10'd806;

        `endif

        四、Display方案以及效果

        1、彩條

        (1)代碼

        always@(posedge clk or negedge rst_n)

        begin

        if(!rst_n)

        vga_data = 16'h0;

        else

        begin

        if (vga_xpos >= 0 vga_xpos (H_DISP>>3))

        vga_data = RED;

        else if(vga_xpos >= (H_DISP>>3)*1 vga_xpos (H_DISP>>3)*2)

        vga_data = GREEN;

        else if(vga_xpos >= (H_DISP>>3)*2 vga_xpos (H_DISP>>3)*3)

        vga_data = BLUE;

        else if(vga_xpos >= (H_DISP>>3)*3 vga_xpos (H_DISP>>3)*4)

        vga_data = WHITE;

        else if(vga_xpos >= (H_DISP>>3)*4 vga_xpos (H_DISP>>3)*5)

        vga_data = BLACK;

        else if(vga_xpos >= (H_DISP>>3)*5 vga_xpos (H_DISP>>3)*6)

        vga_data = YELLOW;

        else if(vga_xpos >= (H_DISP>>3)*6 vga_xpos (H_DISP>>3)*7)

        vga_data = CYAN;

        else// if(vga_xpos >= (H_DISP3)*7 vga_xpos (H_DISP3)*8)

        vga_data = ROYAL;

        end

        end

        通過簡單的對X坐標地址的分割,來得到彩條。這是應該是VGA初學者一開始最興奮的幾個界面吧。



        關鍵詞: FPGA VGA 移植 模塊

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宣城市| 北宁市| 化州市| 莎车县| 福鼎市| 姜堰市| 东乌珠穆沁旗| 马山县| 库车县| 陈巴尔虎旗| 金昌市| 孟连| 山东省| 云龙县| 商南县| 炉霍县| 东丽区| 安宁市| 衡山县| 共和县| 临高县| 调兵山市| 石嘴山市| 南昌市| 科尔| 乌拉特中旗| 灵川县| 海门市| 连平县| 怀来县| 乐安县| 措勤县| 延安市| 灵石县| 杭锦旗| 凉城县| 行唐县| 安西县| 昌都县| 苍梧县| 乐清市|