FPGA中的菜鸟 发表于 2012-3-25 21:33:00

小弟诚心请教各位大侠,如何用FPGA控制VGA以精确的频率闪烁!!

我用FPGA控制VGA显示器的矩形区域以16HZ的精确频率闪烁。我的部分程序代码如下:
module lastvga(clk,clock,disp_dato,hsync,vsync);
input                clock;                                //系统输入时钟48MHz
input       clk;
output disp_dato;                                //VGA数据输出
output                hsync;                                //VGA行同步信号
output                vsync;                                //VGA场同步信号

reg         hcount;                                        //VGA行扫描计数器
reg    vcount;                                        //VGA场扫描计数器
reg    data;
reg x_cnt;        //行坐标
reg y_cnt;        //列坐标
       
//调用PLL模块                       
pll pll(.inclk0(clock),.c0(vga_clk));//输出VGA时钟25MHz       

assign disp_dato = (dat_act) ?data : 8'h00;   


wire xpos,ypos;        //有效显示区坐标

assign xpos = hcount-11'd144;
assign ypos = vcount-10'd35;   
//显示一个小矩形
wire e_rdy;        //矩形的显示有效矩形区域

assign e_rdy = ( (xpos>=285) && (xpos<=315) )
                 &&        ( (ypos>=200) && (ypos<=230) );

always @(posedge vga_clk)
begin
        if(e_rdy==1)
                data<=(clk)?8'he0:8'h00;//red
        else               
                              data<=8'h03;//blue
endendmodule

中间部分程序省略,请查看红色字体块,if语句中的clk为16hz。下载好程序之后,VGA显示的时候,中间的矩形区域能闪烁但是不能得到16HZ的精确频率。感觉好像是VGA自身扫描对这个频率有干扰,,,跪求高手帮忙解决这个问题,,,,或者提供另外的思路/代码,,小弟感激不尽!!!!!!!!

FPGA中的菜鸟 发表于 2012-3-26 09:54:13

跪求各位大侠帮助!被蹂躏了好几天了。。。。。感激不尽

ChenDongKui 发表于 2012-3-28 13:01:53

想知道你的帧频率为多少??还有仿真一下e_rdy的频率再看看;

FPGA中的菜鸟 发表于 2012-3-29 09:31:18

帧频为60HZ

225631 发表于 2012-4-16 22:20:04

data<=(clk)?8'he0:8'h00;//red
这个clk,有问题吗?我感觉时钟满天飞了,建议你使用使能信号控制,另外你的VGA的点像素是25M的,那你就继续分频得到一个16HZ的,再操作!不知道能不能解决?
页: [1]
查看完整版本: 小弟诚心请教各位大侠,如何用FPGA控制VGA以精确的频率闪烁!!