2013-10-16 11 views
11

Nun oft in VHDL merke ich, dass eine bestimmte Komponente mehrere Ausgänge hat. Dh in einem unserer Beispiele erhielten wir folgende Komponente:Wie man Ausgangsports mit Portkarten ignoriert

COMPONENT eight_bitadder 
    PORT (a, b: in std_logic_vector(7 downto 0); 
     f: in std_logic; 
     C: out std_logic_vector(7 downto 0); 
     o, z: out std_logic); 
END COMPONENT; 

wobei z bestimmt, ob das Ergebnis 0 ist und o bei Überlauf auslöst.

Jetzt möchte ich diesen Addierer verwenden, aber das tatsächliche Ergebnis ist nicht von Bedeutung, ich möchte nur überprüfen, ob das Ergebnis "0" ist. Ich könnte natürlich ein Dummy-Signal hinzufügen und den Port für dieses Signal speichern, was jedoch unnötig kompliziert erscheint und zusätzliche Komponenten während der Synthese hinzufügen könnte.

Antwort

10

Wenn Sie die Komponente instanziieren, können Sie die Ausgabeports, die Sie nicht interessieren, offen lassen. Das einzige Signal, das Ihnen unten am Herzen liegt, ist "Überlauf".

BEARBEITEN: Beachten Sie, dass die Synthese-Tools alle Ausgänge, die nicht verwendet werden, optimieren.

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    c => open, 
    o => overflow, 
    z => open 
    ); 
+0

So offen ist ein spezielles Schlüsselwort - kann dies auch mit der Syntax verwendet werden, wo Sie die Ports nicht explizit benennen, und verwenden Sie die Reihenfolge? (nur um Verifizierung/Klarheit bitten)? – paul23

+0

Ja, "offen" ist in VHDL reserviert. Ehrlich gesagt habe ich das nie probiert, probier es und lass mich wissen wie es geht. Ich erkläre das Port-Mapping immer explizit. – Russell

+1

gut getestet und ja, ich konnte es kompilieren und synthetisieren, auch mit der nicht expliziten Benennung. Danke noch einmal. – paul23

3

Sie können auch wählen, nicht eine Ausgabe an etwas zu binden, wie so:

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    o => overflow 
); 

Beachten Sie, dass ich einfach nicht Ausgänge c und z im Hafen Karte enthalten. Einige mögen über die Klarheit darüber debattieren (da es vielleicht nicht klar ist, dass die Ausgaben c und z existieren), aber es reduziert auch den Code auf das Notwendige.

+0

Beachten Sie, dass Sie möglicherweise auch die Zeilen aus der Komponentendeklaration entfernen oder den zu entfernenden Ports Standardwerte zuweisen müssen. Wenn Sie dies nicht tun, können beim Kompilieren Fehler auftreten. – TW80000

Verwandte Themen