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

流水灯代码分享

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    流水灯代码分享

    2 i& t4 n8 g: W+ \3 L4 C/ @) Z5 o; M' n" ?
    module countpro(sys_clk,rst_n,led); //接口定义0 a0 o1 s( D0 ~  C
    input sys_clk,rst_n; //输入:系统时钟50MHz,复位输入9 ]3 f2 h+ ]) Y  {2 \& Y
    output [2:0] led; //输出:3个led产生流水现象,轮流点亮+ `, p4 ?1 _: s2 w: v+ E, n$ |
    reg [25:0] count; //系统时钟频率过高,需要计数的方式来产生延时,使led保持状态一段时间
    ( s6 O) V9 P; o! B: v1 u( c  Sreg [2:0] led; //led低电平点亮  L" l! S0 ]9 O  C- w% U: \
    reg [1:0] flag; //状态转换的入口,发生变化的时候,点亮另外一个led' |! ~+ |0 E- ^1 V( F' ~' N' j1 u
    always @(posedge sys_clk,negedge rst_n)& Y4 u: S, Q5 p7 ^# @9 b- X
    if(!rst_n) //复位,给寄存器赋初值/ F4 g( B9 F4 D" A# A/ S/ s
    begin) A1 V, q" }/ Z- Z6 g, ^  @- \) ~# Z
    flag <= 2'b0;
    0 l( _8 g$ p  p9 J5 Mcount <= 26'b0;2 q6 m$ c, r, e# C6 W
    end* w# p) ?1 f. \; M3 m: B* _
    else //sys_clk上升沿到来, G$ y- L9 N" @4 j4 P1 @
    begin
    ; I1 b; r  T" x$ G3 Y" C3 |if( count == 26'b11_1111_1111_1111_1111_1111_1110 )' N# [  A' M3 B
    begin 7 q. `* W/ F7 `8 {; c
    count <= 26'b0; //count归零,便于下次重新开始计数3 r1 f  {$ k0 ?7 O% @. N' o
    if(flag == 2'b10) //当flag等于2’b10时,flag归零(实际上,当flag==2’b10时,要在下一次归零,即在flag==2’b11时,马上就变成2’b00,而并非当flag==2’b10时马上变为2’b00;)) d: }: E5 k. D* i1 x
    flag <= 2'b00;
    : k' Q# i% w) F5 p9 relse //否则flag加一
    * e) ~4 k& N9 ?4 Nflag <= flag+2'b01;
    2 n! l" X3 \% D0 d' j! Send5 M$ H, \% d5 G8 Y& F# E; m* C
    else. e: f& I5 l+ G# d& G
    count <= count + 1; //当count没计数到指定值是,count执行加一操作- y* e+ M5 ]& ~1 \$ e& h
    end( F- m8 s0 d/ d5 x. y) o
    always @(posedge sys_clk)
    , b4 d' R5 `7 X6 z$ \begin3 Z) o$ G0 [6 f; L" A# M) a7 X2 K
    case(flag) //由于flag会不断变化,并且flag在从一个值变成另一个值的时候,会保持一段很长的时间,我们利用它来产生流水灯现象' H; t: R) F' s) ^& k  X
    2'b00: led <= 3'b011; //点亮第一个灯 低电平点亮
    : T0 W1 j' ?/ s( H2'b01: led <= 3'b101; //点亮第一个灯 低电平点亮
    / W: B, N+ c" ]1 R% C% t# J; z2'b10: led <= 3'b110; //点亮第一个灯 低电平点亮
    ) e- R* b' G5 y" zdefault:led <= 3'b111; //一般要设置一个缺省状态,三个led全部灭) R& R3 k1 D& {9 Y- y" z' k6 ?$ K. [
    endcase
    % H: s" v( i: g9 p' Bend
    $ x: [, @/ y$ M& wendmodule+ X6 G$ N  e8 R5 q" _$ k

    2 @3 b! W5 v" M7 H: |9 c

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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