让一个灯有参差的亮灭起来

一 、怎么做的

给计数器不同的时间节点,加上执行语句。比如1s的时候led干什么;2s时刻的时候,led又要干什么。这个实验和之前那个相比,现在是在一个灯上变化量灭时间。

二 、代码

1.设计代码

module ledstate4(
input               sys_clk             ,
input               rst_n               ,
output   reg       led     
    );
parameter              time0_25=12_500_000       ;
reg          [26:0]     cnt    ;
//时钟/
always@(posedge sys_clk)
if(!rst_n)
    cnt<=0;
else if(cnt==10*time0_25-1)
    cnt<=0;
else
    cnt<=cnt+1;
//led//    
always@(posedge sys_clk)
if(!rst_n)
    led<=1;
else 
    case(cnt)
        time0_25-1:    led<=0;
        3*time0_25-1:  led<=1;
        6*time0_25-1:  led<=0;
        10*time0_25-1: led<=1;     
    default:;
    endcase
endmodule

2.仿真代码

`timescale 1ns / 1ps
module tb();
reg            sys_clk            ;
reg            rst_n              ;
wire           led                ; 
ledstate4 led1(
.               sys_clk       (sys_clk )      ,
.               rst_n         (rst_n   )      ,
.               led           (led     )
    );
//时钟
initial begin
sys_clk=0;
forever #10 sys_clk=~sys_clk;
end
///复位
initial begin
rst_n=0;
#40 rst_n=1;
end
endmodule

之前我写串口接收模块的仿真,把时钟和复位写在一起了,我是这样写的:

initial begin 
sys_clk=0;
rst_n=0;
#200 rst_n=1;
sys_clk=~sys_clk;
end

因为 initial 语句是顺序执行的,那么我下一次的时钟会在200ns之后变化。
之后我就会分开写。这样看起来更清楚,也不会出错。

3.仿真图

仿真图:0.25s亮,灭 0.5秒,亮 0.75 秒,灭1秒的状态循环亮灭

三 、希望大家可以跟我交流一下

能给我挑挑错,分享问问题的论坛,指指路,闲聊FPGA,什么都可以,我很无聊,现在日常就是跟小梅哥 写博客 看看B站别人发现了什么好玩的,希望有人可以和我说话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值