我們通常所說的CPU往往是一個完整的SoC,它包含了處理器內核等其他的設備或存儲器
1 SOC芯片設備概述
-
Core處理器核
所有指令的發起者和終結者。
在總線上作master存在。
-
Eflash控制器
該部分可控制flash存儲體(讀寫操作),儲存系統程序,存儲體一般由代工廠提供IP。
通常以高速總線上的slave的形式存在,支持boot區空間的擦寫保護。
-
sram控制器
控制sram(static ram)存儲體(讀寫操作),緩存系統數據,存儲體一般由Memory Compiler(一般foundry提供)生成。memory complier生成sram後,不止有verlog代碼,還有不同溫度下的相關的.lib文件。在做 DC綜合時 先要把lib文件轉換成 相應的.db文件 然後纔可以用;
存儲體分塊設計可實現低功耗;
通常以高速總線上的slave的形式存在,支持DFT/BIST功能;
掉電丟失,無需關注剛上電時時sram內部數據,因此無需復位信號;
-
SDRAM控制器
控制SDRAM(synchronous dynamic ram)存儲體,以DDR爲例,包括controller和PHY兩部分
-
NandFlash控制器
需要軟硬協同工作
硬件部分:實現高速總線接口,實現ECC編碼,實現錯誤定位
軟件部分:LLD:控制器底層驅動,主要包括存儲數據的準備和後處理,對時序控制寄存器的配置,命令地址寄存器的配置,DMA的配置以及ECC糾錯;FTL related:包括寫均衡,環塊管理和碎片管理
-
PCIe
- reset邏輯
通常會設置復位邏輯,通過總復位控制子復位 - debug邏輯
監測IP狀態,供設計人員debug用 - msg處理邏輯
IP的某些信號由message處理,有CPU內核來處理 - 子系統配置處理邏輯
- 錯誤處理邏輯
查找寄存器,並記錄,產生中斷 - MSI邏輯
對地址,數據通道進行監測, - 中斷邏輯
IP中某些中斷可以合併 - PHY控制邏輯
寄存器配置和控制 - DFT
IP中會提供專門用於DFT的引腳
-
SD Host控制器
需要軟硬協同工作
硬件部分:實現高速總線主(DMA)從(寄存器)接口,SD總線接口,命令和數據處理模塊
軟件部分:底層驅動,主要包括對控制器的配置,初始化、讀寫操作
-
DMA控制器
與高速總線相連,用於控制模塊間的高速數據傳輸(無需CPU中轉數據,減輕CPU壓力,提高了其吞吐率)
在總線上工作時,與存儲器交互時作master,與CPU,DSP等處理器交互時作slave,因此在無任務時作爲slave存在
-
USB控制器
-
中斷控制器
對芯片中各個外設進行管理,進行優先級排隊,併發送IRQ信號給CPU
-
WatchDog
提供reset,或WatchDog中斷,防止系統運行失敗
-
通用定時器Timer
-
UART
-
IIC
-
SPI
-
GPIO
與外圍總線接口相連
-
Sys Controller
CPU reset/remap控制,JTAG disable功能,Pflash寫保護控制,USB/DMA/SPI協議模式控制,輸出pad三態控制,PLL bypass/powerdown/ratio控制,OSC bypass控制,GPIO/Sram複用控制,總線各模塊clock/reset控制
-
系統總線BUS
作爲子系統中共享的通信鏈路,根據協議不同有AMBA等總線。
在同一時刻,只能有一個master佔用總線
2 設計流程
- 明確設計需求,包括IP調用,功耗,芯片面積,封裝方式,工作電壓等
- 確定系統拓撲結構,確定軟硬件總體方案
硬件包括:IP核,時序,自編寫代碼模塊
軟件包括:硬件驅動,算法,協議,應用程序,實時操作系統 - 根據軟硬核情況和芯片面前確定RTL的有效面積,根據工藝確定邏輯門的數量,從而明確代碼規模
- 調用IP,設計和驗證軟硬件代碼,具體驗證如圖所示
- 各模塊驗證完成後進行FPGA原型機驗證,實現軟硬件協同測試
- 樣片測試
3.指令集架構
指令是處理器進行操作的最小單元,如加減乘除操作、讀寫存儲器操作等。而指令集則是一組指令的集合。
有了指令集架構,就可以使用不同的處理器硬件實現方案(微架構)來設計不同性能的處理器,此時軟件無需做任何修改便可以完全運行在任何一款遵循同一指令集架構的處理器上。
- 分類:CISC和RISC
- CISC
CISC指令數很多,不僅包含了處理器常用的指令,也包含了許多不常用的特殊指令
該指令級早期較爲主流,但隨着特殊指令的增多,缺點也就暴露了:CISC的指令只有20%被經常使用,80%則很少被用到;大量的特殊指令讓CPU設計變得複雜,增加了硬件上的時間成本和麪積開銷 - RISC
RISC指令較精簡,只包含處理器常用的指令,對於不常用的操作,則通過執行多條常用指令的方式達到同樣效果
- 指令集架構位數
通常架構位數指通用寄存器的寬度,其決定了尋址範圍的大小,數據運算能力的強弱