fpga-verilog-case语句和if语句写流水灯程序

module//if语句lsd

(
input clk,//27m
input rst_n,//初始化(程序开始自动进行一次),一键还原(运行中,按键)


output reg [3:0] led
);
流水灯:0001,0010,0100,1000,0001
///1s
//计数器
parameter  delay=32'd27_000_000;///1s,2//自己查金振频率
reg [24:0] cnt;计数的寄存器,[31:0] cnt
always@(posedge clk)
if(!rst_n)
    cnt<=0;
else if(cnt==delay-1)//清零条件,最大值,0开始:0.1,1s到了
    cnt<=0;
else

    cnt<=cnt+1;
/led1:位拼接
always@(posedge clk)
if(!rst_n)
   led<=4'b1110;///亮第一个灯
else if(cnt==delay-1)
   //led<={led[0],led[3:1]};///[3:0]:3210;03211110---0111----1011--1101=右::1032
    led<={led[2:0],led[3]};//左
else

      led<=led;//保持


endmodule

 

 

module//case语句

lsd0(

input clk,

input rst_n,

 

 

output reg [3:0] led

 

);

///计数器

parameter delay=27_000_000;//1s//自己查所用的金振频率改

reg [31:0] cnt;

always@(posedge clk)

if(!rst_n)

    cnt<=0;

else if(cnt==delay-1)

    cnt<=0;

else

    cnt<=cnt+1;

 

/对1s计数

reg [3:0] flag;15,16==10000:0---15

always@(posedge clk)

if(!rst_n)

    flag<=0;

else if(cnt==delay-1)

    flag<=flag+1;

else

    flag<=flag;

 

/led:case

always @(posedge clk)

if(!rst_n)

    led<=0;

else 

    case(flag%6)

    0:led<=4'b1110;

    1:led<=4'b1101;

    2:led<=4'b1011;

    3:led<=4'b0111;

    4:led<=4'b0000;

    5:led<=4'b1111;

    default:led<=0;

    endcase

endmodule

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值