L'autre jour, j'ai rencontré et pris une courte interview vidéo de
Kathy Giori, vice-présidente des opérations d'Arduino USA . Nous avons discuté avec Katie d'une nouvelle tendance qui a déjà touché la communauté Arduino: puisque la programmation des microcontrôleurs avec l'aide d'Arduino est déjà plus ou moins apprise, il est temps de passer à l'étape suivante: apprendre aux écoliers à utiliser le langage pour décrire l'équipement Verilog et les microcircuits FPGA / FPGA, matrices logiques éléments à fonctions variables. Et pour faciliter la maîtrise du FPGA, il vaut la peine de ressusciter des exercices avec un petit degré de puces d'intégration, populaires dans les années 1970, en tant que préquelle des FPGA modernes. Tout cela comblera le fossé entre la physique et la programmation, les éléments discrets et les microcontrôleurs, un transistor et un Arduino.
Le FPGA et les cartes peuvent être utilisés par n'importe quel fabricant (Xilinx, Altera, Lattice, Digilent, Terasic), tout ce que j'écris ci-dessous n'est pas lié à une entreprise particulière.
Svetlana Khutka , une
enseignante de Stanford, a participé à une conversation avec Katya, qui a raconté à Katy une
expérience dans l'enseignement aux étudiants de l'utilisation gratuite du FPGA à Kiev , avec l'aide d'enseignants enthousiastes de plusieurs universités de Kiev. Après cela, j'ai partagé avec Katie des plans pour la prochaine expérience de ce type à l'
école d'été de jeunes programmeurs de Novossibirsk , connue depuis l'époque soviétique, et j'ai également parlé avec d'autres camarades de la communauté Arduino présents de la mise en œuvre du FPGA dans deux écoles et un collège de la Silicon Valley.
La carte mère avec FPGA, que Katya recommande maintenant, et que je refais un peu pour l'adapter à mes besoins (il y aura un billet séparé à ce sujet):

Ci-dessous, je fournirai des informations sur les résultats de l'expérience de Kiev, ainsi que certains plans pour l'avenir qui sont élaborés par des militants - enseignants des écoles et universités d'éducation physique à Kiev, Tchernigov, Novossibirsk, Moscou, Nijni Novgorod, Samara, Saint-Pétersbourg, Almaty et d'autres villes. Lors du séminaire de Kiev, les participants ont atteint le stade de la création de machines d'état d'un verrouillage de code et de l'intégration avec de simples périphériques (clavier à 16 boutons, haut-parleur). À l'école d'été de Novossibirsk, nous aurons plus de temps et nous essaierons de construire un processeur avec les élèves. À l'avenir, il est prévu de faire un cours annuel sur les bases de l'électronique numérique sur FPGA pour les écoles physiques, qui peut enrichir l'enseignement scolaire, comme dans les années 1980, il a été enrichi par l'introduction d'éléments de programmation.
Nous en discuterons en détail:
1. Pourquoi enseigner aux écoliers comment décrire le matériel et comment utiliser les FPGA? Justification du programme.Dans l'image du monde représenté par l'enseignement scolaire, il existe un «angle mort» dans le domaine des principes de conception de l'électronique numérique, entre physique et programmation. Les cours de robotique et d'arduino ne ferment pas cet angle mort, car ils se résument à la programmation de puces toutes faites. Les exercices avec des éléments discrets et des microcircuits d'un faible degré d'intégration, bien qu'efficaces pour introduire les principes de base, sont basés sur les technologies des années 1960-1970 et ne contiennent aucun lien avec le design moderne. Un angle mort peut être fermé en introduisant des éléments de puces de langages de description matérielle (NLA) et FPGA (circuits intégrés logiques programmables) disponibles pour l'expérimentation scolaire - des matrices d'éléments logiques reconfigurables. Ainsi, l'image du monde devient intégrale et contribue à la création d'un environnement pour l'émergence d'un grand nombre de jeunes ingénieurs qui ont une idée de tous les aspects des microcircuits modernes pour des applications telles que les voitures autonomes et qui sont capables de se spécialiser à l'avenir pour la conception de l'un ou l'autre aspect de ces appareils.
L'introduction de l'ALN et du FPGA dans le programme scolaire est également bien liée au cours de mathématiques et de physique dans une école de physique et de mathématiques - algèbre booléenne, schémas arithmétiques et machines à états finis.
Notez que NLA et FPGA, malgré la ressemblance superficielle avec la programmation, utilisent d'autres concepts de base:
Programmation: exécution séquentielle, branches de sélection, boucles, variables, expressions, tableaux (avec le modèle de mémoire adressable plate), fonctions (basées sur l'utilisation de la pile), récursivité.
Conception de logique numérique: élément logique combinatoire; construire une logique combinatoire à partir de ces éléments de nuage, y compris des primitives de sélection utilisant des multiplexeurs, ainsi que des blocs pour implémenter des expressions arithmétiques; le concept d'un signal d'horloge pour synchroniser les calculs et la répétition, le concept d'un déclencheur D pour stocker l'état actuel entre les mesures; machine d'état; opérations parallèles, hiérarchie des modules, concept du pipeline (non seulement pour le processeur, mais aussi pour les unités arithmétiques).
2. Le plan général de ces cours:Section 1. Connexion avec la physique, avec laboratoire sur composants discrets.
Section 2. Bases de la logique numérique et de l'arithmétique, avec des microcircuits de laboratoire avec un faible degré d'intégration.
Section 3. Conception de circuits basés sur la synthèse d'un langage de description matérielle, avec des laboratoires sur des FPGA Xilinx ou Altera.
Section 4. Architecture du processeur: vue du côté du programmeur, avec un laboratoire utilisant le simulateur de processeur RISC au niveau instruction, par exemple MARS MIPS.
Section 5. Microarchitecture: construire un processeur.
Projet individuel: intégration d'un capteur ou autre périphérique avec un circuit implémenté dans le FPGA.
3. Les résultats de l'expérience de Kiev.Le texte détaillé avec les résultats de l'expérience de Kiev a été écrit par le professeur de l'Institut polytechnique de Kiev, Evgeny Korotky. Je vais le compléter avec mes conclusions personnelles. Contexte - messages sur Habré et Geektimes -
1 ,
2 ,
3 ,
4 ). Dans ces messages, des questions ont été posées. Voici les réponses:
L'hypothèse que les écoliers peuvent utiliser Verilog a été confirmée
Verilog s'est également avéré intéressant pour un nombre suffisant d'écoliers (certains collègues en doutaient avant Kiev, arguant que les enfants étaient plus intéressés par des projets tels qu'un bras robotisé avec un microcontrôleur)
L'idée qu'avant d'utiliser Verilog, il est utile de montrer des éléments logiques aux écoliers et un déclencheur D sur des microcircuits d'un faible degré d'intégration - non seulement qu'il a été confirmé sans équivoque, mais a reçu plus de justification.
Au total, après une journée d'expérience avec le veril, certains élèves ont commencé à poser des questions intelligibles - par exemple, quand utiliser le blocage et quand utiliser le devoir non bloquant.
Il est apparemment irréaliste de ramener les écoliers de zéro à des machines d'état qui implémentent des protocoles comme SPI en une semaine, mais à une machine d'état d'un verrou de code ou d'un feu de circulation - vraiment.
Il est également irréaliste de prévoir une semaine pour la conception du processeur, mais nous essaierons de le faire dans deux semaines à Novossibirsk.
Au cours de l'expérience de Kiev, nous avons essayé de parler à la fois du FPGA et des processeurs embarqués (MediaTek MT7688, situé quelque part au milieu entre Arduino et Intel Galileo ou Rasbery Pye en termes de performances). Ensuite, nous avons fait un hackathon (à l'Académie Kiev-Mohyla) et observé combien d'écoliers ont choisi un projet FPGA pour le hackathon et combien un projet avec un processeur intégré. Il s'est avéré - 50 à 50. C'est intéressant - avant le hackathon, je n'avais aucune idée de la panne.
Je craignais que les écoliers ne soient confondus par l'interface utilisateur de Xilinx Vivado, avec des tonnes d'options et d'éléments d'interface. Mais il s'est avéré que les étudiants s'en fichaient - l'interface graphique complexe ne leur faisait pas peur.
La plupart des étudiants utilisent Windows. Avec mon collègue Alexander Belits, j'ai une idée pour préparer à de tels événements quelques dizaines de disques SSD amorçables avec Linux (Ubuntu ou CentOS) et les porter d'événement en événement. Alex a même écrit un script pour cloner de tels disques. Ubuntu est plus convivial, mais CentOS est plus officiellement pris en charge par les outils d'automatisation de la conception des circuits FPGA, en particulier Xilinx Vivado et Altera Quartus. Est-il possible de faire un programme éducatif Linux et un programme éducatif Verilog / FPGA en même temps pendant un camp d'été? Ce n'est pas clair, mais cela peut être essayé.
Il s'avère que Xilinx Vivado buggy sans pitié lors de la configuration d'Artix-7 FPGA, si vous utilisez des câbles micro-USB mal blindés bon marché. Sur un afflux mystique, avant d'aller à Kiev, j'ai mis une douzaine de cordons de haute qualité dans ma valise, ce qui a sauvé le séminaire.
J'ai eu l'idée que l'utilisation de modules FPGA pouvant être montés sur carte (des cartes FPGA qui collent dans des cartes de planche à pain), comme le Digilent Cmod A7 35T , peut faciliter le passage des exercices avec de petites puces d'intégration à des exercices avec FPGA. Que cette idée soit vraie, je n'ai pas compris. Peut-être que l'utilisation de cartes mères plus grandes avec un riche ensemble de périphériques, comme le Terasic DE10-Lite , ne sera pas pire. Quoi qu'il en soit, lorsque vous passez de microcircuits à faible degré d'intégration (CMOS 4000 ou 74HC) à FPGA - vous devez changer la tension d'alimentation (de 9 V ou 5 V à 3,3 V), de sorte que vous ne pouvez pas coller Cmod A7 au lieu de dire CMOD 4013 dans la même planche à pain avec des lumières et des boutons, et attendez-vous à ce que tout continue à fonctionner.
J'ai confirmé mon observation qu'afin d'organiser des événements éducatifs à court terme (1 semaine), il est essentiel qu'une équipe d'étudiants d'une université locale soit en place pour encadrer les écoliers. Dans le cas de Kiev, une telle équipe a été fournie par le professeur de l'Institut polytechnique de Kiev, Eugene Korotky .
Il est devenu plus ou moins clair dans quels cas et dans quelle mesure il vaut la peine d'inclure dans le programme de tels événements une partie sur le niveau des transistors et sur la production des microcircuits. Cette partie a été enseignée par le professeur agrégé de l'Université nationale de Kiev Alexander Barabanov , traducteur de matériaux sur le cours Nanometer ASIC pour les étudiants. Apparemment, ce matériel devrait être entièrement inclus dans le cours annuel pour les écoliers, dans un petit cours - dans un cours de deux semaines sous la forme d'un camp d'été, mais avec une durée de moins d'une semaine, vous devriez probablement donner des microcircuits d'un petit degré d'intégration immédiatement (dans l'heure suivant le début) (par exemple, CMOS 4000) et mentionner le transistor en passant, sous la forme de "un transistor est un dispositif dans lequel le courant circule du point A au point B, si la tension C est 1 (ou 0) en C. À partir de transistors, il est possible de construire des éléments logiques ET, OU, NON (montrez l'image). »
Au cours de conférences devant un large public, les étudiants peuvent voir des circuits assemblés sur une planche à pain à partir de microcircuits d'un faible degré d'intégration. Ceci est visuel, suscite de l'intérêt et ne nécessite pas non plus de connecter la conception à un ordinateur - uniquement avec une batterie 9 V.J'ai montré trois de ces circuits qui sont les plus critiques pour la compréhension - l'élément logique XOR, un additionneur à déclencheur D combinateur 4 bits avec une fréquence de l'ordre de 1 Hertz ( c'est-à-dire mesure par seconde).
La question reste ouverte de savoir s'il est possible d'enseigner aux étudiants l'idée du pipelining, l'une des idées les plus puissantes de la conception numérique et de l'organisation de l'informatique en général. Pour cela, il n'est pas nécessaire de construire un processeur de convoyeur; vous pouvez faire un dispositif arithmétique de convoyeur . Peut-être que cela peut être mentionné à la toute fin du cours, lorsque les enfants jouent suffisamment avec des circuits combinatoires et séquentiels simples et des machines à états. Il sera très probablement intéressant pour un très petit sous-groupe d'écoliers, mais cela vaut la peine d'essayer.
Pour des événements plus authentiques, vous pouvez utiliser des projets individuels et des travaux de vérification .
Le code sur GitHub utilisé pour l'événement de Kiev
4. Sources d'information pour le développement de futurs matériaux.Sources d'information pour les enseignants des écoles d'éducation physique, qui sont susceptibles d'élaborer la plupart des matériels détaillés, après des expériences initiales avec des étudiants en Ukraine, en Russie et dans la Silicon Valley:
Manuel de David Harris et Sarah Harris «Circuits numériques et architecture informatique», 2e édition, traduction en russe. Ce manuel peut être téléchargé gratuitement, voir les articles sur Habré à ce sujet - 1 , 2 , 3 . Récemment, une nouvelle édition papier avec une impression couleur améliorée a également été publiée.
Diapositives pour les enseignants, en plus du manuel Harris & Harris. Téléchargement gratuit.
Matériel sur le cours From NAND to Tetris , créé en Israël et introduit dans certaines universités américaines. Dans le même temps, à mon humble avis, le cours devrait utiliser des idées et un squelette, mais faire la mise en œuvre sur des sous-ensembles d'outils de conception «pour adultes», plutôt que sur des outils artificiels «pour enfants», comme le fait le cours. Les éléments clés sont téléchargés gratuitement.
Le livre de Charles Petzold «Code», qui explique adéquatement de nombreux concepts sur les doigts et dont le niveau correspond au niveau scolaire (l'idée a été suggérée par le professeur de l'école ORT de Kiev, Sergey Dziuba ). Encore une fois, de mon point de vue, cela vaut la peine d'utiliser des idées et un squelette du livre, mais la plupart du matériel devrait être remplacé par un plus correct (au lieu d'utiliser des loquets (verrou D), utilisez des tongs D (D-flip-flop)) et modernes, par exemple, au lieu d'accumulateurs basé sur 6800 et archaïque 8080 utilisent un sous-ensemble de l'architecture RISC.
Kits pour la construction de circuits sur une planche à pain basés sur des composants discrets et des microcircuits de faible degré d'intégration de la société américaine ETron Circuit Labs, de la société russe Cyberfizika, de la société ukrainienne Radiomag (je peux expliquer les différences entre ces ensembles dans les commentaires, si vous êtes intéressé).
Matériaux des fabricants de FPGA (Xilinx, Altera) et de cartes pédagogiques avec FPGA (Digilent, Terasic).
Exemples de code, tests et recommandations de projets développés par Anton Moiseev, Yuri Panchul, Eugene Korotkiy, Alexander Barabanov et d'autres ingénieurs d'entreprise et professeurs d'université pour divers événements en Californie, au Kazakhstan, en Russie et en Ukraine.
5. Plan pour le futur numéro 1. Le format du cours annuel de 35 heures académiques, réparti pour l'année académique, une heure par semaineDe la physique aux éléments discrets
Qu'est-ce que le courant, la tension et la résistance. Comment fonctionne la planche à pain? Exercice: Le premier circuit avec une batterie, une LED et une résistance. Pourquoi connecter une résistance à un circuit avec une LED. Lisez l'étiquetage des résistances. Résistances variables, photorésistances.
Qu'est-ce qu'un transistor? Vue d'ensemble des éléments de commutation des relais, tubes radio, transistors discrets aux transistors sur microcircuits. Exercices avec un thyristor (SCR - redresseur commandé au silicium - plus clairement qu'un transistor), transistors bipolaires pnp et npn.
Travaux de vérification.
Des éléments discrets à la logique combinatoire
Algèbre booléenne et algèbre de logique. Opérations, expressions, axiomes et identités, y compris les lois de Morgan. Tables de vérité.
Éléments logiques combinés ET, OU, NON, ET-NON, OU-NON, OU EXCLUSIF (ET, OU, NON, NAND, NOR, XOR). Comment les éléments combinatoires sont construits à partir de transistors. Exercice: créez AND, NAND ou NOR à partir d'éléments discrets.
Éléments logiques dans des microcircuits d'un faible degré d'intégration. Exercice individuel: chaque élève reçoit une puce logique personnelle de la série CMOS 4000, avec une description technique du fabricant, avec la tâche de dessiner une table de vérité, de démontrer son travail et de décrire verbalement la fonction. Les puces contiennent des éléments logiques AND, OR, XOR, NOR, NAND avec un nombre différent d'entrées. Que sont les résistances de rappel et pourquoi sont-elles nécessaires? Ajoutez des boutons et des résistances de rappel à l'exercice précédent.
Travaux de vérification.
Arithmétique binaire et sa mise en œuvre
Nombres binaires Convertissez du binaire en décimal et vice versa. Opérations d'addition et de multiplication. Nombres négatifs et code supplémentaire.
La mise en place d'un demi-additionneur et d'un additionneur complet utilisant des éléments logiques. La migration Additionneur multi-bits avec report séquentiel. Exercice sur la planche à pain. Mention d'un long retard et schémas avec un retard plus optimal.
Utilisation d'un additionneur complet 4 bits CMOD 4008. Construire à partir de lui un additionneur 8 bits et un schéma de soustraction. Devoirs pour les étudiants avancés: étudier et faire une présentation sur la mise en œuvre d'additionneurs rapides avec transfert de groupe accéléré.
Travaux de vérification.
Logique séquentielle
Construire un générateur d'horloge basé sur la puce 555. Etudier l'effet des condensateurs et des résistances sur la fréquence et la durée des niveaux hauts et bas.
Étant donné que les condensateurs sont inclus dans le cerclage 555, des explications supplémentaires peuvent être nécessaires sur ce que sont les condensateurs, pourquoi ils sont nécessaires dans le cerclage 555 et comment ils sont étiquetés. Un exercice auxiliaire avec des capacités de charge et de décharge de capacités différentes peut également être utile.
Schémas avec un état interne. Construisez un verrou RS à partir de portes NAND. Etude du comportement d'une bascule D à l'aide d'une puce CMOS 4013 et d'un signal d'horloge de 555 avec une fréquence de 1 Hz.
Blocs série - compteur (CMOS 4029) et registre à décalage (4015). Indicateur à sept segments et son conducteur 4511. Exercices avec ces microcircuits.
Examen.
Des petits circuits intégrés aux FPGA - Logique combinatoire
Le concept de FPGA (circuit intégré logique programmable) - une matrice d'éléments logiques reconfigurables. Concept du langage de description du matériel Verilog, procédures de synthèse, de placement, de traçage et de configuration. Exercice: synthèse du module de combinaison le plus simple avec configuration FPGA sur une carte de formation.
Continué à apprendre Verilog. Types de données, expressions, affectations. Blocs toujours et opérateurs de base. : , .
Verilog. . : . : .
Verilog . / . . : , Verilog. Icarus Verilog GTKWave .
: , ( ).
Verilog
Verilog, D- . : always-. Icarus Verilog.
: D-, . . : .
. . : .
. ( ) c . : , : , .
. , .
.
: , RISC- , MARS MIPS .
- . : , , , . . . — MARS MIPS. .
, , . : . .
. . . : , . .
.
:
Verilog MIPS , , . , , . . .
9.1
6. 2., .
, . . .
. CMOS 4000, , , . AND, OR, XOR, NOR, NAND . , .
2 , .
4- CMOD 4008.
8- 4-.
-a == ~ a + 1
555. .
D- CMOS 4013 555 1 .
“ ” CMOS 4015.
(CMOS 4029) 4511.
( ) — . Verilog, , , . Verilog, , . Always- .
.
, .
Verilog. . Verilog . / . .
: .
, Verilog. Icarus Verilog , GTKWave .
Verilog. Verilog, D- . : always-. Icarus Verilog. .
.
.
.
2 3 .
. . . ( ) c .
“ ”.
.
.
: . - . MARS MIPS .
: , , , . . . .
, , . .
. . . , . .
: .
Verilog MIPS , , . , , . . .
.
Annexe A. Qu'est-ce que le langage de description du matériel Verilog et comment il se rapporte à la conception des microcircuitsExtrait d'une publication sur Geektimes Microelectronics Scammers . Reportage vidéo de la San Francisco Electronics Design Conference.25 Verilog ( — VHDL), (logic synthesis) , (static timing analysis) , , (place-and-route) .
: , , , , static timing analysis, floorplanning, place-n-route, parasitics extraction .. — GDSII, , . Taiwan Semiconductor Manufacturing Company TSMC.
Annexe B. Qu'est-ce que le FPGA / FPGA et pourquoi l'étude des FPGA ne peut pas être remplacée par une étude plus approfondie d'Arduino ou de Rasberry Pye.Dans un article sur Habr. Comment commencer à développer du fer en utilisant des FPGA - instructions étape par étape :FPGA , , . AND , — .. — FPGA , , ..
- / FPGA — , «» ( -) (), ( ) ().
— FPGA, look-up table (LUT) flip-flop. , , .

, FPGA:

:

C. ,(system on chip, SoC), IP- (CPU, GPU, DSP) — , . ADAS (advanced driver-assistance systems) .
, , , ( 1980- — 1990- ). (hardware description languages — HDL), (register transfer level — RTL), RTL-to-GDSII, Verilog VHDL , FPGA (field-programmable gate arrays). , -, -. HDL RTL , , , , 1980- .
En plus de la conférence de Tomsk et de la prochaine expérience prévue en juillet et à Novossibirsk, qui est soutenue par l'école d'été des jeunes programmeurs de Novossibirsk, il est également prévu d'organiser une telle expérience au Kazakhstan (ce qui intéresse particulièrement Venus Zhanalina participant au séminaire de Kiev).
Annexe D. Exemples de code Verilog simple et les schémas générés par celui-cimodule adder
(
input a,
input b,
input carry_in,
output reg sum,
output reg carry_out
);
reg p, q;
always @*
begin
p = a ^ b;
q = a & b;
sum = p ^ carry_in;
carry_out = q | (p & carry_in);
end
endmodule

module counter
(
input clock,
input resetn,
input load,
input [15:0] load_data,
output reg [15:0] count
);
always @ (posedge clock or negedge resetn)
begin
if (! resetn)
count <= 0;
else if (load)
count <= load_data;
else
count <= count + 1;
end
endmodule
Comment ça marche: Une
explication détaillée est dans le texte "Introduction à la conception du chipset Harver pour les programmeurs qui ne l'ont jamais fait . "Si vous êtes enseignant et que vous souhaitez participer à l'élaboration de ces supports (tout cela sur une base volontaire, sans communication avec une entreprise particulière), faites-le moi savoir dans les commentaires. Toute critique est également intéressante.