一、SoC 架構(gòu)圖:核心功能和設(shè)計(jì)目標(biāo)
SoC 是基于通用處理器這樣的思路進(jìn)行設(shè)計(jì)的,與 PC 設(shè)計(jì)思路一樣。即通用處理器是由 CORE + MEM 兩部分組成,修改軟件來實(shí)現(xiàn)不同的功能,電腦還是同一個(gè)電腦,硬件組成還都是一樣的。 SoC 架構(gòu)圖四大組成部分:
1、核 CORE
2、存儲(chǔ) MEM
3、外設(shè) IO
4、總線 BUS
SoC 總的架構(gòu)圖如下:
1.1、SoC - 核 CORE對(duì)于核來講,現(xiàn)在主流的核有三類:
x86 為代表,公司有 AMD 和 INTEL,PC 和 Server 用這類核比較多。
ARM-R 系列:中端,常用在實(shí)時(shí)場景,如醫(yī)療器械,路由交換機(jī)
ARM-A 系列:高端,常用在高端應(yīng)用場景,如手機(jī)芯片
ARM 為代表,手機(jī)芯片、嵌入式系統(tǒng)等用這類核比較多。
CISC(Complex Instruction Set Computer - 復(fù)雜指令集計(jì)算機(jī))
RISC(Reduced Instruction Set Computing - 精簡指令集計(jì)算機(jī))
基于 ARM 和 x86 之間,可以進(jìn)行靈活的切換和組裝
暫沒有成熟的商用體系,沒有生態(tài)支撐
RISC-V(開源)
架構(gòu)圖,左上角為 SoC 系統(tǒng)的核,此處使用的是 ARM 公司的 Cortex-M3/M4 內(nèi)核。
同時(shí),I-Code 表示指令代碼,D-Code 表示數(shù)據(jù)代碼。JTAG 用來調(diào)試芯片,下載調(diào)試程序使用。
注:I-Code、D-Code 即 I-Cache、D-Cache,這個(gè)可選的,并不是每個(gè) SoC 都會(huì)用到,需要根據(jù)實(shí)際芯片的規(guī)模和需求!
1.2、SoC - 存儲(chǔ) MEM架構(gòu)圖,中間部分為 SoC 系統(tǒng)的存儲(chǔ),此處包含 PFlash 和 SRAM 兩種。
如果 PFlash 不夠用,可以外擴(kuò) Flash,如NFC(Nand Flash Controller)
SRAM 是靜態(tài)隨機(jī)存儲(chǔ)器(Static Random Acess Memory),與之相對(duì)的還有一種是動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Dynamic Random Acess Memory)。DRAM 需要不斷的刷新才能保持住數(shù)據(jù),SRAM 是不需要刷新的!
DRAM 的密度很高,所以當(dāng)存儲(chǔ)數(shù)據(jù)容量很大的時(shí)候組出來的 Memory 面積就會(huì)小一些!SRAM 通常用在小的 SoC 中!
如果 SRAM 不夠用,可以外擴(kuò) SRAM,比如上圖中的Ext_SRAM
PFlash(硬盤)中的數(shù)據(jù)掉電不丟失
SRAM(內(nèi)存)中的數(shù)據(jù)掉電丟
即 BootLoader 放在 PFlash 中,一上電便會(huì)將其 load 至 SRAM 中,CPU 來 SRAM 取指來執(zhí)行我們的程序!
core 上電后,會(huì)到 PFlash 中取它的指令,來讀取系統(tǒng)要運(yùn)行的 “軟件”(代碼),在 PFlash 啟動(dòng)之后,把所需的軟件下載至 SRAM 中,最終在 SRAM 里運(yùn)行 “軟件”。
SRAM 存儲(chǔ)速率較 PFlash 速率快,故上電跑的程序是放在 SRAM 中,啟動(dòng)程序以及不需要的數(shù)據(jù)會(huì)存在 PFlash 中。
1.3、SoC - 外設(shè) IO外設(shè) IO 分為兩部分:
一個(gè)是高速外設(shè) IO(AHB 100MHz):DMA、Ext_SRAM Controller、SD_Memory、SD_Host
一個(gè)是低速外設(shè) IO(APB 50MHz):SPI、UART、GPIO、I2C
1.3.1、 DMADMA(Direct Memory Access,直接存儲(chǔ)器訪問),使用場景如下:當(dāng) CPU 需要搬移 SRAM 中的大量數(shù)據(jù)時(shí),此時(shí)如果使用 CPU 搬移,則會(huì)先將 SRAM 中的數(shù)據(jù)搬移至 CPU 的寄存器中,然后再取指令寫操作等方式搬移至目的地。該方法效率較低,且占用了 CPU 的寶貴處理時(shí)間。此時(shí)就有了 DMA 的登場,CPU 只需告訴 DMA 引擎,你需要從哪個(gè)地址搬移多少個(gè)數(shù)據(jù)到哪個(gè)地址,這樣 DMA 就自己聽話地去工作了,不再需要 CPU 的參與,減輕 CPU 的負(fù)荷。 DMA 對(duì)外沒有接口,這個(gè)也可以從架構(gòu)圖中看出。
1.3.2、 Ext_SRAM Controller、SD_Memory 與 SD_HostExt_SRAM Controller:通常是 SRAM 大小不夠時(shí),用作擴(kuò)展使用。 通常 SD_Memory 連接一個(gè)諸如 Camera 的設(shè)備,將拍到的照片數(shù)據(jù)通過 SD_Memory 接口存儲(chǔ)到 SRAM 中,然后 SD_Host 接口將 SRAM 中的數(shù)據(jù)保存至 SD Card 中,取出 SD 卡插入 PC,就可以看到讀取的照片了!
1.3.3、典型低速外設(shè)典型的 3 個(gè)低速外設(shè)接口:I2C、UART、SPI,差異如下:
UART 常用于長距離傳輸,但是速率較低。
I2C 比 UART 速率快,但是速率不會(huì)太長;且 I2C 在短距離傳輸時(shí),可以接多個(gè) Slave。UART 是點(diǎn)點(diǎn)通信,1 個(gè) UART 接口只能接 1 個(gè) UART Slave。1 個(gè) I2C Master 接口,可以接多個(gè) I2C Slave;
SPI 相較于 UART 和 I2C 速度會(huì)更高;1 個(gè) SPI Master 接口,可以接多個(gè) SPI Slave;SPI 占用的 IO 數(shù)也較 I2C 多!
外設(shè)與 CPU 進(jìn)行通信,有兩種方式:
CPU 來查詢我們的狀態(tài)
直接給 CPU 發(fā)送中斷,CPU 收到中斷后會(huì)去處理中斷程序
BootLoader 程序和中斷程序是事先寫好的程序,放到 FLASH 中,一旦啟動(dòng)后便會(huì)將其 LOAD 至 SRAM 中!一旦發(fā)生某個(gè)中斷,便會(huì)根據(jù)中斷向量號(hào)去查詢中斷程序去執(zhí)行它。(了解即可)
注:主動(dòng)發(fā)起數(shù)據(jù)我們稱之為 master;被動(dòng)接受數(shù)據(jù)我們稱之為 slave。
1.3.4、內(nèi)部組件WDT:看門狗。我們的內(nèi)核每隔一段時(shí)間喂一次狗,如果內(nèi)核掛掉,看門狗溢出會(huì)產(chǎn)生一個(gè)中斷,告訴外界,芯片已經(jīng)掛死,需要處理。 Timerx:硬件計(jì)數(shù)器。CPU計(jì)數(shù)精讀低,通常是 us 級(jí),很難達(dá)到 ns 級(jí)。而我們的硬件計(jì)數(shù)器精度可以達(dá)到 ns 級(jí)別;另外,硬件計(jì)數(shù),可以減小 CPU 的開銷。 ICT:指令的計(jì)數(shù),統(tǒng)計(jì)用的!
1.3.5、剩余組件左下角是系統(tǒng)控制器和一些模擬組件:
System Controller:系統(tǒng)控制器
POR:Power On Reset,上電復(fù)位(模擬 IP)
OSC:Oscillator,晶振
PLL:Phase Locked Loop,鎖相環(huán)
VBG:電源管理
VR:Voltage Regulater,電壓調(diào)節(jié)器
上述講的 IO 小模塊,以及本節(jié)介紹的模擬組件,我們一般都稱之為IP。
1.4、SoC - 總線 BUS將上述介紹的 IP 進(jìn)行互聯(lián)的線,我們將其稱之為總線。這里使用的是 AMBA 2.0 總線,包括 AHB、APB 兩部分。
1.5、其他模塊
1.5.1、MemBistMemBist 主要針對(duì) Memory,如 SRAM。在制造過程中,可能會(huì)存在缺陷,當(dāng)芯片回來之后,我們要進(jìn)行一些制造型測試!MemBist 是進(jìn)行內(nèi)建自測試! 這種內(nèi)建自測試與其他 IP 外設(shè)測試不一樣,其他 IP 外設(shè)測試通常是通過 GPIO 灌激勵(lì),然后將經(jīng)過這些邏輯之后的激勵(lì)通過另外一些 GPIO 引出,然后去對(duì)比 Partner。而內(nèi)建自測試是我這個(gè)測試,對(duì) SRAM 的測試不需要通過外部的管腳,在 SRAM 外部會(huì)包一層 Bist 邏輯,然后相當(dāng)于在內(nèi)部觸發(fā)一個(gè)使能信號(hào),然后它就可以往 SRAM 中灌各種激勵(lì),然后把經(jīng)過邏輯之后的激勵(lì)輸出,就可以完成這樣一個(gè)內(nèi)建自測試。這就是 MemBist 的功能。
1.5.1、Spare CellsSpare Cells 主要是放在頂層,用于芯片后期,在投片時(shí)忽然發(fā)現(xiàn)有 BUG,這時(shí)候要做一個(gè)叫 ECO(Engineering Change Order,手動(dòng)修改集成電路的過程)的東西,這個(gè)時(shí)候就可能會(huì)涉及到一些 cell 的替換,如果之前已經(jīng)放了 Spare Cells 的話,就可以直接用 Spare Cells,不需要再重新增加 cell。如果增加 cells,可能會(huì)導(dǎo)致整個(gè) Die 的面積放不下!所以相當(dāng)于是提前預(yù)留放了一些為我們做 ECO 準(zhǔn)備的 Spare Cells,把面積在那占著,這樣的話,整個(gè) FloorPlan 就不用了動(dòng)了!Cell 在那放著,盡可能最小的去影響我們最終的 FloorPlan。
1.5.1、IO MUX管腳復(fù)用,類比 STM32。
1.6、SoC IP
二、SoC 架構(gòu)圖:簡述 SoC 的功能及應(yīng)用場景
這種應(yīng)用在記者、攝影愛好者,數(shù)碼相機(jī)愛好者等有應(yīng)用需求。當(dāng)把數(shù)碼相機(jī)中的圖片下載到手機(jī)上后,可以通過移動(dòng)網(wǎng)絡(luò),上傳至社交媒體;現(xiàn)場記者,則可以通過將照片及時(shí)發(fā)送給電視臺(tái)、媒體等提供及時(shí)的照片素材。
無線通信功能是通過 APB 總線上的 SPI 接口外接一個(gè) WIFI 芯片,實(shí)現(xiàn)無線通信和數(shù)據(jù)傳輸功能。
數(shù)據(jù)存儲(chǔ)功能主要是 NandFlash 控制器,實(shí)現(xiàn)存儲(chǔ)功能。但是該芯片采用了替換方案,使用了 SD-Host 接口,外接 SD Card 的方式進(jìn)行存儲(chǔ)數(shù)據(jù)。
典型的應(yīng)用場景是:數(shù)碼相機(jī)拍照時(shí),將照片通過 SD-Memory 控制器接口,放入 SRAM 暫存,最后通過 SD Host 接口,將照片存儲(chǔ)到外接的 SD memory 卡中,然后手機(jī) / PC 端用戶,可以連接到 WiFi 上,通過手機(jī) / PC 下載 SD Card 中存放的視頻到手機(jī) / PC。
該芯片是一個(gè) SoC 芯片,主要功能是無線通信和數(shù)據(jù)存儲(chǔ)功能,主要的應(yīng)用場景是數(shù)據(jù)相機(jī)的存儲(chǔ)卡。
隨著智能手機(jī)的發(fā)展,尤其是高清攝像頭的發(fā)展,這種無線存儲(chǔ)芯片方案的應(yīng)用場景在萎縮。
2.1、數(shù)據(jù)存儲(chǔ) 數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)功能的數(shù)據(jù)流向示意圖(以 DMA 搬移 SRAM 數(shù)據(jù)為例):數(shù)據(jù)流按照箭頭,依次是:紅 -> 綠 -> 藍(lán)。(下圖標(biāo)號(hào)所在位置是該顏色起始位置)
問:為什么不直接從 Camera -> SD Card?如下圖:
答:數(shù)據(jù)通路是可以通的,但是 Camera 發(fā)送數(shù)據(jù)的速率與 SD Card 存儲(chǔ)數(shù)據(jù)的速率,這兩個(gè)并不一定是完全一樣的,這樣就可能導(dǎo)致數(shù)據(jù)錯(cuò)誤。將數(shù)據(jù)存入 SRAM,相當(dāng)于起一個(gè)緩沖的作用!這樣我數(shù)據(jù)存進(jìn)來之后,是存至 SD Card 還是通過 WiFi 進(jìn)行無線傳輸,都可以通過 CPU 進(jìn)行靈活控制!
2.2、無線傳輸 數(shù)據(jù)流無線傳輸功能的數(shù)據(jù)流向示意圖(以 DMA 搬移 SRAM 數(shù)據(jù)為例):數(shù)據(jù)流按照箭頭,依次是:紅 -> 藍(lán) -> 棕。(下圖標(biāo)號(hào)所在位置是該顏色起始位置)
2.3、關(guān)于 Master 和 Slave
CPU 通常是一個(gè) Master,數(shù)據(jù)的發(fā)起者;
存儲(chǔ)系統(tǒng)(PFlash、SRAM)是一個(gè) Slave,被動(dòng)的接收別人發(fā)過來的命令,要來讀哪個(gè)地址的數(shù)據(jù)了;
兩個(gè) AHB 高速外設(shè):SD_Memeory 和 SD_Host。既有 Master 口,又有 Slave 口。SD_Memory 模塊工作時(shí),數(shù)據(jù)是通過 Master 口進(jìn)行傳輸,Slave 口更多指的是 CPU 對(duì)其進(jìn)行一些配置(IP 可以工作在多種模式,控制信號(hào)可以通過 Slave 口對(duì)其進(jìn)行配置);SD_Host 模塊同理。
慢速外設(shè):SPI/UART/GPIO/I2C/Timer/WDT/ICT 等,都是 Slave 口,是 CPU 來告訴他們要傳什么數(shù)據(jù)出去(CPU 對(duì)其進(jìn)行配置)。
三、SoC 架構(gòu)圖:IP 總線地址映射基地址:Base Address偏移地址:Offset Address
注:基地址 + 偏移地址 可類比 區(qū)號(hào) + 號(hào)碼。低 16 位是偏移地址,高 16 位是基地址。
每一次的訪問都是基于地址空間進(jìn)行訪問的,所以會(huì)把每一個(gè)系統(tǒng)進(jìn)行劃分,劃分成為一個(gè)地址空間。 各個(gè)外設(shè)地址如下表:
軟件工程師寫模塊時(shí),通常只關(guān)注偏移地址!
一般一個(gè)地址空間可以存儲(chǔ) 8bit 數(shù)據(jù),故上述單位是KB
四、SoC 架構(gòu)圖:Pin-MUX & PAD
①、PAD 本身就挺大的,PAD 過多,很占邊長,造成規(guī)劃的 Die 放不下。【芯片外圍邊長留足夠的余量】
②、PAD 本身是模擬器件,PAD 過多,會(huì)增加功耗!【總體功耗也會(huì)有收益】
PAD:芯片與外部通信的一個(gè)接口
PIN-MUX:主要用來減少 PAD 數(shù)目,為什么要減少 PAD?
上圖展示的三種數(shù)字PAD,從上到下分別是:Input Only、Output Only、Bidirection 三種。工程上通常上都是 Bidirection ,使用的時(shí)候直接控制 EN 信號(hào),來使其輸入或輸出!
模擬 PAD:如 LVDS;
VR(電壓調(diào)節(jié)器) PAD
五、SoC 架構(gòu)圖:版圖布局 Floorplan
注:版圖布局 Floorplan 布局可類比 PCB 的布局!
Floorplan 中可以看到的是各個(gè) Cell(數(shù)字電路)和各個(gè) IP(模擬電路)。
模擬IP (MEM/FLASH)放到靠近 DIE 的邊角上,提高空間利用率
DIE 的內(nèi)部會(huì)放數(shù)字邏輯
這樣的放置原則是為了提高整個(gè)空間的利用率!MEM 這個(gè)模擬 IP,可以認(rèn)為是一個(gè)硬核,如果它放中間,那么周圍的繞線就會(huì)很麻煩。如果是數(shù)字的話,那就是各個(gè)離散的 Cell,走線容易,空間利用率高!
六、SoC 架構(gòu)圖:版圖 layout - GDSII
注:版圖 layout 可類比 PCB 的布線!
下面的版圖 layout 中,中間紫色部分的就是對(duì)應(yīng) Floorplan 中標(biāo)注的數(shù)字邏輯部分,周圍靠近 Die 的就是模擬 IP!
工藝水平:110nm e-flash
DIE 大小:3mm x 4mm = 12 mm^2
晶圓 wafer 大小:8 英寸,可以生成 3600 片 DIE(3mm x 4mm),1 個(gè) wafer 的制造成本在 1000 美金。
良率(yield)【wafer 中有多少個(gè) DIE 是可用的】:>95%(通過 ATE 去篩選不能用的 DIE)
六、SoC 架構(gòu)圖:Pin & 電源電壓下圖為外圍的原理圖,從中可以看到管腳分布和電壓域劃分。
電壓域的劃分工作通常由架構(gòu)師完成,前端人員是接觸不到這個(gè)東西的!
電壓域通常可劃分為:數(shù)字電壓域(CORE、IO)、模擬電壓域(不同模擬 IP,不同的電壓)
七、數(shù)字系統(tǒng)設(shè)計(jì)節(jié)點(diǎn)(SoC Design Node)芯片的誕生,從前期到后期的整個(gè)流程:
①、進(jìn)行市場調(diào)研,有沒有市場需求,具不具備很好的商業(yè)價(jià)值,做芯片很燒錢,1 個(gè) wafer1w 美金,還要買一些 IP 等都要花錢!做出來之后能否賺錢,有沒有人買單,這個(gè)很重要!
②、根據(jù)市場需求,算法團(tuán)隊(duì)根據(jù)要實(shí)現(xiàn)的功能,做一個(gè)算法模型,算法可以實(shí)現(xiàn)(仿真成功),可以達(dá)到市場需求,則進(jìn)行下一步。
③、進(jìn)行芯片的實(shí)現(xiàn)架構(gòu)設(shè)計(jì),包括:軟硬件劃分(哪些部分用軟件實(shí)現(xiàn),哪些部分用硬件實(shí)現(xiàn))、硬件上劃分多少個(gè)模塊等,編寫架構(gòu)文檔(AS,Architecture Specification),架構(gòu)也分為好多層次,比如系統(tǒng)級(jí),電路級(jí)等。接下來還有編寫一個(gè)設(shè)計(jì)文檔(DS,Design Specification)
④、編寫 RTL 代碼,進(jìn)行功能驗(yàn)證(EDA 仿真驗(yàn)證、FPGA 原型驗(yàn)證)和代碼復(fù)查
⑤、通過綜合工具,將其轉(zhuǎn)化為 Netlist,即將 RTL 代碼映射(MAP)成門級(jí)網(wǎng)表(STD CELL),同時(shí)進(jìn)行形式驗(yàn)證(RTL 邏輯功能和 Netlist 的邏輯功能對(duì)比,看看綜合工具是否把 RTL 某些功能給優(yōu)化掉),時(shí)序驗(yàn)證(實(shí)現(xiàn) Netlist 后,timing setup 能否滿足)
⑥、接下來進(jìn)行物理實(shí)現(xiàn),GDSII 也是一個(gè)網(wǎng)表,只不過是包含了器件位置信息的網(wǎng)表。Netlist 僅僅只是邏輯信息。然后進(jìn)行一些后仿真和簽收復(fù)查。
⑦、投片,在 wafer 上生成我們的芯片。生產(chǎn)過程有沒有問題,通過 ATE 測試,ATE 測試的 partner 是在前面做 RTL 時(shí)的 DFx 做的,Membist,Scan 掃描,都是在前期做好的設(shè)計(jì),芯片回來之后,會(huì)把這些電路啟動(dòng),進(jìn)行 ATE 測試!測芯片本身,有沒有制造功能的問題!
⑧、最后進(jìn)行應(yīng)用測試,即功能測試。投放市場。
從上圖看出
①、芯片的實(shí)現(xiàn)是需要很多的團(tuán)隊(duì),很多個(gè)環(huán)節(jié),一步步實(shí)現(xiàn)的。
②、每一個(gè)環(huán)節(jié)的交付件(交付標(biāo)準(zhǔn))是變化的,每一步都是需要有不同的方法驗(yàn)證。做 IC 驗(yàn)證,主要進(jìn)行 RTL 的功能驗(yàn)證,要明確從事的工作在整個(gè)設(shè)計(jì)流程中的位置!
參考文獻(xiàn)
芯片測試術(shù)語 ,片內(nèi)測試 (BIST),ATE 測試
-
sram
+關(guān)注
關(guān)注
6文章
778瀏覽量
115499 -
soc
+關(guān)注
關(guān)注
38文章
4295瀏覽量
220956 -
通用處理器
+關(guān)注
關(guān)注
0文章
15瀏覽量
7224
原文標(biāo)題:了解 SoC 的架構(gòu)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
氣密性檢測干貨!150個(gè)核心關(guān)鍵詞,一文看懂

一文看懂電感、磁珠和零歐電阻的區(qū)別
一文看懂為什么貼片共模電感的感量在電路中會(huì)不穩(wěn)定
一文看懂相同型號(hào)貼片電感封裝尺寸變化對(duì)使用有沒有影響
一文看懂如何有效延長直插色環(huán)電感的使用壽命
一文看懂貼片電感外殼壞了會(huì)有影響嗎
一文看懂如何快速判斷電感的好壞
一文看懂感值相同封裝不同的電感能不能替換使用
TMS320DM36x SoC架構(gòu)和吞吐量

一文看懂直插大功率電感能用貼片電感替換嗎
一文看懂如何解決工字型繞線電感不良的問題
AMD Versal? Adaptive SoC CPM PCIE PIO EP設(shè)計(jì)CED示例

評(píng)論