• 流水灯之并行操作


    流水灯
     功能描述:
     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里面的位置取决于在大括号里面的位置

  • 相关阅读:
    多读者多写者的无锁队列
    PCI设备的地址空间
    交换机能不能连接不同的网段?
    VMware Workstation的三种网络连接模式
    Linux内存寻址和内存管理
    Fragment基础信息传递
    Android Studio获取SHA1和MD5方法
    AppCan学习笔记数据存储及listview简单应用
    Fragment基础生命周期
    Fragment基础创建
  • 原文地址:https://www.cnblogs.com/bixiaopengblog/p/5927197.html
Copyright © 2020-2023  润新知