【總線】AXI4第六課時:尋址選項深入解析

??大家好,歡迎來到今天的總線學習時間!如果你對電子設計、特別是FPGA和SoC設計感興趣,那你絕對不能錯過我們今天的主角——AXI4總線。作為ARM公司AMBA總線家族中的佼佼者,AXI4以其高性能和高度可擴展性,成為了現代電子系統中不可或缺的通信橋梁。

? ? ? ? 上幾課時我們了解了AMBA和AXI的歷史,也知道AXI4有5個獨立的管道,并且有獨立的握手機制,本章節更細致的講一下AXI的尋址選項深入解析

? ? ? ? 這里會有一系列的課程,和大家分享AMBA總線家族,歡迎大家一起學習,收藏點贊。

?系列文章

【總線】AMBA總線架構的發展歷程-CSDN博客

【總線】設計fpga系統時,為什么要使用總線?-CSDN博客

【總線】AXI總線:FPGA設計中的通信骨干-CSDN博客

【總線】AMBA總線家族的明星成員:AXI協議簡介-CSDN博客

【總線】AXI4第一課時:揭秘AXI4總線的五大獨立通道-CSDN博客

【總線】AXI4第二課時:深入AXI4總線的基礎事務-CSDN博客

【總線】AXI4第三課時:握手機制-CSDN博客

【總線】AXI4第五課時:信號描述-CSDN博客

【總線】AXI4第六課時:尋址選項深入解析-CSDN博客


目錄

概念

關于尋址選項

突發長度

突發大小

突發類型

突發地址

升華!?

尋址選項的重要性

突發長度的實際應用

突發大小對性能的影響

突發類型的選擇

突發地址的計算方法

結論


????????在深入理解AMBA AXI協議的尋址選項之前,我們需要明確幾個基本概念:突發傳輸、地址計算、以及如何利用這些選項來優化數據訪問。

????????第一章節直接翻譯的官方文檔。第二章對官方文檔進行說明解釋,幫助大家理解。

概念

關于尋址選項

AXI協議是基于突發的,主設備通過驅動傳輸控制信息和突發傳輸的第一個字節的地址來開始每個突發。隨著突發事務的進展,計算突發內連續傳輸地址的責任在于從設備。突發不得跨越4KB邊界,以防止它們跨越不同從設備之間的邊界,并限制從設備內部所需的地址增量器的大小。

突發長度

AWLEN或ARLEN信號指定了每個突發中發生的數據傳輸的數量。如表4-1所示,每個突發可以包含1到16個傳輸。對于包裝突發,突發長度必須為2、4、8或16個傳輸。每個事務必須完成ARLEN或AWLEN指定的傳輸數量。任何組件都不能提前終止突發以減少數據傳輸的數量。在寫入突發期間,如果主設備通過取消所有寫入使能信號來禁用進一步的寫入,它必須完成突發中的剩余傳輸。在讀取突發期間,主設備可以丟棄不需要的進一步讀取數據,但它必須完成突發中的剩余傳輸。

注意: 丟棄不需要的讀取數據可能導致在訪問諸如FIFO之類的讀取敏感設備時丟失數據。主設備在使用比需要的更長的突發長度訪問此類設備時,絕不能這樣做。

表 突發長度編碼

ARLEN[3:0]

AWLEN[3:0]

數據傳輸數量

b0000

1

b0001

2

...

...

...

b1101

14

b1110

15

b1111

16

突發大小

表4-2展示了ARSIZE或AWSIZE信號如何指定突發傳輸中每個節拍傳輸的最大數據字節數。AXI根據傳輸地址確定數據總線上使用的字節道。

對于增量或包裝突發,如果傳輸大小小于數據總線寬度,則每個節拍的數據傳輸在不同的字節道上進行。固定突發的地址保持不變,每個傳輸使用相同的字節道。任何傳輸的大小都不能超過事務中組件的數據總線寬度。

表 突發大小編碼

ARSIZE[2:0]

AWSIZE[2:0]

傳輸中的字節數

b000

1

b001

2

b010

4

b011

8

b100

16

b101

32

b110

64

b111

128

突發類型

AXI協議定義了三種突發類型:

  1. 固定突發(Fixed Burst):在固定突發中,突發內每個傳輸的地址都保持不變。這種突發類型適用于對同一位置的重復訪問,例如加載或清空外圍FIFO。
  2. 增量突發(Incrementing Burst):在增量突發中,突發內每個傳輸的地址是前一個傳輸地址的增量。增量值取決于傳輸的大小。例如,在大小為四個字節的突發中,每個傳輸的地址是前一個地址加四。
  3. 包裝突發(Wrapping Burst):包裝突發類似于增量突發,但是當達到包裝邊界時,地址會回繞到較低的地址。包裝邊界是突發中每個傳輸的大小乘以突發的總傳輸數量。

表 突發類型編碼

ARBURST[1:0]

AWBURST[1:0]

突發類型

訪問類型

b00

b00

FIXED

固定地址突發

b01

b01

INCR

增量地址突發

b10

b10

WRAP

包裝地址突發

b11

b11

Reserved

保留

突發地址

本節提供了一些簡單的公式,用于確定突發傳輸中的地址和字節道。這些公式使用了以下變量:

  • Start_Address:主設備發出的起始地址。
  • Number_Bytes:每個數據傳輸的最大字節數。
  • Data_Bus_Bytes:數據總線的字節道數。
  • Aligned_Address:起始地址的對齊版本。
  • Burst_Length:突發內總的數據傳輸數量。
  • Address_N:突發內第N個傳輸的地址。N是2到16之間的整數。
  • Wrap_Boundary:包裝突發內的最低地址。
  • Lower_Byte_Lane:傳輸中的最低地址字節的字節道。
  • Upper_Byte_Lane:傳輸中的最高地址字節的字節道。
  • INT(x):x的向下取整整數值。

使用這些方程來確定突發內傳輸的地址:

  • 起始地址:Start_Address = ADDR
  • 每個數據傳輸的字節數:Number_Bytes = 2^SIZE
  • 突發長度:Burst_Length = LEN + 1
  • 對齊的起始地址:Aligned_Address = INT(Start_Address / Number_Bytes) * Number_Bytes

使用這些方程來確定突發內第一個傳輸的地址:

  • 第一個傳輸的地址:Address_1 = Start_Address

使用這些方程來確定突發內第一個傳輸后的任何傳輸的地址:

  • Address_N = Aligned_Address + (N – 1) * Number_Bytes

對于包裝突發,使用以下方程來確定包裝邊界:

  • Wrap_Boundary = INT(Start_Address / (Number_Bytes * Burst_Length)) * (Number_Bytes * Burst_Length)

如果Address_N等于Wrap_Boundary加上Number_Bytes乘以Burst_Length,則使用以下方程:

  • Address_N = Wrap_Boundary

使用這些方程來確定突發內第一個傳輸使用的字節道:

  • Lower_Byte_Lane = Start_Address - INT(Start_Address / Data_Bus_Bytes) * Data_Bus_Bytes
  • Upper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) * INT(Start_Address / Data_Bus_Bytes) * Data_Bus_Bytes

使用這些方程來確定突發內第一個傳輸后所有傳輸使用的字節道:

  • Lower_Byte_Lane = Address_N – INT(Address_N / Data_Bus_Bytes) * Data_Bus_Bytes
  • Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes – 1

數據在以下位置傳輸:

  • DATA[(8 * Upper_Byte_Lane) + 7 : (8 * Lower_Byte_Lane)]

升華!?

尋址選項的重要性

????????尋址選項在AXI協議中扮演著至關重要的角色。它們不僅決定了數據如何被傳輸,還影響著系統的性能和效率。通過合理配置尋址選項,可以確保數據傳輸的準確性,并最大化利用系統資源。

突發長度的實際應用

????????突發長度是指在一個突發傳輸中包含的數據傳輸次數。這個參數直接影響到數據傳輸的總量。例如,在內存密集型應用中,較長的突發長度可以減少訪問次數,從而提高效率。

示例說明: 假設一個系統使用32位寬的數據總線,并且ARLEN設置為b0100,表示突發長度為4。如果每次數據傳輸是32位,那么整個突發將傳輸128位(16字節)的數據。

突發大小對性能的影響

????????突發大小定義了每次數據傳輸中包含的字節數。這個參數對于確保數據在總線上正確傳輸至關重要。較大的突發大小可以減少傳輸相同數量數據所需的總線周期數。

示例說明: 如果AWSIZE設置為b110,表示每次數據傳輸包含64字節。在上述相同的4次傳輸突發中,總共將傳輸256字節的數據,這比b100(16字節每次)的配置效率更高。

突發類型的選擇

????????突發類型的選擇取決于具體的應用場景和數據訪問模式。固定突發適用于對同一地址的連續訪問,增量突發適用于順序訪問,而包裝突發則適用于需要在特定邊界回繞的場景。

示例說明: 考慮一個需要連續讀取多個緩存行的應用,可以使用包裝突發來優化訪問模式。如果緩存行大小為64字節,并且數據總線寬度為128字節,則可以使用b111(128字節)的AWSIZEb10(包裝)的AWBURST來實現高效的數據傳輸。

突發地址的計算方法

????????正確的地址計算對于確保數據被傳輸到正確的位置至關重要。AXI協議提供了一套公式來計算突發內每個傳輸的地址和使用的字節道。

示例說明: 如果一個突發操作的起始地址是0x1000,數據總線寬度為128字節,ARSIZEb111(128字節),突發長度為4次傳輸(ARLENb0100),那么第一個傳輸的地址是0x1000,第二個是0x1080,第三個是0x1100,第四個是0x1180。

通過這些公式,設計者可以精確控制數據傳輸的地址,從而實現對系統內存的高效訪問。

結論

AXI協議的尋址選項為設計者提供了強大的工具,以實現高效、靈活的數據傳輸。理解并正確應用這些選項,可以顯著提高系統的整體性能。通過上述示例和說明,我們可以看到尋址選項在實際應用中的重要性,以及如何利用它們來滿足不同的設計需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38635.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38635.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38635.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pip的常用命令整理|python入學必備知識

1. 什么是pip? 通俗的說:pip 是 Python 第三方包管理工具,它提供了對Python 包的查找、下載、安裝、卸載的功能。Python 3.4以上版本都自帶 pip 工具。 2. 查看系統是否安裝的pip? 下面這行代碼如果沒有報錯,則證明系統中安裝…

設計模式(實戰項目)-狀態模式

需求背景:存在狀態流轉的預約單 一.數據庫設計 CREATE TABLE appointment (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主鍵id,appoint_type int(11) NOT NULL COMMENT 預約類型(0:線下查房...),appoint_user_id bigint(20) NOT NULL COMMENT 預約人…

實現膠囊神經網絡,識別手寫MNIST數據集,談談實現及理解。

🏆本文收錄于《CSDN問答解答》專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&…

稀疏數組Java練習代碼含IO

是在學習尚硅谷的數據結構與算法Java課程,課后自己憑借思路寫的練習代碼 首先定義一個稀疏數組類 import java.io.*; import java.util.Objects;public class SparseArray {int sum;//創建原始數組public int[][] createArray(int column, int row){//根據傳入數據…

雨量氣象站:野外監測的得力助手

在廣闊無垠的大自然中,雨量、風力、風向、溫濕度以及大氣壓力等氣象數據對于各種應用場景都至關重要。特別是在野外、森林防火、山洪監測等無市電供電的場合,一款高效可靠的監測設備更是不可或缺。雨量氣象站正是為了滿足這些需求而誕生的戶外專用監測站…

C++ STL unique_ptr智能指針源碼剖析

由于上一篇博客將shared_ptr,weak_ptr,enable_shared_form_this的源碼實現整理了一遍,想著cpp智能指針還差個unique_ptr故寫下此篇博客,以供學習 源碼剖析 一,模板參數 首先,我們先看unique_ptr的模板參數,第一個參數_TP自是不用說表示對象類型,第二個模板參數定義了unique_p…

FFmpeg視頻處理工具安裝使用

一、前言 FFmpeg是流行的開源視頻處理工具,用于轉碼、合并、編輯等。以下是安裝和使用方法: 二、步驟 1.下載 1.1 ffmpeg下載 官網下載地址 wget https://www.ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz1.2 nasm下載 https://www.nasm.us/pub/nasm/…

Android應用安裝過程

Android 系統源碼源碼-應用安裝過程 Android 中應用安裝的過程就是解析 AndroidManifest.xml 的過程,系統可以從 Manifest 中得到應用程序的相關信息,比如 Activity、Service、Broadcast Receiver 和 ContentProvider 等。這些工作都是由 PackageManage…

drm core

drm core初始化 /*** drm_sysfs_init - initialize sysfs helpers** This is used to create the DRM class, which is the implicit parent of any* other top-level DRM sysfs objects.** You must call drm_sysfs_destroy() to release the allocated resources.** Return: …

Linux通配符及其在文件搜索和管理中的應用

Linux通配符及其在文件搜索和管理中的應用 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 1. 了解Linux通配符 在Linux系統中,通配符是一種用于匹…

家政小程序的開發,帶動市場快速發展,提高家政服務質量

當下生活水平逐漸提高,也增加了年輕人的工作壓力,同時老齡化也在日益增加,使得大眾對家政的需求日益提高,能力、服務質量高的家政人員能夠有效提高大眾的生活幸福指數。 但是,傳統的家政服務模式存在著效率低、用戶與…

慧翰股份毛利率下滑:股權轉讓糾紛引關注,研發費用率遠弱同行還買樓?

《港灣商業觀察》施子夫 6月11日,慧翰微電子股份有限公司(以下簡稱,慧翰股份)IPO注冊申請獲證監會同意,預計公司將很快登陸深交所創業板,保薦機構為廣發證券。 從業績面來看,過去三年&#xf…

基于X86+FPGA+AI的芯片缺陷檢測方案

應用場景 隨著半導體技術的發展,對芯片的良率要求越來越高。然而集成電路芯片制造工藝復雜,其制造過程中往往產生很多缺陷,因此缺陷檢測是集成電路制造過程中的必備工藝。 客戶需求 小體積,低功耗 2 x USB,1 x LAN Core-i平臺無…

JavaScript——運算符的優先級和結合性

目錄 任務描述 相關知識 運算符的優先級 運算符的結合性 編程要求 任務描述 本關任務:我們將給出函數mainJs()的完整代碼,要求在函數體內第三句以及第五句中添加適當的括號,實現編程要求里面的要求。 要想完成本關任務,必須…

一點連接千家銀行,YonSuite讓“銀企對賬”一鍵確認

在當今數智化浪潮下,成長型企業面臨著前所未有的機遇與挑戰。特別是在與銀行的對接以及銀企對賬等方面,傳統的手動操作模式已難以滿足企業高效、安全的金融管理需求。用友YonSuite作為一款全場景SaaS應用服務,憑借其強大的銀企直聯功能&#…

AI在線免費視頻工具3:聲音生視頻

1、聲音生視頻 Noisee:通過聲音生成對應視頻,可以增加prompt指定生成內容相關視頻 https://noisee.ai/create

【基礎篇】第5章 Elasticsearch 數據聚合與分析

在Elasticsearch的龐大功能體系中,數據聚合與分析扮演著至關重要的角色,它使我們能夠從海量數據中提煉出有價值的信息,為決策提供依據。本章將深入探討Elasticsearch的聚合功能,從基本概念到常見類型的實踐,讓你掌握如…

Elasticsearch 使用誤區之二——頻繁更新文檔

在使用 Elasticsearch 時,頻繁更新文檔是一種常見誤區。這不僅影響性能,還可能導致系統資源的浪費。 理解 Elasticsearch 的文檔更新機制對于優化性能至關重要。 關于 Elasticsearch 更新操作,常見問題如下: ——https://t.zsxq.c…

Spring Cloud實戰:構建分布式系統解決方案

Spring Cloud實戰:構建分布式系統解決方案 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們將深入探討如何使用Spring Cloud來構建分布式系統…

剖析DeFi交易產品之UniswapV4:概述篇

本文首發于公眾號:Keegan小鋼 UniswapV4 與 UniswapV3 相比,算法上并沒有什么改變,依然還是采用集中流動性模型,但架構上變化很大,包括功能架構,也包括技術架構。相比之前的版本,UniswapV4 最大…