1、RR輪詢調(diào)度?
在設(shè)計中,我們經(jīng)常會用到RR(Round-Robin,RR)輪詢調(diào)度,用于保證在一個時間段內(nèi)的多個請求信號都能得到公平響應(yīng)。
如下所示:輸入rr_req[3:0]為4個請求信號,輸出rr_grant[3:0]為4請求信號對應(yīng)的4個響應(yīng)信號:rr_req[n]表示第n請求申請響應(yīng),rr_grant[n]為1表示第n個請求被響應(yīng)。
如表所示,T1周期,所有請求均有效,首先響應(yīng)低bit的請求,所以rr_grant[0]=1。
T3周期,請求rr_req[0]有效,但是在T2時刻中被響應(yīng)(rr_grant[1]=1),因此此次不再響應(yīng),而是響應(yīng)rr_req[2],所以rr_grant[2]=1.
2、Verilog是如何實現(xiàn)RR輪詢調(diào)度的?
在verilog實現(xiàn)中,僅僅采用簡單的組合邏輯和寄存器就可以實現(xiàn)rr輪詢調(diào)度,不需要狀態(tài)機等設(shè)計。
基本原理是鎖存上一次輸出請求響應(yīng)rr_grant[3:0],并且生成相應(yīng)的有效位rr_mask[3:0],從(rr_valid[3:0]&rr_mask[3:0]) 和 rr_valid[3:0]&(~rr_mask[3:0]) 選取不為0的作為獲得rr_grant_tmp,rr_grant_tmp再經(jīng)過組合邏輯并且取最低有效位。此處mask中1表示請求有效。
B列:為請求信號rr_req[3:0]
C列:pre_rr_result 為模塊內(nèi)部鎖存的上一拍rr_grant[3:0],即寄存器鎖存打拍
D列:rr_mask為pre_rr_result經(jīng)過組合邏輯得到的掩碼,rr_mask= {pre_rr_result[2:0],pre_rr_result[3]}-1’b1
E列: rr_mask為pre_rr_result經(jīng)過組合邏輯得到的掩碼,rr_mask= ( {pre_rr_result[2:0],pre_rr_result[3]}-1’b1)
F列:rr_grant_tmp為B&D or B&E,取其中不為0的
G列:rr_grant_tmp經(jīng)過組合邏輯輸出最低有效位:(~rr_grant_tmp+1’b1)&rr_grant_tmp
-
寄存器
+關(guān)注
關(guān)注
31文章
5359瀏覽量
120780 -
IC設(shè)計
+關(guān)注
關(guān)注
38文章
1298瀏覽量
104124 -
鎖存器
+關(guān)注
關(guān)注
8文章
906瀏覽量
41563 -
狀態(tài)機
+關(guān)注
關(guān)注
2文章
492瀏覽量
27591 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8284
發(fā)布評論請先 登錄
相關(guān)推薦
評論