Ich ging in das Büro von Arduino; sprach über FPGAs; Freiwillige erforderlich

Heute Morgen bin ich in das Büro der kalifornischen Niederlassung von Arduino gegangen. Es gab ein konzernübergreifendes Treffen zu Bildungsprogrammen, zu dem mich AMD-Manager Timur Paltashev einlud. Am Ende der Veranstaltung entstand eine interessante Diskussion:

Derzeit lernen Schulkinder, Arduino und andere Geräte zu programmieren, die auf Mikrocontrollern und eingebetteten Prozessoren (Lego, Rasberry Pye usw.) basieren. In den 1970er Jahren wurde Schulkindern hier in Kalifornien beigebracht, Schaltungen auf einem Steckbrett, Transistoren und Mikroschaltungen mit geringem Integrationsgrad (7400 TTL, CMOS 4000 usw.) mit AND-OR-NOT-Elementen und D-Triggern zusammenzubauen. Es ist wie ein Fortschritt - Sie können ein Programm auf einem Mikrocontroller schreiben, das bewusst eine Roboterhand bewegt, was bei einzelnen logischen Elementen schwierig ist. Aber wie wachsen wir mit Schulkindern auf, die Mikrocontroller selbst entwerfen (nicht programmieren) können?

Die Antwort liegt im Allgemeinen auf der Hand: Zwischen einzelnen Logikelementen und werkseitig freigegebenen Mikrocontrollern können Sie programmierbare integrierte Logikschaltungen (FPGAs) einsetzen und die Triade "Einzelelemente - FPGAs - Mikrocontroller" verwenden, um ein vollständigeres Bild der Welt bei Kindern zu erhalten. Das hat nicht nur Software und eine kleine Schnittstelle, sondern auch systemisches Denken, bei dem die Aufgaben zwischen Programmierung und Schaltung verteilt sind, und wenn auch auf einer sehr einfachen Ebene der High School, sind alle Ebenen verständlich und Technik - von der Physik von Halbleitern mit den Transistoren mit dem Gates - Transferebene zu registrieren - auf die Ebene des Mikro / Blöcke Prozessoreinheit - auf die Ebene Architektur / Systembefehle - auf Level-Programmierung in C und Python - zu Robotern und so weiter.



Die Idee, Schulkindern die gesamte Front digitaler Schaltkreise und eingebetteter Programmierung beizubringen, klingt theoretisch gut, aber wie kann man sie zum Leben erwecken?

Arduino verfügt bereits über kostengünstige FPGA-Karten, und FPGA-Hersteller haben damit begonnen, freie Software für die Synthese ohne komplexe Lizenzen zu vertreiben. Auf dem Weg zum Nirvana sind jedoch:

  1. Software-Unfreundlichkeit für die Schaltungssynthese und Konfiguration von FPGAs durch diese
  2. Ein schwerwiegender Unterschied zwischen dem parallelen mentalen Modell des Codes in der SystemVerilog-Beschreibungssprache des Geräts und dem intuitiven klaren mentalen Modell der sequentiellen Programmierung
  3. Speziell die Probleme von Kindern, zum Beispiel: Selbst jüngere Schulkinder (7-10 Jahre) sind relativ leicht zu verstehen, wie elektrischer Strom, Widerstand und Kondensatoren, kombinatorische Logikelemente, binäre arithmetische Operationen - aber mit einem Verständnis der sequentiellen Logik (D-Trigger, Zähler, Schieberegister, Finite-State-Maschinen) gibt es einen Stecker, obwohl ältere Schüler dies verstehen.


Wenn Sie nicht wissen, was FPGAs sind, können Sie meine alten Texte "So beginnen Sie mit der Entwicklung von Hardware mithilfe von FPGAs - Schritt-für-Schritt-Anleitung" sowie "Einführung in das Design der Chip-Hardware für Programmierer, die dies noch nie getan haben" lesen.

Ich werde separate Beiträge über mentale Modelle und Kinderprobleme schreiben und mich jetzt nur auf die Unfreundlichkeit der Software zur Synthese von Code in der Sprache zur Beschreibung der Ausrüstung konzentrieren. Diese Software sieht für ein Kind selbst aus den Screenshots schwer aus:

Altera Quartus II:



Xilinx Vivado:



Es ist klar, dass eine solche GUI nicht für Kinder geeignet ist. Kinder benötigen eine einfache, saubere Benutzeroberfläche wie Arduino, jedoch mit einigen Besonderheiten für die Synthese von Hardwarebeschreibungssprachen. Beispielsweise sollte die Benutzeroberfläche die Größe der Schaltung und die maximale Taktrate anzeigen, mit der die Schaltung ohne Überlastung mit unnötigen Details betrieben werden kann. Und zeigen Sie auch das synthetisierte Schema:



Das Schreiben einer einfachen GUI im Arduino-Stil sollte keine sehr schwierige Aufgabe sein, da sowohl Xilinx als auch Altera Programme in ihren Paketen enthalten, die Synthese und Ablaufverfolgung über die Befehlszeile ausführen, und die GUI diese Programme aufrufen kann. Es bleibt abzuwarten, wer dies in Form eines beliebten Open-Source-Projekts tun möchte. Ich habe meinen Kameraden von Arduino.org versprochen, unter meinen Russen, Ukrainern usw. zu suchen. Kontakte, die dies tun könnten. Ich schlage vor, dies in den Kommentaren zu diskutieren.

Frage: Warum die im FPGA aus der Beschreibung in Verilog / SystemVerilog / VHDL geflashte Schaltung synthetisieren? Gibt es ein Werkzeug für die Synthese auf hoher Ebene, mit dem Sie eine Schaltung aus einem Algorithmus in C synthetisieren können?

Antwort: Tula dieser Art haben ernsthafte Einschränkungen hinsichtlich der Arten von Schemata, die sie erstellen können. Probieren Sie ein solches Tool aus, um einen Pipeline-Prozessor mit Verzögerungen und Weiterleitung zu entwerfen.

Frage: Aber ich habe auf der Website dieses Arduino-Boards mit FPGA ( http://www.cnx-software.com/2016/10/21/alorium-xlr8-arduino-compatible-altera-max-0-fpga-board) gefunden -sells-for-75 / ), dass es mit der üblichen Arduino-Umgebung mit den üblichen Skizzen programmiert werden kann.

Antwort: Der Hersteller hat lediglich den AVR-Mikrocontroller synthetisiert und auf das FPGA geflasht. Die Verwendung von FPGAs auf diese Weise entspricht der Verwendung eines CD-ROM-Laufwerks als Kaffeeständer. Dies ist möglich, erschöpft jedoch nicht die Essenz des Laufwerks. Sie können auf FPGAs eine Vielzahl von Schemata erstellen, angefangen von einem einfachen UND-Element über blinkende Glühbirnen in Schaltkreisen bis hin zum Blinken eines großen Prozessors, der von anderen Personen entwickelt wurde.

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


All Articles