6

これが可能であることを願っています。次のような再帰コードを記述できるようにしたいと思います。

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;

したがって、各アーキテクチャはそれ自体の小さなバージョンをインスタンス化します。ただし、一般的な「サイズ」の値で、別の実装が必要です。

これは構成で実行できますか?もしそうなら、どのように?

これができるようにしたい理由については、FFT/DCTや同様の変換を計算するための再利用可能なコードを作成できるようにするためです。

4

2 に答える 2

7

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; 
于 2012-12-17T10:15:07.637 に答える
0

私は次のような関数を使用します:

-- convert natural to min vector length
function min_len_uns(arg : natural) return natural is       
begin 
     case arg is

         when 1 | 0 =>
            return 1;
         when others =>
            return 1 + min_len_uns(arg/2);
     end case;
end;
于 2013-04-03T21:54:56.093 に答える