【请教】提升电路知识和能力的路径

105 个回复
heyuanlie
heyuanlie 2020-11-29

我的看法是这样的,讲出来让板油们讨论一下:

类比一下,以装修房子为例,可以按别人图纸自己从木头(分立元件)开始diy桌子、椅子、柜子、床,也可以量好尺寸去家具城买现成(芯片)的回来一放就可以了,效果是一样的,但这两种都是别人提供的成熟解决方案。

要是想深入一步就得从另外两个角度去想,一个是以现有元器件和芯片为基础从系统角度去考虑解决一个没有现成电路硬件方案的问题,另一个是从元器件本身或电路整体设计角度去考虑某些性能指标的提升。

从系统角度去考虑往往是从实际需求出发,例如有个能在水平面x、y方向移动的机构下面用一根很长的钢索挂个重物,重物在空中容易受气流影响在x、y方向摆动,现在机械、电机都已经配置好了(或者说限制死了),要设计一个电路去控制机构运动使得重物在上升和下降过程中都保持x、y方向静止。类似这样的需求就得从运动学入手去分析整个运动过程并最终推导出运动(数学)模型以及控制(数学)模型, 最后只是用电路去表达这些数学模型而已。这个可以用模拟方式(由三极管可以构造出积分、微分电路,二极管可以构造出指数电路,电阻电容可以构造出比例电路、线性电路等,同样也有模拟集成能完成相同的功能)来表达,也可以通过数字方式(通过A/D把输入数字化,设计数字逻辑电路来算,或者更直接地用cpu通过软件来算)来表达。

从元器件本身考虑提升某项或者某些指标,这个就是要搞元器件本身了,也就是跟材料和基本物理原理相关了,例如现在很多搞微波的在搞腔体滤波器(通过特殊的几何构造实现性能指标提升)和薄膜滤波器(通过特殊材料实现性能指标提升)。

从电路整体设计角度考虑提升某项或某些指标,也是通过对输入信号和预期输出建模(数学模型),分析出限制指标提升的瓶颈(通常会归结为一个高维曲面的寻优/求极值问题),然后用反馈控制、自适应滤波、模糊控制、粒子滤波甚至机器学习人工智能等等手段去求解,最后实施时也是用电路去表达整个求解过程。现有的模拟ic和数字ic的内部和外围电路就是基于这样的方法设计出来的(当然还要加入很多材料、工程和工艺上的考虑),只是作为使用者只管用而不需要(也没办法)去了解其内部结构及原理而已。(其实这个也算是从系统角度考虑电路设计的问题了)

以上只是我个人看法,欢迎大家指正。

【 在 javaboy 的大作中提到: 】

: 是啊是啊。一方面是没有成就感,一方面是能做什么主要取决于厂家让做什么,感觉很弱势。分立元件其实我也会一点,比如面包板上搭搭ldo啊运放啊shifter啊counter啊,这些好像也都被人研究完了?

gledecn
glede 2020-11-29

感谢分享成长历程!

【 在 lvsoft 的大作中提到: 】

: 想了想还是写点东西回顾一下我的经历,给你做个参考吧,虽然我们彼此很熟悉,很多事情我之前也跟你讲过,但我还是站在陌生人视角阐述。

: 首先,在搞硬件之前我一直是资深搞软件的,从小学二年级开始就搞编程了。在软件领域虽然说样样精通不太可能,但也基本没啥东西是我没玩过不熟悉的了,所以到了大三有点无聊的感觉。然后一位同学(丫跟我也都进过冬令营,初中的时候我们就认识,老对手了)喜欢上了51,他当时要给他追的妹子做个电子钟,我就跟着他一起玩,所以我的第一块pcb是一块洞洞板,精确的1:1的复制了他的51洞洞板。然后搞了搞ISP(我现在还记得型号at89s51,当时已经算是先进的东西了,比起89c51得用烧写器好多了),亮亮灯,串口打印个hello world什么的就没了。

: 但这个时候我觉得打开了新世界的大门,开始满世界的找电子集散地,当时南京有个电子商场叫华龙,大概就是小号版的华强北吧,我天天去逛,早上开业进去晚上关门出来,连续逛了14天把每个摊位摆出来的每个东西都看了一遍,把能打听的东西也都打听了。当时的感觉就是电子器件的规格和种类跟天上的星星一样多,做一件事情完全不知道从哪里入手。

: ...................

happysoul
happysoul 2020-11-29

哥给你个roadmap,

1.找个强大的arm cpu做个电脑主机出来,类似于树莓派这种,

做电路设计,投板生产,移植系统,移植常用应用软件,调通,搞稳定,

可以用nxp的imx8mplus,这个资料开放,不费劲

2.基于你自己设计的CPU主板,

设计一款基于unix 的好用的os(可以起名叫jboy-os,哈哈,不喜欢可以换),比mac os更好用,

开发jboy-os上的基础开发环境,应用商店,基础应用软件,office,等必须的应用软件,

定期举办jboy-os世界开发者大会,

3.发布一款新的高级编程语言(可以起名叫jboy-lang,哈哈,不喜欢可以换),比swift更好用,

开发这个语言的开发环境,库,等等,引导开发者向jboy-lang过渡,

4.基于arm开发一系列强大的cpu(jboy-m?),集成多核,GPU,npu,等等,

比apple silicon m1...mN强大,然后基于jboy-m?的cpu开发电脑主机,

把你的jboy-os,jboy-lang等软件环境都迁移过来,引导用户向jboy-m?平台过渡,

5.踢开arm,开发一个新的CPU架构(risc-jboy?),吊打arm,基于risc-jboy?架构开发一系列更强大的cpu,并把jboy-os,jboy-lang等软件环境迁移过来,引导用户向risc-jboy?架构过渡,

并向世界各cpu厂商供应risc-jboy?核,让arm倒闭。

好了这些应该差不多了,

要是你还嫌不够,可以开发jboy-base基带射频,让高通吃土

【 在 javaboy 的大作中提到: 】

: 搞软件开发,如果只把别人的库拿过来,烧方便面似地接一下线,我觉得不能算是很高的境界吧。首先这对人的要求不太高,很容易被替代。其次库的发展很快,各种时髦的技术像潮水一样,只要停了一年半载,就都跟不上了。像现在android啊node之流,搞敏捷开发,一个好好的项目放几个月很可能连编译都过不了。我觉得这种工作很累,不是我追求的。

: 我学编程就是一个心得:死记硬背。花了十来年时间,把linux几十个常用syscall,posix一百来个api,bash(coreutils)几十个常用命令,x86汇编几十种助记符,c++十几个标准库,python二十几个常用模块,等等还有很多杂碎的知识都慢慢熟悉并且融会贯通了。任何跑在cpu上的东西,从python到c,到shell,到二进制exe,看着不爽的地方我都能hack成我喜欢的样子。所以我现在享受着一种很稀有的自由感,随便什么项目需求,都知道是否可行,难点在哪,工作量几何。就像一个rpg游戏玩到顶级一样,没有任何未知的不安感。

: 不过这种随心所欲的自由,在硬件设计上是不是做不到呢?我看你们stm32用得那么顺溜,忽然有一天货买不到了,然后在那费劲儿改gd32,总觉得有点被硬件厂商牵着鼻子走啊。。

: ...................

ECUCoder
Engineer 2020-11-29

好好打磨几样属于自己的作品啊,可以是开源软件,也可以是技术书籍,甚至可以是视频教程。

为什么非要跟自己的短板死磕呢?

【 在 javaboy 的大作中提到: 】

: 不要攻击我的技术路线啊。。你花了六七年搞机械,肯定是因为有意义才搞的。我研究编程语言,当然也不是随意的选择。2700万的kernel代码人不可能读完,linus torvalds本人也读不完那么多,总不能说世界上就没人懂kernel吧。

javaboy
喝了咖啡就话多-_-; 2020-11-29

哈哈,反语get。

现在主要是没市场这么搞吧,本身还是很可行的。

其实回顾一下android也是走了这么个流程的。apple也是。。

【 在 happysoul (happysoul) 的大作中提到: 】

: 哥给你个roadmap,

: 1.找个强大的arm cpu做个电脑主机出来,类似于树莓派这种,

: 做电路设计,投板生产,移植系统,移植常用应用软件,调通,搞稳定,

: ...................

zhaoyi821103
ShenzhenXiaoyi 2020-11-29

你之所以觉得硬件是堆模块,是因为你先入为主了软件的迭代方式,不行改改再编译一次,实在不行我查查开源的源代码,基本能找出“根”,硬件很多时候稳定性不是那种模块连接成功就好了,很多时候涉及到电磁场玄学还有经验玄学,材料特性黑盒子玄学,高端设备很多还要涉及到尖端模拟,给你个样品你抄都抄不出来,所以我前面说你能做这些国内做不出来就能上市,还有算法上面一些奇技淫巧人家不会给透露的,你觉得你软硬件算法都牛X,你可以试试做智能汽车,这里面可以说是技术大集合,算法上是AI,通信上面是5G,硬核是电机驱动和电池管理,还有机械设计,多少大佬都栽在汽车上面

【 在 javaboy 的大作中提到: 】

: 哈哈,反语get。

: 现在主要是没市场这么搞吧,本身还是很可行的。

: 其实回顾一下android也是走了这么个流程的。apple也是。。

: ...................

ericking0
白开心 2020-11-29

40nm这个节点其实比较好玩;

logic的密度已经不小了,可以玩出不少花来;

同时对模拟和射频又没有那么不友好,

成本也很合理,

我个人认为是最具有可玩性的工艺节点;

【 在 zhaoyi821103 (ShenzhenXiaoyi) 的大作中提到: 】

: 那不错啊,一些产品可以定制模拟数字混合IC,防止抄袭。。。。

happysoul
happysoul 2020-11-29

no,i'm serious,if u have enough time,money,interest and perseverance,

u will make it,

go dude

【 在 javaboy 的大作中提到: 】

: 哈哈,反语get。

: 现在主要是没市场这么搞吧,本身还是很可行的。

: 其实回顾一下android也是走了这么个流程的。apple也是。。

: ...................

tom6bj
tom 2020-11-29

最后一段, 你说的有道理, 我现在手里的大部分项目, 大部分业务代码都尽量按硬件无关的方式写了, 一旦需要换mcu的话只要改少量的底层部分即可.

【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】

: 搞软件开发,如果只把别人的库拿过来,烧方便面似地接一下线,我觉得不能算是很高的境界吧。首先这对人的要求不太高,很容易被替代。其次库的发展很快,各种时髦的技术像潮水一样,只要停了一年半载,就都跟不上了。像现在android啊node之流,搞敏捷开发,一个好好的项

ECUCoder
Engineer 2020-11-29

智能汽车是大坑,进去就出不来了。

我就是这个坑里的,这个坑里的大多数人都深感自己能力不足。

【 在 zhaoyi821103 的大作中提到: 】

:     你之所以觉得硬件是堆模块,是因为你先入为主了软件的迭代方式,不行改改再编译一次,实在不行我查查开源的源代码,基本能找出“根”,硬件很多时候稳定性不是那种模块连接成功就好了,很多时候涉及到电磁场玄学还有经验玄学,材料特性黑盒子玄学,高端设备很多还要涉及到尖端模拟,给你个样品你抄都抄不出来,所以我前面说你能做这些国内做不出来就能上市,还有算法上面一些奇技淫巧人家不会给透露的,你觉得你软硬件算法都牛X,你可以试试做智能汽车,这里面可以说是技术大集合,算法上是AI,通信上面是5G,硬核是电机驱动和电池管理,还有机械设计,多少大佬都栽在汽车上面

ECUCoder
Engineer 2020-11-29

我们的做法一般是在业务代码与底层代码之间加上一个中间件,更换硬件平台的话就调整这个中间件,业务代码基本不动。

【 在 tom6bj 的大作中提到: 】

: 最后一段, 你说的有道理, 我现在手里的大部分项目, 大部分业务代码都尽量按硬件无关的方式写了, 一旦需要换mcu的话只要改少量的底层部分即可.

lvsoft
Lv(The Last Guardian) 2020-11-29

我这几天反复在表达的意思一直没变。你拥有势能,但你始终没去尝试把它转变为动能。我理解你的意思是以你的能力,2700万行代码里面的任何一处的问题你都有信心搞定,能做到这点的人也许是top 0.1%,但top 0.1%还是有很多很多。torvalds本人能坐在主席台上决策谁的patch merge,谁的patch是full of bullshit,靠的是他是现存人类中对linux kernel最接近全知全能的人。所以他自称THE ONE,没人不服。

过程很重要,但我们最终都是要以结果论英雄的。你做的一切事情,都要围绕一个你自己想做的目标而定。你可以规划很长时间去积累,但积累的目的一定是为了这个目标的爆发。我跟你对话也有好几年了,我也觉得你跟我很多地方很像,但在我看来你这几年就是在原地踏步。所以我不想听你一而再再而三的说你这个很懂那个也会什么都准备的妥妥的,但你就是不动手。说的再难听一点,你这个也会那个也会本质上就等于什么都不会。你真的以为985的硕博团队取代不了你么?我同学白手起家创业,3年时间做到15亿刀估值,想拉我去带团队,我们2人聊了8小时,下午碰的头12点深夜才走,1分钟没停饭也没吃水也没喝厕所都没上,全程他challenge我defend myself的一场论战。他在美国和中国各有100个研发,我能力再强效率再高,干半年的事也不会超出他们一周的工作量。所以他最后对我的评价就如我今天对你的评价一样。知识停留在书本上没人去看就是废纸,你学了一身本事却不施展一直在陶醉辉煌的过去就是废人,何况这些所谓的这个会那个会的稀有能力也没你想象的那么值钱。

我今天话说的比较重,但到这个年龄,认识的有才华的人也很多了,也看过太多陨落的故事了,包括我自己也多次在这悬崖走钢丝。所以我虽然最后婉拒了我同学的邀请,但我很感谢那场论战,让我获益良多。有能力的人往往会自视过高,而这个世界最痛苦的事情就是盲目追求一个超出你能力的东西。你有能力,但你并不是我见识过的最有才华的人,而且不客气的说距离最有才华还有相当距离。但那样的人都陨落的很惨,有个人我想拉他一把给他介绍个好的position的时候,他给我的回答居然是“我现在什么都不想,只想活下去”。还有更惨的人已经年纪轻轻离开这个世界了。你又有什么资格自我满足呢?我现在的很多观点放几年前的我是完全想不到的,其中一条就是,你是一个人才,但我为什么要觉得失去你这个人才是件很可惜的事情?

【 在 javaboy 的大作中提到: 】

: 不要攻击我的技术路线啊。。你花了六七年搞机械,肯定是因为有意义才搞的。我研究编程语言,当然也不是随意的选择。2700万的kernel代码人不可能读完,linus torvalds本人也读不完那么多,总不能说世界上就没人懂kernel吧。

lvsoft
Lv(The Last Guardian) 2020-11-29

看你的id就知道了。我之前的老板去创业搞自动驾驶了。

几年之后还是去了阿里...

【 在 ECUCoder 的大作中提到: 】

: 智能汽车是大坑,进去就出不来了。

: 我就是这个坑里的,这个坑里的大多数人都深感自己能力不足。

lvsoft
Lv(The Last Guardian) 2020-11-29

但想最大程度的挖掘硬件性能,往往没办法用HAL。

而不巧嵌入式行业,很多时候就是得挖掘硬件性能一分一厘的去扣成本的。

【 在 tom6bj 的大作中提到: 】

: 最后一段, 你说的有道理, 我现在手里的大部分项目, 大部分业务代码都尽量按硬件无关的方式写了, 一旦需要换mcu的话只要改少量的底层部分即可.

spadger
echo 2020-11-29

我的固件里面,都有一个HAL模块,封装底层的细节。

很薄的一层封装,能用宏就不用函数,控制切换时的工作量。

【 在 lvsoft (Lv(The Last Guardian)) 的大作中提到: 】

: 但想最大程度的挖掘硬件性能,往往没办法用HAL。

: 而不巧嵌入式行业,很多时候就是得挖掘硬件性能一分一厘的去扣成本的。

lvsoft
Lv(The Last Guardian) 2020-11-29

c毕竟没有zero cost abstraction能力,做不了太复杂的HAL的。

比如dma,timer,这些资源自适应调整。

现在的官方HAL库抽象能力太差也太重。而你加的一层薄封装又谈不上HAL,只是设计的时候就考虑了几种后备方案,方便切换而已。

而且以上还是纯软的,有时候版面layout资源紧张,有的功能可以remap到其他走线方便的pin。这已经超出语言层次了,终究还是需要人去细扣的。

【 在 spadger 的大作中提到: 】

: 我的固件里面,都有一个HAL模块,封装底层的细节。

: 很薄的一层封装,能用宏就不用函数,控制切换时的工作量。

javaboy
喝了咖啡就话多-_-; 2020-11-29
loading ...
loading ...

大哥。。。术业有专攻。你不太了解我的领域,不要说那么绝对呀。。

能认识自己也会犯错的可能性,对不同意见予以包容和体察,是提高的必要条件。虚心使人进步嘛。

(编辑:好像传错图了)

【 在 lvsoft (Lv(The Last Guardian)) 的大作中提到: 】

: 我这几天反复在表达的意思一直没变。你拥有势能,但你始终没去尝试把它转变为动能。我理解你的意思是以你的能力,2700万行代码里面的任何一处的问题你都有信心搞定,能做到这点的人也许是top 0.1%,但top 0.1%还是有很多很多。torvalds本人能坐在主席台上决策谁的patch

: 过程很重要,但我们最终都是要以结果论英雄的。你做的一切事情,都要围绕一个你自己想做的目标而定。你可以规划很长时间去积累,但积累的目的一定是为了这个目标的爆发。我跟你对话也有好几年了,我也觉得你跟我很多地方很像,但在我看来你这几年就是在原地踏步。所以我

: 我今天话说的比较重,但到这个年龄,认识的有才华的人也很多了,也看过太多陨落的故事了,包括我自己也多次在这悬崖走钢丝。所以我虽然最后婉拒了我同学的邀请,但我很感谢那场论战,让我获益良多。有能力的人往往会自视过高,而这个世界最痛苦的事情就是盲目追求一个超

javaboy
喝了咖啡就话多-_-; 2020-11-29

您说的这种有点像陀螺仪或者相机云台ic的研发过程。。这种由应用到基础理论top-down,再由基础理论回到应用bottom-up的思路,很合我胃口的。很希望有一天我也有能力达到这种自由度。

【 在 heyuanlie (heyuanlie) 的大作中提到: 】

: 标  题: Re: 【请教】提升电路知识和能力的路径

: 发信站: 水木社区 (Sun Nov 29 10:34:37 2020), 站内

: 我的看法是这样的,讲出来让板油们讨论一下:

: 类比一下,以装修房子为例,可以按别人图纸自己从木头(分立元件)开始diy桌子、椅子、柜子、床,也可以量好尺寸去家具城买现成(芯片)的回来一放就可以了,效果是一样的,但这两种都是别人提供的成熟解决方案。

: 要是想深入一步就得从另外两个角度去想,一个是以现有元器件和芯片为基础从系统角度去考虑解决一个没有现成电路硬件方案的问题,另一个是从元器件本身或电路整体设计角度去考虑某些性能指标的提升。

: 从系统角度去考虑往往是从实际需求出发,例如有个能在水平面x、y方向移动的机构下面用一根很长的钢索挂个重物,重物在空中容易受气流影响在x、y方向摆动,现在机械、电机都已经配置好了(或者说限制死了),要设计一个电路去控制机构运动使得重物在上升和下降过程中都保持x、y方向静止。类似这样的需求就得从运动学入手去分析整个运动过程并最终推导出运动(数学)模型以及控制(数学)模型, 最后只是用电路去表达这些数学模型而已。这个可以用模拟方式(由三极管可以构造出积分、微分电路,二极管可以构造出指数电路,电阻电容可以构造出比例电路、线性电路等,同样也有模拟集成能完成相同的功能)来表达,也可以通过数字方式(通过A/D把输入数字化,设计数字逻辑电路来算,或者更直接地用cpu通过软件来算)来表达。

: 从元器件本身考虑提升某项或者某些指标,这个就是要搞元器件本身了,也就是跟材料和基本物理原理相关了,例如现在很多搞微波的在搞腔体滤波器(通过特殊的几何构造实现性能指标提升)和薄膜滤波器(通过特殊材料实现性能指标提升)。

: 从电路整体设计角度考虑提升某项或某些指标,也是通过对输入信号和预期输出建模(数学模型),分析出限制指标提升的瓶颈(通常会归结为一个高维曲面的寻优/求极值问题),然后用反馈控制、自适应滤波、模糊控制、粒子滤波甚至机器学习人工智能等等手段去求解,最后实施时也是用电路去表达整个求解过程。现有的模拟ic和数字ic的内部和外围电路就是基于这样的方法设计出来的(当然还要加入很多材料、工程和工艺上的考虑),只是作为使用者只管用而不需要(也没办法)去了解其内部结构及原理而已。(其实这个也算是从系统角度考虑电路设计的问题了)

: 以上只是我个人看法,欢迎大家指正。

: 【 在 javaboy 的大作中提到: 】

: : 是啊是啊。一方面是没有成就感,一方面是能做什么主要取决于厂家让做什么,感觉很弱势。分立元件其实我也会一点,比如面包板上搭搭ldo啊运放啊shifter啊counter啊,这些好像也都被人研究完了?

: :

: --

javaboy
喝了咖啡就话多-_-; 2020-11-29

我很抵触这些mcu变来变去的,用特性vs售价比折腾人。一个arm core,搞出几百上千个分身来,每个区别不到1%,代码就是不通用。。

在这方面arduino做得还真是很好。

【 在 tom6bj (tom) 的大作中提到: 】

: 最后一段, 你说的有道理, 我现在手里的大部分项目, 大部分业务代码都尽量按硬件无关的方式写了, 一旦需要换mcu的话只要改少量的底层部分即可.

bihai
new half life 2020-11-30

本人电子系毕业的,毕业那一年,决定把家里的收录机修一下,打开看了看,看了看说明书上的电路图,根本看不懂。

后来博士毕业后工作就是电路设计,很简单的电路,100个元件吧。干了几年后基本搞熟了三极管,电容,电感什么的。像骑自行车终于学会的感觉。

【 在 javaboy 的大作中提到: 】

: 想咨询各位资深人士:

: 我是学CS的,编程基础很好,各种编程语言,编译器,C++,Python啥的用得轻车熟路。前几年从arduino入手,慢慢入门了嵌入式编程,了解一些画板子的基础,还学习了一些数模电,甚至IC的知识。但是,几年时间,总感觉自己是在当接线工,水平进步很慢,缺乏全局的把握,各种知识碎片无法融会贯通。

: 不知各位有没有经历过这个阶段?有什么办法可以再提高一下?