什么是FPGA?为什么FPGA会如此重要?( 三 )

结果:

什么是FPGA?为什么FPGA会如此重要?

文章插图
 

什么是FPGA?为什么FPGA会如此重要?

文章插图
 
可以看到,这个和一般的高级语言差别比较大 。
学习FPGA必须有过硬的硬件电路基础 。
例2:
什么是FPGA?为什么FPGA会如此重要?

文章插图
 
上述为lattice的一款FPGA架构,你可以把它想象成一块放满电子元件的硬件电路板,图中“电路板”上的元件有IIC和SPI硬核接口“器件”,有NVCM程序存储“器件”,有RAM数据存储“器件”,还有最小单元的LUT(查找表)器件 。
一般FPGA工程师会使用硬件描述语言Verilog或者VHDL对FPGA进行“编程”,之后,再经过厂家提供的FPGA开发工具(Diamond或Radiant、vivado)的综合、布局、布线,会产生bit文件或bin文件 。
如果工程师将最终产生的bit文件或bin文件下载到FPGA中,就相当于一位硬件工程师,在FPGA芯片这块已经放置了“元件”的“电路板”上,进行了布线操作 。(也就是把毫无关联的与器件,用铜线连接起来)
下载程序后的FPGA,我们就不能简单称之为“电路板”了 。
举个例子,FPGA实现的功能是SPI转并口,那么这块FPGA就可以称为“spi接口转换板” 。
当然,FPGA和“电路板”终究是不同的,FPGA可以进行重复编程,相当于一块可以反复布线的电路板 。
七、为什么效率会如此之高?1. FPGA与GPU的区别本质上是体系结构的区别CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存 。
FPGA 本质上是无指令、无需共享内存的体系结构 。
  1. CPU与FPGA区别之(指令): CPU结构——有指令: 冯氏结构中,由于执行单元(如 CPU 核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑 。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此 GPU 使用 SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU 也支持 SIMD 指令 。 FPGA结构——无需指令: 而 FPGA 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令 。
  2. CPU与FPGA区别之(内存) CPU结构——仲裁与共享内存: 冯氏结构中使用内存有两种作用 。一是保存状态,二是在执行单元间通信 。由于内存是共享的,就需要做访问仲裁; 为了利用访问局部性,每个执行单元有一个私有的缓存,这就要维持执行部件间缓存的一致性 。
FPGA结构——无需仲裁与共享内存: 对于保存状态的需求,FPGA 中的寄存器和片上内存(BRAM)是属于各自的控制逻辑的,无需不必要的仲裁和缓存 。对于通信的需求,FPGA 每个逻辑单元与周围逻辑单元的连接在重编程(烧写)时就已经确定,并不需要通过共享内存来通信 。
FPGA 同时拥有流水线并行和数据并行,而 GPU 几乎只有数据并行(流水线深度受限) 。
  1. FPGA流水线与数据并行处理: 例如:处理一个数据包有 10 个步骤,FPGA 可以搭建一个 10 级流水线,流水线的不同级在处理不同的数据包,每个数据包流经 10 级之后处理完成 。每处理完成一个数据包,就能马上输出 。
  2. GPU数据并行处理: 而 GPU 的数据并行方法是做 10 个计算单元,每个计算单元也在处理不同的数据包,
然而所有的计算单元必须按照统一的步调,做相同的事情(SIMD,Single Instruction Multiple Data) 。
这就要求 10 个数据包必须一起输入、一起输出,输入输出的延迟增加了 。
总结一句话,很多算法如果用纯软件实现,需要很多条指令才能完成,如果用FPGA,只需要在有限个时钟周期即可完成,速度快的不是一点半腥 。
八、收入FPGA军品使用非常广泛,基本上只要涉及无线通信的产品都会涉及到FPGA开发 。
尤其在高校里,应用非常广,这个领域,特别容易发论文(博士论文)
还有一些其他领域都是些小公司,工控机器人,3d成像,裸眼3d公司,led拼接屏公司,
通信领域用的比较多,还有些大数据的,比如说腾讯和百度也有类似的岗位做数据挖掘
一口君随手截取了某App发布的南京、上海、深圳的FPGA岗位信息 。
什么是FPGA?为什么FPGA会如此重要?


推荐阅读