共享總線片上系統(tǒng)中,仲裁器是必不可少的
在存在多個(gè)主設(shè)備的共享總線片上系統(tǒng)中,仲裁器是必不可少的。它決定哪個(gè)主設(shè)備可以使用總線。所有的主設(shè)備通過置高CYC_O信號(hào)向仲裁器請(qǐng)求使用總線,仲裁器則根據(jù)用戶自定義的優(yōu)先級(jí)算法確定哪個(gè)主設(shè)備可以使用總線。仲裁器的輸出信號(hào)GNT0~GNTN(或者同時(shí)輸出更加簡(jiǎn)潔的GNT()信號(hào)作為選擇器的輸入,如圖24中的例子)對(duì)應(yīng)N個(gè)不同的主設(shè)備。GNT[N-1…0]用于選擇器的選擇輸入端,以選擇各主設(shè)備和從設(shè)備對(duì)應(yīng)的輸入信號(hào)。需要指出,二輸入與門是最簡(jiǎn)單的選擇器,它或者選擇一個(gè)信號(hào),或者一個(gè)信號(hào)也不選。
優(yōu)先級(jí)算法最常用的是循環(huán)優(yōu)先級(jí)(Round robin)和固定優(yōu)先級(jí)相結(jié)合。所謂循環(huán)優(yōu)先級(jí)是指各個(gè)主設(shè)備的優(yōu)先級(jí)安排按照FIFO的方式組織,排到隊(duì)頭的主設(shè)備先使用總線,使用完總線后該主設(shè)備被插入到FIFO的隊(duì)尾。
常見的片上系統(tǒng)的主設(shè)備包括一個(gè)處理器,一個(gè)液晶顯示屏控制器,若干DMA引擎。一般地,液晶顯示屏控制器的優(yōu)先級(jí)固定是最高的,DMA引擎的優(yōu)先級(jí)次之,而處理器的優(yōu)先級(jí)最低。與此同時(shí),處理器是缺省的主設(shè)備,也就是說,當(dāng)沒有其他主設(shè)備申請(qǐng)使用總線時(shí),總線的使用權(quán)歸處理器。DMA引擎存在多個(gè),它們之間采用循環(huán)優(yōu)先級(jí),表示它們?cè)谙到y(tǒng)中具有同等的地位。高優(yōu)先級(jí)的主設(shè)備使用一次總線只完成一次單次操作或者塊操作,然后釋放總線,并試圖再次獲得總線。這樣做的目的是讓出總線給其他主設(shè)備插入更加重要的操作。一次塊操作的子操作次數(shù)的典型值為4或者8,只在特殊情況下才使用16或者更大。
因而,Wishbone共享總線示例中的仲裁器可以設(shè)計(jì)如下:
//CYC0 is the default master, but it has lower priority.
module arbiter2M2S(
input CLK,input RST, input CYC0,input CYC1,
output reg GNT0,output reg GNT1,output CYC);
always @(posedge CLK or posedge RST)
begin
if(RST)
{GNT0,GNT1}<=2'b10;
if(CYC1 & !CYC0)
{GNT0,GNT1}<=2'b01;
else if(!CYC1)
{GNT0,GNT1}<=2'b10;
end
assign CYC=GNT1?CYC1:CYC0;
endmodule





