SOC的简介和对比
SOC通常应用在嵌入式系统中,嵌入式系统具备三个特点:专用性(特定应用)、严格约束(成本、尺寸、性能和功耗)及反应性与实时性(需要不断的根据所处环境做出反应,实时的计算出相应结果)。常见的微处理器还有MCU、DSP等。
1.SOC VS MCU:
MCU:通常包含了必要的CPU、RAM、ROM、定时器及I/O等外设,根据具体应用还会包含不同的外设,如比较器、AD/DA等等,更加专注于小型系统的应用,通常不包含复杂的系统软件和或应用程序。
SOC:包含了一个或多个CPU、甚至根据应用还会包含GPU、ISP、DSP、ASIC等核,相比MCU拥有更多的资源(计算、存储和I/O资源),可以完成更加复杂的应用。例如我接触的第一款SOC是TI的CC2540这颗BT芯片,里面就集成了BLE的内核,使得使用BLE功能时不在需要外挂一颗BT芯片从而提高了集成度。再到我们使用的手机SOC也会将基带功能集成到SOC中。
换句话说:MCU有的功能SOC都有,但是SOC有的MCU不一定有。也可以理解SOC是能力更强的MCU,或者说SOC是为了在移动互联网时代取代PC的产物。但是SOC和MCU的界限并不是很清晰,一些功能指向很单一的SOC从应用场景的角度上也类似MCU的场景。但是总体的大方向是SOC可以处理更加复杂的事务和应用。
2.SOC的构成和选型要素
SOC的必要构成:CPU、RAM、ROM及外设(种类繁多,主要看应用需求)。
SOC的可选组件:GPU、DSP、ISP、ASIC等。
下图基于ARM的SOC框图为例,整个SOC由片上总线(AMBA)连接到各个分管不同应用的处理核上组成。图中总线分三条(AHB、ASB和APB)由bridge连接,分别对应了CPU、系统控制、存储和外设三种类型。
SOC的选型通常是产品设计中的第一个问题,首要的问题就是产品需要多大的计算能力(算力),第二个问题就是产品需要多少存储能力,第三个问题是产品需要接入那些外设以满足应用需求。回答了上面三个问题,接下来要思考:产品的功耗、尺寸、成本和性能。以此来限定选型范围最终完成选型。
计算能力从下面几个方面考虑:CPU是否够用,需要DSP吗?是否需要人工智能算法运行?是否需要GPU和ISP等图像处理器。
CPU的指令集,如下图中罗列。指令集定定义了CPU可以执行的全部指令的集合,可以看成是CPU的最底层抽象。CISC复杂指令集在PC中更常见,而RISC在精简指令集常见于各种嵌入式应用的CPU中,其中以ARM应用最为广泛。其他两种指令集更常见于其他专用处理器,例如VLIW超长指令字指令集常见于DSP中。CPU常见几种性能评估参数:MIPS、DMIPS和Coremark。另外要关注Cache大小,同样的CPU可能会有不同的Cache大小。
在ARM的体系中CPU分三个系列:Cortex-A@应用型(密集应用型)、Cortex-R@嵌入式型(实时性)和Cortex-M@微处理型(MCU)。以此可以大概圈定选型范围。再根据具体应用和SOC厂商的推荐场景来缩小范围,但一般确定选型都需要实际业务运行的验证,因此就需要EVB等实体硬件进行评估。
3.SOC的存储
存储是一个系统中必不可少的,根据应用的复杂程度和场景,一般的需要DRAM和Flash组成存储系统。简单系统中一些SOC会直接将DRAM和Flash封装在SOC package中以提高集成度使得产品的体积可以进一步缩小以满足便携性。
分两个部分来看,第一个DRAM,通常和SRAM来形成对比。SRAM更适合于高速的应用比如CPU和内存之间的Cache,而DRAM更适合于做更大容量的应用,因此被用来存储程序和程序运行过程中的数据。
SRAM VS DRAM
SRAM一般都集成在SOC中,下面说明Jedec定义的三类DRAM。标准DDR适合于服务器、数据中心和PC等应用,可以提供较好的带宽和密度;低功耗LPDDR适合于手机和汽车等应用,提供较小的带宽和很低的功耗;第三类针对图像的GDDR,分类两类GDDR和HBM,提供很高的数据吞吐量。同样在一个系统运行除了RAM也需要ROM来存储程序和数据,两者最大的区别就是掉电后数据是否可以保持。
DRAM的技术演进到目前已经到DDR5和GDDR7(2023年7月,Samsung开发完成),移动端目前到LPDDR5x。
4.SOC的外设接口
上面看到的CPU可以拆分成控制器和运算器,如此一来计算机组成的5大部分就剩下输入输出的部分了。输入输出的部分一部分是通用接口,一部分是专用接口,罗列常见的如下:
5.SOC的关联设计
上面的全部介绍围绕在SOC所要实现功能的选型上。完成了选型接下来就是设计用于评估的实物了。这其中几个关键的设计要素需关注
· SOC 电源设计
· SOC 晶振那点事儿
· SOC 热设计