跑马灯:8个LED以每个0.5s的速率循环闪烁

  1. 设计定义

  2. 设计输入

module paomadeng(
    clk,
    rst,
    led
    );
    input clk;
    input rst;
    output reg[7:0] led;
    
    reg[31:0] cnt;
    
    always@(posedge clk or negedge rst)
        if(!rst)
            cnt <= 0;
        else if(cnt==25_000-1)
            cnt <= 0;
        else
           cnt <= cnt + 1;
            
    always@(posedge clk or negedge rst)
        if(!rst)
            led[7:0] <= 8'b0000_0001;
        else if(cnt == 25_000-1) 
            begin
                if(led[7:0] == 8'b1000_000)
                    led[7:0] <= 8'b0000_0001;
                else
                    led[7:0] <= led[7:0] <<1;            
            end
endmodule

  3. 功能仿真

`timescale 1ns / 1ns

module paomadeng_tb;
    
    reg s_clk;
    reg s_rst;
    wire [7:0]s_led;
    paomadeng paomadeng_tb(
    .clk(s_clk),
    .rst(s_rst),
    .led(s_led)
    );

    initial s_clk =1;
    always #10 s_clk=~s_clk;
    
    initial
    begin
        s_rst = 0;
        #201
        s_rst = 1;
        #40000000;
        $stop;
    end
endmodule

 

posted @ 2022-07-11 21:11  FPGA菜鸟中的菜鸟  阅读(422)  评论(0)    收藏  举报