FPGA第一个例程
简易流水灯
代码如下:
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灯循环左移。
烧录结果: