PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Microcontroller für VHDL Programmierung



Kael
27.09.2017, 13:31
Hey!
Ich wollte mal Fragen ob hier jemand einen VHDL Controller empfehlen kann.
Ich bin auf den hier gestoßen: http://www.ebay.de/itm/Yes-Development-Board-Learning-Test-ALTERA-CYCLONE-IV-FPGA-Accessories-Kit-Y2R3/152403159377?_trkparms=aid%3D111001%26algo%3DREC.S EED%26ao%3D1%26asc%3D20170511121231%26meid%3D79939 803db4643e8942a72d0af2dc8c3%26pid%3D100675%26rk%3D 1%26rkt%3D12%26sd%3D322766826495&_trksid=p2481888.c100675.m4236&_trkparms=pageci%253A565478e1-a37f-11e7-959a-74dbd1808de8%257Cparentrq%253Ac34f1fc915e0ab6b346d 18e7fffde6d2%257Ciid%253A1

Aber ich weiß nicht ob der so 'gut' ist. Letztlich möchte ich damit etwas lernen und möglcihst viele Funktionen haben. Noch etwas 'bauen' ist noch nicht direkt mein Ziel. :)

shedepe
27.09.2017, 16:02
Nun ein FPGA ist ja kein Microcontroller. Die Programmierung entscheidet sich auch massiv von einander. In VHDL (grobumschrieben) beschreibst du eine Hardwareschaltung die danach synthetisiert wird. Aber ich denke das sollte dir bewusst sein.

Ein FPGA zeichnet sich dadurch aus wie viele interne Logikbasiszellen hat und wie viel Speicher er verbaut hat. Dadurch wird bestimmt wie groß die Schaltung werden kann die du synthetisieren kannst.
Ein weiterer großer Unterschied ist, dass es in der Regel keine freien Toolchains wie z.B. avr-gcc für Atmel Mikrocontroller gibt, sondern nur Hersteller eigene Toolchains + IDEs. Hier liegt auch der für den Einstieg wichtigste Punkt denke ich. Ob die Toolchain auf deinem PC läuft (Windows / Linux), ob die Toolchain extra kostet (Manchmal sind z.B. bei Xilinx auch nur bestimmte Chips in der freien Version dabei) und ob man persönlich damit klar kommt.

Wenn nur mal etwas mit VHDL rumprobieren willst, brauchst du eventuell noch nicht mal ein Board mit FPGA sondern kannst nur in der Entwicklungsumgebung etwas herumprobieren. Bevor man eine Schaltung synthetisiert muss man sowie so etwas einige Timing under andere Simulationen laufen lassen.
Ein letzter Punkt der mir spontan noch einfällt. Es gibt bei den Hardwarebeschreibungsprachen zwei große: Einmal VHDL (Eher Europa) und Verilog (Eher USA). Ich persönlich finde Verilog wesentlich angenehmer. Jedoch unterstützt nicht jeder Hersteller beide Sprachen, andere unterstützen dafür sogar beide Sprachen in einem Projekt.

Zu dem Altera Board selber kann ich leider nichts sagen, ich habe bisher nur mit Xilinx gearbeitet

Peter(TOO)
27.09.2017, 16:23
Irgendwie passt da etwas nicht so ganz zusammen.

VHDL ist keine Programmiersprache für irgend einen Prozessor.

Mit VHDL entwickelt man Hardware, das kann dann ein Prozessor werden aber auch ein Peripheriebaustein oder auch Wecker.

Es gibt heute vor allen zwei verschiedene Hauptverwendungen für VHDL:
1. Mikroprozessoren, Peripheriebausteine und andere spezielle ICs werden in VHDL beschrieben und dann per Computer in Silizium umgesetzt.
2. Es gibt PGAs, FPGAs, Gate-Arrays usw. welche dann per VHDL konfiguriert werden. So ein Gate-Arra ist eine Sammlung von Logik-Zellen, welche dann Parametrisiert und über elektronische Schalter "verdrahtet" werden. Die Vorläufer waren PALs, da wurden zur Konfiguration "Sicherungen" weggebrannt, waren dann nur einmal programmierbar.

Was du da hast ist ein Entwicklungsboard, schon das richtige um zu lernen.
Das programmierbare Element ist ein ALTERA CYCLONE IV FPGA
Hier das Datenblatt: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/cyclone-iv/cyiv-53001.pdf
Und hier eine Allgemeinere Beschreibung: https://www.altera.com/products/fpga/cyclone-series/cyclone-iv/overview.html

Dein Board hat jetzt einfach noch einiges an Gemüse drum rum, damit man gleich loslegen kann.

MfG Peter(TOO)

shedepe
28.09.2017, 13:22
Nur der Vollständigkeit halber. VHDL beschreibt eigentlich Logik und/oder die Verknüpfung verschiedener Logikelemente. Ob das danach in Hardware gegossen wird, auf einem FPGA oder auf einer CPU ausgeführt wird ist eigentlich egal.
Es wurde jedoch für die Highlevelbeschreibung von Hardware entwickelt.

Kael
07.10.2017, 11:20
Nun, mit Arduino wollte ich auch bald mal Hardware mit C programmieren. Allerdings ist VHDL für die Uni wichtiger und ich habe gemerkt das ich beim stupiden Bücherlernen kaum Erfolge sehe sondern die praktische Anwendung haben muss ^^

shedepe
07.10.2017, 11:58
Also mein Vorschlag ist. Fang mit nem Mikrocontroller an, mach mit einem FPGA weiter und vorallem beschäftige dich mit dem notwendigen Grundwissen. Sonst bringt dir das auch für die Uni nicht so viel.

Kael
07.10.2017, 12:51
Meinst du mit microcontroller z.B Arduino?

shedepe
07.10.2017, 15:13
Ja, siehe zweiten Teil meiner Antwort. Gehört zum Thema Grundwissen ;)

Peter(TOO)
09.10.2017, 00:32
Ich würde dir auch empfehlen mit einem Arduino der PIC anzufangen.
Für beides findest du eine riesige Gemeinde, -zig Foren und tausende Beispiele.
Allerdings arbeiten die meisten bei den Arduinos mit Bibliotheken, da sind die meisten Beispiele schon recht weit weg von der Hardware.
Beim PIC musst du dich direkt mit der Hardware beschäftigen, gibt aber auch da jede Menge Beispiele.

Einen RasPi würde ich nicht empfehlen. Dieser arbeitet schon einmal mit Linux und du bist noch etwas weiter weg von der Hardware, als beim Arduino.
OK, sowohl den RasPi als auch den Arduino kann man auch direkt, ganz ohne Bibliotheken und Betriebssysteme, programmieren, allerdings ist dabei die Unterst6ützung in Foren wiederum recht dünn.

Für FPGAs und VHDL ist die Luft dann ziemlich dünn. Da gibt es nicht so viele Leute, welche sich damit beschäftigen.

Also erarbeite dir erst einmal die Grundlagen mir einem µC.

MfG Peter(TOO)

Kael
10.10.2017, 06:14
Hallo! Danke schon mal für die Antworten.
Nun von Arduino besitze ich dieses Set:
https://www.amazon.de/gp/product/B01IHCCKKK/ref=oh_aui_search_detailpage?ie=UTF8&psc=1


Wobei Arduino meines Wissens ja mit C und C++ zu programmieren ist? (gut das lernen wir auch, aber Hardwareprogrammierung mit C/C++ kommt im ganzen Semester überhaupt nicht vor).

Edit: eine Buchempfehlung für C++ Hardwareprogrammierung wäre super :)

engineer
12.12.2017, 22:32
Was für ein Studium ist das, was keine HW programmiert wird? Wir hatten das damals in OS/9 mit C und ASM für 8085. Macht man das heute nicht mehr?

Kael
12.12.2017, 23:02
Bei uns programmiert man nur mit VHDL und dann wars das erstmal mit Hardwareprogrammierung.
Bei dem C++ Kurs darf ich Sudokus programmieren... nervig

shedepe
13.12.2017, 12:46
Ich würde mal sagen es ist gerade bei Universitätsstudiengängen eher die Ausnahme als die Regel dass man sich mit Programmierung beschäftigt. Gerade C/C++/Java wird bei uns zwar durchaus mal angesprochen. Wirkliches programmieren lernt man dort allerdings. Da wird erwartet dass man sich so etwas selber beibringt.
Bei VHDL haben wir in Vorlesung besprochen wie man das denn für einen FPGA / ASIC synthethisiert, also die Toolchain im Detail auseinander genommen und die Algorithmen dabei angeschaut. Programmierung in VHDL ist eher nebensache die man in freiwilligen Praktikas lernen kann.

Generell ist es doch so, dass man Programmierung am ehesten dadurch lernt, dass man eben was programmiert und nicht dadurch dass jemand vorne steht und einem etwas darüber erzählt.

HaWe
13.12.2017, 13:13
Was für ein Studium ist das, was keine HW programmiert wird? Wir hatten das damals in OS/9 mit C und ASM für 8085. Macht man das heute nicht mehr?
Auskunft darüber wird sicher nur die aktuelle Studienordnung samt Vorlesungsverzeichnis geben.

i_make_it
13.12.2017, 13:16
Mann kann selbst heute noch zum Einsteigen vor VHDL und FPGA's einsteigen.
Den PAL16r8 bekommt man heute immer noch ab rund 5€ aufwärts.
Und bei GALs gibts den GAL22v10 sogar ab rund 2€.
Auch PLD's und CPLD's gibt es noch ab rund 2€.
Damit kann man sich schon etwas in die Grundlagen der Hardware Synthese einarbeiten.

Projekte um eine Arduino als GAL/CPLD Programmer zu nutzen gibt es auch.
http://forum.arduino.cc/index.php?topic=115076.0
Wobei man für jeden Zielbaustein auf die Daten wie Programmierspannung achten muß.
Ein Vergleich und kurzen Überblick zu den IDE's gibts hier:
https://hackaday.com/2008/12/11/how-to-programmable-logic-devices-cpld/

HaWe
13.12.2017, 13:19
Edit: eine Buchempfehlung für C++ Hardwareprogrammierung wäre super :)

zum C++ Lernen mit Arduino: am besten viele Arduino-Tutorials durcharbeiten und die entspr. Projekte selber variieren, und auch viele eigene Projektideen verwirklichen, das Wissen kommt dann "by doing".
Zum Nachschlagen:
http://www.cplusplus.com/reference/clibrary/
http://www.cplusplus.com/doc/tutorial/

Aber nicht immer funktioniert alles an Standard C/C++ mit Arduinos, denn einmal gibt es oftmals gar nicht die klassischen libs für die kleinen MCUs (z.B. stdio, file system für SD cards, std stream und/oder die string class), zum Anderen sind die, die es gibt, auch oft für Arduino stark verändert.

Wenn es um C/C++ für Linux geht (also i.P. auch um das klassische C seit seiner Erfindung, auch auf Raspberry Pi), dann guck mal hier unter Tutorials und Links bzw. bei den entsprechenden Devices:
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8689#p67768