Hallo, habe Daten auf einer mit FAT16 formatierten Compact Flash Karte. Wie kann ich diese Daten in das RAM bringen? Besitze ein Stratix|| FPGA . Welche Komponenten benötige ich? Danke für eure Hilfe.
@ MABO >habe Daten auf einer mit FAT16 formatierten Compact Flash Karte. Wie >kann ich diese Daten in das RAM bringen? Was soll denn mit den Daten geschehen? MFG Falk
Nachdem ich die Daten im RAM habe, möchte ich die Daten D/A wandeln.
@MABO
>Nachdem ich die Daten im RAM habe, möchte ich die Daten D/A wandeln.
Nun, dazu brauchst du wahrscheinlich einen CompactFlash Adapter (ist der
schon auf dem Board?), ein kleines Modul für den Zugriff, und einen
Mikrocontrollerkern + Software zur Handhabung des FAT16. Bei Altera
bietet sich da der NIOS an.
MFG
Falk
Hallo, der Compact Flash Adapter ist schon auf dem Board. Kann man sowas auch ohne Nios realisieren? Oder wird es dann zu schwierig? Habe nämlich noch nie mit dem Nios Prozessor gearbeitet.
@MABO >der Compact Flash Adapter ist schon auf dem Board. Kann man sowas auch >ohne Nios realisieren? Oder wird es dann zu schwierig? >Habe nämlich noch nie mit dem Nios Prozessor gearbeitet. DAS wird äusserst schwierig. Man kann sicherlich auch andere Softcore CPUs nehmen, aber ein FAT16 ohen uC lesen zu wollen dürfte sehr kompliziert werden. Einziger Workaround. Mittels Disk-Editor herausfinden auf welchen Sektoren die Daten auf dem CompactFlash stehen und dann mitel FPGA und State-Machine direkt auf diese Sektoren zugreifen. Allerdings ändern sich diese Sektoren bei fast jeder Änderung der Datei. MfG Falk
Hallo, hast du schon mal sowas ähnliches mit Nios gemacht? Wenn ja, könntest du mir eine Anleitung geben wie ich da vorgehen muss? Oder weißt du wo ich ein Beispiel finde?
@MABO >hast du schon mal sowas ähnliches mit Nios gemacht? >Wenn ja, könntest du mir eine Anleitung geben wie ich da vorgehen muss? >Oder weißt du wo ich ein Beispiel finde? Das muss ich leider dreimal verneinen. MFG Falk
@mabo tipps für die vorgehensweise : - nios zum laufen bringen - blinking leds - serielle schnittstelle - port zugriffe - cf-card anschließen - low level funktionen (statusregister auslesen, größe der cf-card bestimmen) - sektor funktionen (einzeln lesen, mehrfaches lesen) - fat16 implementieren ist jetzt nur grob da ich den beitrag nur überflogen habe, aber ich denke mal zum nios dürftest du schon einiges finden. such am besten nach tutorials um in das teil reinzukommen.
Ich bin grad dabei ähnliches für eine SD Karte zu machen. Es steht aber noch nicht fest, ob ich ein FAT System auf der Karte habe oder nicht. Allerdings habe ich nur ein sehr kleines FPGA zur Verfügung (sparen, sparen, sparen), sodass hier Softcore und spätere Routingfunktionen keine Platz drauf hätten.
@ Johnsn Hi, wie ist deine Vorgehensweise? In welchem Format schreibst du die Daten auf die SD Karte?
Das ist genau der Punkt, wo ich vielleicht einen kleinen Vorteil habe, denn ich brauche (höchstwahrscheinlich) nur von Gerät zu lesen. Die Steuerung übernimmt aber schon ein externen Mikrocontroller. Der gibt an, wann welche Blöcke gelesen werden müssen. Beim Lesen habe ich einen 4-Bit breiten Flaschenhals (im SD-Modus). Aber ich habe mir vorerst gar nicht allzuviele Gedanken über das Filesystem gemacht, ich baue und simuliere gerade das SD-Card Interface durch. Dabei hab ich im wesentlichen 3 FSMs. Die 1. ist für die Kontrolle und dem Gesamtzusammenspiel zuständig. Die 2. sendet und empfängt sämtliche Kontrollbefehle, während die 3. Daten empfängt und an einen verarbeitenden Controller weiterleitet. Auf jeden Fall ist so ein SD-Card Interface schon ein harter Brocken, weil es viele Ausnahmefälle im Protokoll zu berücksichtigen gibt.
@Johnsn >Auf jeden Fall ist so ein SD-Card Interface schon ein harter Brocken, >weil es viele Ausnahmefälle im Protokoll zu berücksichtigen gibt. Weshalb ein Softcore gar nciht so falsch ist. Muss ja nciht immer ein 32 Bit Monster sein. Picoblaze ist genial! MFG Falk
Da hast du schon recht, aber auf mein FPGA (XC3S50) werde ich Platzprobleme kriegen. Und ein größeres ist nicht drin.
@Johnsn >Da hast du schon recht, aber auf mein FPGA (XC3S50) werde ich >Platzprobleme kriegen. Und ein größeres ist nicht drin. Ein Picoblaze braucht gerade mal so ca 80 Slices und einen BRAM. Dort hast du dann 1024 Befehle Programmspeicher, damit kann man SEHR viel machen. Möglichst viele Unterprogramme verwenden. GGf. kann man auch noch mehr BRAMs anflanschen, ist ein wenig tricky aber es geht. Been there, done that. MfG Falk
@Johnsn
>Ist der Picoblaze lizenzpflichtig?
Nein, 100% frei nutzbar. Nur der grosse Bruder Microblaze kostet Geld.
MFG
Falk
@ Johnsn Wirst Du die Quellen für das SD-Card-interface verfügbar machen? Frank
@Falk Gut zu wissen, werd mir das Ding auf jeden Fall mal anschauen. Aber jetzt bin ich schon zuweit mit VHDL um noch umzusteigen. @Frank Dagegen bin ich nicht abgeneigt.
@Johnsn >Gut zu wissen, werd mir das Ding auf jeden Fall mal anschauen. Aber >jetzt bin ich schon zuweit mit VHDL um noch umzusteigen. Das habe schon viele gesagt und noch lange weiter gemacht, nur um dann 1m vorm Ziel alles hinschmeissen zu müssen und doch den anderen Weg zu gehen. Bedenke, mit dem Picoblaze erreichst du eine Funktionsdichte (Funktionen / Logikresource) die du mit State-Machines nie hinbekommst. Die sind zwar sauschnell, brauchen aber auch viel Logik. Wir werden sehen ;-) MfG Falk
Hey das klingt ja wie eine Herausforderung gg. Aber ich geb' zu ich hab schon oft im Hinterkopf gedacht, dass es mit nem Softcore "auch gehen würde". Aber ich bin zuversichtlich, da das Interface nicht derartig flexibel sein muss. Dass heißt im wesentlichen initialisieren, und Daten laden, was nur geht. Ist nämlich für ein HighEnd-Audioprojekt und das sollte dann schon "sauschnell" gehen, d.h. dass die Sample da sind, wenn se gebraucht werden. Und welcher 8-Bit µC kann 64 Kanäle, abgetastet mit 48kHz, 16 Bit Auflösung von der SD-Karte lesen, und per I2S übertragen?
@Johnsn >was nur geht. Ist nämlich für ein HighEnd-Audioprojekt und das sollte >dann schon "sauschnell" gehen, d.h. dass die Sample da sind, wenn se >gebraucht werden. Und welcher 8-Bit µC kann 64 Kanäle, abgetastet mit >48kHz, 16 Bit Auflösung von der SD-Karte lesen, und per I2S übertragen? Du denkst noch viel zu sehr in Software. Ich hab vor Jahren mal nen Datenprozessor mit dem Picoblaze gebaut, der hat 2 Mbit/s in Echtzeit verarbeitet. Der Trick besteht darin, die passenden Interfaces in Hardware zu giessen, in diesem Fall Seriell-Parallelwandlung + kleines FIFO. Der Picoblaze läuft im S3 bei ca. 60-80 MHz, das sind dann 30-40 MIPS! Wenn du die AVRs von Atmel oder ähnliche Prozessoren kennst sollte dir klar werden was das heisst. MFG Falk P.S. "Sauschnell" heisst bei FPGAs 100MHz++
http://www.cc5x.de/MMC/ ich habe auch vor, Daten in SD Card ein- und auszulesen, und habe diese Webseite gefunden.
@ Angelina >http://www.cc5x.de/MMC/ >ich habe auch vor, Daten in SD Card ein- und auszulesen, und habe diese >Webseite gefunden. Das ist schön. Und nun? War das ein Hinweis für andere SD-Karten-Auslesewilligen oder kommt da noch ne Frage? MFG Falk
Update: Meine FSM für die gewünschte Applikation steht nun und funktioniert soweit. Allerdings werden die Informationen über das Dateisystem schon von einem Mikrocontroller zuvor ausgelesen, welcher dann dem FPGA sagt, welche Sektoren gelesen werden müssen. Aber die Initialisierung und Konfiguration macht sich das FPGA schon noch selbst. Und so arg kompliziert wars dann auch nicht.
@johnsn hast du es mit einer "diskreten" statemachines gemacht oder mit dem picoblaze ? ich überlege mir für mein audio-projekt auch einen massenspeicher anzuschließen (brauche aber wahrscheinlich einen fpga eine nummer größer als der xc3s200). wieviele slices brauchst du für die statemachine und die ansteuerung ? (nur so als hausnummer)
@TheMason: Sorry, hab schon länger nicht mehr in diesen Thread geschaut. Aber ich bin quasi nun fertig mit meiner Sache. Ich hab alles mit einer "diskreten" Statemachine gemacht. Also rein Hardware. Es ist zwar schon so, dass ein externen Controller Informationen über das Dateisystem hat, und dieser dann der Statemachine die Anweisungen gibt, welche Sektore zu laden sind, aber dies funktioniert sehr gut. Vom Controller aus kann man die Statemachine über ein Register steuern, Clock-Switching, InitCard etc. und das Design ist auch in den A/D-Bus des Controllers integriert. Das heißt man kann am Controller in C von einer Adresse lesen und schreiben. Dafür werden 426 slices verwendet! Also auf dem kleinsten Spartan ist auch noch genug Platz für andere Sachen. greetz, Johnsn
@johnsn bin auch nicht davon ausgegangen das du deinen quellcode reinstellst :-) wollte nur wissen wie du es im endeffekt gemacht hast (picoblaze oder statemachine). ich werde das bei meinen versuchen sicher auch so machen, das der fpga nur sektoren liest und der uC diese auswertet. ein blockram kann ja schon 4 sektoren zwischenhalten. sollte für das eine oder andere reichen. viel erfolg noch bei deinem projekt gruß rene
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.