2013-10-16 4 views
11

よくよくVHDLで特定のコンポーネントに複数の出力ポートがあることがわかりました。ポートマップで出力ポートを無視する方法

COMPONENT eight_bitadder 
    PORT (a, b: in std_logic_vector(7 downto 0); 
     f: in std_logic; 
     C: out std_logic_vector(7 downto 0); 
     o, z: out std_logic); 
END COMPONENT; 

結果が0である場合、Zは決定、及びoはオーバーフローでトリガ:我々は、以下の成分を与えられた我々の例のいずれかで、すなわち。

私の場合、この加算器を使用したいと考えていますが、実際の結果は重要ではなく、結果が「0」であるかどうかを確認したいだけです。もちろん、ダミー信号を加えてこの信号にポートを格納することはできますが、それは不必要に複雑に思えますが、合成中に余分なコンポーネントが追加される可能性があります。

答えて

10

コンポーネントをインスタンス化するときは、気にしない出力ポートを開いたままにすることができます。あなたが気にしている唯一の信号は「オーバーフロー」です。

編集:合成ツールは使用されていない出力を最適化します。

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    c => open, 
    o => overflow, 
    z => open 
    ); 
+0

openは特別なキーワードです。これは、明示的にポートに名前を付けず、その注文を使用する構文でも使用できますか? (ちょうど確認/明快さを求める)? – paul23

+0

はい、 "オープン"はVHDLで予約されています。正直なところ私はそれを試したことはありません、それを打つと私にそれがどうなるか教えてください。私は常に明示的にポートマッピングを宣言します。 – Russell

+1

はうまくテストされています。私はコンパイルして合成することができます。再度、感謝します。 – paul23

3

また、そのようなものへの出力を結ぶないように選ぶことができる:私は単にポートマップで出力CとZが含まれていませんでした

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    o => overflow 
); 

注意してください。 (出力cとzが存在することは明らかでない可能性があるので)明示的に議論するかもしれないが、コードを必要なものだけに減らす。

+0

コンポーネント宣言から行を削除するか、削除するポートにデフォルト値を割り当てる必要があることに注意してください。そうしないと、コンパイルしようとするとエラーが発生する可能性があります。 – TW80000

関連する問題