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

javaboy
喝了咖啡就话多-_-; 2020-11-25 字数 348

想咨询各位资深人士:

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

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

Circuit 电路设计与调试
105 个回复
lanmp
-_-!谁的大腿 2020-11-25

有这必要么?

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

感觉现在体力劳动的成分很多啊。。

【 在 lanmp (-_-!谁的大腿) 的大作中提到: 】

: 有这必要么?

jiu
我喜欢喝醉了那种感觉。 2020-11-25

想想如何做产品就行了。

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

: 想咨询各位资深人士:

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

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

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

leadu
leadu 2020-11-25

你觉得和编程一样,通过做项目学习怎么样?比如像hackrf是完全开源的,把它优化一下然后kickstart提个项目

【 在 javaboy 的大作中提到: 】

: 感觉现在体力劳动的成分很多啊。。

zhaoyi821103
ShenzhenXiaoyi 2020-11-25

不要浪费这种时间,不值钱,好好搞软件,分分钟年薪100W

【 在 javaboy 的大作中提到: 】

: 想咨询各位资深人士:

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

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

ccrt
// 2020-11-26

这都是财富自由了的吧

【 在 zhaoyi821103 的大作中提到: 】

: 不要浪费这种时间,不值钱,好好搞软件,分分钟年薪100W

leadu
leadu 2020-11-26

以后高级工程师,同时是需要搞定软,电,机的,因为电和机已经都变成软件定义化了,从设计上讲这三个基本是一回事了

【 在 zhaoyi821103 的大作中提到: 】

: 不要浪费这种时间,不值钱,好好搞软件,分分钟年薪100W

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

我感觉电路和编程最大的区别是,编程用的各种组件基本上都是开源的,经过长时间的发展内部的原理和运作方式都很公开很标准。相反电路里用到的各种ic都是黑盒子,厂商不公开的内容一概hack不了,芯片有问题没法自己排除,只能凭经验绕过去。这给创造力加上了一个很矮的天花板:看上去在创造,实际上是给芯片厂打工。。。

拿hackrf做例子,这个是不是等于把买maxim、xilinx和nxp家的芯片买回来,然后根据说明书接个线的事儿么。。。

当然这是我的感觉。也可能感觉得不对?

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

: 你觉得和编程一样,通过做项目学习怎么样?比如像hackrf是完全开源的,把它优化一下然后kickstart提个项目

leadu
leadu 2020-11-27

现在编程方面,互联网相关的开源为主;商业软件相关的闭源为主吧,也都是黑盒子。

软件方面就算使用开源模块,我一般也不看它的代码,通过特性猜测一下,绝大部分开源的是怎么设计的其实都能猜出来。

不知道你是不是想追求的类似的能力:用一个芯片只是因为它是现成的,如果你想设计,只要时间富裕,你自己能设计出来一个不差于它的?这个应该去微电子版了吧

【 在 javaboy 的大作中提到: 】

: 我感觉电路和编程最大的区别是,编程用的各种组件基本上都是开源的,经过长时间的发展内部的原理和运作方式都很公开很标准。相反电路里用到的各种ic都是黑盒子,厂商不公开的内容一概hack不了,芯片有问题没法自己排除,只能凭经验绕过去。这给创造力加上了一个很矮的天花板:看上去在创造,实际上是给芯片厂打工。。。

: 拿hackrf做例子,这个是不是等于把买maxim、xilinx和nxp家的芯片买回来,然后根据说明书接个线的事儿么。。。

: 当然这是我的感觉。也可能感觉得不对?

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

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

我不是跟你说过很多次了嘛。

硬件这东西论规模论复杂度,那是远不如软件的。但硬件这个东西和软件有个本质的区别,那就是需要动手实操的,你老是想像软件一样玩虚拟的,那是肯定不行的。

所以最简单的方法就是抛开软件养成的世界观和方法论,别去学什么高屋建瓴的知识,就从自己做板子焊板子的最底层开始搞起,一步一步的打通各个器件的运用,一步一步提升应用的熟悉度、复杂度和层次,最终再反过来降维使用arduino之类的东西就好了。

这个东西用软件的比喻来说,你ruby,python用的溜,那是因为你不是从python入门的,你是从c/c++开始入门,你是用你扎实的基本功,降维打击学习了python。你用python的目的只是提升你的效率,而不是和大部分外行一样某个东西只能依靠Python来实现。你可以设想下假如你在软件领域也是只会python,那你肯定早就撞天花板,不管学多少年水平也上不去的。硬件也同理,所以别再搞什么arduino入门了,硬件就是要砸钱实干的砸出来的。

【 在 javaboy 的大作中提到: 】

: 想咨询各位资深人士:

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

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

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

这个不对的。你要这么理解那软件也是各种组装轮子呀。实际上你应该非常清楚不同功力的人,哪怕都是在组装轮子,哪怕用的是同样的轮子,出来的结果也是完全不同的。

ic虽然是黑盒子,但这些ic的设计质量是相当高的(毕竟ic的bug那修复成本太高了)。你应该把他们认知为和linux kernel等同的质量和设计,所以有问题通常不是人家的问题,而是你的使用问题。这个不需要绕过去,只需要自己读人家的手册文档就行。人家设计不公开,但文档也是足够详实的。只不过你现在太习惯于开源世界的代码即文档的思路,所以看不到内部就素手无策了。

【 在 javaboy 的大作中提到: 】

: 我感觉电路和编程最大的区别是,编程用的各种组件基本上都是开源的,经过长时间的发展内部的原理和运作方式都很公开很标准。相反电路里用到的各种ic都是黑盒子,厂商不公开的内容一概hack不了,芯片有问题没法自己排除,只能凭经验绕过去。这给创造力加上了一个很矮的天花板:看上去在创造,实际上是给芯片厂打工。。。

: 拿hackrf做例子,这个是不是等于把买maxim、xilinx和nxp家的芯片买回来,然后根据说明书接个线的事儿么。。。

: 当然这是我的感觉。也可能感觉得不对?

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

ericking0
白开心 2020-11-27

说实话,我倒是觉得现在的IC的品类已经足够多

而且大家都想着怎么集成,对外围的要求越来越低;

从用户的角度,我觉得更需要关注于搭方案,没必要纠结于下层是怎么实现的;

当然如果打算自己做个10来G的示波器的,当我没说;

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

: 想咨询各位资深人士:

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

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

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

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

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

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

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

然后开始就是各种瞎搞瞎折腾了,这个时候我决定要按照最高标准去玩这个,所以我的第二块板子就是用allegro布的底板+核心板,面积嗷嗷大,上面的器件密密麻麻双面贴满,还tm是4层板。抄的一个fpga的原理图,自己拍脑袋做的pcb设计。当年做这块板子老贵老花时间了。我依然记得上面的一片pqfp208的芯片我死活焊不好,一片100多块钱我连着报废了3片,最后只能找朋友带我去工厂找了个老师傅焊的。然后当然这堆板子是玩不转的,毕竟以我当时的知识体系,基本全程在瞎搞,根本就不可能点的亮。但这一步失败,让我直接跨过了入门的门槛。比如我直接用上了业界最先进的allegro(当年可不是现在有各种视频,我是好不容易从清华的某个ftp里面搜到了点文字教材),虽然这个东西博大精深我也只用了点皮毛,但通过这个摸索的过程也窥见了山峰在哪里。比如allegro里面有很多高频高密度的模块,虽然我不会用但我后来就去学习了信号完整性的知识。比如整块板子密密麻麻,我尽量全力自己焊接完成,在这个过程中锻炼了基本的焊接能力和技巧。比如整个流程从原理图,到pcb布线,到找人做板子,到做板过程中的因为对工艺能力的不了解各种错误各种协商。我的目标并不是做成功,我的目标是把整个流程以自己的力量跑下来。

然后第三次就是接到了个项目了,这次我放低了标准,直接买了块arm7的开发板,在上面打通了uclinux+python,然后我专攻软件把问题解决,再和朋友一起把开发板裁剪缩小成成品,最后我们2个人一起焊了4-5天,交付了20多件小样,算是第一次做成了一个赚钱的硬件项目。

再这之后我就基本放飞自我了,这个时候我还给自己定了很多约束,比如只玩数字电路,绝对不碰模拟,高压。这个阶段还是失败居多,方法上更多的是给x86做扩展的形式的思路。多是通过pcie的桥芯片控制fpga来做gpio级的乱七八糟的事情。这个阶段虽然知道51,avr,msp430,ti c2000系列等等,但我始终没找到让我有兴趣的课题。

这个阶段算是达到了瓶颈期,我想做的事情要么就太复杂,比如需要c6000系列dsp,太贵而且也太超出我当时的能力。要么就是太简陋不太想搞,比如用51/avr搞搞小玩意之类的。当时32位处理器arm7和arm9刚开始,但我还是觉得太重了都要跑个linux os,同时性能还是太弱跑不了太复杂的东西。

之后让我突破瓶颈的还是stm32系列,这个东西便宜,多功能,高灵活,同时性能也还挺给力。这个时候我开始想搞自己的cnc,所以在研究各种电机控制的技术,那么到了这一步当然免不了要接触模拟。再加上1500w的伺服必然得用220v去控制,所以高压(后来才知道220v只能算低压)也得解锁了。然后电机的能量控制其实跟开关电源也有很多相同的地方,所以后面也开始自己做开关电源。到了这一步,自己绕变压器,自己打磨气隙,自己绕转子线圈,自己算各种参数什么的都有了。然后焊接能力也上来了,焊接pqfp这种0.5pitch的东西已经提不起兴趣了,在上面连着飞线都没问题,焊接qfn bga什么的也不在话下了。也开始接触各种类型的运放,各种adc,之前觉得各种碎片化如天上的星星一样繁多琐碎的东西,就突然全部整合协调在了一起。我不仅仅知道器件的参数性能,我还知道这个器件的来世今生,我还知道它的兄弟姐妹,它所属的家族历史。到了这个阶段基本上就可以大致算是掌握EE了,当然进一步往下精进就需要打好理论基础了,但我个人认为到此为止就可以了,毕竟我的本行是软件不是硬件,我只要做到能跟其他行业的专家无障碍交流即可。

所以你看我的轨迹,从51洞洞板开始,第二步我就以自己一个人的力量学了allegro,设计了4层板,并且还做出来焊出来。这两步的跨度大概只有几个月,然而你到现在都没自己投过板吧?你只是知道有这么个流程,觉得你看过了所以就默认你已经投过板了。硬件学习是需要一定程度的浪费的,做过和没做过就是有本质区别的,你要有这个决心才行。

【 在 javaboy 的大作中提到: 】

: 想咨询各位资深人士:

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

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

spadger
echo 2020-11-27

PQFP208的FPGA型号可能是EP2C8Q208C8N,芯片太厚,管脚老长了,不好焊。

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

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

: 首先,在搞硬件之前我一直是资深搞软件的,从小学二年级开始就搞编程了。在软件领域虽然说样样精通不太可能,但也基本没啥东西是我没玩过不熟悉的了,所以到了大三有点无聊的感觉。然后一位同学(丫跟我也都进过冬令营,初中的时候我们就认识,老对手了)喜欢上了51,他

: 但这个时候我觉得打开了新世界的大门,开始满世界的找电子集散地,当时南京有个电子商场叫华龙,大概就是小号版的华强北吧,我天天去逛,早上开业进去晚上关门出来,连续逛了14天把每个摊位摆出来的每个东西都看了一遍,把能打听的东西也都打听了。当时的感觉就是电子器

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

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

完全正确

这是当时在非BGA里面能买到的规格最高的型号。

【 在 spadger 的大作中提到: 】

: PQFP208的FPGA型号可能是EP2C8Q208C8N,芯片太厚,管脚老长了,不好焊。

amberlee
amber 2020-11-27

电力电子的更是这样

【 在 javaboy 的大作中提到: 】

: 想咨询各位资深人士:

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

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

spadger
echo 2020-11-27

还有PQFP240呢,EP3C25Q240C8,一样厚,多了32个脚,更讨厌...

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

: 完全正确

: 这是当时在非BGA里面能买到的规格最高的型号。

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

对,是还有240的,但我当时能买到的就这个ep2c 208,所以就这个算了...

不过其实还好啊,厚度问题...

我想起来了之前的描述还有个错误,当时这个板卡设计是底板+中转板+核心板。底板管io和供电,核心板管各种乱七八糟的芯片,中转板把乱七八糟的芯片reroute到io板上,是个以现在眼光看脑子有病的三层宝塔结构...

在这个设计里面厚度问题压根就是个不需要考虑的问题...

那个时候真的是年幼无知,我还跟一位cadence的员工show了下这坨屎一样的设计...

总之...再大再厚也总比bga好...我是好多年以后才能比较稳定的搞定bga的...

【 在 spadger 的大作中提到: 】

: 还有PQFP240呢,EP3C25Q240C8,一样厚,多了32个脚,更讨厌...

ECUCoder
Engineer 2020-11-27

你这时间跨度二三十年的,要把人家boy熬成uncle了......

【 在 lvsoft 的大作中提到: 】

: 我不是跟你说过很多次了嘛。

: 硬件这东西论规模论复杂度,那是远不如软件的。但硬件这个东西和软件有个本质的区别,那就是需要动手实操的,你老是想像软件一样玩虚拟的,那是肯定不行的。

: 所以最简单的方法就是抛开软件养成的世界观和方法论,别去学什么高屋建瓴的知识,就从自己做板子焊板子的最底层开始搞起,一步一步的打通各个器件的运用,一步一步提升应用的熟悉度、复杂度和层次,最终再反过来降维使用arduino之类的东西就好了。

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