码迷,mamicode.com
首页 > 其他好文 > 详细

Rocket - util - Timer

时间:2019-06-09 00:39:45      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:rap   div   class   并且   开始   long   dom   out   val   

https://mp.weixin.qq.com/s/Z4JJhZ_jL1lqF1nf_orq9A

 
简单介绍Timer的实现。
 
?技术图片?
 
1. 基本功能
 
实现定时器的功能。
 
2. Timer
 
实现一个静态装入的定时器:
?技术图片?
1) initCount
 
定时器的初始值,静态配置,不可动态改变。
 
2) maxInfligh
 
定时器事件的种类。
 
3) io
 
?技术图片?
a. start:某个定时器事件需要启动定时器,io.start.bits为这个定时器事件的ID;
b. stop:某个定时器事件需要停止定时器,io.stop.bits为这个定时器事件的ID;
c. timeout:输出定时器是否超时,以及超时的定时器事件的ID;
 
4) inflight
 
记录各个定时器事件是否需要启动定时器。
?技术图片?
 
5) countdown
 
倒数计数器。
 
6) active
 
定时器是否是激活状态,即正在倒计时的状态。
只需要有一个定时器事件要求开始计时,定时器即处于激活状态。
 
7) 倒计时
 
当定时器激活时,不停的进行倒计时:
?技术图片?
 
8) 开始计时
 
?技术图片?
当io.start.valid为真时,标记该定时器事件对应的inflight比特为真,并且把countdown置位初始值,开始倒计时。
 
9) 停止计时
 
?技术图片?
当io.stop.valid为真时,标记该定时器事件对应的inflight比特为假。这个动作不一定会停止定时器。
 
10) 超时
 
?技术图片?
当定时器处于激活状态,并且countdown倒数到0时,定时器超时。
 
11) assert
 
?技术图片?
意思是说:不能停止没有事先要求启动的定时器事件。
 
个人认为,针对逆否命题进行assert比较好理解,即:
?技术图片?
 
 
3. SimpleTimer
 
?技术图片?
简单的定时器。不考虑定时器事件,只提供一个开始和停止控制。
 
1) io
 
?技术图片?
a. start:开始定时器;
b. stop:停止定时器;
c. timeout:定时器是否超时;
 
2) 开始计时
 
?技术图片?
当io.start为真时,定时器激活,开始从initCount - 1倒计时。
 
3) 停止计时
 
?技术图片?
当io.stop为真时,定时器转入未激活状态。
 
4) 超时
 
?技术图片?
 
4. DynamicTimer
 
定时时长可以动态输入的定时器:
?技术图片?
 
1) io
 
?技术图片?
其中,period为输入的定时时长。
 
2) 开始计时
 
?技术图片?
 
3) 停止计时
 
?技术图片?
要求停止,或者倒数到0时,停止计时。
 
4) 倒计时
 
?技术图片?
 
5) 超时
 
?技术图片?
 
5. 附录
 

Rocket - util - Timer

标签:rap   div   class   并且   开始   long   dom   out   val   

原文地址:https://www.cnblogs.com/wjcdx/p/10992225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!