「K4NZ-NOTE」- 兴趣职业调研

  CREATED BY JENKINSBOT

片上系统(System on Chip)

soc(系统级芯片)_百度百科
soc 设计和数字 ic 设计有什么区别? – 知乎

SoC 的定义多种多样,由于其内涵丰富、应用范围广,很难给出准确定义。一般说来, SoC 称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软 / 硬件划分,并完成设计的整个过程;

从电子系统的结构上看,SoC 就是把系统所需要的全部功能电路,设计并制造在一个集成电路芯片中,从而实现了系统级的高度集成。正是由于这种高度集成,使得 SoC 技术与传统集成电路设计、分析和制造理论与技术之间存在着巨大的差别。同时,也使应用电子技术的理论与设计实现技术发生了重大变化;

我们理解为具有具体产品功能的芯片;

SoC vs. Sigital IC Design

逻辑设计的层次很大不同。以华为为例,得到 ARM 和高通的授权的逻辑设计,里面的逻辑不能更改,只能在各种功能连接和外部连接上下功夫,这是一种典型的 SOC 逻辑设计。而数字 IC 设计,以 Intel 为例,是从功能部件的逻辑设计开始,再把功能部件连接在一起和进行外部连接进行全逻辑设计。这是最大的设计的不同;

数字 IC 设计(Digital IC Design)

当你的朋友问什么是数字 IC 时… – 知乎

数字 IC 就是用来传递、加工、处理数字信号的;

模拟 IC 就是用来处理自然模拟信号的,要更难一些、门槛也更高;

设计阶段的岗位就是全员不下产线的;

你问我什么算设计阶段?

芯片在晶圆厂(台积电、中芯国际)生产之前的,都算设计环节;

你问我光刻机算哪个阶段?

光刻机属于设备,算制造阶段的上游,与 IC 设计无关;

敲不敲代码?

有的岗位要敲的,比如前端设计和功能验证,但是不是天天硬刚代码;

主要的工作重点在于芯片功能的设计和验证,其次才是代码实现;

至于大家常用的 Verilog,那是硬件描述语言,写出的 RTL 代码不叫编程,叫描述电路。换句话说,RTL 代码不是在“写代码”,而是在画电路结构;

岗位分类

架构师:统筹兼顾。站在最高处,负责整个芯片方案的制定;

前端设计:开始具体的设计部分,完成芯片功能的实现。就像建筑设计师要设计一栋大厦一样;

功能验证:给前端设计“找茬”,一个模块一个模块去验证,看设计是不是符合了功能要求;

后端设计:是最接近制造端的岗位。前面环节给出的都是代码,后端设计就要更加考虑物理实现了,比如电路的布局布线;

DFT 设计:主要是方便芯片“封测阶段”的测试,为了在芯片流片之后能够大规模测试芯片;

嵌入式系统(Embeded System)

简单理解:我们平时使用较多的为 x86 平台,比如笔记本、台式机。而嵌入式,则为其他硬件平台,与 x86 类似,也需要在其上运行操作系统、驱动程序、软件服务来使用该硬件;

嵌入式系统由硬件和软件组成,是能够独立进行运作的器件:
1)硬件:包括信号处理器、存储器、通信模块等在内的多方面的内容;
2)软件:只包括驱动、操作系统、软件运行环境;

演进方向

简述嵌入式软件开发到底是做些什么的 – 知乎

1)以单片机为核心、可编程控制器存在形式 —— 针对硬件,直接开发运行在其上的应用程序;
2)以嵌入式 CPU 为基础、简单操作系统为核心;
3)以嵌入式操作系统为标志,兼容性好,适用于不同平台,系统开销小,效率高,具有高度模块化及拓展性;
4)以物联网为标志,将传感器技术、互联网技术及传统嵌入式技术综合联系

岗位分类

终于搞清楚嵌入式开发工程师是干什么的了? – 知乎
嵌入式工程师在企业工作的真实内容 – 知乎
有工作后的大佬来指导一下嘛,嵌入式工作是什么样的,要学什么? – 知乎
请问各位硬件工程师们如何储备自己的硬件知识? – 知乎

嵌入式硬件开发

这是硬件工程师来做,一般出身为自动化,电子,通信等专业,他们要求熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力,熟悉硬件开发模式和设计模式,熟悉各种芯片及外围设备,熟悉 8 位 16 位 32 位处理器嵌入式硬件平台开发。有的要求有 FPGA 的开发经验,精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般要有 4~8 层高速 PCB 设计经验;

设计原理图(涉及模电,数电,高频),画 PCB 板等,他们只负责硬件,和软件有关的都由嵌入式软件工程师来负责,所以通常一个新产品研发,需硬件工程师和软件工程师密切的配合,才能出成果;

嵌入式驱动开发

编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得精通各种硬件接口协议(如 I2C 协议)、系统调度、信号量、锁机制等等,开发难度最大;

嵌入式驱动开发这个可以硬件工程师来做,也可以软件工程师来做,主要还是取决于设备。目前驱动开发,除非是简单的设备驱动,实际上很多时候都是移植,所以更多的是需要掌握目标平台的硬件和系统特性。所以至少得掌握一些操作系统、系统结构、计算机组成原理、数据结构相关知识。熟悉嵌入式 ARM/MIPS/PowerPC 架构。具有单片机、某种或多种 32 位嵌入式处理器的移植开发能力,熟悉 bootloader 过程,具有扎实的硬件知识,理解硬件原理图,能独立完成相关硬件驱动调试,能够根据芯片手册编写软件驱动程序。如果涉及到网络设备,或许还要掌握很多高层的网络协议的原理。个人感觉这一块虽然大部分不是很难,但却是极为重要的。当然如果要在这一层次提供对上层的多线程支持,某些驱动也是很难写的;

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

嵌入式系统开发

主要是编写固件,根据不同平台移植操作系统,根据应用场景来优化系统,需要熟悉整个操作系统组成与调度,对固件的稳定性高求很高,如果系统不稳定,驱动和应用也是白做的;

嵌入式系统开发这个没听说硬件工程师来做的。做这块,熟悉操作系统的原理是必不可少的,比如内存管理,比如线程调度,比如文件系统等等;还要精通处理器体系结构、指令集、寻址方式、调试、汇编和混合编程等方面的内容;熟悉操作系统启动流程。对于 linux,要熟悉 Linux 配置文件的修改,掌握内核裁减、内核移植、交叉编译、内核调试、启动程序 Bootloader 编写、根文件系统制作和集成部署 Linux 系统等整个流程。这一块要是真写起来,困难程度那是相当恐怖的,好在大多都是移植,很少听说有公司要去开发个操作系统的,没 Google 的实力啊;

嵌入式软件开发

编写业务逻辑程序,调用驱动工程师提供的接口控制设备,软件开发过程所涉内容范围非常广,主要使用 C 语言开发,但经常会涉及 C++、Java、python、JavaScript、PHP 等各类语言以及各种脚本语言、数据库、前端后台、各种通讯协议、甚至一些从来没听过的协议或概念;

嵌入式软件开发这个嘛,没有操作系统的话,程序一般不会特别复杂,如果有操作系统的支持,又和一般的软件开发很接近,所以尽可以看作是搞桌面开发。这个要求就是熟悉系统的 API,精通 C 语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识、数据结构的基础内容;掌握面向对象编程的基本思想,以及 C++语言的基础内容;精通嵌入式 Linux 下的程序设计,精通嵌入式 Linux 开发环境,包括系统编程、文件 I/O、多进程和多线程、网络编程、GUI 图形界面编程、数据库;熟悉常用的图形库的编程,如 QT、GTK、miniGUI、fltk、nano-x 等,掌握各种应用层的网络协议使用,以及各种音视频技术等;

硬件工程(Hardware Engineering)

What is Hardware Engineering? | HCLTech

Hardware Engineering is the process of designing, developing, testing and producing computer systems and various physical components related to computer systems.

硬件工程师

硬件工程师主要负责什么工作?发展前景如何? – 知乎
从事电脑主板、显卡研发是怎样的体验? – 知乎

1 根据客户需求评估,软硬件工程师配合一起分析需要实现什么功能;
2 根据要实现的功能选择合适的元器件;
3 根据选择的器件进行原理图的绘制;
4 根据原理图绘制 PCB layout;
5 根据 PCB layout 导出打样贴片文件给打样贴片厂,并跟打样贴片厂进行工艺确认;
6 软硬件工程师配合调试从贴片厂回来的 PCBA 并对硬件进行维护

# 我们现在的想法

我们已经工作了,如果有可能(综合各方来考虑),只是想选择个喜欢的行也(或当爱好,像钓鱼、摄影等)

# 02/07/2023 硬件工程师,是我们向从事的岗位,能够进行计算机硬件相关的内容。但是,我们可能并不喜欢具体的工作内容,或许只能当作爱好来培养;