硬件加速(FPGA)

一、FPGA:Field Programmable Gate Array 现场可编程门阵列

可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核。

可编程输入/输出单元(I/O)单元

输入/输出(Input/Ouput)单元简称 I/O 单元,它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求,为了使 FPGA 具有更灵活的应用,目前大多数 FPGA 的 I/O 单元被设计为可编程模式,即通过软件的灵活配置,可以适配不同的电气标准与 I/O 物理特性;可以调整匹配阻抗特性、上下拉电阻、以及调整驱动电流的大小等。

基本可编程逻辑单元

组成 FPGA 的两个最基本的部分是组合逻辑以及时序逻辑,分别实现这两个基本部分的结构就是 FPGA 的基本单元。组合逻辑部分一般采用查找表(Look-Up-Table,LUT)的形式,时序逻辑部分一般采用触发器(Flip-Flop,FF)的形式。

Xilinx 7 系列 FPGA 中的可编程逻辑单元叫 CLB(Configurable Logic Block,可配置逻辑块)每个CLB 里包含两个逻辑片(Slice)。

时序逻辑的基本单元采用 D 触发器,这种触发器是一种在时钟的上升沿(或下降沿)将输入信号的变化转送至输出的边沿触发器。

  • 建立时间(setup-time):如果在 CLK=0 时,由于门的传输延时,输入信号没有稳定的保存到主锁存器中,那么当 CLK 从 0 变到 1,输入关闭,输出打开时,主锁存器就只能给输出端口提供一个不稳定的信号。为了避免这种情况的发生,需要输入信号在上升沿到来前已经稳定。
  • 保持时间(hold-time):当 CLK 从 0 变到 1,由于门的传输延时,门不可能立刻关闭,如果此时发生输入信号的变化,那当门关闭后实际保存的信号就可能是变化后的信号(相当于下一时刻的信号将我们需要的当前信号覆盖了)。为了避免这种情况的发生,需要输入信号在上升沿到来后保持一段时间的稳定。

根据数电中的知识,任何一个组合逻辑都可以表示成真值表的形式(逻辑输入对应逻辑输出),也就是任意的真值表所反映的内容都能由组合逻辑实现,查找表(LUT)就能完成这个任务。

存储器

  • 硬宏存储器:硬宏型存储器被称为块存储器(Block RAM,BRAM),实现方法就是以硬宏的形式在架构中嵌入存储器块。
  • 查找表存储器:查找表存储器被称为分布式存储器(Distributed RAM,分布式 RAM),使用 SLICEM 逻辑块查找表中的真值表作为小型的存储器,能实现 BRAM 不能实现的异步访问,但是一般需要小规模存储器时才采用这种方法(不能占用太多的用来实现逻辑的查找表资源)。

存储的一些知识

时钟部分

PLL

DLL

最高效的计算方式应该是怎样的?

现在大家应该都知道了,计算的瓶颈往往不在于运算单元数量的不够或是速度不够高,而是在内存带宽上,也就是数据读写来不及,运算单元喂不饱。那最高效的计算方式自然就是能充分利用片上高速内存,让运算单元等待数据的情况从不发生,同时尽可能的减少了对外部DDR的读写,这也同时降低了功耗,所以既要速度快又要功耗低这两者其实并不矛盾

为什么FPGA比GPU的能耗更低呢?上面讲的是原因之一,还有一个原因是FPGA是硬件可编程,所以它的数据通路是最直接的。比如说用FPGA算两个数相加,那直接把两个数从内存读进来送到加法器那去加就行了。但在GPU中还要进行指令译码,知道是做加法之后还要把这两个数往加法器那里送,这中间数据要经过一些选通器才会被正确的送到加法器那而不是别的运算单元那里。译码,数据经过选通,这些都会产生额外的功耗。而FPGA每次要做的运算都是固定的,所以不需要指令译码,也基本不需要数据的选通。

相关推荐
ALINX技术博客2 小时前
跨越 1819 公里,ALINX 携 AI 异构平台、电子后视镜及 HIL 仿真方案亮相深圳国际电子展
ai·fpga开发·汽车
Enclustra_China2 小时前
FMC为何成为FPGA生态的“万能扩展接口”?
fpga开发·fpga解决方案
tju新生代魔迷6 小时前
Verilog HDL 学习笔记(十七)| 附录B:PLI子程序清单
fpga开发
tju新生代魔迷6 小时前
Verilog HDL 学习笔记(十五)| 第15章 高级验证技术
fpga开发
国产化嵌入式平台解决方案7 小时前
从通用计算到实时协同:基于飞腾D3000M+FPGA的国产VPX计算平台设计
fpga开发·硬件架构·vpx6u
tju新生代魔迷8 小时前
Verilog HDL 学习笔记(十六)| 附录A:强度建模与高级线网类型
fpga开发
minglie121 小时前
j2b描述smp协议
fpga开发
FPGA开源工坊1 天前
FPGA开发技巧–BRAM资源优化
fpga开发
泛联新安1 天前
InfinitPro多FPGA原型验证系统|提升芯片设计验证效率10-100倍
fpga开发
hahaha60162 天前
HLS高层次综合设计技巧--数组
开发语言·嵌入式硬件·算法·fpga开发