zoukankan      html  css  js  c++  java
  • 流水灯之并行操作

    流水灯
     功能描述:
     10个led灯 从第一个和最后一个led灯开始从两边向中间闪烁,闪烁频率为0.5s一次
     项目实现
     首先定义一个计时器 计数器的名字为count1,如果复位或者count1==2.5s时复位,否则count1加1,开发板晶振50M 当计数达到TIME=2.5s/(1/50M)-1=124_999_999
    次数的时候,即为2.5s
    具体代码为:always@(posedge CLK or negedge RSTn)
       if(!RSTn)
        Count1<=28'd0;
       else if(Count1==TIME)
        Count1<=28'd0;
       else
        Count1<=Count1+1'b1;
    由流水灯的方式 在2.5s的周期内,有5对led的闪烁方式是一样,所以可以采用并行操作的方式,把TIME分为5部分,让10只led灯只在特定的时间段下亮灭
    部分代码如下
    reg [1:0] rLED_Out;
    always@(posedge CLK or negedge RSTn)
    if(!RSTn)
     rLED_Out<=2'b0;
    else if(Count1>28'd0&&Count1<28'd25_000_000)
     rLED_Out<=2'b11;
    else
     rLED_Out<=2'b0;
    assign LED_Out=rLED_Out;
    顶层模块为
    module top
    (
    CLK,RSTn,LED_Out
    );
    input CLK;
    input RSTn;
    output [9:0] LED_Out;
    wire[1:0] LED_Out1;//连线作用
    module1 U1
    (
     .CLK(CLK),
     .RSTn(RSTn),
     .LED_Out(LED_Out1)LED_Out1把模块里面的led和led[9:0]链接起来
    );
    assign LED_Out={LED_Out1,LED_Out2....}
    错误总结
    在五分之一个周期的时候写Count1的范围需要对限定左边的极限
    模块声明里面逗号,外部加分号

    LED_Out1所在9:0里面的位置取决于在大括号里面的位置

  • 相关阅读:
    团队项目启动及成员分工
    图书馆 管理系统--可行性报告
    KING小组
    什么是F#
    都删了,走了
    机器学习-决策树
    深度学习--说一说卷积和池化
    机器学习--逻辑回归_LR(内附细说极大似然估计,梯度下降法)
    Dlib安装(Mac版)
    动态语言、静态语言及动态语言的“鸭子类型“
  • 原文地址:https://www.cnblogs.com/bixiaopengblog/p/5927197.html
Copyright © 2011-2022 走看看