0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32芯片內部的總線系統(tǒng)結構

科技綠洲 ? 來源:明解嵌入式 ? 作者:明解嵌入式 ? 2023-06-22 09:14 ? 次閱讀

一、前言

本篇介紹STM32芯片內部的總線系統(tǒng)結構,嵌入式芯片內部的總線和計算機總線類似,先來看一下通常定義下計算機總線定義,即計算機的總線是一種內部結構,它是cpu、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過總線相連接,外部設備通過相應的接口電路再與總線相連接,從而形成了計算機硬件系統(tǒng)。在計算機系統(tǒng)中,各個部件之間傳送信息的公共通路叫總線,微型計算機是以總線結構來連接各個功能部件的。

圖片

圖1 計算機總線結構

計算機設備和設備之間傳輸信息的公共數(shù)據通道??偩€是連接計算機硬件系統(tǒng)內多種設備的通信線路,它的一個重要特征是由總線上的所有設備共享,可以將計算機系統(tǒng)內的多種設備連接到總線上。如果是某兩個設備或設備之間專用的信號連線,就不能稱之為總線。

因此STM32這類嵌入式芯片的總線可概括理解為:是各種信號線的集合,總線可以劃分為數(shù)據總線、地址總線和控制總線,分別用來傳輸數(shù)據、數(shù)據地址和控制信號。

二、總線基礎知識概述

圖片

圖2 總線基礎知識

(1)、總線在芯片中的角色

ARM公司負責提供設計內核,而其他外設則為芯片商設計并使用,ARM收取其專利費用而不參與其他經濟活動,半導體芯片廠商拿到內核授權后,根據產品需求,添加各類組件,生產芯片售賣。圖3為STM32的組成示意圖,其中Cortex-M3內核、調試系統(tǒng)都是ARM公司設計,內部總線、外設、存儲、時鐘復位等都由ST公司開發(fā)。由圖3中可以明顯看出總線是cpu、內存、外設傳遞信息的公用通道,芯片上的各個部件通過總線相連接。

圖片

圖3 STM32芯片簡要結構圖

(2)、總線的類型

A、數(shù)據總線DB用來傳送數(shù)據信息,是雙向的。CPU既可通過DB從內存或輸入設備讀入數(shù)據,又可通過DB將內部數(shù)據送至內存或輸出設備。DB的寬度決定了CPU和計算機其他設備之間每次交換數(shù)據的位數(shù)。數(shù)據總線的位數(shù)是微型計算機的一個重要指標,通常與微處理的字長相一致。需要指出的是,數(shù)據的含義是廣義的,它可以是真正的數(shù)據,也可以是指令代碼或狀態(tài)信息,有時甚至是一個控制信息,因此,在實際工作中,數(shù)據總線上傳送的并不一定僅僅是真正意義上的數(shù)據。

B、地址總線AB用于傳送CPU發(fā)出的地址信息,是單向的。傳送地址信息的目的是指明與CPU交換信息的內存單元或I/O設備。存儲器是按地址訪問的,所以每個存儲單元都有一個固定地址,要訪問1MB存儲器中的任一單元,需要給出1M個地址,即需要20位地址(2^20=1M)。一般來說,若地址總線為n位,則可尋址空間為2^n字節(jié)。因此,地址總線的寬度決定了CPU 的最大尋址能力。

C、控制總線CB用來傳送控制信號、時序信號和狀態(tài)信息等,是雙向的。其中有的是CPU向內存或外部設備發(fā)出的信息,如讀/寫信號,片選信號、中斷響應信號等;有的是內存或外部設備向CPU發(fā)出的信息,中斷申請信號、復位信號、總線請求信號、設備就緒信號等。顯然,CB中的每一條線的信息傳送方向是一定的、單向的,但作為一個整體則是雙向的。所以,凡涉及到控制總線CB,均是以雙向線表示。

(3)、總線的指標

A、總線的位寬

總線的位寬指的是總線能同時傳送的二進制數(shù)據的位數(shù),或數(shù)據總線的位數(shù),即32位、64位等總線寬度的概念??偩€的位寬越寬,每秒鐘數(shù)據傳輸率越大,總線的帶寬越寬。

B、總線的工作頻率

總線的工作時鐘頻率以MHZ為單位,工作頻率越高,總線工作速度越快,總線帶寬越寬。

C、總線的帶寬(總線數(shù)據傳輸速率)

總線的帶寬指的是單位時間內總線上傳送的數(shù)據量,即每秒鐘傳送MB的最大穩(wěn)態(tài)數(shù)據傳輸率 。與總線密切相關的兩個因素是總線的位寬和總線的工作頻率,它們之間的關系:

總線的帶寬=總線的工作頻率*總線的位寬/8

或者 總線的帶寬=(總線的位寬/8)/總線周期

(4)、AHB和APB

AMBA(Advanced Microprocessor Bus Architecture)是ARM公司提出的一種開放性的SoC總線標準,現(xiàn)在已經廣泛的應用于RISC的內核上了。AMBA定義了一種多總線系統(tǒng)(multilevel busing system),包括系統(tǒng)總線和等級稍低的外設總線。 AMBA支持32位、64位、128位的數(shù)據總線,和32位的地址總線,同時支持byte和half-word設計。 它定義了兩種總線:

AHB(Advanced High-performance Bus)先進的高性能總線,也叫做ASB(Advanced System Bus)。APB(Advanced peripheral Bus)先進的外設總線 AHB和ASB其實是一個東西,是高速總線, AHB總線的強大之處在于它可以將微控制器(CPU)、高帶寬的片上RAM、高帶寬的外部存儲器接口、DMA總線、各種擁有AHB接口的控制器等等連接起來構成一個獨立的完整的SOC系統(tǒng),不僅如此,還可以通過AHB-APB橋來連接APB總線系統(tǒng)。AHB可以成為一個完整獨立的SOC芯片的骨架。

APB是低速總線,主要負責外設接口 ,低速且低功率的外圍設備,用于低帶寬的周邊外設之間的連接,例如UART、SPI等,可針對外圍設備作功率消耗及復雜接口的最佳化。AHB和APB之間是通過Bridge(橋接器)連接的 。

圖片

圖4 AHB和APB連接關系

三、總線框架結構

圖片

圖5 總線框架結構內容

如圖6,以STM32F42XXX和STM32F43XXX器件總線系統(tǒng)架構為例。

圖片

圖6 STM32F42xxx和STM32F43xxx的總線系統(tǒng)架構

(1)、結構類型

STM32芯片是屬于哈佛架構,即數(shù)據和程序指令分別存儲,總線設計有一條指令總線(I-Bus)、一條數(shù)據總線(D-Bus),地址總線則與所有IO和外設相連,按照內核架構統(tǒng)一的存儲器映射表分配對應地址。

哈佛架構與馮諾依曼的最大區(qū)別在于:哈佛架構的數(shù)據總線,指令總線是分開獨立的,CPU通過Icode從Flash中取指令,再譯碼,得到數(shù)據的地址,再通過Dcode總線和SRAM進行數(shù)據交互。

哈佛架構的優(yōu)勢:并行體系結構,將程序指令和數(shù)據存儲在不同的存儲空間中,每個存儲器獨立編址、獨立訪問。哈佛架構的微處理器通常具有較高的執(zhí)行效率,其程序指令和數(shù)據指令分開組織和儲存的,執(zhí)行時可以預先讀取下一條指令。

(2)、總線模塊

A、總線矩陣

圖6中S是主控總線,M是被控總線,總線矩陣用于主控總線之間的訪問仲裁管理,仲裁采用循環(huán)調度算法。有了總線矩陣,就可以讓主設備和從設備進行并行訪問,提升了訪問效率,同時也降低了功耗。

需要注意的是,雖然總線矩陣使得多個主設備可以并行訪問不同的從設備,但在一個定義的時間段內,只有一個主設備擁有總線矩陣的控制權,如果有多個主設備同時出現(xiàn)總線請求時就得進行仲裁。所以有了總線仲裁器,就能保證每個時刻只有一個主設備通過總線矩陣對從設備進行訪問。

因為總線矩陣的存在,使得多個主設備可以并行訪問不同的從設備,增強了數(shù)據傳輸能力,提升了訪問效率,同時也改善了功耗性能。為了確保每個主設備訪問從設備的延遲盡量短,在總線矩陣里實行循環(huán)調度優(yōu)先級方案:

? 循環(huán)調度仲裁策略使總線帶寬合理分配。

? 限定最大延時。

? 循環(huán)調度以1次傳輸為單位。

圖中縱橫交錯的就是多層AHB總線矩陣,負責把上方主設備跟右邊從設備互聯(lián)起來。所謂AHB主設備是指CPU或DMA,由它們啟動總線訪問,即讀寫操作。那些響應主設備讀寫訪問的設備就是AHB從設備,比如存儲器、各類外設等。注意并非所有主設備訪問從設備都得經過總線矩陣,如圖中,有些主設備和從設備間有直通通道。

B、八條主控總線

CCM(Core Coupled Memory)是給F4內核專用的全速64KB RAM, 它們沒有經過總線矩陣, F4內核與之直接相連, 地址空間在0x1000_0000 ~ 0x1000_FFFF??梢杂米鞫褩R约?a target="_blank">高速運算的數(shù)據緩存;

I總線:此總線用于將 Cortex-M4F 內核的指令總線連接到總線矩陣。內核通過此總線獲取指令。此總線訪問的對象是包含代碼的存儲器(內部 Flash/SRAM 或通過 FSMC 的外部存儲器);

D總線:此總線用于將 Cortex-M4F 數(shù)據總線和 64 KB CCM 數(shù)據 RAM 連接到總線矩陣。內核通過此總線進行立即數(shù)加載和調試訪問。此總線訪問的對象是包含代碼或數(shù)據的存儲器(內部Flash 或通過 FSMC 的外部存儲器);

S總線:此總線用于將 Cortex-M4F 內核的系統(tǒng)總線連接到總線矩陣。此總線用于訪問位于外設或 SRAM中的數(shù)據。也可通過此總線獲取指令(效率低于 ICode)。此總線訪問的對象是112 KB、 64 KB 和 16 KB 的內部 SRAM、包括 APB 外設在內的 AHB1 外設、 AHB2 外設以及通過 FSMC 的外部存儲器;

S3,S4:DMA存儲器總線:此總線用于將 DMA 存儲器總線主接口連接到總線矩陣。DMA 通過此總線來執(zhí)行存儲器數(shù)據的傳入和傳出。此總線訪問的對象是數(shù)據存儲器:內部 SRAM( 112 KB、 64 KB、 16 KB)以及通過 FSMC 的外部存儲器;

S5:DMA外設總線,此總線用于將 DMA 外設主總線接口連接到總線矩陣。DMA 通過此總線訪問 AHB 外設或執(zhí)行存儲器間的數(shù)據傳輸。此總線訪問的對象是 AHB 和 APB 外設以及數(shù)據存儲器:內部SRAM以及通過 FSMC 的外部存儲器;

S6:以太網 DMA 總線,此總線用于將以太網 DMA 主接口連接到總線矩陣。以太網 DMA通過此總線向存儲器存取數(shù)據。此總線訪問的對象是數(shù)據存儲器:內部 SRAM( 112 KB、 64 KB和 16 KB)以及通過FSMC的外部存儲器;

S7: USB OTG HS DMA 總線,此總線用于將 USB OTG HS DMA 主接口連接到總線矩陣。USB OTG DMA 通過此總線向存儲器加載/存儲數(shù)據。此總線訪問的對象是數(shù)據存儲器:內部 SRAM(112 KB、 64 KB 和 16 KB)以及通過 FSMC 的外部存儲器。

C、七條被控總線

內部 FLASH ICode 總線:是內核與內部閃存存儲器(FLASH)指令接口之間的連接的總線,實現(xiàn)指令的預取功能;

內部 FLASH DCode 總線:將內核與內部閃存存儲器(FLASH)的數(shù)據接口連接起來的總線,實現(xiàn)數(shù)據讀取;

主要內部 SRAM1(112KB);

輔助內部 SRAM2(16KB);

輔助內部 SRAM3(64KB) (僅適用 STM32F42xx 和 STM32F43xx 系列器件);

AHB1外設和AHB2外設:不同時鐘頻率的用于高性能模塊(如CPU、DMA和DSP等)之間的連接總線;

FSMC可變靜態(tài)存儲控制器:是STM32系列采用的一種新型的存儲器擴展技術,F(xiàn)SMC能夠根據不同的外部存儲器類型,發(fā)出相應的數(shù)據/地址/控制信號類型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應用各種不同類型、不同速度的外部靜態(tài)存儲器,而且能夠在不增加外部器件的情況下同時擴展多種不同類型的靜態(tài)存儲器,滿足系統(tǒng)設計對存儲容量、產品體積以及成本的綜合要求。能夠與同步或異步存儲器和 16 位 PC 存儲器卡連接,STM32的 FSMC接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存儲器。

(3)、總線交互

指令總線和數(shù)據總線如6圖所示只會負責對應存儲地址范圍內的傳輸,剩下片內外設和外界設備則是需要通過系統(tǒng)總線(AHB)進行數(shù)據的傳輸,對于低速外設則是掛載在相對較慢的外設總線(APB)總線,APB總線通過一個橋接器最終還是會掛載到AHB總線上。

主設備和從設備通過各自的總線兩兩相交連接,圖6中兩條總線相交且為圓圈的地方,表示這兩條總線對應的主設備可以訪問從設備,如I總線(指令總線),只有跟 M0、M2和M6這三根被控總線交叉的時候才有圓圈,就表示I總線只能跟這三根被控總線通信,這樣就可以知道stm32f4的啟動有三種分別是FLASH、內部SRAM、外部存儲FSMC。

當多個AHB主設備試圖同時訪問同一個AHB從設備時,總線矩陣仲裁器介入以解決訪問沖突。在下面的例子中CPU和DMA1均試圖訪問SRAM1以讀取數(shù)據。

圖片

圖7 CPU和DMA1請求訪問SRAM1

如上述示例總線訪問請求同時發(fā)生的情況下,就需要總線矩陣仲裁。為了解決這種問題,需要應用循環(huán)調度策略:如果本次最后贏得總線控制權的主設備是CPU,則在下一次訪問中DMA1將贏得總線控制權并首先訪問SRAM1。CPU隨后方可有權訪問SRAM1。

這就表明,一個主設備的傳輸延時取決于其它等待請求訪問AHB從設備的主設備數(shù)量。下面的例子是五個主設備試圖同時訪問SRAM1的情形:

圖片

圖8 五個主設備請求SRAM

DMA1再次獲得總線矩陣訪問權并訪問SRAM1的延時等于其它等待請求的所有主設備的執(zhí)行時間之和。

我們再來看看進行總線矩陣仲裁可能導致的DMA傳輸延時最差情況。主設備DMA端口進行一次數(shù)據傳輸會遭遇的延時取決于其它主設備的傳輸類型和長度。比如,我們結合上面的DMA1 & CPU的例子,它們并行訪問SRAM。DMA傳輸延時將隨著CPU數(shù)據傳輸事務長度而變化。如果總線訪問首先給予CPU且不是執(zhí)行單次數(shù)據加載/存儲,DMA訪問SRAM的等待時間可能從一個AHB周期(單次數(shù)據加載/存儲時間)延長為N個AHB周期,這里N為CPU數(shù)據傳輸事務中數(shù)據的數(shù)量。

CPU鎖定AHB 總線以保持其訪問總線的所有權,減少了多次加載/ 存儲操作過程中的延時以及進入中斷的延時。這提高了固件的響應能力,但是可能導致DMA數(shù)據傳輸事務的延遲。

DMA1與CPU并行訪問SRAM的延時取決于傳輸類型:

? 中斷(上下文保護)發(fā)起的CPU傳輸:8個AHB周期;

? LDM/STM 指令發(fā)起的CPU傳輸:14個AHB周期;

---在多達14 個寄存器與存儲器之間進行傳輸;

圖片

圖9 中斷發(fā)起的傳輸帶來的DMA傳輸延時

上圖詳細描述了一個因中斷進入而導致DMA多周期傳輸延遲的情形。DMA存儲器端口被觸發(fā),發(fā)出存儲器訪問請求。經過仲裁, AHB總線未授權DMA1存儲器端口訪問,而由CPU來訪問總線??梢钥吹皆诜誅MA請求之前有一段額外的延時。這段中斷發(fā)起的CPU傳輸,耗時為8個AHB周期。

不難理解,當同時對一個從設備進行尋址且數(shù)據傳輸事務長度不是一個數(shù)據單元時,其他主設備(如DMA2,USB_HS, Ethernet…)也會碰到類似情形。所以,為了提高DMA對總線矩陣的訪問性能,要盡量回避總線競爭。

四、總結

本篇對STM32芯片內部的總線機制進行了一系列的介紹,部分信息來源自STM32的官方資料中對芯片系統(tǒng)架構的介紹。通過對總線概念的闡述可以去更好的為進一步認識STM32內部總線框架提供基礎,從STM32的總線框架中,可以了解到STM32芯片內部總線的設計模型和基本的工作原理,從而對STM32的芯片總線內部結構有一個初步的認知。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32芯片
    +關注

    關注

    0

    文章

    38

    瀏覽量

    4356
收藏 人收藏

    評論

    相關推薦

    時鐘系統(tǒng)內部結構四個驅動單元

    功耗。特別是對手持式設備、利用電池供電的設備都功耗要求比較高。一、時鐘系統(tǒng)內部結構四個驅動單元Cortex-M3內核ICode總線(I-bus).DCode總線(D-bus).和
    發(fā)表于 08-06 08:05

    STM32F407芯片內部結構是如何構成的

    STM32F407芯片的特性是什么?STM32F407芯片內部結構是如何構成的?
    發(fā)表于 09-24 12:49

    STM32F103系列芯片總線結構是由哪些部分組成的

    AMBA是什么?AHB總線和APB總線的作用是什么?STM32F103系列芯片總線結構是由哪些部分組成的?
    發(fā)表于 11-03 08:10

    stm32f10xx系統(tǒng)結構的相關資料下載

    stm32f103研發(fā)應用時,必須對其系統(tǒng)資源分配有個總體的印象,然后在學習其他類型的芯片時,也可根據此結構進行擴展或對比以幫助加深印象(通過此結構
    發(fā)表于 12-10 08:02

    STM32系統(tǒng)結構

    ,最近梳理了一下,下面我就自己所理解的給大家力爭詳細地講解一下,如有疏漏或不足,請大家多多指教!一、STM32系統(tǒng)結構上圖為STM32系統(tǒng)
    發(fā)表于 12-13 07:10

    STM32芯片系統(tǒng)結構四個驅動單元

    STM32芯片系統(tǒng)結構四個驅動單元 Icode、Dcode、System、DMA指令總線 Icode數(shù)據
    發(fā)表于 12-14 07:39

    內部總線包括

    內部總線,將處理器的所有結構單元內部相連。它的寬度可以是8、16、32、64或128位。本視頻主要詳細闡述了內部
    的頭像 發(fā)表于 11-24 10:43 ?1.1w次閱讀
    <b class='flag-5'>內部</b><b class='flag-5'>總線</b>包括

    STM32入門系列-學習STM32要掌握的內容

    。內核通過總線矩陣與FLASH、SRAM、外設連接。而外設包括GPIO、USART、I2C、SPI等。STM32芯片系統(tǒng)結構
    發(fā)表于 11-05 19:35 ?16次下載
    <b class='flag-5'>STM32</b>入門系列-學習<b class='flag-5'>STM32</b>要掌握的內容

    STM32-(26):RCC內部結構與原理分析

    功耗。特別是對手持式設備、利用電池供電的設備都功耗要求比較高。一、時鐘系統(tǒng)內部結構四個驅動單元Cortex-M3內核ICode總線(I-bus).DCode總線(D-bus).和
    發(fā)表于 11-26 10:51 ?7次下載
    <b class='flag-5'>STM32</b>-(26):RCC<b class='flag-5'>內部結構</b>與原理分析

    STM32學習(1)-資料查找,STM32簡介,STM32選型以及芯片內部結構

    STM32學習(1)-資料查找,STM32簡介,STM32選型以及芯片內部結構
    發(fā)表于 11-26 19:51 ?82次下載
    <b class='flag-5'>STM32</b>學習(1)-資料查找,<b class='flag-5'>STM32</b>簡介,<b class='flag-5'>STM32</b>選型以及<b class='flag-5'>芯片</b><b class='flag-5'>內部結構</b>圖

    STM32芯片系統(tǒng)結構

    STM32芯片基于ARM公司的Cortex-M3內核,由ST公司設計生產,內核與總線矩陣之間有I(指令)、S(系統(tǒng))、D(數(shù)據)三條信號線。內核通過
    的頭像 發(fā)表于 04-02 15:59 ?5799次閱讀

    STM32芯片內部架構的詳細介紹

    之外的部件被稱為核外外設或片上外設,如 GPIO、USART(串口)、I2C、SPI 等。 芯片內部架構示意圖 ????芯片內核與外設之間通過各種總線連接,其中驅動單元有 4 個,被動
    的頭像 發(fā)表于 07-05 18:01 ?8292次閱讀

    STM32芯片系統(tǒng)結構

    STM32芯片基于ARM公司的Cortex-M3內核,由ST公司設計生產,內核與總線矩陣之間有I(指令)、S(系統(tǒng))、D(數(shù)據)三條信號線。內核通過
    的頭像 發(fā)表于 07-06 16:55 ?2810次閱讀

    淺談STM32芯片的存儲結構

    芯片售賣。圖1為STM32的組成示意圖,其中Cortex-M3內核、調試系統(tǒng)都是ARM公司設計,內部總線、外設、存儲、時鐘復位等都由ST公司
    的頭像 發(fā)表于 04-19 11:36 ?2401次閱讀
    淺談<b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>的存儲<b class='flag-5'>結構</b>

    STM32芯片的存儲結構

    組件,生產芯片售賣。圖1為STM32的組成示意圖,其中Cortex-M3內核、調試系統(tǒng)都是ARM公司設計,內部總線、外設、存儲、時鐘復位等都
    的頭像 發(fā)表于 06-22 09:20 ?1819次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>的存儲<b class='flag-5'>結構</b>