首先你要明白你究竟想做些什么。我们说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等等,内容太多,太广,所以选择一个比较适合自己的领域是最重要的,其它的知识,通过公司里的培训或者项目来进行学习。