Ich möchte präparierte Files, die ich in CSV-habe, ins Modelsim
bekommen, um eine Schaltung damit zu füttern. Wie macht man das?
MentorSupport Schweiz hat die Meinung, daß es geht, weiss aber auch
nicht, wie.(?)
In VHDL mit dem package textio. Mit Tcl lässt sich im Modelsim sicher
auch was machen aber als Teil der VHDL-Testbench ist es imho sinnvoller.
Wir benutzen in der Arbeit das Paket PCK_FIO. Ich habs bisher nur zur
Ausgabe benutzt aber zum Einlesen gibt es sicher auch was drin.
Ich hab da noch irgendwo was aus nem Praktikumsversuch rumliegen, was in
etwa in die Richtung geht. Werds mal suchen und hier posten.
Ich fand allerdings die Handhabung von Textfiles etwas umständlich. Da
gehts mit Binärfiles deutlich einfacher.
Google mal nach vhdl und textio.
Das ganze geht so in Richtung parsen der Datei, man muss das Format also
genau kennen und kann dann Zeichenketten an selbst definierten
Positionen als Signale verwenden.
Ich habe folgendes Problem: Ich will Bitvektoren einlesen. Nach der
obigen Methode ist ihm der Integer zu groß: Das file compiliert zwar,
aber er stört sich an der Tatsache, daß der gelesene String ausserhalb
der Integerwerte liegt, was auch stimmt, da es 64bit sind.
Gebe ich dem read-Befehl aber einen sdt_logic_vector mit, finder er "no
feasible entries for read()".
Wie bekomme ich die Bitvektoren rein?
Das fileformat ist so :
010100101......0010010 <- 64bit (kanal1)
110010010010.....10100 <- 64bit (kanal2)
......
01001001010.....101001 <- 64bit (kanal8)
Ich muss immer 8 solcher 64er Werte (Videodaten) nacheinander lesen und
auf DACs schicken. Dann kommt der nächste 8er-Block. Das mit den
Schleifen habe ich am laufen, aber mir fehlt die Syntax für die Bits.
Muss ich jedes Bit als einzelnen Character einlesen?
Noch eins: Wenn ich den Lese-Process auskommentiere, start zwar die
Simulation und alles andere läuft, aber er findet das file nicht. Wo
muss das hin, bzw. wie gebe ich ihm den Dateinamen und -Pfad an?
>Noch eins: Wenn ich den Lese-Process auskommentiere, start zwar die>Simulation und alles andere läuft, aber er findet das file nicht. Wo>muss das hin, bzw. wie gebe ich ihm den Dateinamen und -Pfad an?
Der Pfad ist relativ zum aktuellen Simulationsverzeichnis. Wenn Du in
der Modelsim Shell mal pwd eingibst bekommst Du den aktuellen Pfad.
Dateien in anderen Verzeichnissen kannst Du dann z.B. in der Form:
constant FILENAME_DATA : string := "../data/data_x.dat";
erreichen.
(bitvektor) Wie mache ich das ?
Das mit dem Pfad hat etwas mit Win zu tun, er stört sich an Spaces in
den Foldernamen. Wenn ich auf C arbeite, geht es.
Das Signal eben als bit_vector definieren statt std_logic_vector.
Bit_vector kann nur 0 und 1, std_logic_vector noch U, Z usw. Wenn du das
brauchst, musst du das noch umwandeln, kurze Funktion mit Schleife.
Es geht nicht mit std_logic_vector, da das read eine ueberladene
Funktion ist, die zwar fuer bit_vector und integer und einiges weitere
implementiert ist (siehe textio.vhd) aber nicht fuer std_logic_vector.
Alternativ kannst du ein eigenes read fuer std_logic_vector schreiben,
einfach das vom bit_vector aus der textio.vhd dafuer uebernehmen bzw.
erweitern wenn du auch U, Z usw. aus der Datei auslesen willst.
Ich habe jetzt ein bit, das passend ausgelesen wird. Nun muss ich alle
bits einer Zeile abklappern, nehme ich an. Wie kriege ich das bit
jeweils in den vector?
ich möchte sowas machen wie videodat_sig(x) <= geradegelesenes bit. (mit
x = 63 bis 0).