異步周期結(jié)束方式
塊寫操作的例子如圖1所示。圖1的一次塊寫操作由五個(gè)相互關(guān)聯(lián)的單次寫操作完成。
本文引用地址:
http://www.biyoush.com/article/201612/330211.htm在時(shí)鐘上升沿0,主設(shè)備將地址信號(hào)ADR_O()、TGA_O()放到總線上,將數(shù)據(jù)信號(hào)DAT_O()、TGD_O()放到總線上,將WE_O置為高表示寫操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將CYC_O和TGC_O置高表示操作正在進(jìn)行,將STB_O置高表示第一次寫操作開始。
在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。
在時(shí)鐘上升沿1,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,得知第一次寫操作完成,于是將新地址信號(hào)ADR_O()、新TGA_O()放到總線上,將新數(shù)據(jù)信號(hào)DAT_O()、新TGD_O()放到總線上,將WE_O置為高表示寫操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將CYC_O和TGC_O置高表示操作繼續(xù)在進(jìn)行,將STB_O置高表示第二次寫操作開始。
在時(shí)鐘上升沿2到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第二次寫操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。
在時(shí)鐘上升沿2,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,得知第二次寫操作完成,發(fā)現(xiàn)自己的數(shù)據(jù)還沒有準(zhǔn)備好,于是將STB_O置低表示插入等待周期。
在時(shí)鐘上升沿3到達(dá)之前,從設(shè)備檢測(cè)到STB_O為低,也將ACK_I置低。
在時(shí)鐘上升沿3,主設(shè)備發(fā)起第三次操作,將新地址信號(hào)ADR_O()、新TGA_O()放到總線上,將新數(shù)據(jù)信號(hào)DAT_O()、新TGD_O()放到總線上,將WE_O置為高表示寫操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將CYC_O和TGC_O置高表示操作繼續(xù)進(jìn)行,將STB_O置高表示第三次寫操作開始。
在時(shí)鐘上升沿4到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第三次寫操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。
在時(shí)鐘上升沿4,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,得知第三次寫操作完成,于是將新地址信號(hào)ADR_O()、新TGA_O()放到總線上,將新數(shù)據(jù)信號(hào)DAT_O()、新TGD_O()放到總線上,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)總線上哪些信號(hào)是有效的,將STB_O繼續(xù)置高表示第四次寫操作開始。
在時(shí)鐘上升沿5到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第四次寫操作,將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。
在時(shí)鐘上升沿5,從設(shè)備將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,得知第四次寫操作完成,于是發(fā)起第五次操作,將新地址信號(hào)ADR_O()、新TGA_O()放到總線上。
在時(shí)鐘上升沿5之后新的時(shí)鐘上升沿到達(dá)之前,從設(shè)備發(fā)現(xiàn)因?yàn)槟承┰驎簳r(shí)無法繼續(xù)接收數(shù)據(jù),因此將ACK_I信號(hào)置低,插入等待。
在時(shí)鐘上升沿6,當(dāng)從設(shè)備發(fā)現(xiàn)可以繼續(xù)接收數(shù)據(jù),于是在在最后一個(gè)等待周期結(jié)束且上升沿5到達(dá)之前,將DAT_I()和TGD_I()采樣;主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,得知第五次寫操作完成。并將STB_O和CYC_O置低表示整個(gè)塊寫操作完成。
圖1 Wishbone總線的塊寫操作(異步周期結(jié)束方式)
同步周期結(jié)束方式
![](http://editerupload.eepw.com.cn/fetch/20161101/330211_1_1.jpg)
圖2 Wishbone總線的塊寫操作(同步周期結(jié)束方式)
在時(shí)鐘上升沿0:
- Master在[ADR_O()]和[TGA_O()]發(fā)出有效的地址
- Master在[DAT_O()]和[TGD_O()]發(fā)出數(shù)據(jù)
- Master發(fā)出[WE_O],表明是一個(gè)寫周期
- Master發(fā)出有效數(shù)據(jù)選擇信號(hào)[SEL_O()]表明哪些數(shù)據(jù)是有效的
- Master發(fā)出[CYC_O]和[TGC_O()]表明總線周期的開始
- Master發(fā)出[STB_O]表明操作的開始
注意:Mater必須在時(shí)鐘上升沿1或之前發(fā)出[CYC_O]和/或[TGC_O()]
在時(shí)鐘上升沿1:
- Slave檢測(cè)到主設(shè)備發(fā)起的操作,準(zhǔn)備發(fā)出[ACK_I]
- Slave準(zhǔn)備鎖存[DAT_O]和[TGD_O()]
- Slave發(fā)出[ACK_I]應(yīng)答[STB_O]
在時(shí)鐘上升沿2:
- Slave鎖存[DAT_I]和[TGD_I()]
- Master拉低[STB_O]插入等待周期(-WSS-)
在時(shí)鐘上升沿3:
- Master在[ADR_O()]和[TGA_O()]發(fā)出有效的地址
- Master在[DAT_O()]和[TGD_O()]發(fā)出數(shù)據(jù)
- Master發(fā)出[WE_O],表明是一個(gè)寫周期
- Master發(fā)出有效數(shù)據(jù)選擇信號(hào)[SEL_O()]表明哪些數(shù)據(jù)是有效的
- Master發(fā)出[CYC_O]和[TGC_O()]表明總線周期的開始
- Master發(fā)出[STB_O]表明第二次操作的開始
在時(shí)鐘上升沿4:
- Slave檢測(cè)到主設(shè)備發(fā)起的操作,準(zhǔn)備發(fā)出[ACK_I]
- Slave準(zhǔn)備鎖存[DAT_O]和[TGD_O()]
在時(shí)鐘上升沿5:
- Master監(jiān)視[ACK_I]
- Master拉低[STB_O]和[CYC_O],結(jié)束總線周期
評(píng)論