異步周期結(jié)束方式
單次讀操作每次操作只完成一次讀或者寫,是最基本的總線操作方式。但是,Wishbone主設(shè)備或者從設(shè)備也可以不支持單次讀/寫操作,甚至沒有地址和數(shù)據(jù)總線。
本文引用地址:
http://www.ex-cimer.com/article/201612/330214.htm單次讀操作如圖1。在時(shí)鐘上升沿0,主設(shè)備將地址信號(hào)ADR_O()、TGA_O()放到總線上,將WE_O置為低表示讀操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置,將CYC_O和TGC_O置高表示操作正在進(jìn)行,將STB_O置高表示操作開始。
在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測到主設(shè)備發(fā)起的操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的輸入信號(hào)DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對主設(shè)備STB_O的響應(yīng)。
在時(shí)鐘上升沿1,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,并將STB_O和CYC_O置為低表示操作完成。從設(shè)備發(fā)現(xiàn)STB_O置低后,也將主設(shè)備的輸入信號(hào)ACK_I置低。
在圖1中,從設(shè)備可以上升沿0和上升沿1之間插入任意多個(gè)等待周期。
![](http://editerupload.eepw.com.cn/fetch/20161101/330214_1_0.jpg)
![](http://editerupload.eepw.com.cn/fetch/20161101/330214_1_1.jpg)
圖1Wishbone總線的單次讀操作(周期異步結(jié)束方式)
同步周期結(jié)束方式
圖2Wishbone總線的單次讀操作(周期同步結(jié)束方式)
在時(shí)鐘上升沿0:
- Master在[ADR_O()]和[TGA_O()]發(fā)出有效的地址
- Master拉低[WE_O],表明是一個(gè)讀周期
- Master發(fā)出有效數(shù)據(jù)選擇信號(hào)[SEL_O()]表明哪些數(shù)據(jù)是有效的
- Master發(fā)出[CYC_O]和[TGC_O()]表明總線周期的開始
- Master發(fā)出[STB_O]表明操作的開始
在時(shí)鐘上升沿1:
- Slave檢測到主設(shè)備發(fā)起的操作,準(zhǔn)備發(fā)出[ACK_I]
- Slave在[DAT_O]和[TGD_O()]發(fā)出有效的數(shù)據(jù)
- Slave發(fā)出[ACK_I]應(yīng)答[STB_O],表明數(shù)據(jù)有效,可以讀取數(shù)據(jù)了
- Master發(fā)現(xiàn)[ACK_I],準(zhǔn)備鎖存[DAT_I]和[TGD_I()]
注意:Slave可以在發(fā)出[ACK_I]前插入等待周期(-WSS-),以控制傳速度??梢圆迦肴我舛鄠€(gè)等待周期。
在時(shí)鐘上升沿2:
- Master鎖存[DAT_I]和[TGD_I()]
- Master拉低[STB_O]和[CYC_O],表明總線周期的結(jié)束
- Slave發(fā)現(xiàn)Master拉低[STB_O],也將[ACK_I]拉低
評論