|
! K& ]6 B0 O u' I( z6 r
算法有软件的算法,有硬件的算法。) V* s9 }8 g) N0 o
软件的算法一般都是用软件比如C语言,JAVA等来写。这个很好理解,就叫软件算法的实现。4 f1 X! Y1 w8 s5 C; C- j
, Z/ r2 j* X8 ?3 p7 eFPGA是可编程逻辑器件。FPGA主要用来实现逻辑电路(数字电路),所以说用FPGA实现某算法就是要用FPGA设计一个数字电路,该电路可以实现这个算法的运算。5 `; `" ~5 E7 C9 n9 U
$ `& S5 o" j( B5 _6 A3 u
比如说加法器。用软件C语言来写的话,就可以写为 c=a+b.& e. t \; u9 }2 @5 H6 e+ x
但是用FPGA来做的话,应该是考虑用全加器的级联,或者什么方法来实现。
* q. `6 p$ @* f5 {+ {+ d+ i, U6 I- X8 E( e
一般来讲,FPGA有自己的编程语言,常用的是Verilog或者VHDL。
4 @: D* @0 n" Z# w; C' j上述加法器也可以写为 C=A+B. 虽然和C一样,但是实现之后,在FPGA内部被映射成了很多基本门电路,与或非门,寄存器,锁存器等。而C语言写的东西则被编译成了计算机能够处理的机器码,汇编码。
, P8 V9 C) T4 E# n% K/ f8 c/ v, s [: w7 b' O9 b
一个变成指令,一个变成电路。
# r4 ~ Z9 E0 H0 V' l$ g7 E; T7 @" g) u* N4 S) G0 @1 ^
FPGA实现算法和单纯的画电路图又有区别。怎样又快又省资源,省电力的完成FPGA电路的设计,是FPGA实现算法关注的领域。就和软件要关注执行实现和内存占用量一样。
# `% {- w9 a K* ?% {/ _# n" \$ q/ F1 U: B4 E
总之,最简单的理解,FPGA的算法就是逻辑电路,是硬件。 |
|