Hallo, ich jetzt kein VHDL-Crack bräuchte unbedingt Hilfe. Ich hatte für meine Abschlussarbeit die Aufgabe ein VHDL Programm zu schreiben, das mehrere kurze Messpulse erzeugt. Dieser Messpuls läuft über einen Tiefpass und erzeugt eine abklingende e- Funktion (5 Tau). Nun digitalisiere ich das abklingende Signal über einen ADC. Nun mein erster Programmteil erzeugt mit einer State maschine den Messimpuls variabler Länge. Ist dieser Messimpuls abgelaufen erzeugte ich über meine Testbench die fiktiven ADC Daten. Diese Daten takte ich in ein RAM. Nun habe ich in dieser Simulation nicht nur einen Messimpuls sondern mehrere. Also ich sample von jedem der nacheinander kommenden Messimpulse die Abklingkurve die nach dem TP entsteht ab und addiere jeweils die aktuellen ADC Daten mit den bereits im RAM gespeicherten Daten mit einem Addierer und schreibe sie ins RAM zurück. Also auf jede im RAM gespeicherte Kurve addiere ich die folgende gesampelte Kurve auf. Habe ich eine gewisse Anzahl von Messimpulsen gesampelt gespeichert und addiert, schalte ich auf ein zweites RAM um und führe die Messung nochmals aus. Während die zweite Messung läuft und das zweite RAM beschrieben wird, lese ich über ein FIFO die Daten im RAM eins aus ( ist die zweite Messung fertig, lese ich Ram zwei aus und immer so weiter…) Nun nebenher läuft natürlich noch ein Adresszähler der mir die jeweiligen Adressen für das Ram erzeugt. In das FIFO will ich nun den Mittelwert des jeweiligen im RAM gespeicherten Wert schreiben. Das mache ich so, dass ich von meinem 25 Bit langen String nur die oberen 15 Bit nehme und diese ins FIFO schreibe (FIFO_DATA_IN <= DATA_FROM_SPRAM(24 downto 9) -> siehe VHDL Files). Ich lege an den RAM die Adressen an und lese nur die Bits von 24 bis 9 in mein FIFO ein. Nun mein Problem ist, das ich zu beginn, also bevor ich Daten ins FIFO schreibe eine konstante Folge von zweimal x“6E6E“ also 2 mal 16 Bit den eigentlichen Daten voranstellen will. Mein nächstes Problem ist, dass ich die Daten gleich nach anlegen der Adresse ans RAM zum auslesen, ins FIFO übernehmen will. Sind die Daten im FIFO, sollen diese über eine UART Schnittstelle ausgelesen werden. Ich hätte gerne mein Programm mit Testbench gepostet, leider ist dieses etwas groß. Jetzt kann ich nur die vhd Files anbieten ;-) Vielleicht kann mir ein VHDL Seniorprofi weiterhelfen, da wäre ich sehr sehr dankbar. Ich kann jedem Hilfsbereiten gerne mein Programm schicken. Ich weiß das mein Programm nicht ganz regelkonform ist, jedoch funktioniert es bis auf die Datenpufferung der Daten inklusive der konstanten Werte ins FIFO.Ich hoffe es ist verständlich was ich geschreiben haben... Vielen vielen Dank für Rat und Tat.
Chris schrieb: > Ich hoffe es ist verständlich > was ich geschreiben haben... Nicht wirklich. Ein paar Absätze (dafür gibt es die ENTER-Taste) wären ganz hilfreich gewesen. Du verwendest einen Akkumulierer und einen Double-Buffer. Und irgendwo dazwischen/danach einen FIFO. Was war jetzt das konkrete Problem und welches Verhalten erwartest Du? Duke
Hallo, ja ich weiß, die Absätze....sorry. Genau richtig. Also es ist so, um den RAM auszulesen lege ich einen Takt und die Adressen an den RAM an. Nach einem FIFO enable will ich die Daten ins FIFO puffern und bevor ich das mache möchte ich eine konstante Datenfolge ins FIFO puffern. Wenn man sich die TB ansieht, werden die Adressen nach dem auslesen nicht richtig ins FIFO geschrieben. Diese müssten ja mit der fallenden Taktfanke am FIFO anliegen...
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.