FPGA 让LED灯亮0.25秒,灭0.75秒的状态
  1YQZUCUR1XeB 2023年11月02日 42 0

代码如下所示

module counter_led_1(
    Clk,
    Reset_n,
    Led
);
    input Clk;
    input Reset_n;
    output reg Led;
    reg [25:0]counter1;
    parameter MCNT=50000000;
    
    always@(posedge Clk or negedge Reset_n)
    if(!Reset_n)
        counter1 <= 0;
     else if(counter1 == MCNT-1)
        counter1 <= 0;
     else 
        counter1 <= counter1 + 1'b1;
     always@(posedge Clk or negedge Reset_n)
     if(!Reset_n)
        Led <= 0;
     else if(counter1 == (MCNT/2)+(MCNT/4)-1) //将1秒四等分的意思
        Led <= 1;
     else if(counter1 == MCNT-1)
        Led <= 0;               
endmodule

将一秒分为四等分,等到0.75秒的时候先亮0.25秒,然后再依次循环即可。

模拟仿真代码如下:

`timescale 1ns/1ns
 
module counter_led_0_tb();
    reg Clk_0;
    reg Reset_n_0;
    wire Led_0;
    counter_led_1 counter_led_0_inst0(
        .Clk(Clk_0),
        .Reset_n(Reset_n_0),
        .Led(Led_0)
    );
    initial Clk_0=1;
    always #10 Clk_0 =!Clk_0;
    defparam counter_led_1.MCNT=50000;
    initial begin
        Reset_n_0 <= 0;
        #201;
        Reset_n_0 <=1;
        #400000000;
        $stop;
    end
 
endmodule

FPGA 让LED灯亮0.25秒,灭0.75秒的状态_Verilog

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  1YQZUCUR1XeB   2023年11月02日   80   0   0 Verilog
  1YQZUCUR1XeB   2023年11月12日   33   0   0 串口通信Verilog
  1YQZUCUR1XeB   2023年11月02日   44   0   0 VerilogDDS
  1YQZUCUR1XeB   2023年11月02日   79   0   0 Verilog交通灯
1YQZUCUR1XeB