新聞中心

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

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

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

        c) 場同步信號設計

        同上。

        d) 數據顯示坐標以及輸出設計

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

        assign vga_xpos = (hcnt H_DISP) ? hcnt[9:0]+1'b1 : 10'd0;

        assign vga_ypos = (vcnt V_DISP) ? vcnt[9:0]+1'b1 : 10'd0;

        assign vga_rgb = ((hcnt H_DISP) (vcnt V_DISP)) ? vga_data : 16'd0;

        這部分很容易理解,在顯示期坐標根據顯示的掃描而改變,在非顯示期,坐標置零。

        (2)Vga_display.v代碼分析

        a) 標準色彩定義

        //define colors RGB--5|6|5

        localparam RED = 16'hF800;

        localparam GREEN = 16'h07E0;

        localparam BLUE = 16'h001F;

        localparam WHITE = 16'hFFFF;

        localparam BLACK = 16'h0000;

        localparam YELLOW = 16'hFFE0;

        localparam CYAN = 16'hF81F;

        localparam ROYAL = 16'h07FF;

        定義當地的參數,目的是為了后續標準色彩調用的方便,沒有其他作用。

        b) 根據固定區域輸出數據

        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

        vga_data = BLUE;

        end

        end

        如上代碼,根據xpos坐標,來輸出固定色彩。由于vga_driver已經完全設計好接口,因此vga_display.v就是簡單的根據區域,輸出設計的顏色。

        (3) Vga_ctrl.v代碼分析

        a) 同步化解析

        略。

        b) 可控鎖相環PLL設計

        27.jpg

        本來可空鎖相環PLL設計,Bingo想單獨成章來講述的,但覺得可能別的地方實際應用價值不是很大,最后便在此處闡明這樣設計的原因。

        由于不同分辨率的掃描時鐘不同,因此分辨率變化的時候,PLL的輸出時鐘是必要跟隨著變化。但是Bingo覺得好麻煩,于是想了偷懶的一招:PLL IP定義,無非是用Quartus II GUI對PLL參數的設定,最后生成pll.v這個文件。而這個文件相當于是鎖相環的驅動電路,故勢必包含著參數的定義。實際如下:

        altpll_component.clk0_divide_by = 1,

        altpll_component.clk0_duty_cycle = 50,

        altpll_component.clk0_multiply_by = 1,

        如上圖所示,每次修改參數,這三個變量會相應的發生變化。因此,何不把這三個參數作為例化的參數,可以再頂層直接修改代碼來實現固定頻率的輸出?這樣豈不是很方便?

        因此設計參數例化接口如下:

        #(

        parameter DUTY_CYCLE = 50,

        parameter DIVIDE_DATA = 1,

        parameter MULTIPLY_DATA = 1

        )

        理論上是完全行得通的,這樣設計的另一個好處就是電路的封裝性更好Bingo實踐證明,完全可行,因此在此處說明,要學會正確的偷懶呵呵。

        (4)Vga_design.v頂層文件代碼解析

        a) Vga接口定義

        //vga interface

        output vga_adv_clk,

        output vga_blank_n,

        output vga_sync_n,

        output vga_hs,

        output vga_vs,

        output [15:0] vga_rgb

        如上所示,上面三個信號線是在使用adv712x視頻轉換芯片的時候才會出現,一般的電阻模擬電路,或者直接RGB3線驅動,可以直接刪除相關信號以及電路。



        關鍵詞: FPGA VGA 移植 模塊

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 亚东县| 宣威市| 姚安县| 桂林市| 辛集市| 温泉县| 满洲里市| 修武县| 广昌县| 抚顺市| 隆尧县| 弥勒县| 襄城县| 徐水县| 米易县| 方正县| 舟曲县| 河源市| 河西区| 瑞金市| 田林县| 鸡西市| 高要市| 洛浦县| 余姚市| 衡阳市| 元阳县| 吴堡县| 兴海县| 灵武市| 昌平区| 甘孜| 九龙城区| 巴林右旗| 杭州市| 陇南市| 柞水县| 垦利县| 穆棱市| 麦盖提县| 河池市|