简易流水灯 代码如下:
module cy4( input ext_clk_25m, input ext_rst_n, output reg[7:0] led ); //------------------------------------- reg[24:0] cnt; always @ (posedge ext_clk_25m or negedge ext_rst_n) if(!ext_rst_n) cnt <= 25'd0; else cnt <= cnt+1'b1; //------------------------------------- // always @ (posedge ext_clk_25m or negedge ext_rst_n) if(!ext_rst_n) led <= 8'b0111_1111; //Ĭ else if(cnt == 25'h1ffffff) led <= {led[6:0],led[7]}; else ; endmodule代码分析
reg[24:0] cnt;cnt是用来控制流水灯的闪烁频率的寄存器,这里设置的是25位 系统内部时钟频率为25MHz
else if(cnt == 25'h1ffffff) led <= {led[6:0],led[7]};当cnt全为1时,流水灯变化一次,可以计算出流水灯的间隔时间为 1/25MHZ *(2^25),约为1.3秒。
led <= {led[6:0],led[7]};这是控制led灯循环左移。
烧录结果: