<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 片上總線Wishbone 學(xué)習(xí)(十)總線周期之塊讀操作

          片上總線Wishbone 學(xué)習(xí)(十)總線周期之塊讀操作

          作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò) 收藏
          異步周期結(jié)束方式

          塊讀/寫操作每次讀/寫數(shù)據(jù)多次。塊讀/寫操作實(shí)際上是由順序進(jìn)行的多個(gè)單次讀/寫操作組合而成的。在同時(shí)存在多個(gè)主設(shè)備時(shí),塊讀/寫操作非常有用,一個(gè)塊讀寫一般是不能打斷的,比如一次DMA,如圖9所示,在一次塊操作中,CRC_O信號(hào)必須保持為高。同時(shí)為了保證整個(gè)塊操作不被打斷,LOCK_O也可以置為高,但是LOCK_O不必須為高。典型地,主設(shè)備進(jìn)行一次DMA連續(xù)傳輸4個(gè)或者8個(gè)總線寬度單位的數(shù)據(jù),然后主動(dòng)釋放總線,其后又試圖占用總線重新進(jìn)行DMA,直到所有的數(shù)據(jù)都傳輸完畢。這樣做的好處是允許其他優(yōu)先級(jí)更高的主設(shè)備在兩次DMA之間插入操作以完成更加緊急的任務(wù)。

          本文引用地址:http://www.ex-cimer.com/article/201612/330212.htm

          圖1Wishbone總線塊操作中CYC_O信號(hào)的用法

          塊讀操作如圖2所示。塊操作最多能夠在每個(gè)時(shí)鐘周期進(jìn)行一次數(shù)據(jù)讀或者寫,但是主設(shè)備和從設(shè)備都可以通過(guò)插入等待周期控制塊操作的速度。一次塊操作包括多次子操作。每一次子操作都是塊操作的一個(gè)階段,完成一次數(shù)據(jù)讀或者寫。圖10的塊操作由五次讀操作完成,其過(guò)程如下:

          在時(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置高表示一次子操作開始。CYC_O和TGC_O()從無(wú)效變?yōu)橛行Э梢园l(fā)生在上升沿0以前的任何時(shí)刻。

          在時(shí)鐘上升沿1到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。

          在時(shí)鐘上升沿1,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完成第一次子操作。主設(shè)備將新地址信號(hào)ADR_O()、新TGA_O()放到總線上,將新的SEL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置。

          在時(shí)鐘上升沿2到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第二次操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),繼續(xù)將主設(shè)備的ACK_I置高。

          在時(shí)鐘上升沿2,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完成第二次子操作。主設(shè)備將STB_O信號(hào)置低表示插入等待周期。

          在時(shí)鐘上升沿3到達(dá)之前,從設(shè)備檢測(cè)到STB_O信號(hào)為低,將ACK_I置低。

          在時(shí)鐘上升沿3,主設(shè)備發(fā)起第三次操作,將新的地址信號(hào)ADR_O()、新的TGA_O()放到總線上,將WE_O置為低表示讀操作,將適當(dāng)?shù)腟EL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置,將STB_O置高表示第三次子操作開始。

          在時(shí)鐘上升沿4到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第三次子操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。

          圖2Wishbone總線的塊讀操作(異步周期結(jié)束方式)

          在時(shí)鐘上升沿4,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完成第三次子操作。主設(shè)備同時(shí)發(fā)起第四次子操作,將新地址信號(hào)ADR_O()、新TGA_O()放到總線上,將新的SEL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置。

          在時(shí)鐘上升沿5到達(dá)之前,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第四次子操作,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。

          在時(shí)鐘上升沿5,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,完成第五次子操作。主設(shè)備同時(shí)發(fā)起第六次子操作,將新地址信號(hào)ADR_O()、新TGA_O()放到總線上,將新的SEL_O()信號(hào)置高通知從設(shè)備將數(shù)據(jù)放在數(shù)據(jù)總線的適當(dāng)位置。

          在時(shí)鐘上升沿5過(guò)后,從設(shè)備檢測(cè)到主設(shè)備發(fā)起的第五次子操作,但是由于數(shù)據(jù)沒(méi)有準(zhǔn)備好,它在新上升沿到達(dá)之前將ACK_I信號(hào)置低表示插入等待周期。
          上升沿5和6之間被插入了多個(gè)等待周期。當(dāng)從設(shè)備準(zhǔn)備好數(shù)據(jù),在時(shí)鐘上升沿6到達(dá)之前,將適當(dāng)?shù)臄?shù)據(jù)放到主設(shè)備的DAT_I()和TGD_I(),將主設(shè)備的ACK_I置高作為對(duì)主設(shè)備STB_O的響應(yīng)。

          在時(shí)鐘上升沿6,主設(shè)備發(fā)現(xiàn)ACK_I信號(hào)為高,將DAT_I()和TGD_I()采樣,并將STB_O和CYC_O置為低表示整個(gè)塊讀操作完成。從設(shè)備發(fā)現(xiàn)STB_O置低后,也將主設(shè)備的ACK_I置低。

          同步周期結(jié)束方式
          圖3Wishbone總線的塊讀操作(同步周期結(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]表明操作的開始
          注意:Mater必須在時(shí)鐘上升沿1或之前發(fā)出[CYC_O]和/或[TGC_O()]


          在時(shí)鐘上升沿1:
          • Slave檢測(cè)到主設(shè)備發(fā)起的操作,發(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()]

          在時(shí)鐘上升沿2:
          • Master鎖存[DAT_I]和[TGD_I()]
          • Master拉低[STB_O]插入等待周期(-WSS-)


          在時(shí)鐘上升沿3:
          • Master在[ADR_O()]和[TGA_O()]發(fā)出有效的地址
          • Master拉低[WE_O],表明是一個(gè)讀周期
          • Master發(fā)出有效數(shù)據(jù)選擇信號(hào)[SEL_O()]表明哪些數(shù)據(jù)是有效的
          • Master發(fā)出[STB_O]表明操作的開始

          在時(shí)鐘上升沿4:
          • Slave檢測(cè)到主設(shè)備發(fā)起的操作,發(fā)出[ACK_I]
          • Slave在[DAT_O]和[TGD_O()]發(fā)出有效的數(shù)據(jù)

          在時(shí)鐘上升沿5:
          • Master鎖存[DAT_I]和[TGD_I()]
          • Master拉低[STB_O]和[CYC_O],結(jié)束總線周期



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();