VHDL递归组件/实体

Bob*_*Bob 6 recursion configuration vhdl

我希望这是可能的.我希望能够像这样编写递归代码:

entity myEntity
    generic (
      size : natural  -- a power of 2
    )
    port (
       -- whatever
    );
end;

architecture structural of myEntity is
begin
    smallerEntity : entity component.myEntity(structural)
        generic map (
            size => size/2
        );
        port map ( 
            ... 
        );
end;
Run Code Online (Sandbox Code Playgroud)

因此,每个体系结构都会实例化一个较小的版本.在通用"大小"的某个值,我希望有一个不同的实现.

这可以通过配置来完成吗?如果是这样,怎么样?

至于为什么我希望能够这样做 - 所以我可以构建可重复使用的代码来计算FFT/DCT和类似的变换.

Hen*_*rik 6

可以在VHDL中使用递归.但是您需要将实例化封装在if-generate语句中.就像是:

recursive_structure : if size/2 > 0 generate 
    smallerEntity : entity <library_name>.myEntity(structural)
        generic map (
            size => size/2
        )
        port map ( 
            ... 
        );
end generate recursive_structure; 
Run Code Online (Sandbox Code Playgroud)