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;