1. 为什么一份好资料能顶一节硬件课
硬件这行有个挺反直觉的现象:真正把人拉开差距的,往往不是会不会用示波器,也不是手里过了多少块板子,而是有没有老老实实把几份好资料读完、读透。我带过几个新人,有人三个月就能独立改一版小板子,有人干了一年还在问"这个电容为什么放这儿"。差别不在聪明程度,在于前者把一份规格书当课本来上,后者把规格书当字典来查——只在出问题的时候翻两页。硬件工程师成长之路说穿了就是这么回事:资料读得越细,踩的坑越少,而踩坑这件事在硬件上是真的要花钱的,一次打样几百到几千,一次批量事故可能是六位数。
这篇东西我想聊的就是这个:怎么把一份资料读成一节硬件课。它适合刚入行的硬件调试新人,也适合做了几年但一直靠"抄参考设计"混日子的朋友。基础知识点之所以叫基础,是因为它们出现的频率太高了,高到你几乎在每一块板子上都会撞见——电源树、复位、时钟、片选、上拉、去耦。这些名词你在面试题里见过,在硬件八股文里背过,但真正理解了它们在电路里怎么起作用,你才算跨过那道坎。我下面会结合自己调试过程中的实际记录,把资料里那些"看着眼熟但说不清"的知识点一个个拆开讲。
1.1 硬件知识的"密度差"到底差在哪
同样叫"学硬件",有人学的是结论,有人学的是推导过程。比如"上拉电阻一般取10k"这句话,前者记住了,后者会去问:为什么是10k而不是1k?这个问题的答案藏在两个公式里。上拉拉得太小,I2C从机拉低时灌电流会超标,超过器件规定的Vol@Iol;拉得太大,总线电容充放电时间常数变大,上升沿变缓,在400kHz甚至1MHz的速率下波形直接变成"圆角梯形",采样点还没到高电平阈值就被判成低电平,通信随机出错。一个10k背后其实站着总线电容、上升时间、灌电流能力三个约束条件。
这就是密度差。一份好的资料——我指的不是那种"三步搞定XX"的营销文,而是原厂的datasheet、应用笔记(Application Note)、参考设计手册、评估板原理图——它的信息密度是极高的,每一句话背后都可能对应一个设计约束。你读十篇二手解读,不如把一份原厂AN啃一遍。硬件电路设计这件事,二手信息最大的问题是丢掉了"上下文",而上下文恰恰是判断能不能照抄的关键。参考设计里用10k,可能是因为那颗芯片的总线电容只有50pF;你换了个走线更长的板子,电容变成150pF,还是10k就可能出问题。
1.2 判断一份资料值不值得精读的四个硬指标
不是所有资料都值得你花一个周末去啃。我挑资料有个自己的土办法,看四条:
| 判断维度 | 值得精读的表现 | 直接放弃的表现 |
|---|---|---|
| 出处 | 芯片原厂、头部模组厂、器件厂商官方 | 无署名搬运、只贴图不讲条件 |
| 参数条件 | 每个电气参数都标注测试条件 | 只给典型值,不给最小最大值 |
| 时序 | 有完整时序图并标注tSU/tH/tPD | 只写"注意时序"四个字 |
| 版本与勘误 | 有Revision History和Errata | 从不更新,也没有错误说明 |
第三条尤其关键。硬件调试的时候,时序参数是你唯一能拿去和示波器波形对账的东西。资料里写了CS建立时间最少要5ns,你测出来只有2ns,那问题就锁定了,不用在那儿猜是不是芯片坏了。反过来,如果资料里根本没有这个数字,你就只能靠试,试的成本就是时间和板子。所以我看一份资料第一件事是翻它的时序章节和电气特性表,这两块如果写得含糊,后面基本不用看了。
提示:原厂Errata(勘误表)是最容易被跳过、又最值钱的部分。它列的是"这颗芯片已知会出问题的地方以及规避方法",等于别人替你把坑标了一遍。
1.3 我踩过的三类"看起来很好"的资料坑
第一类是"抄来抄去的电路图"。网上流传的一张某电源芯片的应用图,被转了几十次,画得挺漂亮,但输入电容被从22uF改成了10uF,输出电感也从4.7uH换成了10uH,没人标注改动原因。我照着做过一版,空载正常,一加负载纹波就起飞。后来翻原厂手册才发现,那颗芯片在轻载时会进入跳周期模式,电感量选大了环路响应变慢,输出直接振荡。图能抄,参数不能抄,这是硬件这行的铁律。
第二类是"只给结果不给条件"的选型推荐。比如有人告诉你某颗LDO噪声低,适合给ADC供电,但没有告诉你它的PSRR是在1kHz下测的,而你的开关电源噪声尖峰在500kHz。结论没错,前提错了,用上去照样进ADC。第三类最坑,是版本过期的资料。器件迭代很快,同一型号不同批次甚至不同封装,那个"绝对最大额定值"都可能变。我现在养成一个习惯,动手前一定去官网拉最新版,看到Revision字母不是最后一版就重新下载。这三类坑加起来,让我损失过两轮打样和差不多三周时间,从那以后我对资料的信任是分级的:原厂最新版>模组厂手册>参考设计>任何二手内容。
2. 把资料读成课:规格书里的基础知识点拆解
资料到手了,接下来是读法。很多人读datasheet是从第一页的"Features"开始逐行往下看的,读了两小时还在功能描述,到电气特性表已经困了。我的顺序是反的:先看绝对最大额定值和工作条件,再看时序,再看引脚定义,最后才回头看功能描述。理由很简单,前三个决定了你的板子能不能活,最后一个只决定它能不能干活。顺序反了,你会花大量时间在"这芯片支持什么协议"上,却漏掉了"这颗芯片的IO耐压只有3.6V"这种致命信息,然后一上电就把它烧了。
2.1 绝对最大额定值不是设计目标,是死亡线
新手最容易犯的错,是拿Absolute Maximum Ratings当设计依据。看到"VIN最大6V"就把输入设成5.9V,觉得还有余量,结果批量时电源纹波一叠加,或者热插拔瞬间的尖峰一冲,芯片直接报废。正确做法是以Recommended Operating Conditions为准,然后留出余量。我的习惯是电源类参数留20%以上,IO电压留10%以上,温度留至少15℃。这不是保守,是因为规格书上的最大额定值通常是"瞬时、不重复、单点"条件下的极限,不是让你长期贴着跑的。
再往下还有一个更隐蔽的点:电气特性表里的每个参数都带着条件。比如某颗电平转换芯片写着"输出高电平VOH≥2.4V@IOH=4mA,VCC=3.0V,温度25℃",你不能拿这个数字去推85℃、VCC=2.7V的场合。参数表和测试条件是一体的,拆开看就是耍流氓。我审别人的原理图时,第一眼看的就是关键器件的电压和电流有没有超工作范围,第二眼才看拓扑对不对。
2.2 电源树、上电时序与复位,三个最容易被忽略的根基
一块板子上所有的信号问题,最后有相当一部分能追溯到电源。电源树的设计逻辑是:先明确每一路需要多少电压、多大电流、噪声能容忍到什么程度,再决定用DCDC还是LDO,最后才是选型号。逻辑顺序搞反了,很容易出现"先选了个便宜的DCDC,结果噪声太大带不动ADC,只能再加一级LDO"这种返工。
上电时序这件事,在单电源系统里你可能一辈子碰不到,一旦碰到多电源的FPGA、SoC、多轨供电系统,它就是头号杀手。很多器件要求核心电压先上、IO后上,或者反过来,次序错了会有内部寄生二极管导通、闩锁、甚至长期可靠性下降的问题。资料里一般会给出Power-Up Sequence的要求和最小间隔时间,你要做的是把这条要求翻译成实际电路:用PG(Power Good)信号串联、用使能脚级联、或者用专门的时序控制器。
复位这块,基础但极其重要。复位芯片、RC复位电路、看门狗,这三样东西的区别要分清楚。RC复位便宜,但复位脉宽受温度和电源斜率影响大,适合对可靠性要求不高的场合;专用复位芯片能保证在电源低至1V左右仍能维持有效复位,适合严肃产品。我见过一个项目为了省两毛钱用RC复位,低温下复位脉宽缩短,MCU偶尔起不来,查了两周才定位。
2.3 拿笔算一遍:几个必须会的经典计算
资料里给的是公式,落到板子上要变成具体阻容值。我挑几个出场率最高的算一遍,这些都是我实际用过的值。
LED限流电阻。假设3.3V供电,LED正向压降Vf取2.0V,想要5mA。R=(3.3-2.0)/0.005=260Ω,标准值取330Ω,实际电流约3.9mA,亮度够用。这里要注意Vf随电流和温度变化,用的时候按最坏情况(Vf最小)算最大电流,别让LED超额定。
I2C上拉电阻。这个计算最能体现"基础不基础"。下界由灌电流决定,Rmin=(Vdd-Vol)/Iol。取Vdd=3.3V,Vol=0.4V,Iol=3mA,得Rmin≈967Ω。上界由上升时间决定,Rmax=tr/(0.8473×Cb)。取总线电容Cb=100pF,标准模式tr=1000ns,得Rmax≈11.8kΩ;快速模式tr=300ns,得Rmax≈3.5kΩ。所以快速模式下选2.2k或1.5k比较稳妥,选10k就是给自己埋雷。这条公式我贴在工位上贴了三年。
RC复位脉宽。电容通过电阻充电,电压V(t)=Vcc×(1-e^(-t/RC))。若复位阈值是0.7×Vcc,解出t=1.204RC。取R=10kΩ、C=100nF,t≈1.2ms,满足绝大多数MCU的复位要求。要让脉宽翻倍就把C换成220nF,别去动R,因为R太大抗干扰能力下降。
三极管基极电阻。驱动继电器,Ic=50mA,β取100,饱和设计要按β的1/3~1/5给基极电流,即Ib≥1.5mA。基极驱动电压3.3V,Vbe取0.7V,Rb≤(3.3-0.7)/1.5mA≈1.7kΩ,取1kΩ保险。这里的关键认知是:三极管做开关用的时候不能按线性放大区的β算,必须过驱动才能保证深度饱和、压降小。
ADC输入抗混叠RC。假设采样电容Cs=4pF,采样开关电阻Ron=1kΩ,要求充电误差小于0.5LSB(12位即1/4096,约0.024%),需要约8.3个时间常数。τ=(Ron+Rsrc)×Cs,如果源阻抗1kΩ,τ=8ns,需要约67ns的采样时间。你对着资料里的采样时间寄存器一算,就知道源阻抗能不能再加串阻,或者必须加运放缓冲。这类计算在GD32H7、STM32这类MCU的ADC硬件滤波设计里天天用得上。
2.4 那些被当成"八股文"的细节,全是实战经验
去面试的时候,硬件工程师面试题里常问:去耦电容为什么用0.1uF和10uF并联?很多人答"滤高频和低频"。这个答案不算错,但太粗。更准确的说法是:大电容的等效串联电感(ESL)和等效串联电阻(ESR)在MHz以上让它失去作用,小电容负责高频段,大电容负责中低频段,两者并联还会在某个频点形成反谐振峰,所以真正讲究的做法是按频段铺一排容值差10倍的电容,而不是只放两颗。
去耦电容的摆放也是基础中的基础。电流回路面积越小,辐射和抗扰越好,所以电容要贴着芯片电源脚放,过孔要短、要多,电源脚先过电容再过孔,别反过来。这个细节在原厂布局指南里一般都有图,是那种"看一眼省一个月"的内容。
还有一类常被忽略的:片选、使能、上拉/下拉、strap引脚。这些引脚在原理图上不起眼,但配置错了整颗芯片的行为都不对。以太网PHY的strap电阻就是典型,一个电阻决定PHY地址、决定接口模式、决定时钟方向,配置错了现象是"链路能起来但丢包"。这类信息只在datasheet的寄存器描述和硬件设计指南里,二手的原理图里往往被简化成一根线,你抄过来根本不知道那个电阻是干嘛的。
3. 从资料到板子:硬件调试的完整流程
资料读完了,板子拿回来了,接下来才是真正的考试。我一直认为硬件调试的核心不是"发现问题",而是"把问题范围缩小"。新手常见做法是全板乱测,示波器探头到处怼,测得越多越乱。老手的做法是分层:电源层→时钟层→复位层→通信层,一层确认没问题再进下一层。这个顺序不是随便定的,因为后面的层依赖前面的层,电源不对,你测什么信号都是错的。
3.1 上电之前:静态检查清单与万用表打法
我给自己定了个死规矩:任何新板第一次上电前,必须做完静态检查,一步都不能跳。这套流程救过我不下五次。
- 目视检查:器件方向、极性电容、连接器、焊接虚焊、锡渣短路,尤其是QFN和BGA底部。
- 万用表二极管档测各路电源对地阻抗,正常应该是几百欧到几十千欧,如果读数是0.几欧,说明有短路,先别上电。
- 测关键信号对地阻抗,判断有没有焊接桥连。
- 检查电源输入极性,确认稳压器使能脚的分压电阻装对了。
- 确认跳线、strap电阻、配置电阻和你的设计意图一致。
- 检查测试点是否全部引出,别等调试时才发现最关键的信号没有测试点。
这份清单花不了十五分钟,但能挡住绝大多数"一上电就冒烟"的悲剧。我就吃过一次亏,偷懒没测阻抗直接上电,一颗钽电容方向焊反,上电三秒就开始发烫冒烟,连带把旁边的DC-DC也带走了。
3.2 上电之后:按电源、时钟、复位、通信四步走
上电第一步不是看能不能跑起来,是测电源。用示波器看每一路的直流电平、纹波峰峰值、上电斜率。纹波差一点没关系,但不能有周期性的大振荡。测的时候记得把探头地线用弹簧针而不是长鳄鱼夹,长地线会把开关噪声引进来,让你误判。我自己定了个经验阈值:LDO输出纹波控制在输出电压的1%以内,DCDC控制在2%以内,超了就回头查布局和电感选型。
第二步测时钟。晶振起振是很多板子的第一道关。测法有两种:无源晶振用示波器探头测一端会引入电容导致频偏,最好的办法是测芯片的时钟输出脚(MCO),或者用频谱仪近距离感应。有源晶振直接测输出脚。要确认的不是"有没有波形",而是频率对不对、幅度够不够、上升时间是否满足芯片要求、有没有间歇性停振。
第三步测复位。复位信号上电后是否维持了足够时间,释放时是否有毛刺,释放点是否晚于电源稳定点。我看过太多"MCU偶尔不启动"的案例,最后都是复位释放得太早。第四步才是通信,这里要拿时序图对波形,前面说的那些tSU/tH参数就是这时候用的。
3.3 示波器上看到什么才算"对"
这个问题其实挺关键。判断波形"对不对",靠的不是感觉,是三个东西:幅度、时序、单调性。幅度看的是有没有过冲、欠冲、低电平是否足够接近0、高电平是否够高;时序看的是建立保持时间、脉宽、周期、相位关系;单调性看的是边沿有没有回勾,回勾意味着阻抗不连续,常见于走线太长或者过孔太多。
还有一个很多人不注意的:测量点到芯片引脚的距离。探头地弹簧要就近接地,测量点要在芯片引脚处而不是走线中间,否则你测到的是"走线上的波形",不是芯片看到的波形。高速信号上这两个位置能差出一大截。
3.4 实录一:SPI硬件片选与软件片选,时序图不会骗人
有一次做一个SPI Flash加传感器的板子,两条SPI挂在同一个控制器上。为了省引脚,软件同事把其中一路的CS用GPIO手动控制,另一路用硬件CS。结果现象很怪:单独访问任何一个从机都正常,交替访问就开始偶发读错数据。
我先测硬件CS那一路,波形很干净,CS在时钟之前建立、之后保持,符合手册要求。再测GPIO那一路,问题就出来了:在DMA传输模式下,GPIO拉高的时机依赖中断响应,中断被更高优先级任务延迟了几微秒,导致CS在最后一个时钟沿之后过早拉高,从机还没把数据推完就被取消了。手册里明明写着CS要在最后一个时钟沿后保持至少tHDCS=10ns,我们实际只有几ns,偶尔负值。
后来改成用控制器的硬件CS,或者把GPIO的拉高操作放到DMA传输完成中断里并且提高优先级,问题消失。这件事让我记住了一条:硬件片选不是"高级",软件片选不是"灵活",选哪个取决于你的实时性余量。SPI硬件片选与软件片选的区别,本质是"由硬件时序保证"还是"由软件调度保证",后者在中断密集的系统里是不可靠的。这条认知后来写进了我们团队的检查项。
3.5 实录二:千兆口CRC错误与ADC硬件滤波
另一个印象深刻的案例是千兆以太网。板子百兆跑得好好的,一切到千兆就大量接收CRC错误。手册翻了三遍,硬件设计指南也读了,最后定位到两个点。第一是RGMII接口的延时模式。MAC侧和PHY侧都开了内部延时,或者都没开,都会导致采样点偏移。这颗PHY支持通过strap电阻和寄存器两种方式配置delay,我们的strap电阻装错了一个,导致PHY默认开了Rx delay而MAC也开了,叠加之后时序偏了将近2ns,千兆下就出错、百兆下容限大所以正常。第二是25MHz参考时钟,我们用了普通的无源晶振,频偏和抖动指标不够,换成了满足±50ppm、低抖动的有源晶振之后,CRC错误彻底消失。
ADC那边则是个"资料里写了但没当回事"的例子。芯片手册明确写了源阻抗不能超过某个值,采样时间要和源阻抗匹配,我们为了省一颗运放,直接用一个比较大的分压电阻接ADC输入,结果采样值跳得厉害。加了一级RC硬件滤波和运放缓冲之后稳定了。RC的值是按前面2.3节的充电时间算出来的,不是拍脑袋。这两件事的共同点是:问题全写在资料里,只是我们读的时候跳过了。这就是为什么我说读一份好资料等于上一节课——它真的把答案给你了,只是你要读懂。
4. 常见问题与排查技巧实录
调试这件事,经验的价值在于你知道"哪儿最可能出问题"。我把这些年反复出现的问题整理成一张速查表,配合排查思路一起用,能省下大量瞎试的时间。表里的每一条背后都至少对应一次真实的翻车,不是从教科书上抄的。
4.1 硬件调试高频问题速查表
| 现象 | 高概率原因 | 优先排查动作 |
|---|---|---|
| 上电无反应,电流很小 | 电源未使能、使能脚分压错误、保险丝断 | 测各路电压,查使能脚电平 |
| 上电即大电流、器件发烫 | 电源短路、电容极性反、闩锁 | 断电测阻抗,分段上电 |
| 通信偶发出错 | 上拉电阻不当、地弹、时序临界 | 测上升沿、测地平面压差 |
| 常温正常低温不启动 | RC复位、晶振起振余量不足 | 换复位芯片、测起振裕量 |
| 千兆口CRC错误 | 参考时钟抖动、RGMII延时、阻抗不连续 | 测眼图、核对PHY strap配置 |
| ADC采样跳动 | 源阻抗过高、缺少滤波、地噪声耦合 | 加缓冲与RC、检查回流路径 |
| 设备枚举失败 | 供电不足、枚举时序、驱动签名 | 测电流、看系统日志 |
| 板子偶发重启 | 电源跌落、看门狗误触发、复位干扰 | 测电源瞬态、查复位线耦合 |
表只是起点,真正的排查是把它当假设清单用。我一般会先按"能一次排除掉最多可能"的动作做。比如上电就大电流,先断电测阻抗,一条命令就能把"短路"这个大类排掉;如果阻抗正常,再怀疑器件和配置。按排除效率排序,而不是按直觉排序,这是老手和新手最实际的差别。
4.2 几类反复出现的"玄学"问题与破法
第一种玄学叫"重新上电就好"。现象是设备偶尔不启动,断电重启就正常。这类问题九个里面有八个指向复位或电源上升斜率,尤其是慢上升的电源配合RC复位。破法是:把电源上升时间拉长到最坏情况再测一遍,或者直接换成带VDD监控的复位芯片。
第二种叫"手一碰就好,手一松就坏"。典型的接地或屏蔽问题,人体的寄生电容改变了高频回路。破法是把探头换成差分探头,或者用近场探头找辐射点,别用手去当电容。
第三种叫"换了台电脑就好了"。这类问题多半出在供电或者USB线材质量上,跟你的板子没关系,但也可能是你的板子对电源纹波太敏感。破法是换一个已知干净的电源做对比测试,先分清是环境问题还是设计问题。我遇到过一次USB枚举失败,查了半天最后是线材内阻太大,压降导致设备端供电不足。
第四种叫"温度一高就死机"。在小体积设备上极其常见,根源是某个器件的降额不够,或者布局把发热器件堆在一起了。破法是先用热成像或者点测温把发热点找出来,再对照规格书看结温余量。这里有个容易被忽略的点:规格书的θJA是特定测试板条件下测的,实际板子的铜箔面积、层数、周围器件都影响散热,实测往往比手册差。
4.3 资料笔记怎么做才不会白读
读资料不记笔记,等于没读。我的笔记分三层。第一层是"约束",把电气限值、时序参数、温度范围抄下来,做成一张表,对应到具体项目和器件。第二层是"因果",记下"为什么这么设计",比如某个电阻是为了限制涌入电流,某个电容是为了给内部LDO做补偿。第三层是"现象到原因"的映射,把调试中遇到的现象和它对应的根因记在一起,这才是最值钱的部分,因为它直接决定你下次遇到同样现象时的第一反应。
我还有个习惯,每做完一个项目就把原理图按功能块重画一遍简化版,只留关键器件和参数,然后在旁边标注这次踩的坑。一年下来这些简图就是自己的"私房资料",比任何网上的教程都贴合自己。硬件工程师成长之路上最缺的其实不是知识,是这种把外部资料内化成自己判断力的过程。
5. 硬件工程师成长之路:资料清单与阶段目标
说了这么多方法,最后落到"读什么"上。硬件这个领域太宽,从51单片机到端侧AI硬件部署,跨度极大,不可能每一样都精通。我的建议是按阶段选资料,每个阶段抓住一个主线,别贪多。贪多的结果是每样都看过,每样都不深,面试时一问细节就露馅。
5.1 按阶段选资料:从点灯到端侧AI
入门阶段,主线是"一颗MCU把最小系统做扎实"。资料清单是:MCU数据手册、最小系统参考设计、复位和时钟的应用笔记、GPIO和电源的布局指南。目标不是点亮LED,而是能解释清楚每一颗阻容为什么在那里、为什么是这个值。51单片机硬件设计作为练习很好,电路简单,适合把上电复位、晶振、去耦这些基础走一遍。
进阶阶段,主线是"接口与时序"。这时候要啃的是SPI、I2C、UART、CAN、以太网的接口规范,重点看时序章节和物理层要求。CAN硬件白盒测试规范值得读,它教你如何从物理层验证总线:终端电阻、共模电感、位时序、眼图、总线负载率。这一阶段还应该读一份以太网PHY的硬件设计指南,比如常见的国产千兆PHY手册,里面关于参考时钟、RGMII延时、变压器、差分阻抗的内容,是所有高速接口设计共通的基础。
高阶阶段,主线是"系统级与可靠性"。要读的内容包括电源完整性、信号完整性入门、EMC整改案例、器件降额规范、热设计。这时候你会发现,很多问题的答案不在单颗芯片手册里,而在系统层面。三电平逆变器和两电平逆变器的硬件差异就是个典型系统级问题:三电平拓扑每相桥臂的开关器件和钳位二极管数量翻倍,驱动路数更多,但每个器件承受的电压应力只有一半,输出电平台阶更多,dv/dt和总谐波失真更低,滤波器体积可以做小。代价是控制复杂度上升,中点电位需要额外平衡策略,布局布线更难,成本更高。这种"用器件换性能"的取舍逻辑,只有在系统层面才能看清。
5.2 软硬边界:从openbmc硬件移植看硬件工程师该懂多少软件
现在纯硬件的岗位越来越少,硬件和固件的边界越来越模糊。openbmc硬件移植就是个好例子:它要求你把板子上的传感器、风扇、电源、I2C拓扑、SPI挂载全部描述清楚,写成设备树和配置,让BMC固件能识别。这活儿表面上是软件,实际上要求你对硬件拓扑理解得比软件同事更深。不懂硬件的人做移植,会出现传感器地址配错、总线挂载失败、风扇转速读不出来这类问题,最后还得硬件来查。
类似的还有硬件信任根和安全启动,它要求从不可变的启动ROM开始,逐级校验固件的签名,形成一条信任链。做这件事你要同时理解硬件上的启动引脚配置、OTP区域、密钥存储方式,以及固件里的校验流程。还有硬件同步,像Fast-LIVO这类多传感器融合系统,相机、IMU、激光雷达之间必须共享时基,靠的是硬件触发信号和同步脉冲,时间戳对不齐,融合算法直接崩。这些都在告诉你:现代硬件工程师必须能读懂软件侧的接口,才能把硬件做对。
至于"VB6.0能不能写嵌入式硬件"这类问题,我的看法很直接:编程语言只是工具,能不能做嵌入式取决于你对寄存器、时序、内存映射的理解,但拿一门过时的语言去开发新硬件显然不合适。与其纠结语言,不如把C和基本的Verilog搞清楚。Verilog里的wire和assign,本质是描述硬件连线,理解了组合逻辑和时序逻辑的差别,你才知道为什么有些信号必须打拍、为什么竞争冒险会存在——这也是硬件基础的一部分。
5.3 端侧AI和算力话题,硬件工程师该关注什么
这两年端侧AI硬件部署被问得很多,比如部署一个27B级别的模型需要什么硬件。硬件工程师在这类话题里的价值不是算TOPS,而是搞清楚几件事:内存带宽是不是瓶颈、功耗和散热能不能扛住、接口带宽够不够、供电能不能提供瞬态大电流。模型推理的瓶颈往往不在算力峰值,而在内存带宽,这一点和传统硬件设计里的"带宽决定性能"是一脉相承的。大量算子并行对硬件的挑战,最后都落在供电瞬态响应、散热和内存带宽上。
我在实际项目里的体会是:越新的技术方向,越依赖基础功底。电压降额、电源完整性、热设计、时序约束,这些东西二十年前是什么样,现在还是什么样,只是工作频率变高了、电流变大了、裕量变小了。所以回到最开始那句话:把一份好资料读透,把基础知识点理解到能推导、能计算、能对着示波器验证的程度,剩下的都是这些基础的组合。资料会过时,基础不会。
最后分享一个我自己的小习惯:每次调试解决一个难题,别急着收工,花二十分钟把"现象、假设、验证、结论"四句话写下来存进自己的笔记库。三年下来我攒了三百多条,很多条后来在完全不同的项目里救过我。资料是别人写的,这些记录才是自己的。