在VHDL中为FPGA实现以下操作/功能有多难?

时间:2015-09-18 10:36:06

标签: vhdl fpga firmware

作为固件工程师,您如何比较以下操作的计算成本(可能需要的资源量)

  • 加/减
  • 乘法
  • 三角函数,例如余弦
  • 平方根

对于具有32位计算的浮点。

2 个答案:

答案 0 :(得分:3)

从硬件(非固件)的角度回答:遗憾的是,您的问题没有简单的答案。您列出的每个功能都有许多不同的硬件实现,通常介于小 - 慢和大 - 快之间。此外,它取决于您的目标FPGA,因为它们中的一些将这些功能嵌入到硬宏中,所以问题不再是它们的成本,而是我在这个FPGA中是否有足够的它们

作为部分答案,您可以采用以下方法:使用最简单的组合实现,不使用任何硬宏,整数或定点N - 位加法器/减法器成本O(N) N x N - 比特乘数O(NxN)。大致。

对于其他功能,回答非常困难,需要考虑的变量太多(固定/浮点,延迟,吞吐量,精度,范围......)。假设你为所有人做出类似的选择,我会说:add < mul < div < sqrt < trig。但老实说,不要把这当作理所当然。例如,如果使用浮点数,加法器可能比乘法器更接近甚至更大,因为它需要尾数对齐,即桶形移位器。

答案 1 :(得分:1)

具有一点硬件设计知识的固件工程师可能会为每个功能使用预制内核。 Xilinx,Altera等提供可参数化的内核,可以执行您指定的大多数功能。核心的参数可能包括输入大小和指定操作所采用的周期数等。每个核心使用的资源将根据配置以及为其创建核心的供应商和相应的FPGA系列(例如Altera Cyclone 5或Xilinx Artix 7)而有很大差异。核心所具有的延迟也需要成为您决策的一个因素,更高速度的FPGA系列可以以更快的时钟速率运行,从而减少操作所需的时间。 获得实际估算的方法是安装供应商工具(例如Xilinx的Vivado或Altera的Quartus),并使用这些工具生成所需的每种类型的内核。您需要在您正在评估的系列中选择一个精确的FPGA部件。选择一个具有多个引脚的引脚,以避免FPGA上的I / O耗尽。然后为您正在评估的每个核心合成并实现一个设计。最简单的设计将只有您正在评估的核心,并将其输入和输出映射到FPGA I / O引脚。实现结果将为您提供设计所需的资源数量以及设计可以运行的最大时钟频率。