Ce matin, je suis allé au bureau de la succursale californienne d'Arduino. Il y a eu une réunion intersociétés sur les programmes éducatifs à laquelle le directeur d'AMD, Timur Paltashev, m'a invité. À la fin de l'événement, une discussion intéressante a éclaté:
À l'heure actuelle, les écoliers apprennent à programmer Arduino et d'autres appareils basés sur des microcontrôleurs et des processeurs intégrés (Lego, Rasberry Pye, etc.). Mais dans les années 1970, les écoliers ont appris ici en Californie à assembler des circuits sur une planche à pain, des transistors et des microcircuits d'un faible degré d'intégration (7400 TTL, CMOS 4000, etc.) avec des éléments AND-OR-NOT et des déclencheurs D. C'est comme un progrès - sur un microcontrôleur, vous pouvez écrire un programme qui déplacerait consciemment une main robotique, ce qui est difficile à faire sur des éléments logiques individuels, mais comment pouvons-nous grandir des écoliers qui peuvent concevoir (pas programmer) des microcontrôleurs eux-mêmes?
La réponse est généralement évidente: entre les éléments logiques individuels et les microcontrôleurs sortis en usine, vous pouvez mettre des circuits intégrés logiques programmables (FPGA) et utiliser la triade "éléments individuels - FPGA - microcontrôleurs" pour former une image plus complète du monde chez les enfants, qui a non seulement un logiciel et une petite interface, mais une pensée systémique, dans laquelle les tâches sont réparties entre la programmation et les circuits, et, bien qu'à un niveau très simple du lycée, tous les niveaux sont compréhensibles et Technology - de la physique des semi-conducteurs aux transistors aux portes - pour enregistrer le niveau de transfert - au niveau de l'unité de micro-processeur / de bloc - aux commandes architecture de niveau / système - à la programmation de niveau en C et Python - pour robots et ainsi de suite.

L'idée d'enseigner aux écoliers sur l'ensemble des circuits numériques et de la programmation intégrée sonne bien théoriquement, mais comment la concrétiser?
Arduino possède déjà des cartes FPGA peu coûteuses, et les fabricants de FPGA ont commencé à distribuer des logiciels gratuits pour la synthèse sans licences complexes. Cependant, sur le chemin du nirvana:
- Mauvaise convivialité logicielle pour la synthèse des circuits et la configuration des FPGA par eux
- Une différence sérieuse entre le modèle mental parallèle du code dans le langage de description SystemVerilog de l'équipement et le modèle mental clair intuitif de programmation séquentielle
- Problèmes spécifiques aux enfants, par exemple: même les jeunes écoliers (7-10 ans) sont relativement faciles à comprendre le concept de courant électrique, de résistance et de condensateurs, les éléments de logique combinatoire, les opérations arithmétiques binaires - mais avec une compréhension de la logique séquentielle (déclencheurs D, compteurs, registres à décalage, machines à états finis) il y a une prise, bien que les élèves plus âgés le comprennent.
Si vous ne savez pas ce que sont les FPGA, vous pouvez lire mes anciens textes
"Comment commencer à développer du matériel en utilisant des FPGA - instructions étape par étape" , ainsi que
"Introduction à la conception du matériel de la puce pour les programmeurs qui ne l'ont jamais fait" .
J'écrirai des articles séparés sur les modèles mentaux et les problèmes des enfants, et maintenant je vais me concentrer uniquement sur l'inamitié du logiciel de synthèse de code dans le langage de description de l'équipement. Ce logiciel semble lourd pour un enfant, même à partir des captures d'écran:
Altera Quartus II:

Xilinx Vivado:

Il est clair qu'une telle interface graphique n'est pas adaptée aux enfants. Les enfants ont besoin d'une interface graphique simple et propre comme Arduino, mais avec quelques spécificités pour synthétiser les langages de description du matériel - par exemple, l'interface graphique doit montrer la taille du circuit et la fréquence d'horloge maximale à laquelle le circuit peut fonctionner sans surcharger avec des détails inutiles. Et montrez également le schéma synthétisé:

L'écriture d'une interface graphique simple dans le style Arduino ne devrait pas être une tâche très difficile, car Xilinx et Altera contiennent des programmes dans leurs packages qui effectuent la synthèse et le traçage à partir de la ligne de commande, et l'interface graphique peut appeler ces programmes. Reste à savoir qui voudrait le faire sous la forme d'un projet open source populaire. J'ai promis à mes camarades d'Arduino.org de regarder parmi mes russes, ukrainiens, etc. contacts, qui pourraient le faire. Je suggère d'en discuter dans les commentaires.
Question: Pourquoi synthétiser le circuit flashé dans le FPGA à partir de la description dans Verilog / SystemVerilog / VHDL? Après tout, existe-t-il un outil de synthèse de haut niveau qui vous permet de synthétiser un circuit à partir d'un algorithme en C?
Réponse: Les Tula de ce type ont de sérieuses restrictions sur les types de programmes qu'ils peuvent produire. Essayez un tel outil pour concevoir un processeur pipeliné avec des stalles et des transferts.
Question: Mais j'ai trouvé sur le site internet de cette carte très arduino avec FPGA (
http://www.cnx-software.com/2016/10/21/alorium-xlr8-arduino-compatible-altera-max-0-fpga-board -sells-for-75 / ) qu'il peut être programmé avec l'environnement Arduino habituel, avec les croquis habituels.
Réponse: c'est juste que le fabricant a synthétisé le microcontrôleur AVR et l'a flashé sur le FPGA. Utiliser des FPGA de cette façon, c'est comme utiliser un lecteur de CD-ROM comme support à café. Cela peut être fait, mais cela n'épuise pas l'essence du lecteur. Vous pouvez créer une variété de schémas sur les FPGA, à partir d'un simple élément ET et des ampoules clignotantes d'une manière de circuits, et pas seulement de flasher un grand processeur conçu par d'autres personnes.