使用VHDL中的函数进行合成

时间:2015-03-13 16:54:38

标签: function vhdl synthesis

我现在使用VHDL中的函数,主要是在测试平台中,很少在合成项目中使用,我对此非常满意。

然而,我想知道对于要合成的项目,它真的是一个聪明的举动(主要是LE使用方面吗?)我已经在线阅读了很多相关内容,但是我找不到令人满意的东西。

例如,我读过类似的内容:"每次调用函数时都会合成函数!!"。真的是这样吗? (我认为它更像是一个实例化的组件,但其输入和输出可以从设计中的不同位置访问,但我想这可能是不正确的。)

对于曾经使用过的函数,例如,在这个过程中直接编写VHDL和编写VHDL会有什么变化? (在LE使用方面?)。

2 个答案:

答案 0 :(得分:2)

硬件中的电路,例如FPGA,一直在任何地方执行,其中比较CPU的程序一次只执行一个地方。这允许CPU上的程序重用不同数据的程序代码,其中硬件中的电路必须具有足够的资源来始终处理所有数据。

因此,用VHDL编写的电路通常由综合工具翻译为大规模并行结构,允许所有设计的并发操作。 VHDL语言是为了并发执行而创建的,这是与普通编程语言的主要区别。

因此,实现具有功能的算法与使用单独逻辑实现相同算法的设计的设计将具有完全相同的大小和速度,因为综合工具将功能扩展到专用逻辑以便提供所需的硬件。

话虽如此,可以为不同的数据重用相同的硬件,但设计人员通常必须明确地创建设计以支持这一点,从而在时间允许时交错不同的数据集。

最后,正如scary_jeff所指出的那样,使用函数是一个聪明的举动,因为在大小或速度方面没有什么可以放松,但创建可管理设计的所有优点。但请注意,函数不能包含状态,因此只能为触发器之间的组合逻辑创建函数,这通常会限制可能的复杂性以满足时序要求。

答案 1 :(得分:2)

是的,您应该使用功能和程序。

许多人和公司在可综合代码中使用函数和过程。一些编码风格没有充分理由不允许使用函数。如果您对VHDL中的某个构造感到不确定(在本例中为:函数),只需键入一个小示例并检查合成结果。

功能非常强大,可以帮助您轻松创建更好的硬件。与所有强大的东西一样,你也可以使用函数创建非常糟糕的代码(和糟糕的综合结果)。