首页 > 其他 > 详细

06分频计数器之LED闪烁1

时间:2020-05-07 20:01:28      阅读:65      评论:0      收藏:0      [点我收藏+]

一设计功能是:让LED灯每1秒亮一次,再灭一秒,闪烁时间周期为2秒。

 

二分频的介绍:

  (一)设计方式:IP核和自己动手写。

  (二)对于分频的构成:一个是计数器,还有时钟翻转。方法一是计满整个周期,一半周期为高,一半为低。第二种是,计满半个时钟周期,就反转。

三设计输入:

    (一)分频计数器模块

功能是产生一个1秒的计数器:参数化设计方便修改和仿真时间缩小

parameter T1S = 28‘d49_999_999;

//div counter

reg [27:0]div_cnt;

always@(posedge clk)begin

if(rst==0)

    div_cnt<=28‘d0;

else if(div_cnt==T1S)

    div_cnt<=28‘d0;

else

div_cnt<=div_cnt+1‘b1;

end

    (二)1秒脉冲的标志信号的产生模块

由于LED灯的一秒灭和一秒亮,等效为一个占空比为50%的方波的高电平控制LED灯亮。所以只需让LED的一秒脉冲标志信号,每计时到1秒反转一次,就能

控制LED的一秒闪烁。

//the flag of one_s_flag

reg one_s_flag;

always@(posedge clk)begin

if(rst==0)

one_s_flag<=1‘b0;

else if(div_cnt==(T1S-1))begin

    one_s_flag<=1‘b1;

end

else begin

    one_s_flag<=1‘b0;

end

end

      (三)1秒脉冲的标志信号控制LED亮灭

由第二部分的介绍可知,LED灯的亮灭与脉冲标志信号的电平状态一致。

//the control of led

always@(posedge clk)begin

if(rst==0)begin

led<=1‘b0;

end

else if(one_s_flag==1)begin

led<=~led;

end

else begin

    led<=led;

end

end

 

 

  四设计总结:

设计:照图施工。根据下面各个信号的时序图,直接设计各模块即可。

技术分享图片

 

 

关键点仿真时间缩小:一是仿真中参数缩小。二是在功能模块,修改参数为小的。三是在modelsim中仿真运行时间修改大单位:ns_---us.

led_flash #(.T1S(99)) led_flash_m0(

.clk(Clk),

.rst(Rst),

.led(led)

        );

06分频计数器之LED闪烁1

原文:https://www.cnblogs.com/Xwangzi66/p/12845041.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!