一、LED闪烁实验

一、LED闪烁实验

实验任务

使用开发板上PL上的两个LED灯,实现交替闪烁。

程序设计

在这里插入图片描述

  • 赫兹的倒数就是秒。50MHZ就是20ns,即一个周期。1s = 10_0000_0000 ns 。
  • LED灯 高电平点亮。这里每隔0.5s灯交替一次。因为2500_0000 * 20ns = 0.5s

设计文件

`timescale 1ns / 1ps

module led_twinkle (sys_clk, sys_rst_n, led); 
    // sys_rst_n 这里的n代表低电平有效

    // parameter TOTAL = 26'd50_000_000;
    parameter TOTAL = 26'd50;

    input           sys_clk;
    input           sys_rst_n;
    output  [1:0]   led;

    reg [25:0]  count;

    always @(posedge sys_clk or negedge sys_rst_n) begin
        if (!sys_rst_n) begin
            // reset
            count <= 26'd0;
        end
        else if(count < TOTAL)begin
            count <= count + 1'b1;
        end
        else begin
            count <= 26'd0;
        end
    end

    assign led = count < (TOTAL / 2) ? 2'b01 : 2'b10; 
   
endmodule

tb文件

`timescale 1ns / 1ps

module tb_led_twinkle();

reg clk;
reg sys_rst_n;
wire [1:0] led;

led_twinkle inst_led_twinkle (
    .sys_clk   (clk), 
    .sys_rst_n (sys_rst_n), 
    .led       (led)
    );

initial begin
    clk = 1'd0;
    sys_rst_n = 1'd0;

    #40 
    sys_rst_n = 1'd1;

    forever begin
        #10
        clk = ~clk;
    end
end

endmodule

仿真波形

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值