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
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
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
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?
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.
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".
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
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.
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,
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.