Ich schaue mir die Digilent RS232-Referenzkomponente an, die unter http://www.digilentinc.com/Products/Detail.cfm?Prod=S3EBOARD für das Spartan 3E Starter Kit erhältlich ist. Ich habe begonnen, eine Testbench zusammenzustellen, aber der VHDL-Code enthält einen „inout“-Port.
Ich habe mir den Code für die RS232-Komponente angesehen und sehe nicht, wie der RDA-Port jemals ein Eingangsport sein kann - RDA ist "Read Data Available", was anzeigt, dass ein Wort zum Lesen bereit ist. Ich sehe das als Ausgabefunktion. Ich dachte, es wäre klar, warum dies nach dem Lesen des Codes "inout" war, aber ich kann nicht erkennen, wie dies überhaupt eine Eingabefunktion ist.
Irgendwelche Gedanken? Danke für eure Hilfe, alle.
Wenn ein Port in VHDL als „out“ deklariert ist, kann er zugewiesen, aber nicht an anderer Stelle innerhalb des Moduls verwendet werden. Insbesondere die Zuweisung in Zeile 155 würde als Fehler gekennzeichnet:
OE <= RDA;
Wenn Sie den Port "inout" machen, wird diese Verwendung zulässig.
Inout-Ports sind jedoch aus einer Reihe von Gründen "chaotisch", und ich versuche, sie nach Möglichkeit zu vermeiden. Ein anderer Ansatz besteht darin, eine zweite Kopie des Signals (z. B. RDA_int
) zu deklarieren, das überall im Modul verwendet wird, und dieses Signal dann nur einmal dem Ausgangsport zuzuweisen.
RDA <= RDA_int;
Trayres
Kohlschmied
Serge
David Tweed
Kohlschmied
Martin Thomson