瞭解 SoC 的架構

一、SoC 架構圖:核心功能和設計目標

SoC 是基於通用處理器這樣的思路進行設計的,與 PC 設計思路一樣。即通用處理器是由 CORE + MEM 兩部分組成,修改軟件來實現不同的功能,電腦還是同一個電腦,硬件組成還都是一樣的。

SoC 架構圖四大組成部分:

SoC 總的架構圖如下:

1.1、SoC - 核 CORE

對於核來講,現在主流的核有三類:

架構圖,左上角爲 SoC 系統的核,此處使用的是 ARM 公司的 Cortex-M3/M4 內核。

同時,I-Code 表示指令代碼,D-Code 表示數據代碼。JTAG 用來調試芯片,下載調試程序使用。

注:I-Code、D-Code 即 I-Cache、D-Cache,這個可選的,並不是每個 SoC 都會用到,需要根據實際芯片的規模和需求!

1.2、SoC - 存儲 MEM

架構圖,中間部分爲 SoC 系統的存儲,此處包含 PFlash 和 SRAM 兩種。

1.3、SoC - 外設 IO

外設 IO 分爲兩部分:

1.3.1、 DMA

DMA(Direct Memory Access,直接存儲器訪問),使用場景如下:當 CPU 需要搬移 SRAM 中的大量數據時,此時如果使用 CPU 搬移,則會先將 SRAM 中的數據搬移至 CPU 的寄存器中,然後再取指令寫操作等方式搬移至目的地。該方法效率較低,且佔用了 CPU 的寶貴處理時間。此時就有了 DMA 的登場,CPU 只需告訴 DMA 引擎,你需要從哪個地址搬移多少個數據到哪個地址,這樣 DMA 就自己聽話地去工作了,不再需要 CPU 的參與,減輕 CPU 的負荷。

DMA 對外沒有接口,這個也可以從架構圖中看出。

1.3.2、 Ext_SRAM Controller、SD_Memory 與 SD_Host

Ext_SRAM Controller:通常是 SRAM 大小不夠時,用作擴展使用。

通常 SD_Memory 連接一個諸如 Camera 的設備,將拍到的照片數據通過 SD_Memory 接口存儲到 SRAM 中,然後 SD_Host 接口將 SRAM 中的數據保存至 SD Card 中,取出 SD 卡插入 PC,就可以看到讀取的照片了!

1.3.3、典型低速外設

典型的 3 個低速外設接口:I2C、UART、SPI,差異如下:

外設與 CPU 進行通信,有兩種方式:

BootLoader 程序和中斷程序是事先寫好的程序,放到 FLASH 中,一旦啓動後便會將其 LOAD 至 SRAM 中!一旦發生某個中斷,便會根據中斷向量號去查詢中斷程序去執行它。(瞭解即可)

注:主動發起數據我們稱之爲 master;被動接受數據我們稱之爲 slave。

1.3.4、內部組件

WDT:看門狗。我們的內核每隔一段時間喂一次狗,如果內核掛掉,看門狗溢出會產生一箇中斷,告訴外界,芯片已經掛死,需要處理。

Timerx:硬件計數器。CPU 計數精讀低,通常是 us 級,很難達到 ns 級。而我們的硬件計數器精度可以達到 ns 級別;另外,硬件計數,可以減小 CPU 的開銷。

ICT:指令的計數,統計用的!

1.3.5、剩餘組件

左下角是系統控制器和一些模擬組件:

上述講的 IO 小模塊,以及本節介紹的模擬組件,我們一般都稱之爲IP

1.4、SoC - 總線 BUS

將上述介紹的 IP 進行互聯的線,我們將其稱之爲總線。這裏使用的是 AMBA 2.0 總線,包括 AHB、APB 兩部分。

1.5、其他模塊

1.5.1、MemBist

MemBist 主要針對 Memory,如 SRAM。在製造過程中,可能會存在缺陷,當芯片回來之後,我們要進行一些製造型測試!MemBist 是進行內建自測試!

這種內建自測試與其他 IP 外設測試不一樣,其他 IP 外設測試通常是通過 GPIO 灌激勵,然後將經過這些邏輯之後的激勵通過另外一些 GPIO 引出,然後去對比 Partner。而內建自測試是我這個測試,對 SRAM 的測試不需要通過外部的管腳,在 SRAM 外部會包一層 Bist 邏輯,然後相當於在內部觸發一個使能信號,然後它就可以往 SRAM 中灌各種激勵,然後把經過邏輯之後的激勵輸出,就可以完成這樣一個內建自測試。這就是 MemBist 的功能。

1.5.1、Spare Cells

Spare Cells 主要是放在頂層,用於芯片後期,在投片時忽然發現有 BUG,這時候要做一個叫 ECO(Engineering Change Order,手動修改集成電路的過程)的東西,這個時候就可能會涉及到一些 cell 的替換,如果之前已經放了 Spare Cells 的話,就可以直接用 Spare Cells,不需要再重新增加 cell。如果增加 cells,可能會導致整個 Die 的面積放不下!所以相當於是提前預留放了一些爲我們做 ECO 準備的 Spare Cells,把面積在那佔着,這樣的話,整個 FloorPlan 就不用了動了!Cell 在那放着,儘可能最小的去影響我們最終的 FloorPlan。

1.5.1、IO MUX

管腳複用,類比 STM32。

1.6、SoC IP

二、SoC 架構圖:簡述 SoC 的功能及應用場景

2.1、數據存儲 數據流

數據存儲功能的數據流向示意圖(以 DMA 搬移 SRAM 數據爲例):數據流按照箭頭,依次是:紅 -> 綠 -> 藍。(下圖標號所在位置是該顏色起始位置)

問:爲什麼不直接從 Camera -> SD Card?如下圖:

答:數據通路是可以通的,但是 Camera 發送數據的速率與 SD Card 存儲數據的速率,這兩個並不一定是完全一樣的,這樣就可能導致數據錯誤。將數據存入 SRAM,相當於起一個緩衝的作用!這樣我數據存進來之後,是存至 SD Card 還是通過 WiFi 進行無線傳輸,都可以通過 CPU 進行靈活控制!

2.2、無線傳輸 數據流

無線傳輸功能的數據流向示意圖(以 DMA 搬移 SRAM 數據爲例):數據流按照箭頭,依次是:紅 -> 藍 -> 棕。(下圖標號所在位置是該顏色起始位置)

2.3、關於 Master 和 Slave

三、SoC 架構圖:IP 總線地址映射

基地址:Base Address 偏移地址:Offset Address

注:基地址 + 偏移地址 可類比 區號 + 號碼。低 16 位是偏移地址,高 16 位是基地址。

每一次的訪問都是基於地址空間進行訪問的,所以會把每一個系統進行劃分,劃分成爲一個地址空間。

各個外設地址如下表:

軟件工程師寫模塊時,通常只關注偏移地址!

四、SoC 架構圖:Pin-MUX & PAD

五、SoC 架構圖:版圖佈局 Floorplan

注:版圖佈局 Floorplan 佈局可類比 PCB 的佈局!

Floorplan 中可以看到的是各個 Cell(數字電路)和各個 IP(模擬電路)。

這樣的放置原則是爲了提高整個空間的利用率!MEM 這個模擬 IP,可以認爲是一個硬核,如果它放中間,那麼周圍的繞線就會很麻煩。如果是數字的話,那就是各個離散的 Cell,走線容易,空間利用率高!

六、SoC 架構圖:版圖 layout - GDSII

注:版圖 layout 可類比 PCB 的佈線!

下面的版圖 layout 中,中間紫色部分的就是對應 Floorplan 中標註的數字邏輯部分,周圍靠近 Die 的就是模擬 IP!

六、SoC 架構圖:Pin & 電源電壓

下圖爲外圍的原理圖,從中可以看到管腳分佈和電壓域劃分。

七、數字系統設計節點(SoC Design Node)

芯片的誕生,從前期到後期的整個流程:

從上圖看出

參考文獻

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/t1ESGlcYU0Eqg4kNvqA6hg