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
华邦w25x16 SPIFlash Read ID FPGA(EP4CE6)实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 **------------------------------------------------------------------------------------------------------ ** Modified by: ** Modified date: ** Version: ** Descriptions: Read the Device ID of the W25X16 Flash ** **------------------------------------------------------------------------------------------------------ ********************************************************************************************************/ module W25X16 ( //input signal input sys_clk , input sys_rst_n , input W25X16_DO , //output signal output reg W25X16_CS , output reg W25X16_CLK , output reg W25X16_DIO , output reg [7:0] LED ); //reg define reg [5:0] counter ; reg [5:0] clk_cnt ; reg [15:0] shift_buf ; //wire define wire div_clk1 ; wire div_clk2 ; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ //creat a clock about 1MHz always @(posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) clk_cnt <= 6'b0; else clk_cnt <= clk_cnt + 1'b1; end assign div_clk1 = clk_cnt[5]; assign div_clk2 = ~clk_cnt[5]; //get a counter that width is 6 bits always @(posedge div_clk1 or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) counter <= 6'b0; else counter = 8 && counter <= 58 ) W25X16_CS <= 1'b0;