通常意义下,FPGA不是计算机,不是计算机,不是计算机,所以不要和单片机这种计算机放在一起比较,FPGA是没有CPU的,但是有人为加强FPGA的性(逼)能(格),可以给FPGA嵌入一个CPU。。。。所以,没有CPU的FPGA采用数字电路模式的编程方式,因为程序没法像有CPU的单片微型计算机那样一条条执行机器码。。。而嵌有CPU的FPGA,其CPU上就可以用通常的汇编,C等真正计算机语言编程,,而没有CPU的逻辑块,还是用数字电路的方法。。。可能大家通常意义上的编程都是用计算机编程,肯定是有CPU的,所以没法理解没有CPU是什么概念,因为FPGA根本还不算一个计算机,但是它是可以编程设计的,所以你没法完全用计算机编程语言去编程理解。
第一,FPGA是纯硬件,所写的‘程序’也就不能称之为程序,如果非要给它起一个名字,我感觉‘代码’也许是比较恰当的;其次,单片机和FPGA实现信息处理发出控制信号的方式不同,单片机和嵌入式是通过主函数或者操作系统实现任务调度的途径来响应各种外部条件触发,并通过‘软件’输出相应的状态来实现电子系统的正常工作,然而FPGA是通过纯硬件来实现各种激励的相应的,与单片机实现控制的根本方法不同。最后,单片机和嵌入式的软件设计会有盲点,再快的软件相应在现实应用中也会有出现盲点的时候,简单的说就是系统不能及时响应或者漏掉某些激励的现象,然而硬件不会,它以强大的并行方式来响应所有的信号激励,但硬件也不是万能的,FPGA这类的纯硬件最大的克星就是亚稳态以及竞争冒险等等,通俗的讲就是输出及其短暂的不稳定现象,虽然不稳定状态出现的时间及其短,甚至到了皮秒级别(1秒等于10的十二次方皮秒)但也就是这么短暂的不稳定也可能会给设计带来致命的危险。这是有硬件的特性决定的,是在设计中永远无法避免的,对于冒险和亚稳态,我们只能想尽一切办法去解决他们。一个信号处理逻辑机制优劣将决定一个项目的好坏。
|