找回密码
 注册
关于网站域名变更的通知
查看: 231|回复: 1
打印 上一主题 下一主题

流水灯代码分享

[复制链接]
  • TA的每日心情
    开心
    2019-11-19 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2019-6-3 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    流水灯代码分享

    - h. x: v2 e3 i& Q- q
    9 m3 Y5 \4 T% C' Gmodule countpro(sys_clk,rst_n,led); //接口定义
    % T" h0 H+ o/ K" z, s6 Minput sys_clk,rst_n; //输入:系统时钟50MHz,复位输入# H* ]. L# ?+ i- h$ U( f
    output [2:0] led; //输出:3个led产生流水现象,轮流点亮; X  a# A* p9 V1 y
    reg [25:0] count; //系统时钟频率过高,需要计数的方式来产生延时,使led保持状态一段时间$ a; l: I" m3 L
    reg [2:0] led; //led低电平点亮: P2 T% b, A( Q/ Y& W. s
    reg [1:0] flag; //状态转换的入口,发生变化的时候,点亮另外一个led
    0 f& n' }& s! G+ ialways @(posedge sys_clk,negedge rst_n)) k) O8 I8 \' G' S/ S* L" g" c4 H
    if(!rst_n) //复位,给寄存器赋初值, G# w: }# c& x0 v5 `( B
    begin
    ' Z1 A; N/ z$ x; sflag <= 2'b0;4 g/ _; d+ E1 ~5 w$ ~
    count <= 26'b0;- ^/ j  f0 S3 q
    end6 w7 S9 N. ^8 I1 Q
    else //sys_clk上升沿到来- B4 F+ k& i3 [: _( f  {. w
    begin* S& P; L, W4 @# M9 ?
    if( count == 26'b11_1111_1111_1111_1111_1111_1110 )
    3 f# m/ k) c- ibegin " R4 Z* k" v- C1 X0 s! E
    count <= 26'b0; //count归零,便于下次重新开始计数
    3 q* l0 N6 ^9 @( Jif(flag == 2'b10) //当flag等于2’b10时,flag归零(实际上,当flag==2’b10时,要在下一次归零,即在flag==2’b11时,马上就变成2’b00,而并非当flag==2’b10时马上变为2’b00;)
    % ]2 u, `; G* ]+ f( Rflag <= 2'b00;
    ) r% X, @* g& ]+ Q3 S0 w  ^; F8 u# Selse //否则flag加一) H( I1 q, N- f" W* E! o
    flag <= flag+2'b01;
    1 a& n4 G8 ~4 R+ ?5 X" }end
    . ?3 R3 z8 {3 C, z6 i! ~else
    # J. }  y0 D( X- N, b7 {$ ~count <= count + 1; //当count没计数到指定值是,count执行加一操作
    4 f8 V$ B/ S+ }end
    . w; e( C4 S2 _& b( S6 b4 falways @(posedge sys_clk)
    % x9 W4 o6 b! P' j4 Zbegin$ B: I4 M6 {$ ~
    case(flag) //由于flag会不断变化,并且flag在从一个值变成另一个值的时候,会保持一段很长的时间,我们利用它来产生流水灯现象$ X/ K: m& |6 d8 ~4 d. g; N5 v$ K! ?
    2'b00: led <= 3'b011; //点亮第一个灯 低电平点亮" y% N* {- ~3 V+ a  o' g9 u
    2'b01: led <= 3'b101; //点亮第一个灯 低电平点亮. f3 K8 `& _& z- h
    2'b10: led <= 3'b110; //点亮第一个灯 低电平点亮+ T: `. U( Z1 K0 D- a8 s% y
    default:led <= 3'b111; //一般要设置一个缺省状态,三个led全部灭7 f" F5 `0 I' U% |5 D4 H
    endcase" Q. V, p2 i" o# e
    end! `6 T/ t; ^2 k3 |; q
    endmodule
    0 }  }' A0 |- I8 ]2 Z" i; S3 k9 ]& C! s5 d% a( _+ I

    该用户从未签到

    2#
    发表于 2019-6-3 17:10 | 只看该作者
    感谢楼主的代码
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-12 04:43 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表