VGA显示一个小方块,FPGA(EP4CE6)实验Verilog逻辑源码Quartus工程文件+文档资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 ********************************************************************************************************/ //上电后,VGA显示一个移动的小块,碰到边框的时候被弹开。 module VGA_Moving_Block ( input sys_clk , input sys_rst_n , output wire Hs , output wire Vs , output wire VGA_G , output wire VGA_B , output wire VGA_R ); //Reg define reg sys_clk_pixel ; reg [9:0] x_count ; reg [9:0] y_count ; reg hsync ; reg vsync ; reg [17:0] clk_cnt ; reg clkout ; reg up_down_x; reg up_down_y; //上升和下降信号 reg [9:0] x_pos ; //小方块左上角坐标 reg [9:0] y_pos ; //小方块左上角坐标 //Wire define wire valid_mov; wire valid_1 ; wire valid_2 ; wire valid_3 ; wire valid_4 ; wire valid_s ; //************************************************************************************ //** Main Program //** //************************************************************************************ //像素时钟 分频产生 25Mhz 时钟 always @ (posedge sys_clk or negedge sys_rst_n) begin if (!sys_rst_n) sys_clk_pixel <= 1'b0; else sys_clk_pixel <= ~sys_clk_pixel; end //行坐标和纵坐标 always @ (posedge sys_clk_pixel) begin if (!sys_rst_n) begin x_count <= 0; y_count <= 0; end else if (x_count == 10'd799) begin x_count <= 10'd0; if (y_count == 10'd519) y_count <= 10'd0; else y_count <= y_count+1'b1; end else x_count <= x_count+1'b1; end //同步信号 always @ (posedge sys_clk_pixel) begin if (x_count <= 10'd95) hsync <= 1'b0; else hsync <= 1'b1; end always @ (posedge sys_clk_pixel) begin if (y_count <= 1'd1) vsync <= 1'b0; else vsync <= 1'b1; end assign Hs = hsync; assign