2021-01-28

article/2025/10/14 9:52:35

SoC知识及选型经验分享

1.什么是SoC?

  在嵌入式产品领域,SoC是这么个意思:一般说来, SoC(System on Chip的缩写),称为芯片级系统,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

  在工作中,狭义上来说,SoC指SoC芯片,指芯片内部集成了丰富硬件接口的嵌入式芯片。我们就拿32bit的芯片开刀,因为我也没有接触过64bit的嵌入式处理器,其他8bit、16bit的处理器已经算是单片机范畴,就不细说了。  

2.SoC芯片的设计流程

  SoC芯片设计工程性非常强,需要丰富的工程经验。我在龙芯中科的工作过程中,有幸接触了这方面的相关知识,参与了龙芯广州分公司向总公司提出需求,定义的1C芯片需求设计工作,这让我获益匪浅,在北京计算所的芯片设计大牛们带领下,我清晰的学到到了芯片内部结构的很多知识,这让我从软件驱动层面真正拓展到了硬件层面(不仅仅只是了解怎么用寄存器啦)。

我经历了如下过程:

1)芯片的需求分析&调研;

2)芯片目标与接口结构确定;

3)芯片设计项目管理;

4)芯片产品手册编制;

 

  大家有兴趣可以搜索下百度的解释,百度上的解释应该是纯芯片设计的范畴,但我体验和理解的SoC芯片设计过程应该是这样的:

  芯片设计流程图

  我只参与到了功能设计阶段的深度,但到了这个程度已经能让你对整个芯片有个非常清晰的了解了。

  需求设计阶段的调研是一个苦逼的过程,这个过程需要不断的与芯片功能设计的负责人进行沟通,需要根据公司对市场情况的总结,非常明确并量化的提出芯片各个功能接口的参数、处理器的性能呢及总线要求、明确的管脚封装需求(当时年轻无谓啊,参与了一款芯片的定义工作,要知道同类公司(比如北京君正科技)对于一款芯片的定义是由一个相当经验丰富的团队去做的!)。

  这个过程从PM,到芯片设计团队,到硬件工程师,再到各个部门的主管领导都要参与,都有提出自己需求的可能,这是一个多方博弈的过程:),芯片需求定义就花了好几个月呢。

  大家对芯片设计的流程有个了解就好了,一款嵌入式芯片必然是有特定的应用领域的,因为芯片级的设计开发费用巨大,打一次样片的费用都是过100万的,所以,芯片市场调研尤为重要,重点关注一个领域的产品市场容量信息。比如龙芯1C芯片,最初的目标其实是想定义一款针对指纹锁市场的低功耗嵌入式处理器,用以替换市场现有芯片市场。

  扯远了,回到主题,接下来给大家介绍下我们产品经理选择SoC芯片的关键点。

  

3.产品经理选择处理器的关键点是什么?

  我认为,对于硬件产品经理,选择一款主处理器是多个维度的考量,我感觉应该从下面几个方面入手:

  3.1 从产品成本要求考虑

  你的产品是定位于高端、中端还是低端,决定了你可选的芯片品牌,一般中高端的芯片都是被美国芯片设计公司所垄断的,而中低端的产品很多是选择韩国、日本、台湾和国内的芯片设计公司的芯片。

  低端的产品应该选择更高集成度的CPU,这样可以直接减少外围电路器件的使用量。

  集成的IP核,优点是可以降低接口设计时外围电路器件的成本,缺点是扩展性会降低,接口性能也会受到一定的限制。

  案例:

  我在最近一家云计算公司做云终端时,做的一款低端云终端,由于严格要求成本控制在RMB300元以内,我们就选择了一款韩国芯片:TCC8902。这款芯片的集成度非常高,甚至集成了DSP协处理器(可惜没有用上),而芯片的成本我们又可以接受。

 

TCC8902

3.2 从芯片应用领域选择

  选择一款芯片,应该要首先了解下这款芯片的应用领域,因为我说过,一款芯片被设计出来,应该是有典型的应用领域的,其核心功能接口及处理单元必然是对某一特定领域功能的整合,并很可能是针对这个领域做过相应优化匹配工作的,在软件上会提供更丰富的软件解码库,甚至是硬件级别的解码IP核。

  其实大家应该很容易搜索到,该领域内较为著名的芯片设计公司,并搜索到公司所推出的样板产品。所以,我们选择芯片,最好选择专为我们产品的领域定制的芯片。

  案例:

  我最近做的一款云终端产品,因为定义为一款思杰HDX云协议专用终端,需要使用集成了IC级别的HDX协议解决方案的芯片,通过多方查找资料了解到,业内设计并量产了集成思杰HDX协议硬件支持方案的芯片只有:TI DM8148、DM8168,Marvell Armada510 SoC,以及NUMO 3 SOC,而第三款芯片是Ncomputing公司专门定制的soc芯片,不对外销售,所以我们可选的芯片厂家就只有TI和Marvell了。

HDX硬件解码方案

  3.3 从CPU性能参数和功能参数来选择

  主要需关注的方面包括:

1)主芯片的CPU内核是什么,协处理是什么,图形处理器是什么?

  芯片内核的新旧,直接决定了芯片整体性能,作为PM,应该在成本可受范围内选择尽可能新的处理器内核、集成新的图形处理器的SOC芯片。有硬件浮点运算能力的CPU就比没有的,在对图形处理方面就有优势。

  2)CPU的频率

  CPU频率是芯片最重要的性能参数,一般选择频率越高的越好。

  对于某些需要超低功耗的产品,那就需要选择同类的低功耗产品,这类处理器直接表现为频率更低些。不过随着处理器SOC的技术越来越精湛,大内核+小内核的处理器也越来越多了,最明显的就是智能手机上使用的SOC芯片。不过这种芯片对于系统的优化、软件任务切换能力有很高要求,不是一般小公司可以做到软硬件适配的最优化。

  3)内存寻址总线带宽与支持的内存种类

  一般32位SOC芯片现在都支持8、16、32位带宽的内存,无疑带宽越大,寻址的速度会越高,选择支持更高带宽的芯片会更好。

1B与1C内存带宽对比

  另外,对于内存类型的支持,每种芯片都有所不同,比如我们一般设备常用的DDR2、DDR3 SDRAM内存,但对于功耗严格的产品来说,选择使用LPDDR芯片是更好的选择,这要求芯片支持该类型内存。

 

510与8148内存支持对比

  4)有哪些IP核或者接口

  关键是看你产品所需的接口是否与产品需求一致。

  5)管脚的是怎么封装的?有多少管教复用?

  32位SOC芯片常见的封装主要是QFP和BGA,QFP或LQFP封装的芯片更便宜,因为其制造成本比BGA封装会低很多,QFP封装还有个优势是可拆卸,但缺点是占PCB用面积较大。

  BGA封装的芯片,由于管教都在下面,所以对焊接要求较高,而且一旦有问题也不容易拆卸。但BGA封装的优点是集成度高,PCB占用面积小。

  选择什么样的封装,需要根据产品结构大小,产品成本要求来选择。

  6)对外接模块的扩展性

  这里指的外接模块主要是wifi、蓝牙、zigbee、smartroom、GPRS、GSM等模块,选择芯片,如果需要使用到外接模块且希望外接模块的可选范围更广,那就留意芯片是否具备较多的SPI、I2C、UART等小的串行接口吧,原则上说是越多越好,注意UART应该有全功能串口。

  7)是否具备内部存储器?

  如果芯片内部有存储器,比如EEPROM、或者FLASH,就算很小都好,那你就有机会向里面写入设备编号,这样节省了外部扩展这类小存储器的成本。

  8)芯片所需供电电压的数量?需要电压越少,则外围供电电路越精简,成本越低。

  案例:

  龙芯1B芯片,需要的供电电压就有3个,这给外围供电电路的设计带来很大压力,需要使用更多的电压转换电路来保障CPU和内存电路的正常运作,成本直接就上升了。而龙芯1C就根据市场的需求,为降低外围电路成本,将核心电压域降低为两个,就降低了供电电路成本:

  

龙芯1B电压域图片

  9)从芯片支持的外部启动方式选择

  无疑,一款支持从多种存储器启动的芯片肯定比仅支持从nor flash启动的芯片要好。这样硬件工程师可以尽最大可能的选择启动存储方案,得到最优的存储器使用成本,而且启动方式更多,也对软件开发有利。

  比如,支持从nand flash启动的芯片是可以节省硬件成本的(可以节省一片nor flash)。支持从MMC/SD卡启动,有利于产品调试,软件开发。

  3.4 从硬件工程师获取帮助

  作为PM,我们不是什么都懂的,要尽最大可能找到硬件工程师让其给予支持,他们对芯片资料的解读能力更强,以及PCBA设计中的需求会深刻影响芯片的选型。

  如果公司没硬件工程师的,那作为PM,我们也应该尽最大可能寻求外包硬件方案商在CPU选型上给予帮助和指导。

4.如何获取SoC芯片相关资料?

1、首选途径:芯片设计公司官方网站。

2、找到和芯片设计公司合作的第三方开发板设计公司,往往会有意外收获。

3、芯片搜索引擎,比如下面:

  http://pdf.elecfans.com/

  http://www.alldatasheet.com/

  http://datasheet.21ic.com/

  http://easydatasheet.cn/

  http://datasheet.eepw.com.cn/

  抛砖引玉,望大家补充:)。。。。

4、各种电子论坛,比如下面:

  http://bbs.elecfans.com

  http://bbs.21ic.com/iclist-6-1.html

  http://bbs.ednchina.com/

  抛砖引玉,望大家补充:)。。。。

5、如果国内的搜索引擎搜索无果,可以选择微软bing,或者直接翻墙,使用google搜索,要知道国外网站的资源往往丰富过国内。

 

http://mp.weixin.qq.com/s?__biz=MzA5NTMwMjIwNA==&mid=226285034&idx=2&sn=98a94d4ee60ddf70f3df882c8063ac46&scene=5#rd

https://blog.csdn.net/lijiuyangzilsc/article/details/46535913


http://chatgpt.dhexx.cn/article/FXKwOxNN.shtml

相关文章

VisionSeed:一颗让 AI 开发遍地开花的种子!

作者:从墨 人工智能市场的火热,自然吸引了众多开发者趋之若鹜,然而,由于AI开发门槛较高,因此,能够真正具有AI应用开发能力,并将AI技术应用到企业当中的用户少之又少。 数据、算力和算法作为是…

5分钟成为车联网专家|如何实现C-V2X技术突破把住车联网发展命门

C-V2X被视为5G最有前景的应用之一,是业界热点。首先,简要介绍智能驾驶与C-V2X融合发展的必要性和建设中的技术问题;然后,结合V2X整体解决方案,研究各网元的功能定位、关键技术趋势、难题与产品形态;接着&am…

DAMS峰会:解读ES搜索平台、AI中台、DataOps、机器学习等大数据技术精要

DAMS峰会:解读ES搜索平台、AI中台、DataOps、机器学习等大数据技术精要 dbaplus社群 今天 近年来,因数据衍生、关联、发展起来的技术层出不穷,我们不断探索数据从资源转化为资产的方法,又面临在数据共享和互通中引发的安全隐患&am…

携程、快手、平安银行、哈啰出行是怎么落地数据治理和DataOps的?丨DAMS峰会...

近年来,因数据衍生、关联、发展起来的技术层出不穷,我们不断探索数据从资源转化为资产的方法,又面临在数据共享和互通中引发的安全隐患;我们迫切希望进行企业核心数据库的开源化、国产化替换,又碍于“恐龙级”老旧系统…

主流前端UI框架

1、Element UI 适用于PC端页面开发样式,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。 官网地址:https://element.eleme.cn/#/zh-CN 2、有赞UI 适用于手机端页面的开发样式,轻量、可靠的移动端 Vue 组件库&#xf…

【前端框架】当前基于bootstrap框架的几种主流前端框架

一 概述 当新开发一个项目或产品时,技术选型是一个不可缺少的环节,在软件架构中有着举足轻重的作用,可以这么说,技术选型的好坏直接影响项目或产品的成败优劣,因此,在进行软件架构时,一定要想…

前端主流图表框架

文章目录 一 echarts1.简介:2.使用:1.代码:2.效果:3.代码2:4.效果2(鼠标移动有定位效果): 二 Emprise JavaScript Charts(英文版不好阅读,访问慢&#xff0…

主流前端框架下ArcGIS API for JavaScript的开发

在工作之余利用周末的时间录制了一门ArcGIS API for JavaScript的零基础开发课程,相关信息如下。 课程介绍 课程详细介绍请看如下地址中的视频介绍。 课程特点 课程所用API为目前最新版ArcGIS API for JavaScript 4.14课程所用的主流前端框架为Vue和React 课程…

angular-6大主流前端框架(一)

小编我最近做的项目中前端用到了angular,全因心中无货,特来补货。我们先对比一下前端框架。 【我是否需要使用框架?】 如果不尝试回答这个问题就是我们的失职,这越来越成为社会上某些人的口头禅,在网络平台上的争论也…

3大主流前端框架对比

2019独角兽企业重金招聘Python工程师标准>>> 框架对比 AngularReactVue.js组织方式MVC模块化模块化数据绑定双向单向双向模板能力强大自由简介自由度较小大较大路由静态路由动态路由动态路由 适用场景 Angular:后端开发人员构建CURD类型应用 React&#…

主流前端框架实现原理

主流前端框架都遵循组件化开发模式,根据更新粒度可以分为应用级、组件级和节点级。他们的实现原理均为UIf(state) 即框架内部的运行机制根据状态渲染视图 应用级代表:React 组件级代表:Vue 节点级代表:Svelte、SOLID 一、 节点级更新框架…

三大主流前端框架介绍VUE 、React、Angular

当前,三大主流前端框架分别是Vue、React、Angular这三个框架。 Vue 是一个构建数据驱动的Web界面的库,准确来说不是一个框架,用于构建直观,快速和组件化交互式界面的 MVVM 框架。 它有以下的特性:1.轻量级的框架、2…

web前端三大主流框架浅述

web前端三大主流框架是什么?前端开发师的岗位职责有哪些?微点阅读小编整理了相关内容供大家参考了解,请各位小伙伴随小编一起查阅下面的内容。 web前端三大主流框架 web前端三大主流框架是Angular、React、Vue。 1、Angular Angular原名angul…

几个精致的web UI框架

2019独角兽企业重金招聘Python工程师标准>>> 1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范,是写 CSS 的更好方式。 gitH…

自动化测试的基本流程

测试如果按照是否手工划分可以分为手工测试和自动化测试。手工测试执行效率慢,容易出错。但是可以进行探索性测试和发散性测试。自动化测试则是和手工测试对立互补。 实施自动化测试的基本步骤 首先,需要已经完成了功能测试,此时测试版本稳…

自动化测试的流程有哪些?没有比这个更详细的了

目录 前言 自动化测试流程 总结 重点:配套学习资料和视频教学 前言 年初的时候自动化测试脚本也接触了一段时间,当时一上来就根据同事的写好的模板,写了几个简单功能模块的脚本,对整个脚本的编写流程有了些了解。 最近又开始做…

自动化测试的流程

下图是自动化测试的基本流程图,以及每个阶段的任务负责人,输出等。 1、制定测试计划 在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的…

原来!自动化测试项目--的完整测试流程是这样的……

目录 需求分析: 整体流程图: 分析流程: 测试设计: 测试分析: 测试设计: 用例设计: 用例执行和回归 用例执行标准 bug回归标准 补充用例 质量分析 bug定位 前端定位: …

MySQL自动化运维工具

数据字典DDM:查看DB表结构和字段的,应用开发人员使用的,参考设计时 数据执行:写SQL语句的dml ,数据库人员给开发人员使用,执行语句、线上调试,发现数据问题,技术支持, 数…

如何做自动化测试

这个话题比较大,相信大家也都有自己的想法,我在这里写一些我自己的看法,请大家指教。 什么叫做自动化测试工程师 首先,会使用自动化测试工具的测试人员不能够称之为完全的自动化测试人员,这类测试人员被称为『工具小…