0

VHDL 設計に関する質問があります。入力を受け取るN個の同様のエンティティがあり、それぞれがSTD_LOGIC出力を生成します。

例:

entity example1 is
begin
    ...
    result_1 : out std_logic;
end example1;

entity example2 is
begin
    ...
    result_2 : out std_logic;
end example2;

...

V(i) = result_i が保持されるように、これらすべての単一ビット結果を 1 つの UNSIGNED(N - 1 downto 0) 結果信号 V に集約する方法を探しています。

現在、私のアプローチは次のようになります。

entity ResultAggregation is
   port (
      result_1 : in std_logic;
      result_2 : in std_logic;
      aggregate_results : out unsigned(1 downto 0)
   );
end ResultAggregation;

architecture Behavioral of ResultAggregation is
begin
   aggregate_results <= result_2 & result_1;
end Behavioral;

このアプローチはかなり不器用だと思います。私が探しているのは、より自動化されたソリューションです。たとえば、適切なピンが生成されるように数 N を指定できます。

これはかなり一般的な質問であることは承知していますが、誰かが賢い解決策を知っている場合はお知らせください。

前もってありがとう、
スヴェン

4

2 に答える 2

0

ブロックが同一の場合は、for/generate ステートメントを使用します。

n_examples: for i in 0 to (N-1) generate
   inst_example: example_entity
      port map(
          ...
          result => V(i);
      );
end generate n_examples;

ブロックのエンティティが類似しているが機能が異なる場合でも、このアプローチを使用できます。

...  
inst_ex1: example1 
port map(
    ...,
    result_1 => V(1)
);

inst_ex2: example2 
port map(
    ...,
    result_2 => V(2)
);
....
于 2013-04-02T12:01:48.327 に答える