FPGA高手请进
答案:5 悬赏:40 手机版
解决时间 2021-01-27 08:35
- 提问者网友:箛茗
- 2021-01-26 09:20
我今年大三了,刚开始学FPGA,学的很迷茫。感觉这东西设计的知识太多了,有嵌入式,单片机,汇编语言等等。不知道从哪里开始入手,请从事这方面工作的大侠指点指点。小弟在此谢过。(最好能结合你的亲身经历说说,谢谢)
最佳答案
- 五星知识达人网友:山有枢
- 2021-01-26 10:18
首先你要明白你究竟想做些什么。我们说C是基于串行结构的编程方式存在的,通俗一点说,就是一条一条的指令顺序执行。而对于FPGA来说,它既然是一种门阵列,你首先要明白的就是它的基本结构,比如什么是LUT,什么是LAB,它们的关系是什么等等。而所谓的VHDL,Verilog,其实只是一种语言,但是你在写代码的时候一定要明白,你所写的东西,是一种硬件结构,而不仅仅象CPU执行C代码那样的一条一条的顺序执行,在高级FPGA工程师眼里,代码就是硬件。比如简单的if,else语句,在C语言中很好理解,但是在VHDL中,if语句很有可能会产生锁存器,导致时序失真,如果你仅仅以C语言那样的观念去学FPGA,很难成为高手。另外,你需要具备的知识,就是数字电路,各种触发器,锁存器,还有Buffer,Ram的结构,以至于后来高端的通讯协议,比如用FPGA来实现一个SPI 或者是Uart通讯协议。另外要明白FPGA和我们传统意义上的CPLD,以及SOC是不一样的,它的缺点就是慢。一切的一切,计数器也好,时序逻辑电路也好,都要基于FPGA的时钟,时钟一旦很慢,协议根本满足不了外设要求的。作为一个学生来讲,尤其是国内的学生来说(我在慕尼黑工大读研究生,这里硬件条件好一些),一块开发板是必须的。但我觉得更重要的是学习高端的东西,关注Altera公司(欧洲的话我比较关注Xilinx)的最新发布的信息和最新技术。再往深里学,可能会用到SystemC来进行modeling。嵌入式是个很大很大的领域,它涉及到电脑技术,FPGA,assembler语言,C语言,单片机,Arm体系结构以及编程,linux设备驱动等应用,QT的UI设计和移植,另外最基本的硬件电路设计Protel或者是Altium等等,内容太多,太广,所以选择一个比较适合自己的领域是最重要的,其它的知识,通过公司里的培训或者项目来进行学习。
全部回答
- 1楼网友:山河有幸埋战骨
- 2021-01-26 14:33
一个字,“做”。首先你要知道,对fpga编程,实际写的是硬件电路,所以数电要有点基础。你一个语句下去,你脑子里要有实际的电路出来。组合逻辑算是比较简单的,时序逻辑的话,你写一写接口程序(比如用fpga控制串口,usb口,你要根据通信协议的时序来写程序)就熟练了。如果你这些都熟了,尝试一下软硬结合的方法。如果是altera的可以玩玩nios ii,把你写的接口程序挂到nios 的cpu上,用软件进行控制。至于vhdl还是verilog,我建议初学者用vhdl。不过看你的习惯了。
- 2楼网友:污到你湿
- 2021-01-26 13:15
什么东西并不重要,关键是有一种硬件思想,和C不一样的思想,呵呵。心里要有对于硬件、处理器架构的充分的理解,这样,像单片机、嵌入式,很快就能理解,到时候就是需要什么学什么了。学FPGA应该算是硬件的基础,好好努力吧。等你把FPGA学好了,对于硬件的理解达到一定的高度之后,你会发现,这些东西区别不大。
- 3楼网友:持酒劝斜阳
- 2021-01-26 12:23
不一定要学单片机的,FPGA就跟单片机差不多,别想太复杂了。最好买块板子,两三百的就行了,照着资料做点小程序很容易的。语言学过C的话都是通的,Verilog更接近C,VHDL也很简单,无非就是if,for语句。
- 4楼网友:慢性怪人
- 2021-01-26 10:46
呵呵,FPGA有分硬件设计和软件设计,你可以先重点研究一个,就比如说软件设计,先不要把FPGA和其他芯片联系起来,先用FPAG实现几个简单的程序,比如说LED的实验啊,数码管等等,,,当然首先要熟悉一种HDL语言,,然后再做一些扩展,网上有很多例子,也可以先模仿模仿,,推荐你一本入门的教材也是我当初刚学习的教材,,,潘松的《EDA技术实验教材》
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯