Hallo liebe Fachmänner/frauen, gestern (13.08.13) hat jemand den Link zu einem kostenlosen VHDL-Buch ins Forum gestellt (Beitrag "VHDL-Buch kostenlos herunterladbar"). Im Anhang gibt es einige nützliche Hinweise, um Stolperfallen zu vermeiden. Darunter ist auch die Aussage zu finden, dass man "std_logic" als komplexen Datentyp nur dort verwenden soll, wo es unbedingt nötig ist. Für alle "einfachen" Signale wie bspw. Clock/Reset sollte man den "bit"-Datentyp verwenden (Anhang, Hinweis 2). Unter Hinweis 5 kann man nachlesen, wie man ein Signal auf die fallende/steigende Flanke abfragt (clk'event and clk ='1'). Als Begründung für diese Schreibweise ist folgendes angegeben: > Die Funktionen rising edge () und falling_edge () sind nur fur Signale des > Datentyps std_logic deklariert, dieser Datentyp sollte jedoch nach 2. nicht > als Taktsignal verwendet werden. Bisher habe ich für Taktsignal ausschließlich std_logic, zusammen mit diesen Funktionen verwendet. Habe ich das bisher immer "falsch" (bzw. nicht stilgerecht) gemacht, oder ist das Buch in dieser Hinsicht einfach etwas antiquiert?
Früher (tm) hatten diese Datentypen den Vorteil einer kürzeren Simulationszeit, weil keine Auflösungstabellen zu bearbeiten waren... Ich verwende aber heute "im echten Leben" ausschließlich std_logic und habe nur bei Studenten/Praktikanten/undCo (von der Hochschule vorgeschädigt) die Datentypen bit und std_ulogic gesehen.
Zu Problemen kann es bei gemeinsamer Verwendung von std_logic und "clk'event and clk='1'" kommen, da hier z.B. auch eine Änderung von "U" auf "1" als steigende Flanke erkannt wird. Dadurch kommt es zu Abweichungen zwischen Simulation und Synthese. Die Funktionen rising_edge() und falling_edge() berücksichtigen das aber. Ich persönlich verwende eigentlich immer die Kombination rising_edge() und std_logic und bin dabei noch nie auf Probleme gestoßen.
lufu schrieb: > Darunter ist auch die Aussage zu finden, dass man "std_logic" als > komplexen Datentyp nur dort verwenden soll, wo es unbedingt nötig ist. > Für alle "einfachen" Signale wie bspw. Clock/Reset sollte man den > "bit"-Datentyp verwenden (Anhang, Hinweis 2). Unter Hinweis 5 kann man > nachlesen, wie man ein Signal auf die fallende/steigende Flanke abfragt > (clk'event and clk ='1'). Als Begründung für diese Schreibweise ist > folgendes angegeben: >> Die Funktionen rising edge () und falling_edge () sind nur fur Signale des >> Datentyps std_logic deklariert, dieser Datentyp sollte jedoch nach 2. nicht >> als Taktsignal verwendet werden. > > Bisher habe ich für Taktsignal ausschließlich std_logic, zusammen mit > diesen Funktionen verwendet. Habe ich das bisher immer "falsch" (bzw. > nicht stilgerecht) gemacht, oder ist das Buch in dieser Hinsicht einfach > etwas antiquiert? Wenn da steht das man std_logic nur verwendete wo unbedingt nötig, dann heisst es ebene das bei Taktsignalen std_logic nötig ist. Das Beispiel mit rising-edge betont noch mal die Notwendigkeit. Ich sehe nicht wo diese Aussage irgendwo antiquiert sein sollte. Höchstens das Alternative bit zu std_logic auch noch ein wenig zu viel des Guten ist und man ggf. auch gleich auf boolean wechseln kann. Ach ja und man sollte in Entscheidung einbeziehen ob das Code für die Simu (vereinfachte auf '0' '1' reduzierte Signalmodelle) oder für die Synthese (physikalisch/ logisch realistischeres Modell mit Tristate, unbelegt, PullUp, PullDown, ...) gedacht ist. MfG, MfG,
Die Herren Reichardt und Schwarz als echte Professoren machen das an ihrer Hochschule eben so, weil sie sich im echten Leben schlecht auskennen. Allen anderen machen es mit std_logic. Das ist ein gewisser Nachteil dieses Buches.
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.