|
* I p& {- S& \! T+ e# K3 C2 s, c0 L
算法有软件的算法,有硬件的算法。4 U( b7 Q E, u
软件的算法一般都是用软件比如C语言,JAVA等来写。这个很好理解,就叫软件算法的实现。
+ d1 H& Z- X+ I3 v7 ]
' n6 C R; ?8 c' b4 [+ p, X: ?FPGA是可编程逻辑器件。FPGA主要用来实现逻辑电路(数字电路),所以说用FPGA实现某算法就是要用FPGA设计一个数字电路,该电路可以实现这个算法的运算。 A0 [5 z `5 ~. y& x# ~
) b& k8 P: L1 s
比如说加法器。用软件C语言来写的话,就可以写为 c=a+b.
/ [- f9 Q) ?+ A9 r0 u5 v# w但是用FPGA来做的话,应该是考虑用全加器的级联,或者什么方法来实现。# a7 R, l& t, r8 f8 G; R
! Y9 q; l6 E0 k0 N& l B
一般来讲,FPGA有自己的编程语言,常用的是Verilog或者VHDL。
8 i2 a# I( x! w" K* |' ]6 e- E- [3 G上述加法器也可以写为 C=A+B. 虽然和C一样,但是实现之后,在FPGA内部被映射成了很多基本门电路,与或非门,寄存器,锁存器等。而C语言写的东西则被编译成了计算机能够处理的机器码,汇编码。
, V- O+ f4 C9 D: Q3 q5 h( _
" z6 l4 O/ s. u$ b一个变成指令,一个变成电路。# ~& c7 w u8 @. k8 V/ ?
0 A1 @2 a$ D2 p+ Y, I& X2 i# lFPGA实现算法和单纯的画电路图又有区别。怎样又快又省资源,省电力的完成FPGA电路的设计,是FPGA实现算法关注的领域。就和软件要关注执行实现和内存占用量一样。3 J' `) U; [7 Q- R, ^
H) K1 {. ~1 t7 D' w总之,最简单的理解,FPGA的算法就是逻辑电路,是硬件。 |
|