verilog中没有中断的概念,而逐行执行指令的C语言却离不开中断。
学习verilog必须要掌握最基本的概念,像上面的阻塞赋值等等,新手都要经历这一关的,呵呵。
还有,verilog是始终离不开硬件,c语言中可以不限制循环次数,而verilog就不行,因为每循环一次就会增加FPGA内部资源的占用。
最后在说一点儿,verilog中有的语句不能被综合(Oh,什么是综合?,百度吧),像定义浮点的float就不可以,在编程时慎用。
好啦就说这些。
微处理器用C,FPGA用HDL,这个不用说了吧。论算法实现速度,FPGA肯定比微处理器快多了,因为FPGA可以算准每一个时钟周期的任务,而微处理器执行C程序可能会浪费很多时钟周期。
论算法实现难度,如果放在几年前,复杂算法肯定不会用FPGA做,太麻烦了,C语言的顺序设计思想则很方便许多,但现在随着各个FPGA厂商推出DSP工具,用FPGA 实现复杂算法倒简单了很多,几乎一行代码不用写,直接用图形界面就设计完了,类似画流程图一样。
说道门槛,用微处理器实现算法,重点在算法,而不是微处理器硬件,因为厂商会把微处理器各个硬件模块做得更简单、更好用,内嵌更多简单的DSP器件,比如乘累加器、FFT模块等,程序优化的自动化程度越来越高。FPGA则不同,你不仅要精通算法,你还要知道怎么样用数字电路去搭建你的算法,也就是说你要知道你写的代码生成的是怎么样的电路(行业里叫“综合”,就是把代码综合成具体的数字电路),不同的数字电路形式,完成算法的效率完全不一样,所以说FPGA是硬件,不是纯软件,如果你是数字系统设计高手,你在设计FPGA的算法前,都会直接画出一个算法的数字电路结构图,然后照图用HDL代码去设计。当然,就像我前面说的,现在做算法很多都用图形界面了,不需要你写代码了,但你还是要懂FPGA内部硬件结构,这样才能更好地实现你的算法。
总的来说,FPGA入门容易,但提升就很难了,需要不断地积累经验,和嵌入式技术不同,FPGA在国内没有多少人给你指点 。