mikrocontroller.net

Forum: FPGA, VHDL & Co. Compact-Flash-Ansteuerung mit FPGA oder Picoblaze?


Autor: Christian Peters (kron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich muss eine einfache Ansteuerung für eine Compact-Flash-Karte 
realisieren.
Es sollen ausschließlich Daten auf die Karte geschrieben werden,
also keine Dateien, kein Lesen oder sowas. Das ganze soll im 
True-IDE-Modus laufen (der Controller ist auf dem Board auch 
dementsprechend aufgelötet).

Ich hatte das vor einer Weile auch schonmal probiert
(mit einer Statemachine), aber irgendwas lief da schief,
ich weiß leider nicht ganz genau, was.
Die Kommunikation mit der Karte ging eigentlich, aber wenn ich
die Register mit der LBA-Adresse beschreiben wollte, gabs Probleme.

Das ganze lief damals so ab (bzw. sollte ablaufen):

1. Statusregister auslesen -> Wenn alles ok dann
2. Sektoranzahl schreiben, dann nochmal 1.
3. LBA-Adresse schreiben, zwischendurch immer wieder 1.
4. Daten schreiben

Bei 3. hatte ich aber immer Probleme.
Ich habe zwischendurch immer wieder das Statusregister
ausgelesen um zu sehen, ob der letzte Schreibvorgang ok war,
und da schien es mir, als würde beim Lesen das gleiche
am Datenbus anliegen wie das, was ich gerade geschrieben hatte.

Naja, habe jetzt schon an einigen Stellen gelesen,
dass man sowas besser mit einem Mikrocontroller macht.

Da das Board schon fertig ist, müsste das ein Picoblaze im FPGA sein.
Die Sache ist, dass ich mich mit µC-Programmierung nicht so sehr 
auskenne.
Eigentlich überhaupt nicht. Kann kein Assembler.

Nun meine Fragen:

1. Denkst du, dass ich das Problem mit Picoblaze eher in den Griff 
kriege
Oder sollte ich es nochmal mit 'ner Statemachine versuchen?

2. Da ich kein Assembler kann: Weiß jemand ein "idiotensicheres" 
Tutorial dafür?

3. Könnte ich den Picoblaze nicht auch in C programmieren?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christian Peters (kron)

>Es sollen ausschließlich Daten auf die Karte geschrieben werden,
>also keine Dateien, kein Lesen oder sowas. Das ganze soll im

Zum Debuggen musst du auch lesen.

>Bei 3. hatte ich aber immer Probleme.
>Ich habe zwischendurch immer wieder das Statusregister
>ausgelesen um zu sehen, ob der letzte Schreibvorgang ok war,
>und da schien es mir, als würde beim Lesen das gleiche
>am Datenbus anliegen wie das, was ich gerade geschrieben hatte.

Mal mit nem Oszi das Ganze angeschaut? Timing OK?

>Da das Board schon fertig ist, müsste das ein Picoblaze im FPGA sein.
>Die Sache ist, dass ich mich mit µC-Programmierung nicht so sehr
>auskenne.
>Eigentlich überhaupt nicht. Kann kein Assembler.

Das ist schlecht.

>1. Denkst du, dass ich das Problem mit Picoblaze eher in den Griff
>kriege
>Oder sollte ich es nochmal mit 'ner Statemachine versuchen?

Unter den Voraussetzungen sind beide Wege schwer. Dir fehlen Grundlagen 
und weitergehende Kenntnisse.

>2. Da ich kein Assembler kann: Weiß jemand ein "idiotensicheres"
>Tutorial dafür?

Nö. Aber die diversen Bücher über Assembler sind da sehr nützlich. Du 
solltest dir ein Buch für einen einfachen 8-Bit Prozessor suchen (AVR, 
8051, 68HC11 etc.).

>3. Könnte ich den Picoblaze nicht auch in C programmieren?

Jain. Es soll wohl einen kleinen C-Compiler für den Picoblaze geben, 
aber ich bi skeptisch ob der nciht zuviel Ressourcen braucht. Hab aber 
keinen Link parat. Bei der Grösse und Komplexität der Aufgabe ist 
Assembler noch gut einsetzbar. Zumal du dich sowieso um die "ekligen" 
Details kümmern musst (hardware, Timing, Register etc.).

MFG
Falk

Autor: Christian Peters (kron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort!

> Zum Debuggen musst du auch lesen.
Ich meinte, dass ich die draufgeschriebenen Daten nicht auslesen muss.
Auch zum Checken lese ich die am PC.

> Das ist schlecht.
> Unter den Voraussetzungen sind beide Wege schwer. Dir fehlen Grundlagen
> und weitergehende Kenntnisse.
Danke fürs Mutmachen ;)

> Nö. Aber die diversen Bücher über Assembler sind da sehr nützlich. Du
> solltest dir ein Buch für einen einfachen 8-Bit Prozessor suchen (AVR,
> 8051, 68HC11 etc.).
Hast du einen konkreten Buchtipp?
Ich habe es bei VHDL gemerkt, es gibt unzählige Bücher,
aber viele sind einfach schlecht geschrieben (ist natürlich auch 
persönlicher Geschmack).

Wie ist das überhaupt, die Datenanbindung zur Karte ist ja 16bit breit,
geht das mit 'nem 8bit-Controller?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christian Peters (kron)

>Ich meinte, dass ich die draufgeschriebenen Daten nicht auslesen muss.
>Auch zum Checken lese ich die am PC.

Schon klar, aber dennoch ist es sinnvoller, bzw. notwendig, dass dein 
FPGA auch die Daten lesen kann.

>Danke fürs Mutmachen ;)

Was dich nicht umbringt macht dich härter. ;-)

>Hast du einen konkreten Buchtipp?

Leider nein. Schau dir das Assembler-Tutorial auf dieser Seite an, AVR 
Assembler ist relativ ähnlichzum Picoblaze.

>Ich habe es bei VHDL gemerkt, es gibt unzählige Bücher,

Ja, ein wirklich gutes VHDL-Buch kenne ich auch nicht.

>Wie ist das überhaupt, die Datenanbindung zur Karte ist ja 16bit breit,
>geht das mit 'nem 8bit-Controller?

???
Aber sicher! Der Controller muss eben mit mehreren Befehlen die Daten 
transportieren. Du brauchst sowieso ein wenig Logik um den Picoblaze an 
den IDE-Bus anzuschliessen. Alles kein grosses Problem, aber für einen 
Anfänger, naja, ne sehr sportliche Herausforderung.

Adresse schreiben
Low Byte schreiben
High Byte schreiben
Zugriff auslösen

MfG
Falk

Autor: Christian Peters (kron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau ist denn eigentlich der Vorteil,
wenn ich die Ansteuerung in 'nem µC programmiere?
Also inwiefern macht das meine Aufgabe leichter
(abgesehen von meinem µC-Wissensstand)?

PS: Mir hat das am Anfang sehr geholfen:
http://www.amazon.de/VHDL-Eine-Einf%C3%BChrung-Pau...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christian Peters (kron)

>Was genau ist denn eigentlich der Vorteil,
>wenn ich die Ansteuerung in 'nem µC programmiere?

Das hatten wir doch schon mal diskutiert, oder?

Ein uC Programm lässt sich leichter erweitern als eine State Machine, 
ausserdem ist des "intuitiver" zu verstehen. Schleifen sind in Software 
beispielsweise leichter zu programmieren (naja, ist alles relativ).

MFG
Falk

Autor: Christian Peters (kron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, also leichte Erweiterung ist für mich eigentlich irrelevant,
das wird einmal programmiert und dann soll es auch so bleiben.

Und intuitives Verstehen...naja, VHDL verstehe ich 10mal besser als 
Assembler!

Schleifen brauche ich eigentlich auch keine bei meiner FSM.

Ich will jetzt deine Antwort nicht madig machen, ich versuche nur
herauszufinden, ob es wirklich sinnvoller ist, das mit 'nem Picoblaze
zu versuchen.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christian Peters (kron)

>Hm, also leichte Erweiterung ist für mich eigentlich irrelevant,
>das wird einmal programmiert und dann soll es auch so bleiben.

Das meinte ich nicht ganzso. Ich meinte mehr in Richtung des 
schrittweisen Programmaufbaus.

>Und intuitives Verstehen...naja, VHDL verstehe ich 10mal besser als
>Assembler!

Da solltest du es mit einer State Machine machen, möglich ist es.

>Schleifen brauche ich eigentlich auch keine bei meiner FSM.

Woher weist du das? Hast du schonmal sowas wie ein 
Struktogramm/Programmablaufplan gemacht?
Das glaube ich kaum. Schliesslich willst du ja eine ganze Menge an Daten 
auf die Karte schreiben, dort ist eine Schleife (Bytezähler) 
unerlässlich. Aber auch das ist kein nennenswertes Problem in einer 
State Machine.

>herauszufinden, ob es wirklich sinnvoller ist, das mit 'nem Picoblaze
>zu versuchen.

IMO ja, wenn man die Einstiegshürden überwunden hat, wenn gleich du da 
noch einen langen Weg vor dir hast. Aber der Weg ist das Ziel ;-)

MfG
Falk

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.