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