Rocket - util - Timer

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

 
簡單介紹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. 附錄
 
相關文章
相關標籤/搜索