Hallo, um meinen SDRAM-Kontroller zu testen habe ich die Micron's SDRAM Model MT48LC8M16A2.V ein wenig erweitert. Jetzt ist es möglich den Speicher mittels "initial $readmem" mit bestimmte Daten zu füllen. Gibt es so was auch bei VHDL? Leider konnte ich keine Infos dazu finden. MfG
Ganz einfach über Dateizugriffe...Datei aufmachen und auslesen. Einfach mal hier kucken: http://www.stefanvhdl.com/ oder das pdf hier http://people.sabanciuniv.edu/erkays/el310/io_10.pdf
hjk schrieb: > Ganz einfach über Dateizugriffe...Datei aufmachen und auslesen. Naja, ganz so einfach wie bei Verilog ist es nicht. Man muß die Daten noch interpretieren. Dafür kann man sich mit VHDL File-Reader für alles mögliche bauen: binär, ASCII/dezimal, ASCII/binär, ASCII/hex, Intel-Hex... (BTDT) Duke
Duke Scarring schrieb: > Naja, ganz so einfach wie bei Verilog ist es nicht. > Man muß die Daten noch interpretieren. > > Dafür kann man sich mit VHDL File-Reader für alles mögliche bauen: > binär, ASCII/dezimal, ASCII/binär, ASCII/hex, Intel-Hex... (BTDT) Auch das ist mit Verilog wesentlich einfacher, da man die relevante Funktionalität der C stdio kopiert hat. -- Marcus
Am einfachsten: ein kleines Skript schreiben das aus einer rohen Binärdatei eine VHDL-Datei mit einem Array baut.
Das setzt jedoch zwingend ein recompilieren voraus. Verstehe aber nicht was schwierig an den VHDL File Operationen sein soll...hat jemand mal ein Beispiel? Hatte bisher nie Probleme damit und schon einiges gemacht: - Bitmap einlesen - Assembler files - Text für Interpreter einlesen - Kommunikation mit anderen Prozessen inklusive Handshake - Ausgabe als c header file etc Wo genau sind da Schwierigkeiten?
hjk schrieb: > Verstehe aber nicht was schwierig an den VHDL File Operationen sein > soll... hat jemand mal ein Beispiel? > Hatte bisher nie Probleme damit und schon einiges gemacht: ... Hast du mal ein Beispiel? https://www.mikrocontroller.net/search?query=fileio+textio
Für was genau? Kann gerne was beisteuern wenn es ein konkretes Problem gibt. Wenns nur irgentein Beispiel sein soll, siehe Anhang. Dort wird ein Bitmap ausgelesen, bearbeitet und zurück geschrieben. Nicht unbedingt sauber geschrieben, bedingt durch rumtesten, kann man ggf aufräumen.
hjk schrieb: > Für was genau? > Kann gerne was beisteuern wenn es ein konkretes Problem gibt. Wofür genau brauchst Du die "wait for 5 ns;"? Ist das wegen der realen File-Ausgabe?
1 | std_buffer := character'val(to_integer(unsigned(CONV_STD_LOGIC_VECTOR(bit'pos(next_vector(0)), 8)))); |
Man muss VHDL schon lieben. Hat eine Weile gedauert, bis ich den relevanten Teil dieser Zeile gefunden hatte. Wo kommt eigentlich die read() Funktion her? Ich konnte auf die Schnelle keine Implementierung finden, die einen Ausgangs Parameter besitzt, der actual_len entspricht. -- Marcus
Michael schrieb: > Wofür genau brauchst Du die > "wait for 5 ns;"? Ich schreibe in ein Signal und möchte mir in der Simulation ankucken wann was gelesen wurde. Bei der Ausgabe wird es nicht benötigt. Marcus Harnisch schrieb: > Man muss VHDL schon lieben. warum das? Wenn ich in der Sprache Utopia 1.0 den Befehl "readbyte" nutze, dann weiß ich was ich erhalte und kann ihn benutzen. Wenn der gleiche Befehl nun in Utopia 2.0 auf einmal "Ruckediguh" heißt, dann ist das zwar verwirrend, benutzen kann man ihn aber trotzdem. Und wenn er in vhdl noch anders heißt, was solls? Das was dahinter steckt weiß ich nicht, muss ich auch nicht. Ich habe das mal irgentwann nach 2 Minuten google gefunden, es funktioniert und ich benutzte es. Ich weiß auch nicht genau wie der Motor meines Autos funktioniert, aber ich weiß das er Sprit verbrennt und ich damit fahren kann. Ich muss nicht verstehen wie alle Einzelheiten funktionieren und weigere mich auch nicht einzusteigen bis ich es erforscht habe. Was ist gegen ein günstiges (wenige Minuten Aufwand) Werkzeug einzuwenden das perfekt funktioniert. Nur weil es hässlich ist? Ich bin mir zu 99% sicher das man das alles schöner hinschreiben kann. Doch wozu? Ich kann mir genauso gut einen Kommentar dahinter schreiben wo steht "this line reads one byte from a file" falls ich mal vergessen sollte was dort passiert. Wobei selbst das mMn in 5 Sekunden an den Variablennamen erkennbar ist. Nicht falsch verstehen, ich halte deine Fragen weder für unsinnig noch für überflüssig. Ich denke aber deswegen nicht das : Marcus Harnisch schrieb: > Auch das ist mit Verilog wesentlich einfacher Weil man so oder so einen Befehl zum lesen eines Bytes braucht und das wirklich komplizierte, nämlich das parsen des Files, sich nicht voneinander unterscheidet. Konkret: wenn ich was komplizierteres parse als nur bytes sequentiell einzulesen, dann bin ich mit egal welcher Sprache praktisch gleichschnell. Wie gesagt, einfach mal ein Beispiel sagen wo es Probleme gibt, dann versuche ich zu helfen. Hab bisher noch nichts gefunden wo vhdl in der Hinsicht wesentlich schwieriger (wenn auch ggf hässlicher) wäre.
hjk schrieb: > Weil man so oder so einen Befehl zum lesen eines Bytes braucht und das > wirklich komplizierte, nämlich das parsen des Files, sich nicht > voneinander unterscheidet. Bevor wir abgeschweift sind ging es um ein VHDL Konstrukt vergleichbar mit Verilogs $readmem. Abgesehen von diesem Trivialfall bietet Verilog mit $fscanf und $sscanf system tasks zum Lesen formatierter Eingabe. Das hilft beim Parsen von Dateien schon sehr. -- Marcus
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.