一、前言
本篇介紹STM32芯片內部的總線系統結構,嵌入式芯片內部的總線和計算機總線類似,先來看一下通常定義下計算機總線定義,即計算機的總線是一種內部結構,它是cpu、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過總線相連接,外部設備通過相應的接口電路再與總線相連接,從而形成了計算機硬件系統。在計算機系統中,各個部件之間傳送信息的公共通路叫總線,微型計算機是以總線結構來連接各個功能部件的。
圖1 計算機總線結構
計算機設備和設備之間傳輸信息的公共數據通道。總線是連接計算機硬件系統內多種設備的通信線路,它的一個重要特征是由總線上的所有設備共享,可以將計算機系統內的多種設備連接到總線上。如果是某兩個設備或設備之間專用的信號連線,就不能稱之為總線。
因此STM32這類嵌入式芯片的總線可概括理解為:是各種信號線的集合,總線可以劃分為數據總線、地址總線和控制總線,分別用來傳輸數據、數據地址和控制信號。
二、總線基礎知識概述
圖2 總線基礎知識
(1)、總線在芯片中的角色
ARM公司負責提供設計內核,而其他外設則為芯片商設計并使用,ARM收取其專利費用而不參與其他經濟活動,半導體芯片廠商拿到內核授權后,根據產品需求,添加各類組件,生產芯片售賣。圖3為STM32的組成示意圖,其中Cortex-M3內核、調試系統都是ARM公司設計,內部總線、外設、存儲、時鐘復位等都由ST公司開發。由圖3中可以明顯看出總線是cpu、內存、外設傳遞信息的公用通道,芯片上的各個部件通過總線相連接。
圖3 STM32芯片簡要結構圖
(2)、總線的類型
A、數據總線DB用來傳送數據信息,是雙向的。CPU既可通過DB從內存或輸入設備讀入數據,又可通過DB將內部數據送至內存或輸出設備。DB的寬度決定了CPU和計算機其他設備之間每次交換數據的位數。數據總線的位數是微型計算機的一個重要指標,通常與微處理的字長相一致。需要指出的是,數據的含義是廣義的,它可以是真正的數據,也可以是指令代碼或狀態信息,有時甚至是一個控制信息,因此,在實際工作中,數據總線上傳送的并不一定僅僅是真正意義上的數據。
B、地址總線AB用于傳送CPU發出的地址信息,是單向的。傳送地址信息的目的是指明與CPU交換信息的內存單元或I/O設備。存儲器是按地址訪問的,所以每個存儲單元都有一個固定地址,要訪問1MB存儲器中的任一單元,需要給出1M個地址,即需要20位地址(2^20=1M)。一般來說,若地址總線為n位,則可尋址空間為2^n字節。因此,地址總線的寬度決定了CPU 的最大尋址能力。
C、控制總線CB用來傳送控制信號、時序信號和狀態信息等,是雙向的。其中有的是CPU向內存或外部設備發出的信息,如讀/寫信號,片選信號、中斷響應信號等;有的是內存或外部設備向CPU發出的信息,中斷申請信號、復位信號、總線請求信號、設備就緒信號等。顯然,CB中的每一條線的信息傳送方向是一定的、單向的,但作為一個整體則是雙向的。所以,凡涉及到控制總線CB,均是以雙向線表示。
(3)、總線的指標
A、總線的位寬
總線的位寬指的是總線能同時傳送的二進制數據的位數,或數據總線的位數,即32位、64位等總線寬度的概念。總線的位寬越寬,每秒鐘數據傳輸率越大,總線的帶寬越寬。
B、總線的工作頻率
總線的工作時鐘頻率以MHZ為單位,工作頻率越高,總線工作速度越快,總線帶寬越寬。
C、總線的帶寬(總線數據傳輸速率)
總線的帶寬指的是單位時間內總線上傳送的數據量,即每秒鐘傳送MB的最大穩態數據傳輸率 。與總線密切相關的兩個因素是總線的位寬和總線的工作頻率,它們之間的關系:
總線的帶寬=總線的工作頻率*總線的位寬/8
或者 總線的帶寬=(總線的位寬/8)/總線周期
(4)、AHB和APB
AMBA(Advanced Microprocessor Bus Architecture)是ARM公司提出的一種開放性的SoC總線標準,現在已經廣泛的應用于RISC的內核上了。AMBA定義了一種多總線系統(multilevel busing system),包括系統總線和等級稍低的外設總線。 AMBA支持32位、64位、128位的數據總線,和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系統,不僅如此,還可以通過AHB-APB橋來連接APB總線系統。AHB可以成為一個完整獨立的SOC芯片的骨架。
APB是低速總線,主要負責外設接口 ,低速且低功率的外圍設備,用于低帶寬的周邊外設之間的連接,例如UART、SPI等,可針對外圍設備作功率消耗及復雜接口的最佳化。AHB和APB之間是通過Bridge(橋接器)連接的 。
圖4 AHB和APB連接關系
三、總線框架結構
圖5 總線框架結構內容
如圖6,以STM32F42XXX和STM32F43XXX器件總線系統架構為例。
圖6 STM32F42xxx和STM32F43xxx的總線系統架構
(1)、結構類型
STM32芯片是屬于哈佛架構,即數據和程序指令分別存儲,總線設計有一條指令總線(I-Bus)、一條數據總線(D-Bus),地址總線則與所有IO和外設相連,按照內核架構統一的存儲器映射表分配對應地址。
哈佛架構與馮諾依曼的最大區別在于:哈佛架構的數據總線,指令總線是分開獨立的,CPU通過Icode從Flash中取指令,再譯碼,得到數據的地址,再通過Dcode總線和SRAM進行數據交互。
哈佛架構的優勢:并行體系結構,將程序指令和數據存儲在不同的存儲空間中,每個存儲器獨立編址、獨立訪問。哈佛架構的微處理器通常具有較高的執行效率,其程序指令和數據指令分開組織和儲存的,執行時可以預先讀取下一條指令。
(2)、總線模塊
A、總線矩陣
圖6中S是主控總線,M是被控總線,總線矩陣用于主控總線之間的訪問仲裁管理,仲裁采用循環調度算法。有了總線矩陣,就可以讓主設備和從設備進行并行訪問,提升了訪問效率,同時也降低了功耗。
需要注意的是,雖然總線矩陣使得多個主設備可以并行訪問不同的從設備,但在一個定義的時間段內,只有一個主設備擁有總線矩陣的控制權,如果有多個主設備同時出現總線請求時就得進行仲裁。所以有了總線仲裁器,就能保證每個時刻只有一個主設備通過總線矩陣對從設備進行訪問。
因為總線矩陣的存在,使得多個主設備可以并行訪問不同的從設備,增強了數據傳輸能力,提升了訪問效率,同時也改善了功耗性能。為了確保每個主設備訪問從設備的延遲盡量短,在總線矩陣里實行循環調度優先級方案:
? 循環調度仲裁策略使總線帶寬合理分配。
? 限定最大延時。
? 循環調度以1次傳輸為單位。
圖中縱橫交錯的就是多層AHB總線矩陣,負責把上方主設備跟右邊從設備互聯起來。所謂AHB主設備是指CPU或DMA,由它們啟動總線訪問,即讀寫操作。那些響應主設備讀寫訪問的設備就是AHB從設備,比如存儲器、各類外設等。注意并非所有主設備訪問從設備都得經過總線矩陣,如圖中,有些主設備和從設備間有直通通道。
B、八條主控總線
CCM(Core Coupled Memory)是給F4內核專用的全速64KB RAM, 它們沒有經過總線矩陣, F4內核與之直接相連, 地址空間在0x1000_0000 ~ 0x1000_FFFF。可以用作堆棧以及高速運算的數據緩存;
I總線:此總線用于將 Cortex-M4F 內核的指令總線連接到總線矩陣。內核通過此總線獲取指令。此總線訪問的對象是包含代碼的存儲器(內部 Flash/SRAM 或通過 FSMC 的外部存儲器);
D總線:此總線用于將 Cortex-M4F 數據總線和 64 KB CCM 數據 RAM 連接到總線矩陣。內核通過此總線進行立即數加載和調試訪問。此總線訪問的對象是包含代碼或數據的存儲器(內部Flash 或通過 FSMC 的外部存儲器);
S總線:此總線用于將 Cortex-M4F 內核的系統總線連接到總線矩陣。此總線用于訪問位于外設或 SRAM中的數據。也可通過此總線獲取指令(效率低于 ICode)。此總線訪問的對象是112 KB、 64 KB 和 16 KB 的內部 SRAM、包括 APB 外設在內的 AHB1 外設、 AHB2 外設以及通過 FSMC 的外部存儲器;
S3,S4:DMA存儲器總線:此總線用于將 DMA 存儲器總線主接口連接到總線矩陣。DMA 通過此總線來執行存儲器數據的傳入和傳出。此總線訪問的對象是數據存儲器:內部 SRAM( 112 KB、 64 KB、 16 KB)以及通過 FSMC 的外部存儲器;
S5:DMA外設總線,此總線用于將 DMA 外設主總線接口連接到總線矩陣。DMA 通過此總線訪問 AHB 外設或執行存儲器間的數據傳輸。此總線訪問的對象是 AHB 和 APB 外設以及數據存儲器:內部SRAM以及通過 FSMC 的外部存儲器;
S6:以太網 DMA 總線,此總線用于將以太網 DMA 主接口連接到總線矩陣。以太網 DMA通過此總線向存儲器存取數據。此總線訪問的對象是數據存儲器:內部 SRAM( 112 KB、 64 KB和 16 KB)以及通過FSMC的外部存儲器;
S7: USB OTG HS DMA 總線,此總線用于將 USB OTG HS DMA 主接口連接到總線矩陣。USB OTG DMA 通過此總線向存儲器加載/存儲數據。此總線訪問的對象是數據存儲器:內部 SRAM(112 KB、 64 KB 和 16 KB)以及通過 FSMC 的外部存儲器。
C、七條被控總線
內部 FLASH ICode 總線:是內核與內部閃存存儲器(FLASH)指令接口之間的連接的總線,實現指令的預取功能;
內部 FLASH DCode 總線:將內核與內部閃存存儲器(FLASH)的數據接口連接起來的總線,實現數據讀取;
主要內部 SRAM1(112KB);
輔助內部 SRAM2(16KB);
輔助內部 SRAM3(64KB) (僅適用 STM32F42xx 和 STM32F43xx 系列器件);
AHB1外設和AHB2外設:不同時鐘頻率的用于高性能模塊(如CPU、DMA和DSP等)之間的連接總線;
FSMC可變靜態存儲控制器:是STM32系列采用的一種新型的存儲器擴展技術,FSMC能夠根據不同的外部存儲器類型,發出相應的數據/地址/控制信號類型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應用各種不同類型、不同速度的外部靜態存儲器,而且能夠在不增加外部器件的情況下同時擴展多種不同類型的靜態存儲器,滿足系統設計對存儲容量、產品體積以及成本的綜合要求。能夠與同步或異步存儲器和 16 位 PC 存儲器卡連接,STM32的 FSMC接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存儲器。
(3)、總線交互
指令總線和數據總線如6圖所示只會負責對應存儲地址范圍內的傳輸,剩下片內外設和外界設備則是需要通過系統總線(AHB)進行數據的傳輸,對于低速外設則是掛載在相對較慢的外設總線(APB)總線,APB總線通過一個橋接器最終還是會掛載到AHB總線上。
主設備和從設備通過各自的總線兩兩相交連接,圖6中兩條總線相交且為圓圈的地方,表示這兩條總線對應的主設備可以訪問從設備,如I總線(指令總線),只有跟 M0、M2和M6這三根被控總線交叉的時候才有圓圈,就表示I總線只能跟這三根被控總線通信,這樣就可以知道stm32f4的啟動有三種分別是FLASH、內部SRAM、外部存儲FSMC。
當多個AHB主設備試圖同時訪問同一個AHB從設備時,總線矩陣仲裁器介入以解決訪問沖突。在下面的例子中CPU和DMA1均試圖訪問SRAM1以讀取數據。
圖7 CPU和DMA1請求訪問SRAM1
如上述示例總線訪問請求同時發生的情況下,就需要總線矩陣仲裁。為了解決這種問題,需要應用循環調度策略:如果本次最后贏得總線控制權的主設備是CPU,則在下一次訪問中DMA1將贏得總線控制權并首先訪問SRAM1。CPU隨后方可有權訪問SRAM1。
這就表明,一個主設備的傳輸延時取決于其它等待請求訪問AHB從設備的主設備數量。下面的例子是五個主設備試圖同時訪問SRAM1的情形:
圖8 五個主設備請求SRAM
DMA1再次獲得總線矩陣訪問權并訪問SRAM1的延時等于其它等待請求的所有主設備的執行時間之和。
我們再來看看進行總線矩陣仲裁可能導致的DMA傳輸延時最差情況。主設備DMA端口進行一次數據傳輸會遭遇的延時取決于其它主設備的傳輸類型和長度。比如,我們結合上面的DMA1 & CPU的例子,它們并行訪問SRAM。DMA傳輸延時將隨著CPU數據傳輸事務長度而變化。如果總線訪問首先給予CPU且不是執行單次數據加載/存儲,DMA訪問SRAM的等待時間可能從一個AHB周期(單次數據加載/存儲時間)延長為N個AHB周期,這里N為CPU數據傳輸事務中數據的數量。
CPU鎖定AHB 總線以保持其訪問總線的所有權,減少了多次加載/ 存儲操作過程中的延時以及進入中斷的延時。這提高了固件的響應能力,但是可能導致DMA數據傳輸事務的延遲。
DMA1與CPU并行訪問SRAM的延時取決于傳輸類型:
? 中斷(上下文保護)發起的CPU傳輸:8個AHB周期;
? LDM/STM 指令發起的CPU傳輸:14個AHB周期;
---在多達14 個寄存器與存儲器之間進行傳輸;
圖9 中斷發起的傳輸帶來的DMA傳輸延時
上圖詳細描述了一個因中斷進入而導致DMA多周期傳輸延遲的情形。DMA存儲器端口被觸發,發出存儲器訪問請求。經過仲裁, AHB總線未授權DMA1存儲器端口訪問,而由CPU來訪問總線。可以看到在服務DMA請求之前有一段額外的延時。這段中斷發起的CPU傳輸,耗時為8個AHB周期。
不難理解,當同時對一個從設備進行尋址且數據傳輸事務長度不是一個數據單元時,其他主設備(如DMA2,USB_HS, Ethernet…)也會碰到類似情形。所以,為了提高DMA對總線矩陣的訪問性能,要盡量回避總線競爭。
四、總結
本篇對STM32芯片內部的總線機制進行了一系列的介紹,部分信息來源自STM32的官方資料中對芯片系統架構的介紹。通過對總線概念的闡述可以去更好的為進一步認識STM32內部總線框架提供基礎,從STM32的總線框架中,可以了解到STM32芯片內部總線的設計模型和基本的工作原理,從而對STM32的芯片總線內部結構有一個初步的認知。
-
STM32芯片
+關注
關注
0文章
38瀏覽量
4382
發布評論請先 登錄
相關推薦
評論