記事 ID: 000077247 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/28

Quartus® II ソフトウェアが双方向ピンを出力専用ピンに変換する理由

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

Quartus® II ソフトウェア・バージョン 6.0 以降では、VHDL の方向信号をより厳密に合成します。VHDL ルールを強制するため、Quartus® II ソフトウェアは誤ってコーディングされた双方向バッファーを出力ピンに変換します。

例えば、次のコードに示すように双方向バッファーを実装した場合、Quartus® II ソフトウェアは (バージョン 6.0 以降) の出力ピンを合成します。

process(mdio_out,mdio_oe)
begin
    if (mdio_oe = '1') then
        mac_mdio <= mdio_out;
    else
        mac_mdio <= 'Z';
    end if
end process;

mdio_oe <= NOT(mdio_oe_n);
test_out <= mac_mdio and test;
mii_mdio <= mac_mdio;

mac_mdioが信号で、mii_mdioが双方向ポートの場合、上記の最後の割り当ては方向です。書き込まれたように、データをmii_mdio から mac_mdio 流すことは不可能です。バージョン 6.0 以降、Quartus® II ソフトウェアは、mac_mdioとmii_mdioの間にバッファーを挿入することで、この VHDL の割り当ての方向を強制します。このバッファーは、RTL ビューアーにトライステート・バッファーを備えたシリーズの方向バッファーとして表示され、目的の双方向ピン (mii_mdio) は出力として合成されます。

以前のバージョンの Quartus® II ソフトウェアでは、上記のコードを双方向ピンとして合成するため、このようなタイプの割り当ての指向性を強制しません。

VHDL 規格に準拠するには、上記の例の最後のシグナル割り当てステートメントを削除し、次のようにコードを記述します。

process(mdio_out,mdio_oe)
begin
    if (mdio_oe = '1') then
        mii_mdio <= mdio_out;
    else
        mii_mdio <= 'Z';
    end if;
end process;

mdio_oe <= NOT(mdio_oe_n);
test_out <= mii_mdio and test;

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。