Tag ihr, ich will mich momentan in VHDL einarbeiten. Ein Altera Cyclone II-Board incl. Mikrocontroller ist bereits in Arbeit. Nun habe ich mich an die ersten VHDL-Experimente gewagt. Ein paar popelige Gatter bauen klappt ganz wunderbar, aber sobald Flipflops ins Spiel kommen wirds schwieriger. Die simple Frage, die ich nun habe ist folgende: Warum funktioniert der Code im Anhang nicht? Wenn ich genau das selbe mit gewöhnlichen Gattern mache, klappt es. So aber meckert er "std_logic is not declared". Ich hab das ganze in Altium Designer und Quartus II ausprobiert, nirgends hats funktioniert. Wenn ich aber anstatt eines D-FFs z.B. ein AND-Gatter baue, ist std_logic plötzlich nicht mehr "not declared". Kann mir einer weiterhelfen? übrigens: zum testen hab ich einen Cyclone II EP2C8T144C8N ausgewählt, falls das irgend eine Rolle spielen sollte.
@ Tobias Plüss (hubertus) >ich will mich momentan in VHDL einarbeiten. Ein Altera Cyclone II-Board >incl. Mikrocontroller ist bereits in Arbeit. Willst du das Board selber bauen? Nicht sehr sinnvoll, weder technisch noch ökonomisch. Aber aus Spass an der Freud, meinetwegen. >popelige Gatter bauen klappt ganz wunderbar, aber sobald Flipflops ins >Spiel kommen wirds schwieriger. Die simple Frage, die ich nun habe ist Nicht wirklich ;-) >folgende: Warum funktioniert der Code im Anhang nicht? Wenn ich genau >das selbe mit gewöhnlichen Gattern mache, klappt es. So aber meckert er >"std_logic is not declared". Fang nicht mit den Unsinn mit stdulogic an (mit u), std_logic ist vollkommen ausreichend (ohne u). Und mehrere Entitys in einer Datei kann auch mal fix Probleme machen. Also in eigene Dateien verfrachten, die Software kümmert sich schon um die Projektstruktur. Das mit den Attributen zur Pinzuweisung sollte man lassen, mach das besser über die Tools. MFG Falk
Hallo Falk, warum soll ich mein FPGA-Board nicht selber bauen? Ich weiss dass es nicht ganz einfach ist und man mindestens 4 Layer braucht. Aber das wäre nicht das erste mal... Ausserdem habe ich günstig paar Cyclone II bekommen. Ich weiss, die sind nicht hypermodern und alles, aber für den Anfang sollte das reichen ;) > Fang nicht mit den Unsinn mit stdulogic an (mit u), std_logic ist ... Okay, alles klar. was ist der Unterschied? Leider hat mir der Altium Designer vorgeschlagen, ich solle besser std_ulogic verwenden für den CK. Mit std_logic gings nicht, ebensowenig mit bit. Kann ich die Entities also in verschiedene Dateien splitten, wie in C, und danach irgendwie includen? Oder merkt die Software selber, in welcher Datei welche Entity ist?
@ Tobias Plüss (hubertus) >warum soll ich mein FPGA-Board nicht selber bauen? Weil du dan u.a. an zwei Fronten kämpfst. Hardware und VHDL. > Ich weiss dass es >nicht ganz einfach ist und man mindestens 4 Layer braucht. Aber das wäre Zwei reichen, wenn es kein BGA ist. >nicht das erste mal... Ausserdem habe ich günstig paar Cyclone II >bekommen. Ich weiss, die sind nicht hypermodern und alles, aber für den >Anfang sollte das reichen ;) Mehr als genug. >> Fang nicht mit den Unsinn mit stdulogic an (mit u), std_logic ist ... >Okay, alles klar. was ist der Unterschied? Hab ich im Detail nicht im Kopf, praktisch ist er aber unwesentlich. >Leider hat mir der Altium Designer vorgeschlagen, ich solle besser >std_ulogic verwenden für den CK. Mit std_logic gings nicht, ebensowenig >mit bit. Scheiss tool, die immer schlauer sein wollen. OK, für CLK lassen wir das mal gelten, alles andere aber std_logic. >Kann ich die Entities also in verschiedene Dateien splitten, wie in C, >und danach irgendwie includen? Oder merkt die Software selber, in >welcher Datei welche Entity ist? Merkt die Software selber. MfG Falk
Okay danke erstmal Falk. habs gleich getestet. Und tatsächlich scheint es zu funktionieren! herzlichen Dank auch. Kannst du mir übrigens noch schnell verraten, wie man ein 8fach-D-FF machen kann sodass ich dann ein Byte darin speichern kann?
@ Tobias Plüss (hubertus) >Kannst du mir übrigens noch schnell verraten, wie man ein 8fach-D-FF >machen kann sodass ich dann ein Byte darin speichern kann? Sollte das nicht einfach zu machen sein, wenn du schon ein 1 Bit DFF hast?
1 | signal my_byte: std_logic_vector(7 downto 0); |
2 | |
3 | process(clk) |
4 | begin
|
5 | if rising_edge(clk) then |
6 | my_byte <= data; |
7 | end if; |
8 | end process; |
MFg Falk
aaaach so macht man das. Danke Falk, sehr nett. Ich bastel jetzt noch ein wenig herum, ich will nämlich noch Tristate-Triber implementieren (für bidirektionale Pins) und noch ein paar andere Sachen. also dann, einen schönen Abend wünsche ich allerseits, Grüsse Tobias
Der Unterschied zwischen std_logic und std_ulogic besteht darin das std_ulogic der Basistyp des gesamten std_logic_1164 ist. Das u bedeutet dabei unresolved. std_logic ist dagegen resolved. Das heißt es gibt eine Funktion die den Wert eines Signals s berechnet wenn s von mehreren Quellen getrieben wird. Das geschieht mittels einer zweidimensionalen Tabelle. Findest Du im Quelltext zum Package std_logic_1164. z.B. http://tams-www.informatik.uni-hamburg.de/vhdl/packages/ieee_1164/std_logic_1164.vhd Der Vorteil bei unresolved-Typen ist, das man Fehler in der Simulation (angeblich) leichter findet. Nachteil ist das viele Simulatoren auf resolved optimiert sind, aber auf unresolved nicht. Das macht sich durch eine höhere Simulationsgeschwindigkeit bemerkbar.
bzgl ulogic hab ich gehört, dass es für sicherheitskritische teile gedacht war, wo man nicht über eine fehlerhafte resolution function stolpern will. mein chef hat sich in seiner früheren firma ein wenig damit beschäftigt und wollte das für teile die hohe anforderungen in der mission time haben durchsetzen. das problem laut seinen aussagen ist, dass dann code von zulieferern kommt, die alles mit std_logic gemacht haben (wie fast jeder vhdl-code den ich bisher gesehen habe) und dann muss man für die interfaces erst wieder die datentypen konvertieren, was das ganze arbeitsintensiver macht und eine weitere gelegenheit für fehler schafft. insofern eine akademische maßnahme die sich in der realität bei weitem nicht durchgesetzt hat.
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.