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

流水灯代码分享

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    流水灯代码分享
    6 X/ q% o$ G$ l0 }/ B

    : ^& u; p* @+ q  g) u" tmodule countpro(sys_clk,rst_n,led); //接口定义5 r* N  u5 b( F. ?  m4 `
    input sys_clk,rst_n; //输入:系统时钟50MHz,复位输入
    + u; {. A6 h- ]output [2:0] led; //输出:3个led产生流水现象,轮流点亮" G+ o+ b& s3 D- @( w; x
    reg [25:0] count; //系统时钟频率过高,需要计数的方式来产生延时,使led保持状态一段时间
    $ W, F, h0 N3 ?3 |' breg [2:0] led; //led低电平点亮
    2 i% B2 b2 d: H( U5 O0 K3 \reg [1:0] flag; //状态转换的入口,发生变化的时候,点亮另外一个led* X. @. p$ Z% K5 b( b5 F6 [
    always @(posedge sys_clk,negedge rst_n)
    ' Z, g2 R6 `3 \if(!rst_n) //复位,给寄存器赋初值
    ( j% t# O, T$ S6 I7 v. Abegin4 H7 Y; ]9 Y$ y% ^( c
    flag <= 2'b0;
    / B3 W1 U* z- f/ K' i# S: scount <= 26'b0;7 X* j* I4 f, _+ N4 h" y
    end- z- ?2 B. b' W$ P1 S& N" R/ s; n+ i
    else //sys_clk上升沿到来5 I9 E" d( o# N% Z
    begin1 J6 ]6 h( @7 b( k
    if( count == 26'b11_1111_1111_1111_1111_1111_1110 ); u- _. _7 F$ \8 y  H
    begin ! @) m* ^- A- Q
    count <= 26'b0; //count归零,便于下次重新开始计数
    + C  a& ]; _6 h- O. Fif(flag == 2'b10) //当flag等于2’b10时,flag归零(实际上,当flag==2’b10时,要在下一次归零,即在flag==2’b11时,马上就变成2’b00,而并非当flag==2’b10时马上变为2’b00;)
    " j' _6 q4 y8 T8 ?5 q( e, Vflag <= 2'b00;5 m& m% o! i& p( G' b2 g2 X% d
    else //否则flag加一7 V$ @! ]. |% ~. z2 [
    flag <= flag+2'b01;
    4 v6 G5 x, M6 B; O1 Lend! o& }4 K1 Q5 P7 U  k* _# P6 f
    else
    : @& f- Y) o+ R  m* G  o: i. U8 rcount <= count + 1; //当count没计数到指定值是,count执行加一操作# J/ V) D; a* }  p
    end
    $ @1 A+ q  H2 w6 Q, G. I& `2 Lalways @(posedge sys_clk), E) u0 S0 U0 Z9 z" _3 p9 I
    begin
    ' O# n7 a. N6 L2 ]0 G' C1 Hcase(flag) //由于flag会不断变化,并且flag在从一个值变成另一个值的时候,会保持一段很长的时间,我们利用它来产生流水灯现象
    7 B( M9 o8 {- s) j$ r' P2'b00: led <= 3'b011; //点亮第一个灯 低电平点亮9 Y, P7 g4 l/ u$ o) O" n0 L: q
    2'b01: led <= 3'b101; //点亮第一个灯 低电平点亮3 f' o& K" G) Z9 V+ l$ n6 W  q
    2'b10: led <= 3'b110; //点亮第一个灯 低电平点亮
    # `- c+ n7 f- e# b6 T& @default:led <= 3'b111; //一般要设置一个缺省状态,三个led全部灭
    0 n# v/ l* d) L* ?! j# l" g& Z5 pendcase% F3 |/ I1 ?9 H! A8 s
    end
    # _% U3 {& ^& L5 l+ f9 o, v0 lendmodule( _9 _) v: ]% ]5 C& J

    & _) u1 y: p& Q) L# x

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-10 05:08 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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