「博文連載」Wishbone總線地址不變突髮結束方式

「博文连载」Wishbone总线地址不变突发结束方式

地址不變突發是一個總線週期,在這個總線週期中完成多次操作,但是地址不變。地址不變突發的典型應用是以DMA方式讀/寫FIFO。主設備在時鐘的某一個上升沿將CTI置為3’b001後,下一個週期的操作必須與本週期,包括SEL_O信號也不能改變,即在地址不變突發中的每一次操作除傳輸的數據可能發生變化外其他都是相同的。

「博文连载」Wishbone总线地址不变突发结束方式

圖27 Wishbone總線的地址不變突發示例

圖27給出了一個地址不變突發寫總線週期示例。圖中主設備和從設備一共進行了4次操作。

在時鐘上升沿0,主設備將地址信號ADR_O放到總線上,將數據信號DAT_O、TGD_O放到總線上,將WE_O置為高表示寫操作,將CTI_O置為3’b001表示地址不變突發總線週期,將適當的SEL_O信號置高通知從設備將數據總線上哪些信號是有效的,將CYC_O和TGC_O置高表示操作正在進行,將STB_O置高表示第一次寫操作開始。

在時鐘上升沿1,從設備檢測到主設備的寫操作,將DAT_I採樣,並置高ACK_O。

在時鐘上升沿2,主設備檢測到ACK_I為高,知道第一次傳輸順利完成,由於數據沒有準備好,於是將STB_O置低表示插入等待週期。

在等待週期,從設備知道地址不變突發寫操作仍然在進行,因此一直將ACK_O置高。但是此時主設備和從設備知道沒有真正的傳輸發生。

在時鐘上升沿3,主設備已經將新的數據準備好,於是將STB_O置高表示第二次寫操作開始,並更新DAT_O。

在時鐘上升沿4,從設備檢測到主設備的寫操作,將DAT_I採樣。同時從設備發現沒有足夠的空間存儲數據或者由於其他原因不能及時接收新的數據,於是將ACK_O置低插入等待週期。主設備檢測到ACK_I為高,於是發起第三次操作,更新DAT_O。

在時鐘上升沿5,從設備發現可以繼續接收數據,於是將DAT_I採樣並將ACK_O置高。

在時鐘上升沿6,主設備檢測到ACK_I為高,於是發起第四次操作,更新DAT_O,同時將CTI_O置為3’b111表示本次操作為最後一次操作。

在時鐘上升沿7,從設備將DAT_I採樣,並根據CTI_O為3’b111知道本次地址不變突發寫操作完成,於是將ACK_O置低。

「博文连载」Wishbone总线地址不变突发结束方式
「博文连载」Wishbone总线地址不变突发结束方式


分享到:


相關文章: