Artikel-ID: 000077247 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 28.08.2007

Warum konvertiert die Quartus II Software meine bidirektionale Pin in eine pin, die nur für den Ausgabeausgang verwendet wird?

Umgebung

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Beschreibung

Die Quartus® II Software Version 6.0 und neuer stellt VHDL-Richtungssignale strikter zusammen. Da dadurch die VHDL-Regeln erzwungen werden, konvertiert die Quartus II Software falsch codierte bidirektionale Puffer in Ausgabestifte.

Wenn Sie beispielsweise einen bidirektionalen Puffer implementieren, wie im folgenden Code gezeigt, wird von der Quartus II Software ein Ausgabestift (ab Version 6.0) hergestellt.

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;

Wenn mac_mdio ein Signal ist und mii_mdio der bidirektionale Port ist, ist die letzte Zuweisung oben Richtungsrichtung. Wie geschrieben ist es unmöglich, Daten von mii_mdio zu mac_mdio zu fließen. Ab Version 6.0 erzwingt die Quartus II Software die Richtungsnatur dieser VHDL-Zuweisung, indem ein Puffer zwischen mac_mdio und mii_mdio eingefügt wird. Dieser Puffer wird im RTL Viewer als reihenweiser Richtungspuffer mit dem Tri-State-Puffer angezeigt, und der vorgesehene bidirektionale Pin (mii_mdio) wird nur als Ausgabe hergestellt.

Frühere Versionen der Quartus II Software erzwingen nicht die Richtungsart dieser Art von Zuweisungen, wodurch der obige Code als bidirektionale Pins angezeigt wird.

Um dem VHDL-Standard zu entsprechen, entfernen Sie die letzte Signalzuweisungsaussage im oben genannten Beispiel und schreiben Sie den Code wie folgt:

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;

Zugehörige Produkte

Dieser Artikel bezieht sich auf 1 Produkte

Intel® programmierbare Geräte

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.