FPGA 与ARM 我迷茫了 求各位前辈略微指点, 不胜感激!!!

我是在校大学生, 学了单片机,想继续学习其他,在FPGA和ARM上 我不知道如何选择了 我本来是想学ARM+LINUX的, 但是后来听别人说 ,我们学习 学ARM的人很多 真正会ARM的人 一个没有! 包括老师。 我们学习 一个非常强的老师 曾经是国企的总负责人 向她咨询 他竟然说 不知道什么是ARM ,,........ 我现在不知道 该怎么弄了 我们学习 有凭借FPGA 找到年薪20W工作的,感觉也是个学习的榜样 ,不知道自己 该如何进行下去了 是去学FPGA 还是学ARM啊 太迷茫了 感觉身边的老师 都不是很懂啊

不要听人说,看发展趋势可以到网上去找,但是一方面万变不离其中,单片机无论51、ARM、PIC都是些寄存器组合不同而已,核心的东西学会了去学另一种也就简单了不少,但简单的学不会去学复杂的肯定没用。另一方面存在就是合理,你不可能在成本控制严格的电表设计上去搞个ARM,你也不可能在手机上弄51,各个行业不同用的单片机也不同,不可能学校教的51你工作后就一定得用51,凭什么人家就必须得用ARM?
但是就51替代Z80一样,ARM确实也是一种趋势,低成本的到高性能的都有,就算是ARM本身也存在不同的档次,你也不可能确定你应该学什么?FPGA可以是理解为一种万能的但非常复杂的处理器,几乎所有的数字电路他都能通吃,有些高档的服务器就不用CPU而用FPGA来设计,说了这么多
51、ARM-M[低端的]、ARM-R[中端的]、ARM-A[高端的]....以及FPGA,看你自己怎么定位你自己,而且并非取一个折衷的处理就算好,比如ARM-R这个中端的现在芯片还真不多,就TI好像在做。
我个人觉得:
如果你是偏向于软件方面,那么学习高端芯片,而且主攻以操作系统,比如ARM-A系列+linux之类的。
如果你是偏向于硬件方面,那么学习ARM-M系列低端和FPGA为主,操作系统以后有时间再慢慢来。
如果你不想去学课外的处理器,不积极学习呢,就学校提供的51学好了也不错

另外,高端和低端,各有用处不同,并非就是知识和能力强弱的区分,就好比basic语言是高级语言而C语言是低级语言一样。
高端的芯片确实要复杂一点,但是真正运用的时候他们是将接口封装在操作系统里,而真正发挥你能力的地方大部分在操作系统和软件开发上,硬件移植甚至很多厂家就给你做好了。
低端的芯片确实要简单一些,但是开发者更多的是处理硬件、时序、逻辑甚至是干扰等等这些工作,这些的难度一点不比高端芯片使用的差,甚至更难!追问

我们学校 连51单片机 都不教的。我的单片机 也是自学的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-01
国企那些头头脑脑有做技术的么,都是官僚,变成老师后不过是学术官僚,如果一个电子行业的连ARM都不知道是什么,我只能说他知识结构陈旧的不堪入目了。
所谓年薪20W的工作。我想肯定除了一个领域的东西精通以外,其他东西也能上手做。现在很多企业要一个硬件工程师,不关做逻辑设计,测试,板卡的原理图设计,甚至PCB也要一起做。你要想发展的好,到最好恐怕懂FPGA的同时,也要了解ARM,简单的设计两者都会才可以。具体哪方面强,就负责哪方面的任务多些而已,都有好工作
ARM实际上就是一个功能强大的单片机,使用它,主要依靠的是嵌入式系统的软件语言。可能和你学的单片机相通性更强些。
而FPGA用的是硬件描述语言,本质是描述设计一个电路,硬件语言很多特征和软件语言完全不同,当然也有一部分功能是要和软件语言相通的,特别是在它的测试模块里,和软件一样也是用CPU解析指令并实现的。如果掌握好了FPGA得硬件描述语言,在回过头来接触C恐怕要比较容易,但是一直做C的,来学FPGA的语言,特容易打结的。。。所以我建议先研究下FPGA语言。了解下一门全新的并行语言的世界,回头看软件的串行世界就很容易了追问

开头的几句 很犀利,说的很对。但是一个老头 晚年发挥下余热 ,当个老师, 知识陈旧点 就陈旧点吧,过几年 估计也退休了,呵呵 非常感谢你的回答

第2个回答  2011-11-01
FPGA侧重时序控制的,ARM侧重控制和运算。现在好多的平台都同时搭载了这两颗芯片,要是有机会两者都学也很重要。个人建议应该学习ARM+Linux。
所谓的真正会ARM是什么意思呢?毕竟国内还没有ARM的版图设计工作和那么高纳米的工艺,至于说系统开发和应用开发,我想华为这些老牌的通信企业一点也不逊色于国际巨头。
若你的C语言和操作系统不错,那么学习ARM会简单一点。相比较,FPGA的逻辑性和时序性很强,在大学里没有太多的实验条件让你能够真正学好FPGA。追问

非常感谢你的回答,真的, 发自内心的。

“在大学里没有太多的实验条件让你能够真正学好FPGA。“ 这句话 我非常想知道 稍微具体一点的 是哪些东西实现不了啊,能耽误下时间 稍微透露下么

追答

首先,FPGA的通用性很差,但是时序性很强。实际上通过编程实现的是一个个逻辑电路,这就需要有非常好的编程功底和数模功底。比如说写一个用FPGA实现SDRAM和USB接口和显示屏之间的通信。模块和模块之间的时序搭配,很难去配置。出了问题很难找出,通常进口的逻辑分析仪都是10W以上的,这个一般院校很难配置。
还有,FPGA对高速的传输协议支持不够,还有待考验。至于在学校里写个加法器乘法器还有一些LED控制什么的,也只能做这一些工作。只有一个好的平台下,你才会对FPGA的设计工作能有很好的认识。

相似回答