文章 ID: 000077247 內容類型: 疑難排解 最近查看日期: 2007 年 08 月 28 日

為什麼 Quartus II 軟體將我的雙向針腳轉換為僅輸出針腳?

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
描述

Quartus® II 軟體版本 6.0 和更新版本更嚴格地將 VHDL 方向訊號合成。由於 Quartus II 軟體強制執行 VHDL 規則,因此將編碼錯誤的雙向緩衝區轉換為輸出針腳。

例如,如果您執行下列代碼所示的雙向緩衝區,Quartus II 軟體會合成輸出針腳(從版本 6.0 開始)。

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

mdio_oe test_out mii_mdio

如果mac_mdio是訊號,而mii_mdio是雙向埠,上面的最後一個作業是方向性。書面來說,資料不可能 mii_mdio傳輸 mac_mdio。從 6.0 版本開始,Quartus II 軟體在mac_mdio和mii_mdio之間插入緩衝區,強化了此 VHDL 作業的方向性。此緩衝區出現在 RTL Viewer 中,作為三狀態緩衝區系列中的方向緩衝區,而預期的雙向針腳 (mii_mdio) 僅作為輸出進行合成。

Quartus II 軟體的早期版本無法強制執行這些作業類型的方向性,將上述代碼合成為雙向針腳。

若要符合 VHDL 標準,請移除上述範例中的最後一個訊號分配聲明,並寫下下列代碼:

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

mdio_oe test_out

相關產品

本文章適用於 1 產品

Intel® 可程式裝置

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。