Hallo, ich habe als Eingang einen AD-Wandler, der mir Zweierkomplement-Daten liefert. Diese entsprechen ja dem SIGNED-Datentyp. Kann ich zur Verarbeitung der Daten im FPGA in der Entitybeschreibung die entsprechenden Ports gleich als SIGNED definieren? Oder geht da nur STD_LOGIC_VECTOR und ich muss es dann intern umrechnen? Gleich noch 'ne Frage zu SIGNED, sehe ich das richtig, dass sowohl SIGNED als auch UNSIGNED zunächst erstmal einfach STD_LOGIC-Daten sind (bzw. sie gleich behandelt werden) und der Unterschied nur dann zu Tage tritt, wenn ich mit ihnen rechne, also sie addiere oder subtrahiere?
Natürlich kannst Du in Deiner Port-beschreibung ein Signed-Datentypen nehmen. Man kann sich jedoch darüber streiten ob das ein guter Entwurfsstil ist. Ja, Signed und unsigned sind erstmal nur Vektoren vom Typ std-logic. Der Unterschied liegt nur in der Interpretation. Bei signed wird ein Vektor als zweier-komplement Darstellung betrachtet.
Mathi wrote: > Natürlich kannst Du in Deiner Port-beschreibung ein Signed-Datentypen > nehmen. Man kann sich jedoch darüber streiten ob das ein guter > Entwurfsstil ist. Danke für deine Antwort. :) Inwiefern kann das schlechter Stil sein? Ist es nicht resourcen- und (Lauf-)zeitsparender als die Daten zuerst als STD_LOGIC einzulesen und sie dann, vielleicht noch an mehreren Stellen, an denen berechnet wird, umzuwandeln?
Resourcen spart das keine, höchstens ein paar Bits auf deiner Festplatte, weil der Code geringfügig kleiner wird. Die Daten werden durch die Typumwandlung ja nicht wirklich konvertiert, nur anders interpretiert.
Der Punkt dabei ist, das Du einen weiteren Typen in deinen Schnittstellen hast. Ich kenne Firmen, in denen das aus diesem Grund verboten ist. Dort sind als Schnittstellen nur std_logic und std_logic_vector erlaubt. Wie gesagt: Das ist Geschmackssache! Resourcensparend ist das nicht. Höchstens vielleicht in der Simulation. Nur wirst Du, falls es einen Unterschied gibt, den nie bemerken ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.