Forum: FPGA, VHDL & Co. Wie am besten Lookup table erstellen?


von Christoph Y. (fragant)


Lesenswert?

Hallo liebe Forumsgemeinde,

ich bin noch absoluter Neuling in Bezug auf µc und habe eine 
grundlegende Frage.

Folgendes Problem soll gelöst werden:

Ich will eine Datei mit Referenzwerten in eine txt Datei schreiben und 
diese Werte mit den gemessenen Werten von Sensoren abgleichen.

Ich habe mir das so gedacht, dass ich die Datei auf einer SD Karte oder 
einem USB Stick einfach ablege und einfach die Werte die in der txt 
Datei mit Komma abgetrennt sind immer wieder auslese. Ich habe in einem 
anderen Beitrag gelesen, dass man die SD Karte mit einem Modul über SPI 
zum Beispiel ansprechen müsste.

Ziel soll es sein, zum Beispiel die Luftfeuchtigkeit die vom Sensor 
gemessen wird mit den Werten aus der txt Datei abzugleichen und am Ende 
zu sagen, ob der Wert gleich den Werten in der Datei ist oder größer 
oder kleiner.

Nutzen tue ich ein De2 FPGA Board.


Meine Fragen sind:

Ist das so, wie ich es mir gedacht habe möglich (möglichst einfach 
realisierbar)?
Gibt es eine einfachere Methode (beispielsweise als Array)?
Kann man eine Txt Datei auch anders auf dem FPGA Board speichern und 
ständig abfragen?

Ich bedanke mich im Voraus für eure konstruktiven Beiträge.

Gruß Fragant

von Robert S. (razer) Benutzerseite


Lesenswert?

Erste Frage, warum ist überhaupt ein FPGA nötig? Warum tut es nicht 
einfach ein Mikrocontroller?

von Christoph Y. (fragant)


Lesenswert?

Hallo razer,

ich besitze zur Zeit nur dieses von mir genannte FPGA :)

Gruß fragant

von Alexander F. (alexf91)


Lesenswert?

Zuerst musst du verstehen, was der Unterschied zwischen einem FPGA und 
einem µC ist. Mit dem von dir genannten Board wirst du als Anfänger in 
den nächsten  Monaten ziemlich sicher nicht zum erwarteten Erfolg 
kommen. Für diese Aufgabe ist ein FPGA eher ungeeignet.

Am schnellsten wird es wahrscheinlich mit einem Arduino oder Raspberry 
Pi gehen, ganz sicher aber nicht mit einem FPGA.

Welche Programmiersprachen beherscht du?
Kannst du die Sensoren mit deinem Board schon auslesen?

: Bearbeitet durch User
von Christoph Y. (fragant)


Lesenswert?

Hallo alexf91.

soweit ich weiß, ist der wichtigste Unterschied zw. einem FPGA und einem 
µc, dass der FPGA Prozesse parallel verarbeiten kann. Der µc arbeitet 
jedoch sequenziell sprich alles wird nacheinander abgearbeitet.

Da ich mit dem FPGA arbeite habe ich Kenntnisse in VHDL, der Sprache mit 
der das Vorhaben umgesetzt werden muss. Die Sensoren wollte ich erst 
später auslesen, nachdem ich als erst mal geklärt habe, wie ich am 
besten die Werte speichere mit denen ich auch vergleichen will.

Gruß fragant

von Alexander F. (alexf91)


Lesenswert?

Das ist schon mal nicht ganz falsch, jedoch entspricht ein process in 
VHDL nicht einem Prozess z.B. in einem Betriebssystem.
Mit VHDL beschreibst du Hardware, die auf die internen Strukturen des 
FPGAs abgebildet wird. Die Grundelemente dabei sind Flipflops (Register) 
als sequentielle Elemente (mit Takt) sowie kombinatorische Elemente ohne 
Takt.
Damit ist es ziemlich schwierig, von einer SD Karte mit Dateisystem zu 
lesen (du würdest ja auch keine 74xx ICs verwenden).

Für sequentielle Abläufe ist eine Statemachine erforderlich, die die 
Zugriffe auf die SD Karte steuert. Die Ansteuerung der SD Karte alleine 
könnte man wohl noch hinkriegen, für das Dateisystem wird das aber 
wahrscheinlich zu aufwändig.
Dafür wird normalerweise ein externer µC oder ein Softcore im FPGA 
verwenedet, der in C oder Assembler programmiert wird.

Die bessere Lösung in deinem Fall ist aber, die vorhandenen Werte direkt 
ins FPGA oder einem Speicher auf dem Board zu laden. Jedes FPGA 
beinhaltet mehrere RAM-Blöcke, die du beliebig verwenden kannst.
Quartus bietet hier schon sogenannte Megafunctions an (in deinem Fall 
ein Single Port ROM, das du mit einem *.mif oder *.hex File 
initialisierst).

Du schreibst "umgesetzt werden muss". Wer hat dir die Aufgabe gestellt?

von Nick Nolte (Gast)


Lesenswert?

Christoph Y. schrieb:
> Nutzen tue ich ein De2 FPGA Board.

Zu allererst solltest du mal lernen, für welche Probleme man FPGAs 
einsetzt und für welche nicht.

> Folgendes Problem soll gelöst werden:
>
> Ich will eine Datei mit Referenzwerten in eine txt Datei schreiben und
> diese Werte mit den gemessenen Werten von Sensoren abgleichen.

Das ist denau die Sorte Problem, für die man FPGAs NICHT einsetzt.

von moeb (Gast)


Lesenswert?

Wenn man auf dem frag einen Softcover einsetzt schon ;-)

von moeb (Gast)


Lesenswert?

Softcore meine ich

von ?!? (Gast)


Lesenswert?

moeb schrieb:
> auf dem frag einen Softcover einsetzt

Was bedeutet das? "frag" "Softcover"?

von Nick Nolte (Gast)


Lesenswert?

moeb schrieb:
> Wenn man auf dem FPGA einen Softcore einsetzt schon ;-)

Richtig, nur ist das in diesem Fall dann das berühmte "Von hinten durch 
die Brust ins Auge geschossen".

von Christoph Y. (fragant)


Lesenswert?

Hallo,

@alexf91

Das mit dem single port rom habe ich mir mal angeguckt, das hört sich 
schonmal gut an. Ich habe mir auch mal diese 
http://www.altera.com/support/examples/vhdl/vhd-single-port-rom.html 
Datei dazu runtergeladen. Momentan suche ich noch, wie man die Werte 
eingibt und dann entsprechend abruft, der ROM kann ja beliebig oft 
abgefragt werden.

@ Nick Nolte
Es ist schön, dass du dich hier einbringen willst, aber ich würde dich 
wie oben erwähnt eher um konstruktive Beiträge bitten, falls du welche 
hast. Wie schon von Robert S oben angesprochen, ließe sich das Problem 
auch mit einem µc lösen, jedoch ist es auch mit einem FPGA Board 
realisierbar. Es werden ja auch mehrere Sensoren abgefragt und es werden 
auch mehrere Tabellen benötigt mmit denen verglichen wird.

@ moeb
Danke für deine Antworten.

Grüße von fragant

von Alexander F. (alexf91)


Lesenswert?

Nein, Nick Nolte hat vollkommen recht.
Ich denke auch nicht, dass du wirklich weißt, wie ein FPGA funktioniert 
und verwendet wird. Auch wenn VHDL wie eine Programmiersprache wirkt, 
das Ergebnis ist eine Schaltung, und so musst du auch beim Entwickeln 
denken.

Christoph Y. schrieb:
> Momentan suche ich noch, wie man die Werte
> eingibt und dann entsprechend abruft, der ROM kann ja beliebig oft
> abgefragt werden.

Der ROM kann mit einem File initialisiert werden.
Um die Werte zu erhalten, musst du eine Adresse und einen Takt anlegen. 
Bei jedem Taktzyklus wird der Inhalt der Adresse am Datenausgang 
ausgegeben.

von Fpgakuechle K. (Gast)


Lesenswert?

Christoph Y. schrieb:
> Ich habe in einem
> anderen Beitrag gelesen, dass man die SD Karte mit einem Modul über SPI
> zum Beispiel ansprechen müsste.


Die Daten auf der SD-Karte liegen nach dem Beschreiben am PC nicht 
hintereiander wie in einem ROM sondern in einem Filessystem. Per SPI 
spricht man das commandointerface um einzelne Blocke zu transferieren. 
VHDL-code dafür bspw. dort: http://stevenmerrifield.com/tools/sd.vhd

Um jetzt das Filesystem (bspw FAT16) zu lesen und die gesuchte datei zu 
finden, nimmt man besser eine CPU resp. Core. Dem gibt man ein bißchen 
Firmware im BRAM mit und kann beliebige Datein auf der SD-Carde lesen.

MfG,

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Christoph Y. schrieb:
> Nutzen tue ich ein De2 FPGA Board.
Diese ganze Aufgabe hört sich an wie: "Ich möchte an meinen Ferrari eine 
Anhängekupplung montieren, damit ich im Wald Holz holen kann. Wie muss 
ich hier vorgehen?"
Die Antwort lautet eigentlich richtig: "Vergiss das mit dem Ferrari, 
nimm einen Traktor!"
Aber diese Mahnung wird ungehört verhallen...

Oder für das konkrete Beispiel: ein uC wird diese schnuckelige Aufgabe 
mit weniger Bauteilaufwand und Energiebedarf schneller lösen können als 
der Softcore auf dem teuren FPGA.

von ?!? (Gast)


Lesenswert?

Lothar Miller schrieb:
> Diese ganze Aufgabe hört sich an wie: "Ich möchte an meinen Ferrari eine
> Anhängekupplung montieren, damit ich im Wald Holz holen kann. Wie muss
> ich hier vorgehen?"
> Die Antwort lautet eigentlich richtig: "Vergiss das mit dem Ferrari,
> nimm einen Traktor!"

Dieses Beispiel hätte mit einem Porsche nicht geklappt :-))

Aber du hast schon recht. Man könnte auch mit einem Mikroskop einen 
Nagel in die Wand hauen...

von bko (Gast)


Lesenswert?

Es gibt hier aber doch einige hier im Forum die softcores
einsetzen...
Beitrag "Re: Suche Softcore Alternative mit Compiler und Debugger"
http://www.mikrocontroller.net/search?query=softcore&forums%5B%5D=9&max_age=-&sort_by_date=1

>Diese ganze Aufgabe hört sich an wie: "Ich möchte an meinen Ferrari eine
>Anhängekupplung montieren, damit ich im Wald Holz holen kann. Wie muss
>ich hier vorgehen?"
>Die Antwort lautet eigentlich richtig: "Vergiss das mit dem Ferrari,
>nimm einen Traktor!"
>Aber diese Mahnung wird ungehört verhallen...
Aber genug "Dampf" hätte er doch zum Holzholen:
http://lustich.de/mp3s/telefonverarschungen/ferrari-mit-anhaengerkupplung/

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
Noch kein Account? Hier anmelden.