小弟诚心请教各位大侠,如何用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自身扫描对这个频率有干扰,,,跪求高手帮忙解决这个问题,,,,或者提供另外的思路/代码,,小弟感激不尽!!!!!!!! 跪求各位大侠帮助!被蹂躏了好几天了。。。。。感激不尽 想知道你的帧频率为多少??还有仿真一下e_rdy的频率再看看; 帧频为60HZ data<=(clk)?8'he0:8'h00;//red
这个clk,有问题吗?我感觉时钟满天飞了,建议你使用使能信号控制,另外你的VGA的点像素是25M的,那你就继续分频得到一个16HZ的,再操作!不知道能不能解决?
页:
[1]