net9 时序 闪烁灯

用  clk  来控制  cnt  ;用  cnt  来控制  FLAG ;用   FLAG  来控制  led

 

 

module led(
input wire clk,
input wire rst,
output    reg led);

reg [31:0]clk_cnt;
parameter clk_50M=499;//;99999;
reg            flag;

always @(posedge clk or negedge rst ) begin
    if (!rst) begin
        clk_cnt<=0;
    end
    else if (clk_cnt==clk_50M) begin
        clk_cnt<=0;
    end
    else begin 
        clk_cnt<=clk_cnt+1'b1;
    end
end

always @(posedge clk or negedge rst) begin
    if (!rst) begin
        flag<=0;// reset
        
    end
    else if (clk_cnt==clk_50M) begin
        flag<=1;
    end
    else begin
        flag<=0;
    end
end

always @(posedge clk or negedge rst) begin
    if (!rst) begin
        led<=1'b0;
        
    end
    else if (flag==1) begin
        led<=~led;
    end
    else begin
        led<=led;
    end
end

endmodule
`timescale 1ns/1ns
module    tb_flash_led();
reg clk,rst;
wire led;

initial begin
    clk=0;
    rst=0;
    #200 rst=1;
end

always #10 clk=~clk;

led tb_flash_led_inst(
.clk(clk),
.rst(rst),
.led(led));

endmodule

 

 

 

 

 

 

posted @ 2021-07-29 09:58  涛大林  阅读(253)  评论(0)    收藏  举报