VGA行場同步電路Verilog描述

參考《FPGA Prototyping By Verilog Examples》

module vga_sync

(

input clk,reset,

output hsync,vsync,video_on,p_tick,

output[9:0] pixel_x,pixel_y

);

//VGA 680*480

localparam HD=640;

localparam HF=48 ;

localparam HB=16 ;

localparam HR=96 ;

localparam VD=480;

localparam VF=10 ;

localparam VB=33 ;

localparam VR=2? ;

//mod-2 counter

reg mod2_reg;

wire mod2_next;

wire pixel_tick;

always@(posedge clk,posedge reset)

if(reset)

mod2_reg<=0;

else

mod2_reg<=mod2_next;

assign mod2_next=mod2_reg+1;

assign pixel_tick=mod2_reg;//

//hsync counter

reg [9:0]h_count_reg;

wire [9:0]h_count_next;

always@(posedge clk,posedge reset)

if(reset)

h_count_reg<=0;

else

h_count_reg<=h_count_next;

assign h_end=(h_count_reg==799);

assign h_count_next=pixel_tick? ((h_end)?0:(h_count_reg+1)) :? (h_count_reg);

assign pixel_x=h_count_reg;

//vsync counter

reg [9:0]v_count_reg;

wire [9:0]v_count_next;

wire h_end,v_end;

always@(posedge clk,posedge reset)

if(reset)

v_count_reg<=0;

else

v_count_reg<=v_count_next;

assign v_end=(v_count_reg==524);

assign v_count_next=pixel_tick&&h_end? ((v_end)?0:(v_count_reg+1)) :? (v_count_reg);

assign pixel_y=v_count_reg;

//output buffer

reg h_sync_reg,v_sync_reg;

wire h_sync_next,v_sync_next;

always@(posedge clk,posedge reset)

if(reset)

begin

h_sync_reg<=0;

v_sync_reg<=0;

end

else

begin

h_sync_reg<=h_sync_next;

v_sync_reg<=v_sync_next;

end

assign? h_sync_next=~(h_count_reg>=(HD+HB)&&h_count_reg<=(HD+HB+HR-1));

assign? v_sync_next=~(v_count_reg>=(VD+VB)&&v_count_reg<=(VD+VB+VR-1));

//output

assign video_on=(h_count_reg

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容