玩轉Zynq連載3——AXI總線協議介紹1 更多資料共享 鏈接:https://share.weiyun.com/5s6bA0s ![]() AMBA AXI(Advanced eXtensibleInterface)協議是一種面向高性能、高帶寬系統設計的總線協議,能夠滿足各種高速系統的總線互聯。 AXI協議的主要特點有: ●獨立的地址、控制和數據接口 ●支持使用字節選通的不對齊數據的傳輸 ● 基于特定地址進行的突發傳輸 ●通過獨立的讀和寫通道實現低成本直接內存訪問(DMA) ●支持無序數據傳輸 ●提供多級寄存器鎖存的支持,實現更好的時序收斂 AXI協議是Xilinx從6系列的FPGA開始引入的一個接口協議(AXI3)。在ZYNQ中繼續使用,版本是AXI4,ZYNQ內部設備都有AXI接口。AXI4-Lite則是AXI4的一個簡化版本,實現AXI4運行起來的最少接口信號,對于傳輸控制要求不高的應用,方便實用。 AXI協議是基于突發傳輸的。每一次傳輸,地址通道上有地址和控制信息,描述了被傳輸數據的特性。數據將在主機和從機之間傳輸,數據傳輸的方向則是從寫數據通道到從機或從讀數據通道到主機。在寫傳輸中,主機到從機發送數據流。額外的寫響應通道,反饋從機信號的狀態,完成寫傳輸。 AXI協議可以實現以下功能: ●在有效數據傳輸前提供地址信息 ●支持多個數據的傳輸 ●支持無序傳輸 如圖所示,顯示了一個讀傳輸如何使用讀地址和讀數據通道。 ![]() 如圖所示,顯示了一個寫傳輸如何使用寫地址、寫數據和寫響應通道。 ![]() AXI協議一共定義了5個獨立的通道,每一個通道都是由一組控制和響應信號組成的,使用雙向的有效(VALID)信號和準備好(READY)信號實現握手機制。 發送端使用有效信號來指示何時有效數據或者控制信息在通道中是有效的。接收端使用準備好信號來指示何時可以接收數據。讀數據通道和寫數據通道都包含一個結束(LAST)信號來指示何時一個傳輸中的最后一個數據出現。 讀和寫地址通道 每一個讀和寫傳輸都有獨立的地址通道。地址通道上有一個傳輸所需要的全部的地址和控制信息。AXI協議支持以下地址傳輸機制: ●1~16個可變數據個數的突發傳輸 ●8~1024bits可變數據位寬的突發傳輸 ●跳變、遞增和非遞增的突發傳輸 ●專用的或鎖定的傳輸控制 ●系統級的緩存、緩沖控制 ●安全的、專有的傳輸控制 讀數據通道 讀數據通道包含讀數據和從從機返回給主機的全部讀響應信息。讀數據通道包含: ● 讀數據總線,總線寬度可以是8、16、32、64、128、256、512或者1024bits ● 用于指示讀傳輸完成狀態的一個讀響應信號 寫數據通道 寫數據通道實現從主機到從機的寫數據。寫數據通道包含: ● 寫數據總線,總線寬度可以是8、16、32、64、128、256、512或者1024bits ●為每8bits數據提供一個有效標識位,標示數據總線的每個byte是否有效 寫數據通道信息會被接收端緩存,因此主機在進行寫傳輸時,無需確認上一次寫傳輸的狀態。 寫響應通道 寫響應通道提供了一種讓從機對寫傳輸作出響應的機制。所有的寫傳輸都必須基于完成信號的狀態確認傳輸是否成功。每次突發傳輸都有一次傳輸完成的信號響應,注意完成信號只在一次突發傳輸完成后才產生,而不是為一次突發傳輸中的每個獨立的數據產生。 一個典型的系統包含數個主機和從機設備,這些設備通過互聯總線的形式連接在一起,如圖所示。 ![]() AXI協議提供單一接口定義的形式來描述這種互聯: ●在主機與互聯總線之間 ●在從機與互聯總線之間 ●在主機與從機之間 大多數系統使用以下三種互聯方式中的一種: ●地址和數據總線共享 ●地址共享,有多個數據總線 ● 多層互聯,即有多個地址和數據總線 在大多數系統中,對地址通道的帶寬的需求是明顯低于數據通道的帶寬的。此類系統能夠在系統性能與互聯復雜性之間達成很好的平衡,通過共享的地址總線與多個數據總線來達成平行數據傳輸。 每個AXI通道只會單向傳輸信息,無需在不同通道間固定關系。這一點很重要,因為這確保了在任意通道間插入寄存器成為可能,雖然這樣可能會產生一拍或多拍的時鐘延時,但這可以確保在時鐘延時和更高的時鐘頻率實現間做一些靈活的調整,以最大程度的實現系統的優化。 也可以在互聯中的任何必要的地方插入寄存器,使用簡單的寄存器隔離關鍵的時序路徑,以實現處理器和高性能存儲器間的直接、快速的連接。 下面我們要對AXI協議的每個基本傳輸做一一介紹。每個傳輸實例都有VALID和READY信號的握手機制。不論是地址或者數據的傳輸都在VALID和READY信號為高電平的時候發生。 如圖所示,這是一個4個數據的突發讀操作。在這個實例中,主機發送地址信息,然后從機在一個時鐘周期之后接收到地址信息。地址信號出現在地址總線后,數據傳輸則在讀數據通道實現。從機保持RVALID信號為低電平,一直到讀數據總線RDATA是有效的,則拉高RVALID信號。對于突發傳輸的最后一個讀數據,從機通過RLAST信號的拉高,指示此時數據總線RDATA上傳輸的是最后一個讀數據。 ![]() 主機可以通過拉低RREADY信號來減慢從機送數據的速度。在RVALID為高電平時,從機會判斷此時RREADY信號是否也為高,若為高,表明此次傳輸的RDATA數據已經被接收;若為低,則繼續保持RVALID為高,并且保持當前的讀數據RDATA不變,直到RREADY拉高為止,接著才會送下一個有效數據。 如圖所示,在從機接收第一個地址后(ARVALID和ARREADY都為高電平),主機可以接著發起第二個地址。讀數據通道送出的數據會遵循突發傳輸地址寫入的先后,即“先來后到”的原則。 ![]() 如圖所示,這是一次突發寫傳輸的例子。寫操作開始于主機在寫地址通道發送一個地址和控制信息。然后主機在寫數據通道上發送所有的有效寫數據。在主機發送最后一個寫入數據時,WLAST信號變成高電平。當從機接收好所有的數據后,從機通過寫響應通道將信息反饋給主機,指示寫數據已經被接收,寫傳輸完成。 ![]() 更多資料共享 鏈接:https://share.weiyun.com/5s6bA0s |