学习IC设计要多长时间?该怎么去学?

本人是微电子专业,今年大四。对于本专业,正处在入门阶段,虽然也学习了一些课程,可是没有能全部搞懂。现在从暑假开始,我找到了一个实习单位,在公司里他们很忙。我在一间单独的实验室。学习FPGA设计和使用MATlAB进行数字信号处理。一切都是自学。在学习中遇到了很多的问题,所以学起来很缓慢。有些东西实在弄不懂了就放下了,放下了太多又弄不懂了、。。。如此以来,举步维艰。我想知道IC设计者都是怎么学习的?一个普通人要多长时间才能够成为一名成功的IC工程师?还望各位前辈不吝赐教。
我现在学习的FPGA和MATLAB都需要编程。当时学语言时我觉得不难,对于简单的我能写出来,可是对于一个复杂的项目,要些好长的代码,这样我觉得好难。可是为什么他们都告诉我这个是很简单的。我想知道对于编程,从入门到高级该怎么做?难道是每个人看过了几个触发器、解码器、译码器之类的入门教程就可以写出复杂的程序了吗?为什么我连看都看不懂这些程序!

ic设计,应该有数字和模拟的两个方向
显然fpga是数字的,数字电路无非就是一个个门,和触发器组成的,任何复杂的逻辑控制都市这样。
确实简单逻辑设计,只需要知道使用门和触发器的人都能设计出来。难的其实就是复杂的设计。
和c程序一样,复杂逻辑也可以分解成很多小模块,模块里边还可以继续细分。单从一个独立的底层模块电路来说,我们会觉得很简单。如果电路中只有两个模块,复杂度是二,你会觉得很简单,但是如果是四个,八个,十六个,你就会发现复杂度就不是简单的四、八、十六了。
我觉得复杂的设计中最关键的是构架设计,往往需要采用自顶向下的设计方法,也就是使你设计的复杂度降到最低。如果你做的16个模块复杂度是小于等于16,那么你的这个设计是优秀的。
构架的能力是一种宏观思维的能力,是一种习惯,方法,可以通过学习借鉴一些开源的ip。
还有就是实践,ic设计非常灵活,我想每个人都会有自己的习惯的实现方法。通过实践,你能找到适合自己的思维习惯的构架和细分模块的方法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-21
学习这种东西,最好是在公司或者研究所里做项目。首先明确一点,就是IC分成宏观的设计和微观的设计,比如说做一个宏观的项目,设计一个简单的秒表,那么你可以用FPGA来实现,这种东西属于IC的范畴,但不是说你会这么点微末的东西就说你是搞IC的了。当你拿到一块TI的芯片之后,你看它的Datasheet,里面有很多应用的电路,数字电路终归是要由模拟电路来搭建的,那么什么是IC呢,你可以说它是集成电路,这个没错。但是,这些东西的基础就在于你对半导体技术,半导体工艺,射频微波,高频IC的掌握,这个没有10年的研发功力,不要去想了。电子业拼的就是工艺和架构。频率越来越高,那些传统的设计思路和架构都要随之改变,芯片逐渐变小,功能越来越强,试想,芯片里的两个导体在相距28nm时,在频率达到100MHZ以上时会出现什么情况呢,这些东西不是说你看点书就能学到的。IC设计,千万别说是搞IC的,因为它真的是太难了。如果想学,我推荐你去TI或者去英飞凌做实习,然后慢慢学习,这些公司都是世界顶级的IC芯片设计公司。我在英飞凌做的是FPGA和ARM的研发,做的也是宏观的东西,其实已经很头疼了。想接触到最尖端的东西,在外企,就更难了。我建议你不要把FPGA看成是编程,而是一种hardware implementation。在德国,企业在招聘启事中都会写Hardware Entwicklung(硬件开发) ,然后要求是Fpga ,VHDL/Verilog Kenntnisse。可见在工程师眼中,FPGA的开发是硬件开发,而不属于软件范畴,尽管你是坐在电脑前完成的。
要说的是,首先明确自己的学习目标,嵌入式是个大的范畴,所以不要对自己说我是搞嵌入式系统的,要更细化自己的目标,比如我就要学习ARM在linux下的驱动程序开发,或者我就编写Can Bus协议等等,然后在实际的工作中再去扩展所需要的东西。作为工程师,没有项目来做,就相当尴尬了吧。还有学东西要有很大的关联性,比如我看到你说你会Matlab和FPGA,这两个东西不能说毫不相关,也有不少领域需要交叉移植,可是毕竟这两个东西关联性不是特别的大,所以学习起来很孤立。还有你说你会数字信号处理(DSP),这个我想很多工程师都不敢说对DSP很熟悉,这也是个变态的领域呵呵。当你完全掌握了FPGA的开发流程,并且开发过几个中大型项目(5000行代码或者更多,这个标准是BMW AG Automobil定义的)之后,你就可以算是一个合格的硬件工程师了,不过已经很幸福了,软件工程师至少10000行代码才算出道呵呵。知识没有界限,学会放弃一些冷门的东西,学习一些流行的东西,并为之努力,做自己喜欢做的事情,才能做好在别人眼里枯燥无味的工作。
第2个回答  2010-09-08
我觉得首先FPGA中verilog编程不是一般意义的编程。需要从硬件角度思考问题。
所以看别人程序最好从系统结构开始,搞懂功能。即各个module是干什么的,如何与其它module连接起来完成功能,弄出一张系统框图。然后再看各个module具体怎么实现的。
这是一个痛苦的过程,看别人的程序不如自己写,呵呵。
貌似你是打算学习数字IC设计或者只是FPGA设计,所以需要学习:
1,verilog语法,coding style。网上资料很多,不要小看简单的例子。呵呵
2,FPGA的内部结构。这个比较复杂点。
第3个回答  2010-08-31
没办法硬件的东西都是比较容易出错,我也学习过一段时间FPGA,就算是下载程序的时候有时都会出问题,最后自己总结了每次下载完都要把下载线断掉,下次再连才能下载,可能是因为静电的原因。说这些只是想告诉你必须坚持下去,要是感觉学习没有方向可以找一些研究生的毕业设计来做,可能只是做一部分不必全做(在学校图书馆的中国知网上找)。希望你能成功
第4个回答  2010-08-30
说真的,本科的那点基础对于IC设计简直太皮毛了。
基本上研究生的工作是ic设计的起点。
搞数字还好点,模拟则需要更长的时间。
不知道你要学什么。。。