FAQ zum FPGA-Einsteigerkurs

  • Hallo Semir, hallo alle anderen.

    Was ich noch erwähnen möchte, im Kurs nehme ich als Betriebssystem für die etwas ältere Entwicklungsumgebung "Quartus" ein Windows XP in einer virtuellen Maschine!
    Also das was der Hersteller damals für Quartus angegeben hat und das läuft reibungslos. Neuere Quartus Versionen (also alles ab V14) haben den im Kurs eingesetzten FPGA nicht mehr in der Unterstützung. Wir sind also auf diese alte (aber für uns kostenlose und weit mehr als ausreichende) Software angewiesen und festgenagelt!

    Die Entwicklungssoftware für diesen FPGA gibt es natürlich auch für Linux und ich habe Sie auch unter Linux laufen, aber: über die letzten Monate habe ich im Hintergrund mit drei potentiellen Kursteilnehmer mit unterschiedlich tiefen Kenntnissen in Linux, die Software auf Linux eingerichtet und wir sind dabei alle fast verrückt geworden! :smiley7:

    In erster Linie natürlich weil jeder eine andere und neuere Linux-Distribution installiert hat, es dabei jedesmal ein anderes Paketsystem zur Installation benötigter Libs mitbringt oder diese oder jene Lib in einer bestimmten alten (für Quartus passenden) Version direkt aus dem Sourcecode compiliert werden muss. Dann machen einige Nachbau-USB-Blaster, also das Programmiergerät auf einem aktuellen 64 Bit-Linux fast regelmäßig Probleme bei diesen Teilnehmern.
    Also müsste man, will man nicht viel am System fummeln sondern arbeiten, ein "altes" Linux installieren, dass zu der Zeit als die Quartus-Version raus gekommen ist, erschien.

    Meine Empfehlung daher: Egal ob Win10 oder Linux xyz oder Unix ...., setzt einfach eine virtuelle Maschine mit VirtualBox oder vmware .... auf und installiert da drin zum Beispiel ein WinXP oder ein Betriebssystem was aus dieser Zeit stammt, als die 13er Version von Quartus herausgegeben wurde! Es ist sonst unmöglich bei der Vielzahl unterschiedlicher Linux-Distributionen Unterstützung geben zu können!
    Ich will natürlich niemanden davon abhalten die alte Quartus V13 auf ein aktuelles Linux zu installieren, aber ein Stück weit ist dann der PC-Nutzer selbst in der Verantwortung und muss sich da durchwurschteln, wenn das System einen Downgrade bestimmter Libs verlangt! Wenn man dann nicht selbst vor der Problemmaschine sitzt, sondern auf fernmündliche Problembeschreibungen ohne wirkliches Log angewiesen ist, na das ist wie ein bisschen :smiley39: . ;)

    In der ersten Lektion werden wir also die Entwicklungsumgebung installieren, ein erstes Projekt machen und modifizieren, erste Sprachelemente von Verilog kennen lernen und uns etwas in der Entwicklungsumgebung umsehen. Eine kleine Hausaufgabe rundet die 1 Lektion dann wieder ab.


    Gruß Bernhard

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

    Edited once, last by Bernhard45 (July 16, 2020 at 12:07 PM).

  • Hallo Bernhard,

    ich habe gerade die Lektion1 durchgespielt. Ging alles problemlos.

    Allerdings habe ich das auch am Ende in einer Virtuellen Maschine unter Windows 7 32Bit gemacht. Unter Linux läuft der USB Blaster einfach nicht zuverlässig und ich habe keine Lust jetzt zu ergründen woran das liegen mag. Ich bin was BS angeht so eine Art Agnostiker und verwende das was mich mit dem geringsten Aufwand zum Ziel bringt.

    Was ich noch fragen wollte ist, warum Du Verilog anstelle von VHDL für den Kurs verwendest? Ich hatte mich schon etwas mit VHDL beschäftigt, aber Verilog finde ich auch interessant und etwas neues zu lernen ist nie verkehrt.


    In den kommende Tagen werde ich mal versuchen die Aufgaben umzusetzen. Das ist schon recht Heavy was Du da von einem Anfänger wie mir erwartest aber ich werde mir alle Mühe geben :D

    Einen Herzlichen Dank auf jeden Fall, dass Du das hier machst! Finde ich Super!

    Viele Grüße
    Semir

    "Alle sagten: Das geht nicht. Dann kam einer der wusste das nicht, und hat es gemacht."
    (Prof. Hilbert Meyer, Uni Oldenburg)

  • Falls jemand ein WindowsXP zum installieren in einer virtuellen Maschine wie z.B. unter VirtualBox braucht, ich hab eine Firmenlizenz für WindowsXP, die nicht online aktiviert werden muss, sondern mit der Installation auch ohne Internetverbindung automatisch aktiviert ist. Einfach fragen, dann stell ich das notwendige Installations-Image irgendwo zum Download zur Verfügung.

    Gruß

    (Reflex-)Kalle

  • Hallo Kalle,

    danke für dein Angebot, ein ähnliches wollte ich auch schon schreiben. Ich war mit meiner Firma lange Zeit MSDN-Abonnent und habe bis ungefähr 2007/8 alle Betriebssysteme (NT 3.5 bis Vista) und Anwendungen von Microsoft monatlich, quartalsweise(?) zugeschickt bekommen! Diese DVD-Images für die Installation in VMs oder auf PCs würde ich für diesen Kurszweck abgegeben und bereitstellen wenn Ihr keine eigenen Installationsmedien mehr habt.

    Hallo Semir


    ich habe gerade die Lektion1 durchgespielt. Ging alles problemlos.

    Super!


    Allerdings habe ich das auch am Ende in einer Virtuellen Maschine unter Windows 7 32Bit gemacht. Unter Linux läuft der USB Blaster einfach nicht zuverlässig und ich habe keine Lust jetzt zu ergründen woran das liegen mag. Ich bin was BS angeht so eine Art Agnostiker und verwende das was mich mit dem geringsten Aufwand zum Ziel bringt.

    So mache ich das eigentlich auch, das Betriebssystem ist Mittel zum Zweck. Ich will damit arbeiten und es nicht modifizieren!
    Wenn die Angelegenheit auch mit Windows 7 läuft, besteht vielleicht auch Hoffnung das eine Windows 10 - Umgebung einsetzbar ist? Ich habe mit Windows XP einfach das Betriebssystem gewählt, was zur Zeit des Releases der Entwicklungssoftware aktuell war und empfohlen wurde.


    Was ich noch fragen wollte ist, warum Du Verilog anstelle von VHDL für den Kurs verwendest? Ich hatte mich schon etwas mit VHDL beschäftigt, aber Verilog finde ich auch interessant und etwas neues zu lernen ist nie verkehrt.

    Sehr gern. Als wir in der Firma uns damals mit ASIC und FPGA beschäftigt haben, gab es schon eine gute Auswahl an Sprachen für die Synthese und Simulation.
    Der Einstieg in die Materie fiel besonders den Leuten leicht, die mit Verilog angefangen hatten und nicht mit anderen Sprachen. Das habe ich später auch bei Leuten gesehen die mit VHDL angefangen haben und die Sprache schnell als Last und hohe Einstiegshürde angesehen haben. Nach dem Wechsel auf Verilog jedoch kamen dann schnell Erfolgserlebnisse.
    Ich vermute das der große Sprachumfang von VHDL das Problem ist. Die Sprache ist "aufgeblasen" und letztendlich führt nur ein Teil der Sprache zu einem synthesefähigen Code, der Rest ist eher für Testbenches und Simulation gedacht. Das führt dazu das man schnell Module schreibt, die nicht synthesefähig sind, sich also nicht in eine Chipstruktur wandeln lassen. Vergleicht man funktionskongruente VHDL-Module mit Verilog-Module, so ist deren Code in der Regel deutlich größer, aufgeblähter, abstrahierter. Ich denke das bereitet Einsteigern Probleme.

    Unter dem Strich, möchte man mit FPGA Geld verdienen, braucht man VHDL und Verilog, also beides! Fremdhersteller liefern bestimmte Zusatzmodule (Speicherkontroller, SoftCPUs, ...) manchmal nur in einer Sprache aus, weniger in beiden Sprachen und da ist es von Vorteil wenn man VHDL und Verilog versteht. Für uns im Kurs ist das aber kein Problem. Wir werden im Einsteigerkurs nie zu FPGA-Profis! Wir kratzen auch nur an einem gesunden Teil von Verilog, also gerade so, das wir die Kursziele damit gut abarbeiten können. Wer dann sagt, jawoll ich will vollwertiger FPGA-Entwickler werden und nur noch meine eigenen Chips herstellen, der kann sich dann ja mit geeignetem Buchmaterial weiterbilden. Hier im Kurs soll nur eine Grundlage dafür geschaffen werden, damit man mal sieht wie das überhaupt geht. Man vielleicht mal ein HF-Signal mit deinem FPGA erzeugt usw.


    In den kommende Tagen werde ich mal versuchen die Aufgaben umzusetzen. Das ist schon recht Heavy was Du da von einem Anfänger wie mir erwartest aber ich werde mir alle Mühe geben :D

    Echt, na ich hoffe nicht zu schwierig! Nehmt dafür immer das Beispielprojekt als Basis. Kopiert es in einen neuen Ordner und ändert es entsprechend ab. Ein komplettes neues Projekt braucht Ihr für die Aufgaben in Quartus gar nicht anlegen. Wichtig, nehmt Euch Zeit und macht die Aufgaben wenn Ihr Lust dazu habt! Ich denke 4-6 Wochen zwischen den Lektionen ist wieder ein guter Zeitraum mit dem alle Teilnehmer klarkommen? Natürlich kann man den Kurs auch "nacharbeiten".

    Gruß
    Bernhard

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

  • Hallo zusammen,

    ich wurde nach einen Logicanalyzer für den FPGA-Kurs gefragt und möchte zur allgemeinen Antwort auf diesen Thread verweisen.

    https://radio-bastler.de/forum/index.ph…highlight=logic

    Die 10 Euro Salea-Clone sind immer noch erhältlich und für dieses Hobby mehr als ausreichend!

    Gruß
    Bernhard

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

  • Hallo zusammen,

    nun ich bin über die rege Teilnahme am FPGA-Kurs doch überrascht, mehr als erwartet.

    Zur zentralen Beantwortung einer Frage:

    In Aufgabe 1 hieß es: " Ändere den Modulcode des Beispielprojektes so ab, dass LED D2, D4, D5 ein Lauflicht bilden. "

    Die Frage: In welcher Reihenfolge soll das Lauflicht funktionieren und die LEDs blinken?

    Hmm, das ist in der Tat egal. Ob nun erst alle LEDs nacheinander an und dann wieder aus gehen, ob immer nur eine LED geschaltet wird oder ob Ihr einen Larson scanner ([url=https://www.yoctopuce.com/EN/article/lar…k%20and%20forth.]https://www.yoctopuce.com/EN/article/lar…k%20and%20forth.[/url]) implementiert, das ist egal. Wichtig ist das Ihr Euch mit den Grundelementen von Verilog beschäftigt und mit den gegebenen Sprachelementen experimentiert und diese auf andere Probleme anwenden könnt.

    Errata: Experimentiere mit der Zählvariable so, dass Du durch den Systemtakt des FPGA ... :s :huh: wie kommt denn da ein Du hin? Tausendmal gelesen und doch übersehen, ich werde wohl langsam alt.

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

  • Hallo Zusammen,

    ich habe hier ja ein Dual Boot System mit Linux und Windows10 64bit.

    Die Quartus Software läuft auch auf Win10. Habe gerade den Code aus der Lektion #1 unter Win10 Programmiert. Geht.

    Viel Spaß noch mit dem Kurs an Alle!

    Viele Grüße
    Semir

    "Alle sagten: Das geht nicht. Dann kam einer der wusste das nicht, und hat es gemacht."
    (Prof. Hilbert Meyer, Uni Oldenburg)

  • Das ist eine wunderbare Nachricht Semir!

    Hier ein paar weitere Sachen die ich beantworten möchte. Ich bin bisher ausgegangen, dass sich Teilnehmer dieses FPGA-Kurses in der Vergangenheit wenigstens mal mit irgendeiner Art von Programmierung, entweder am Homecomputer, PC oder irgendeinem Mikrocontroller, beschäftigt haben. So ohne weiteres kommt man ja nicht zum Chipdesign denkt man, Fehlanzeige! Es gibt offensichtlich einen direkten Weg zu FPGA, der dann aber viele Fragen offen lässt, so zum Beispiel was Zahlensysteme sind und wie man diese in Verlog behandelt.

    Das es mehr als ein Zahlensystem gibt, scheint vielen Leuten so gar nicht klar. Im Computerbereich hat man neben dem Dezimalsystem (mit dem alle Welt rechnet) mindestens auch mit dem Binär- bzw. Dualsystem zu tun. Binär/Dual = zwei bedeutet also in diesem Zahlensystem gibt es nur zwei Zahlen, die 0 und die 1, keine 2, keine 3, keine ... und dennoch kann man damit alle Zahlenwerte dieser Welt darstellen! Maschinen rechnen uns damit täglich Werte aus weil sich die zwei Zahlen 0 und 1 des Systems so prima in der Elektronik durch "kein Strom" und "Strom fließt" darstellen lassen.

    Und da andere bereits viele umfangreiche und tolle Artikel zum Dualsystem geschrieben haben, will ich einen dieser hier einfach verlinken: https://de.wikipedia.org/wiki/Dualsystem

    Das nächste Zahlensystem mit dem man im FPGA/Computerbereich in Berührung kommt, ist das Hexadezimalsystem! Hex = 6 und dezi = 10, also ein Zahlensystem mit 16 Zahlen!

    Es gibt dort als Zahl die 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, aber kein G, kein H, kein .... ! Buchstaben als Zahlen? Ja klar. Hier die Erklärung: https://de.wikipedia.org/wiki/Hexadezimalsystem

    Das nächste System ist das Oktalsystem! Okta = 8, dieses Zahlensystem hat also 8 Zahlen: 0, 1, 2, 3, 4, 5, 6, 7, aber keine 8, die wird als 10 dargestellt und auch keine 9 die im Oktalsystem nämlich eine 11 ist! die Erklärung hier: https://de.wikipedia.org/wiki/Oktalsystem

    Wie gibt man diese Zahlensysteme nun in Verilog an?

    Zahlen in Verilog werden so dargestellt:

    <Größe>’<Vorzeichen><Zahlensystem>Wert Alle <>-Blöcke sind optional!

    <Größe>: Anzahl der Bits die die Zahl belegt, standardmäßig 32-Bit
    : Seperator
    <Vorzeichen>: s oder S für signed also Vorzeichen, standardmäßig ohne Vorzeichen
    <Zahlensystem>: ’b or ’B : Binär- oder Dualsystem ’o or ’O : Octalsystem ’h or ’H : Hexadezimalsystem ’d or ’D : Dezimalsystem, standardmäßig ist Dezimalsystem

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

    Edited once, last by Bernhard45 (July 27, 2020 at 4:50 PM).

  • Eine andere Frage war, ob man mehrere Prozeduralblöcke mit gleichem Event in einem Modul definieren kann und wie man in einem always @(posedge clk) blockierende Zuweisungen nutzen kann?

    Nein in einen solchen Block hat man mit blockierenden Zuweisungen aufs falsche Pferd gesetzt, hier können nur nicht blockierende Zuweisungen genutzt werden! Mehrere always-Blöcke sind aber kein Problem!

    Ich habe im Netz dazu auf die Schnelle eine Folienserie gefunden die das wunderbar darstellt:

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

    Edited once, last by Bernhard45 (August 8, 2020 at 9:56 PM).

  • Ich frage mal vorsichtig an! Können wir mit Lösung und Teil2 fortfahren oder wird noch Zeit benötigt? Deutschland leidet ja gerade an einem Hochsommer wie ich erfahre und damit leidet vielleicht auch die Lust (verständlicherweise) bei dem einen oder anderen Teilnehmer?

    Gruß
    Bernhard

    Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
    Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")

    Edited once, last by Bernhard45 (August 13, 2020 at 3:01 PM).

  • Hallo Bernhard,

    also um ehrlich zu sein hier ist im Moment bei mir privat und im Büro viel los und ich habe noch nicht viel gemacht. Mir wäre es ganz lieb wenn wir das noch etwas herausschieben könnten.

    Viele Grüße
    Semir

    "Alle sagten: Das geht nicht. Dann kam einer der wusste das nicht, und hat es gemacht."
    (Prof. Hilbert Meyer, Uni Oldenburg)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!