verilog HDL 程序编写,时间间隔一秒,8个指示灯依次亮灭。
module led_mx
(
input clk,
input rst_n,
output reg[7:0] led//读数据
);
parameter CNTS = 100_000_000; //假设时钟 100MHz 计数 1 秒
reg [31:0] clk_cnt;
reg clk_s;
//产生秒脉冲 clk_s
always @(posedge clk) begin
if( rst_n == 0 )begin
clk_cnt <= 32'd0;
clk_s <= 1'd0;
end
else if(clk_cnt < CNTS -1) begin
clk_cnt <= clk_cnt + 1'd1;
clk_s <= 1'd0;
end
else begin
clk_cnt <= 32'd0;
clk_s <= 1'd1;
end
end
always @(posedge clk) begin
if( rst_n == 0 )
led <= 8'b0000_0001;
else if(clk_s == 1)
led <= {led[6:0],led[7]};
end
endmodule