三、模塊設計架構設計 我們要實現的功能,概括起來就是FPGA產生VGA時序,即控制VGA_R4~R0、VGA_G5~G0、VGA_B4~B0、VGA_HSYNC和VGA_VSYNC,讓顯示器顯示紅色。其中,VGA_HSYNC和VGA_VSYNC,FPGA可根據時序產生高低電平。而顏色數據,由于是固定的紅色,FPGA也能自己產生,不需要外部輸入圖像的數據。那么我們的FPGA工程,可以定義輸出信號hys表示行同步,用輸出信號vys表示場同步,定義一個16位的信號lcd_rgb,其中lcd_rgb[15:11]表示VGA_R4~0,、lcd_rgb[10:5]表示VGA_G5~0,、lcd_rgb[4:0]表示VGA_B4~0。 我們還需要時鐘信號和復位信號來進行工程控制。 綜上所述,我們這個工程需要五個信號,時鐘clk,復位rst_n,場同步信號vys、行同步信號hys和RGB輸出信號lcd_rgb。 需要注意的是,輸入進來的時鐘clk是50MHz,而從分辨率參數表可知道,行單位的基準時鐘是25 MHz。為此我們需要根據50MHz來產生一個25 MHz的時鐘,然后再用于產生VGA時序。 為了得到這個25M時鐘,我們需要一個PLL。PLL可以認為是FPGA內的一個硬核,它的功能是根據輸入的時鐘,產生一個或多個倍頻和分頻后的輸出時鐘,同時可以調整這些輸出時鐘的相位、占空比等。 例如,輸入進來是50M時鐘,如果我需要一個100M時鐘,那么從邏輯上、代碼上是不可能產生的,我們就必須用到PLL來產生了。 整個工程的結構圖如下。 file:///C:/Users/pan/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png PLL的生成方式過程,請看本案例的綜合工程和上板一節的內容。 我們先分析功能。要控制顯示器,讓其產生紅色,也就是讓FPGA控制VGA_R0~4、VGA_G0~5、VGA_B0~4、VGA_VSYNC和VGA_HSYNC信號。那么VGA驅動模塊,可以定義輸出信號hys表示行同步,用輸出信號vys表示場同步,定義一個16位的信號lcd_rgb,其中lcd_rgb[15:11]表示VGA_R4~0,、lcd_rgb[10:5]表示VGA_G5~0,、lcd_rgb[4:0]表示VGA_B4~0。 同時該模塊的工作時鐘為25M,同時需要一個復位信號。 綜上所述,我們這個模塊需要五個信號,25M時鐘clk,復位rst_n,場同步信號vys、行同步信號hys和RGB輸出信號lcd_rgb。 |