新闻中心

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 移植 模块

评论


相关推荐

技术专区

关闭