Hallo nochmal, ich hab immernoch ein Problem mit der Indizierung eines Arrays. Kann man das so machen, denn mein Programm macht nicht das was es soll. Das aber trotz funktionierender Simulation. Hier die entsprechende Anweisung: "variable fifo_adr_count:integer range 511 downto 0; type FIFO_MEM is array(511 downto 0) of std_logic_vector(7 downto 0); variable fifo_memo: FIFO_MEM; GPIF_DATAL <= Fifo_Memo( fifo_adr_count);" Hab dann noch ne Schleife die alle 4 Takte den fifo_adr_count runterzählt. Problem liegt anscheinend irgendwo bei FIFO_MEMO(fifo_adr_count). Gruß Steffen
Hast du dir mal alle Warnings bei der Synthese durchgelesen? Kann sein, dass dabei irgendwas passiert was nicht gewollt ist. Mir scheint auch etwas suspekt, dass du alles als Variable deklariert hast... vor allem bei fifo_adr_count wundert mich das ein bischen. Haeng doch mal den gesamten Code als Attachment an, cheers! Zen
Hallo das mit der Variable liegt daran, das ich nen Simple Fifo gebaut hab mit Schieberegistern, Shifte also die werte bei nem neuen eingangswert weiter, und schreibe den neuen wert an Stelle Fifo_adr_count 0. Hatte halt Platz das Timing reichte aus, und ich hatte keine Lust auf Adr-verwaltung. Das VHDL Prog will ich eigentlich nicht gerne komplett einstellen, da es zu meiner Dipl.Arbeit gehört. Ist auch nicht mehr viel dran, noch ein bissl Steuerung und so. Das funktioniert aber alles, hab den fifo_adr_count mal Convertiert und auf den Ausgang gelegt, das hat funktioniert. Die warnings kann man laut Xilinx ignorieren, allerdings finde ich die Hilfe dazu auch sehr bescheiden bei denen. Wenn du trotzdem mal interesse hast, kann ich dir das komplette ding mal per email schicken. Gruß Steffen
Hmm, bei einem FIFO werden normalerweise 2 Zeiger benutzt, die den Anfang (head-pointer) und das Ende (tail-pointer) im FIFO angeben. So muessen die Daten im Speicher nicht bewegt werden, und koennen auch zb. im BlockRam abgelegt werden. Wo bemerkst du denn den Fehler? In der Hardware? Hast du mal eine post-place-and-route Simulation probiert? Ansonsten kann ich dir nur meinen Standard-tipp geben: mach dir eine Skizze dazu, wie du dir das FIFO als Hardware vorstellst. Danach beschreibst du diese Skizze mit VHDL, ohne deinen jetztigen Code auch nur anzuschauen. Zen
In der Schaltung, hab ein http://www.cesys.de/index.php?language=de&doc=advanced&docparams=USB2FPGA&menuparams=50 Board. Die Übertragung hin klappt. Hab die Daten dort auch schon per Single Read aus dem Fifo ausgelesen. Simulationen hab ich jetzt alle gemacht( post place and route dauerte 2 Stunden, hab nen 600 MHz Rechner, Clock des FPGA bei 48 MHz und ne Simulationsdauer von knapp 110µs). Bei allen Simulationen funktionierte es. Allerdings mit der einschränkung, das ich als eingang nen anderen Pin simulieren mußte da ich Modelsim nicht dazu gekriegt hab, mal INOUT port vernünftig zu simulieren. Weiß irgendwie nicht weiter, und das jetzt schon seit 3 bis 4 Wochen. Die Hersteller von dem Board können mir leider auch nicht weiterhelfen, da der Mitarbeiter der das entwickelt hat, und auch Beispiele Prog. hat, nicht mehr da arbeitet. Toll. Also meist du, die Indizierung so solte eigentlich klappen. gruß Steffen
wenn fifo_adr_count selbst ein counter sein soll, dann musst Du m.E. ein Signal daraus machen. Als Variable kannst Du es höchstens von einem anderen Signal ableiten, z.B. um noch einen Offset zu addieren o.ä. Was macht denn die Synthese aus Deiner RAM-Variable bzw. was soll daraus werden? ein Schieberegister mit 4096 Flip-Flops? Das wäre ein sehr schlechtes Design, wenn Du nur ein FIFO brauchst, nicht nur wegen der immensen Stromaufnahme gegenüber 2 Zeigern, die man entsprechend setzt. Also bei einer Diplomarbeit würde ich das nicht durchgehen lasen ;-)
Ja das macht der Draus. Stromaufnahme und Platz spielt im endeffekt keine Rolle, allerdings muß ich dir recht geben, das es eine sehr einfache und nicht gerade durchdachte Lösung ist. War halt die schnellste die mir so eingefallen ist, wollte es ja erst auch nur so testen, ob die Übertragung funzt. dann bin ich irgendwie bei geblieben, weil ich das Problem bei der Übertragung sah, und nicht hier. Wegen Dipl.Arbeit hab ich mir auch gedanken darüber gemacht. Allerdings muß ich dazu sagen das der FPGA und die VHDL Beschreibung nur ein Kleiner Teil des Projekts ist, deswegen sollte es auch nicht so viel aufwand sein. Bin auch eher so das es erstmal funktionieren sollte, und danach wird optimiert. Gruß Steffen PS. an meiner Variante hat mir außerdem gefallen, das ich den Fifo jeden Takt auslesen kann, und nicht jedesmal 3 Takte benötige. Brauche das jetzt wohl aber auch nicht mehr. Also ich werd mich mal mit den Typischen Fifos und dem Blockram und externem Ram befassen, vielleicht findet sich da der Baum im Wald. Obwohl es eigentlich auch so gehen müßte, naja Danke.
Oh Mann, muß echt aufm Schlauch gestanden haben, nen Fifo mit nem Ram Schreiben ist ja voll Simpel ist mir grad eingefallen. Ist ja einfacher als mein Kram. Man oh Meter, manchmal fällt der Groschen aber auch spät. werd mich morgen mal ransetzen. heute ist zu warm und schön um Abends noch im Büro zu sitzen. Danke an euch für meinen Erkenntnisgewinn. Gruß Steffen
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.