很多總線標(biāo)準(zhǔn)中,從設(shè)備必須譯碼所有的地址,這稱為全地址譯碼。比如在PCI總線中,每一個(gè)從設(shè)備都必須具有32位的地址輸入,并對(duì)這32位的地址進(jìn)行譯碼以確定如何響應(yīng)主設(shè)備的請(qǐng)求。
片上總線規(guī)范比如Wishbone規(guī)范支持部分地址譯碼。在部分地址譯碼總線規(guī)范中,從設(shè)備只需要譯碼自己所使用的地址空間。比如如果一個(gè)從設(shè)備只有4個(gè)地址,它就只需譯碼2比特地址而不是32位地址。這樣做的好處是:地址譯碼速度快,地址譯碼邏輯少,從設(shè)備可自由定義地址總線寬度。
圖26 Wishbone部分地址譯碼的實(shí)現(xiàn)
Wishbone部分地址譯碼的實(shí)現(xiàn)如圖26所示。對(duì)于圖中所示IP核,我們假設(shè)其只有4個(gè)地址,對(duì)應(yīng)4組寄存器。地址譯碼器首先譯碼出其地址并給出選擇信號(hào),該選擇信號(hào)與共享總線的STB_O相與輸入到IP核的STB_I。而地址總線的最低2位被直接連接到IP核,IP核再根據(jù)這兩位譯碼出當(dāng)前操作選中的是具體哪個(gè)寄存器。
Wishbone共享總線示例中的仲裁器可以設(shè)計(jì)如下:
//the ACMP0 is for slave0: Flash
//the ACMP1 is for slave1: SRAM
module address_decoder2S(addr_i,ACMP0,ACMP1);
input [31:0]addr_i;
output ACMP0,ACMP1;
parameter ADDR_LOW_S0=32'b0;
parameter ADDR_HIGH_S0=32'h1FFFFF;//2M space for Slave 0;
//the rest of the space for Slave 1,so we do not need a dummuy slave;
assign ACMP0=addr_i<=ADDR_HIGH_S0;
assign ACMP1=~ACMP0;
endmodule
-
寄存器
+關(guān)注
關(guān)注
31文章
5396瀏覽量
122467 -
總線
+關(guān)注
關(guān)注
10文章
2934瀏覽量
89043 -
Wishbone
+關(guān)注
關(guān)注
0文章
16瀏覽量
10473
原文標(biāo)題:【博文連載】Wishbone總線地址譯碼
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
51單片機(jī)P0口已用作地址\數(shù)據(jù)總線,還能用來(lái)當(dāng)做普通I\O使用嗎?
請(qǐng)問(wèn)AD5933電路設(shè)計(jì)需要把模擬部分和數(shù)字部分地隔離嗎?
IO接口地址譯碼電路

I/O地址譯碼實(shí)驗(yàn)

地址譯碼電路設(shè)計(jì)實(shí)驗(yàn)報(bào)告

評(píng)論