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