0

バスに接続する必要があるいくつかのコンポーネントで構成されるシステムがあります。ただし、システム バスを独立した状態に保つために、システムと特定のバスの間で変換するバス固有のモジュールを介して実行する汎用バス ポートをシステムに与えました。したがって、変換モジュールを切り替えることで、システム全体を異なるバスに簡単に接続できます。

しかし、システムと翻訳モジュールを毎回接続するという面倒なことはしたくありません。したがって、ジェネリック パラメータからモジュールをインスタンス化し、その型をアーキテクチャの出力に使用できるかどうか疑問に思います。

少し図解すると全体が分かりやすくなりますが、私の翻訳モジュールには以下の「署名」があります。

entity translate<BusName>
port(toSystem: out toSystem_t,
  fromSystem: in fromSystem_t,
  toBus: out to<BusName>_t,
  fromBus: in from<BusName>_t
end entity;

私は今、ジェネリックに基づいて、システムと翻訳者を含むエンティティを構築したいと考えています。

entity entireSystem is
  generic(busType := translate<BusName>)
  port(toBus: out to<BusName>_t,
       fromBus: in from<BusName>_t)
end entity

architecture genArc of entireSystem is
   signal toTrans: fromSystem;
   signal fromTrans: toSystem;
begin
   system: system(toTrans,fromTrans)
   translator: translate<BusName>(
       fromTrans,
       toTrans,
       toBus,
       fromBus
   )
end architecture;

私の問題は次のとおりです。汎用パラメーターを使用してコンポーネントを直接インスタンス化できますか?それとも、if generic=xxx generateパスに移動する必要がありますか? 汎用パラメータからポートのタイプを導出できますか? ポートとエンティティを決定するために 1 つのジェネリック パラメータを使用できれば、誤ってエンティティの間違った型を選択することができなくなります。関数を使用してジェネリック パラメーターから型を派生させても問題ありません。

4

2 に答える 2

2

私はそうは思いません。

ジェネリックに基づいてさまざまなものをインスタンス化する場合は、を使用する必要がありますif..generate

ジェネリックがポートのタイプに与える唯一の影響は、幅の変更です。ジェネリックに基づいて(たとえば) anintegerと aを切り替えることはできません。boolean

于 2013-07-31T13:59:46.863 に答える