WebFPGA - Verilog-Entwicklung im Browser

Ich denke, viele Programmierer, angefangen von Python-Datayayisten bis hin zu harten Treiberentwicklern, heben manchmal ihre Augen und seufzen träumerisch: "Oh, es wird schwieriger, schwieriger ...". Natürlich sprechen wir über Verilog, eine Sprache zur Beschreibung und Modellierung elektronischer Systeme. Verilog hat sich immer unter den Programmiersprachen hervorgetan. Um Probleme zu lösen, die auf keine andere Weise überwunden werden können, ist jedoch eine spezielle Hardwareplattform erforderlich, FPGA - eine integrierte Schaltung mit programmierbarer Logik. Die Schwelle für den Einstieg in die Entwicklung von Verilog ist relativ hoch, könnte aber bald etwas niedriger werden, weil gerade jetzt

Crowdfunding-Projekt : WebFPGA.
Das Wesentliche des Projekts : Debug-Board für FPGA iCE40UP5k. Die gesamte Entwicklungs- und Debugging-Software befindet sich in der Cloud. Die Interaktion mit dem Board erfolgt im Browser über die WebUSB-API.
Plattform : Kickstarter.
Gepostet von Ryan Jacobs (Programmierer), Mick Jacobs (Elektronikingenieur).
Ort : Los Angeles, Kalifornien, USA.



Die Karte kombiniert das Lattice iCE40UP5k FPGA (5280 Logikzellen, 32 GPIO, 1 Mbit / s SRAM) und den Mikrocontroller der STM32F04-Serie. Genauer gesagt, der Entwickler meldet das Mikrocontroller-Modell nicht, aber nach dem Foto der Platine ist dies TSSOP-20, und in TSSOP-20 ST ST Microelectronics gibt es nur einen Mikrocontroller der STM32F04-Serie - STM32L041F6 für 2,02 €.

Es ist interessant, dass einer der Autoren des Projekts, Ryan Jacobs, Student an der UCLA ist. Er hat noch keinen erklärenden Lebenslauf und gibt einen Link zu GitHub, auf dem er bereits 1.700 Sterne verdient hat.

Während der Cloud-Teil des Projekts auf 6 Servern gehostet wird (die genauen Merkmale sind nicht bekannt, aus der gesamten Spezifikation ist nur bekannt, dass es sich um „Dual Xeon“ handelt), verspricht der Entwickler, dass ein Teil der durch die Kampagne gesammelten Mittel für bereits gekaufte Geräte verwendet wird, wenn der gesammelte Betrag Wenn das Projekt 10.000 USD überschreitet, sind diese zusätzlichen Mittel ein Signal für eine große Anzahl potenzieller Benutzer, und der Serverpark wird erweitert. Laut dem Autor passt Cloud-Speicher wie Amazon oder Azure nicht in das aktuelle Geschäftsmodell, sodass sofort beschlossen wurde, das gesamte Backend auf eigenen Servern bereitzustellen.

Um mögliche Unruhen unter potenziellen Benutzern über die unzureichende Verarbeitungsleistung der Server zu vermeiden, versichert Ryan, dass "die Server nur zum Synthetisieren und Übertragen eines Binärcodes mit einer Größe von nur 3 Kilobyte an den Endbenutzer verwendet werden". Meiner Meinung nach ist das Verkehrsaufkommen sehr gering - das "up" hinterlässt den Quellcode für Verilog, der auch gut komprimiert werden kann, die "binäre" Firmware kommt herein, deren Größe aufgrund der relativ geringen Kapazität des verwendeten FPGA sehr gering ist.

Aber mit dem Laden von Servern durch das Synthetisieren von Firmware aus Verilog-Code ist meiner Meinung nach nicht alles so einzigartig optimistisch. Selbst wenn wir den Prozess der Optimierung der physischen Platzierung der resultierenden Schaltung im allgemeinen FPGA-Raum weglassen, der definitiv eine ziemlich schnelle grafische Oberfläche und einen ständigen Austausch ziemlich großer Informationspakete mit dem Server erfordert, bleibt der Prozess der Synthese der Firmware selbst bestehen, der meiner persönlichen Meinung nach der erste ist muss eine ausreichend große Menge an Prozessorzeit verbrauchen und ist zweitens nicht deterministisch und kann verzögert werden.

Persönlich habe ich FPGAs in der ersten Hälfte der Null kennengelernt (es waren Actel-FPGAs, deren Firmware im Libero + Synplify + ModelSim-Bundle entwickelt wurde), und soweit ich mich erinnere, war der Synthesevorgang selbst für einfache Bildungsprojekte nie blitzschnell. Wie bei jedem Kompilierungsprozess ist die Synthese durch alle Arten von periodischen Schluckauf und Stottern gekennzeichnet. Hoffen wir jedoch, dass die durchschnittliche Serverantwortzeit im Rahmen menschlicher Geduld liegt. Übrigens, wenn der Autor in den FAQ über die Optimierung der Kompilierung durch Zwischenspeichern von Binärdateien spricht (wenn der Verilog-Dateicode und die Compiler-Flags unverändert waren, erhält der Benutzer einfach die zuletzt empfangene Binärdatei), erwähnt er: "Sie brauchen keine 2 Minuten." Erwarten Sie den Abschluss des Synthesevorgangs. “

Wenn Sie aus irgendeinem Grund mit der Entwicklung über den Browser nicht zufrieden sind (zumindest kann davon ausgegangen werden, dass der Prozess zunächst feucht ist), können Sie über IceStorm / iCECube mit FPGAs arbeiten.

Wenn Sie sich für die WebUSB-Technologie interessieren, können Sie auf die folgenden offenen Projekte achten (alle Links führen zu GitHub, sodass Sie für diese Projekte sofort unter diese Hauben gelangen können):

  • WebUSB + Arduino . Es funktioniert nur auf Arduino-kompatiblen Motherboards mit vollem USB-Anschluss wie Arduino Zero oder Adafruit Feather 32u4.
  • Weblight . Eine LED, die an den ATtiny85-Mikrocontroller angeschlossen und über das Internet gesteuert wird. Wenn Sie die LED steuern können, können Sie natürlich auch andere externe Geräte steuern, alles, was mit dem GPIO verbunden werden kann.
  • Yubikey HOTP . Geräte zum Schutz personenbezogener Daten auf Computern und Smartphones. Sie arbeiten mit Facebook, Gmail, GitHub und vielen anderen Diensten.
  • webdfu . USB DFU wird zum Programmieren von Mikrocontrollern verwendet. Ich selbst verwende diesen Modus zum Programmieren von Geräten, die auf STM32-Mikrocontrollern basieren. Wenn das Installationsprogramm die technologische Installation ausführen und die Firmware von mehreren Dutzend Geräten aktualisieren muss, können Sie keinen Laptop mit Windows, sondern ein Android-Telefon mitnehmen.
  • JS IDE für RTOS Zephyr Project, mit dem Sie Code auf alle Zephyr-kompatiblen Karten herunterladen können, von denen es mehr als hundert gibt. Kaufen Sie jetzt etwas wie STM32F723E Discovery oder UDOO Neo Full und schreiben Sie den Code dafür direkt auf Ihr Telefon.

Auf der Projektseite sprechen Entwickler über die Unterstützung der WebUSB-Technologie in Chrome, Opera und Edge, aber mozilla.org verfügt jetzt über andere Informationen. Edge ist nicht in der Liste der kompatiblen Browser enthalten:



Angesichts der Tatsache, dass Microsoft Edge nur noch 5,2% des Browsermarktes einnimmt, ist dies nicht kritisch. Wenn Sie jedoch noch über Edge verfügen, sollten Sie sich möglicher Inkompatibilitäten bewusst sein. Auf der anderen Seite besteht jetzt die Möglichkeit, für FPGAs in Chrome OS zu entwickeln, was bisher prinzipiell unmöglich war.

Soll ich diesem Projekt helfen? Meiner Meinung nach lohnt es sich. Als ich mich bereits den Unterstützern anschließen wollte, stellte sich leider heraus, dass Sie in den USA oder Kanada ansässig sein müssen, um WebFPGA zu bestellen. Wenn Sie in der globalen „Burg“ wohnen, bittet der Autor ihn diplomatisch um Kontaktaufnahme und verspricht zu überlegen, was dagegen getan werden kann. Ich verstehe nicht ganz, womit diese Einschränkung verbunden ist. In der Regel bestimmen die Autoren von Crowdfunding-Kampagnen einfach die unterschiedlichen Kosten für die Zustellung des Artikels in verschiedene Länder (gemäß den Posttarifen des Landes, in dem sich das Projekt befindet), sodass das Paket auch in weniger prosperierenden Regionen als in Nordamerika empfangen werden kann.

Das FPGA iCE40UP5k unterliegt meines Wissens keinen Exportbeschränkungen und ist bei Mouser zu einem Preis von 6,46 € frei erhältlich. Der Mikrocontroller STM32L041F6 für 2,02 € kann umso mehr kostenlos bestellt werden. Vielleicht hat sich der Autor der Crowdfunding-Kampagne entschlossen, sich vom Pareto 80/20-Prinzip leiten zu lassen und sich sanft zu weigern, mit Kunden außerhalb der zivilisierten ökumenischen Welt zusammenzuarbeiten? Wenn er das Projekt wirklich alleine zieht, kann sich dies als die richtige Geschäftsentscheidung herausstellen.

Das Projekt ist natürlich etwas umstritten. Entwicklung auf Verilog in einem Browser mit Cloud-Software - na ja, irgendwie cool; Insbesondere in Ländern, in denen der Respekt vor proprietärer Software durch zahlreiche Präzedenzfälle aus der Praxis unterstützt wird, ist das Herunterladen einer wirklich coolen und praktischen IDE für die Entwicklung auf Verilog von Torrents und die anschließende Verwendung in Ihrem Unternehmen ein weitaus selteneres Phänomen als sagen wir, in den Ländern der ersteren. UdSSR. Ich selbst lade natürlich nichts von Torrents herunter und rate Ihnen nicht, aber jemand kann das, Sie können alles von ihm erwarten.

Auf der anderen Seite ist es jetzt möglich, eine kostenlose Programmierumgebung für FPGAs zu verwenden (zumindest iCEcube2, die zwar an Ihr Lattice-Konto und die MAC-Adresse des Arbeitscomputers gebunden ist, aber kostenlos verteilt wird) sowie eine kostengünstige Debugging-Karte eines chinesischen Herstellers. Wenn Sie also keine spezielle Software kaufen können, müssen Sie sich nicht auf Cloud Computing konzentrieren. Aber - das Projekt ist an sich ziemlich cool (Verilog! Im Browser! WOW!) Und kann als Ergebnis der Entwicklung zu etwas mehr führen. Vielleicht wird im Laufe der Zeit die Ökosphäre in der Nähe der Benutzergemeinschaften von Arduino oder Raspberry Pi geboren, und Amateur-FPGA-Enthusiasten können Verilog-Code, kompilierte Kerne und andere Entwicklungen so frei austauschen, wie es heute in der Welt der Mikrocontroller der Fall ist. Im Allgemeinen scheint es mir, dass die Vorteile der Kampagne die Nachteile überwiegen.

Zu Ehren der Autoren der Crowdfunding-Kampagne vertuschen sie nicht die Tatsache, dass es wettbewerbsfähige Geräte gibt, die auch versuchen, eine interessante Füllung mit einem relativ niedrigen Preis zu kombinieren:

  • Das MojoBoard V3 mit einem Preis von 75 US-Dollar enthält das Spartan 6 XC6SLX9-FPGA im TQFP-144-Paket, kombiniert mit 84 GPIO-Mikrocontroller-Begleitern ATmega32U4;
  • IceBreaker, ein weiteres Crowdfunding-Projekt, wurde bereits erfolgreich abgeschlossen. Für 69 US-Dollar wird ein Motherboard mit Lattice iCE40UP5k FPGA und FT2232-Konverter angeboten.
  • TinyFPGA BX, Preis $ 38, FPGA ICE40LP8K (7680 Logikzellen), 41 Pins GPIO.

Während ich in Russland lebe, kann ich nicht vollständig am WebFPGA-Projekt teilnehmen, aber ich habe Ryan 5 US-Dollar mit der Option "Spende ohne Vergütung" gesendet (dies ist so etwas wie die Schaltfläche "Geld an Autor senden" bei Habré). Erstens scheint mir das Projekt selbst sehr interessant und nützlich zu sein. Zweitens abonniert mich eine kleine Spende automatisch zu allen Neuigkeiten über das Projekt. Ich fühle mich ein wenig wie Warren Buffett, der manchmal eine Aktie eines Unternehmens kauft, das ihn interessiert, so dass er später als Aktionär, wenn auch als Minderheit, jährlich ein vollständiges Berichtspaket erhält.

Gemessen an der Identität der Autoren, von denen einer die Nacht verbringt und auf GitHub schläft. Selbst wenn das Projekt nicht startet, erhalten wir dennoch eine Menge sehr nützlichen Quellcodes, und möglicherweise werden im Laufe der Zeit Menschen bereit sein Sagen Sie, heben Sie ein gefallenes Banner.

Ich habe einen kleinen Blog über Open Source Hardware und Crowdfunding. Wenn Sie ein interessantes DIY-Entwicklungs- oder Crowdfunding-Projekt im Bereich Elektronik haben, bin ich für den Link dankbar.

Source: https://habr.com/ru/post/de457910/


All Articles