www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Compact Flash Karte auslesen


Autor: MABO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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

Autor: MABO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachdem ich die Daten im RAM habe, möchte ich die Daten D/A wandeln.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: MABO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: MABO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: MABO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johnsn

Hi,

wie ist deine Vorgehensweise?
In welchem Format schreibst du die Daten auf die SD Karte?

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hast du schon recht, aber auf mein FPGA (XC3S50) werde ich 
Platzprobleme kriegen. Und ein größeres ist nicht drin.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der Picoblaze lizenzpflichtig?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johnsn

>Ist der Picoblaze lizenzpflichtig?

Nein, 100% frei nutzbar. Nur der grosse Bruder Microblaze kostet Geld.

MFG
Falk

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johnsn
Wirst Du die Quellen für das SD-Card-interface verfügbar machen?

Frank

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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


Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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++

Autor: Angelina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.cc5x.de/MMC/

ich habe auch vor, Daten in SD Card ein- und auszulesen, und habe diese 
Webseite gefunden.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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


Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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)

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Source-Code darf ich leider nicht zu Verfügung stellen!

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.