例子:8个灯中,硬件控制其中1个LED灯以0.5秒的速度正向点亮一次,然后逆向点亮1次,并不断循环。主:系统时钟为50MHZ
分析:首先,信号:8个灯、系统时钟clk、需要时钟0.5秒;
实现:系统时钟分频0.5秒模块。控制灯亮一个。
module div_25M(clk_50M,CLk_2HZ)
input clk_50M;
output CLK_2HZ;
reg[23:0] count;
reg CLK_2HZ;
parameter cnt=1.25e7;
always@(posedge clk_50M)
begin
if(count==cnt/2-1)
count<=0;
CLK_2HZ<=~CLK_2HZ;
else
count<=count+1;
end
endmodule
上述为分频模块
module led_ctrol(rst,clk)
input clk,rst;
output [7:0] led;
reg flag;
reg [7:0] led;
always @(posedge clk)
begin
if(rst)
led<=8'b00000001;
flag<=0;
else if(flag==0)
led<=led<<1;
if(led==8'b1000000)
flag<=1;
else
led<=led>>1;
if()