|
我用FPGA控制VGA显示器的矩形区域以16HZ的精确频率闪烁。我的部分程序代码如下:
module lastvga(clk,clock,disp_dato,hsync,vsync);
input clock; //系统输入时钟48MHz
input clk;
output [7:0]disp_dato; //VGA数据输出
output hsync; //VGA行同步信号
output vsync; //VGA场同步信号
reg [9:0] hcount; //VGA行扫描计数器
reg [9:0] vcount; //VGA场扫描计数器
reg [7:0] data;
reg[10:0] x_cnt; //行坐标
reg[9:0] y_cnt; //列坐标
//调用PLL模块
pll pll(.inclk0(clock),.c0(vga_clk));//输出VGA时钟25MHz
assign disp_dato = (dat_act) ? data : 8'h00;
wire[9:0] 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自身扫描对这个频率有干扰,,,跪求高手帮忙解决这个问题,,,,或者提供另外的思路/代码,,小弟感激不尽!!!!!!!! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|