Esta mañana fui a la oficina de la sucursal de Arduino en California. Hubo una reunión intercompañía sobre programas educativos en la que el gerente de AMD, Timur Paltashev, me invitó. Al final del evento, surgió una discusión interesante:
En este momento, a los escolares se les enseña a programar Arduino y otros dispositivos basados en microcontroladores y procesadores integrados (Lego, Rasberry Pye, etc.). Pero en la década de 1970, a los escolares se les enseñó aquí en California a ensamblar circuitos en una placa de prueba, transistores y microcircuitos de un pequeño grado de integración (7400 TTL, CMOS 4000, etc.) con elementos AND-OR-NOT y disparadores D. Es como el progreso: puede escribir un programa en un microcontrolador que mueva conscientemente una mano robótica, lo cual es difícil de hacer en elementos lógicos individuales, pero ¿cómo podemos hacer crecer a los escolares que pueden diseñar (no programar) microcontroladores ellos mismos?
La respuesta es generalmente obvia: entre elementos lógicos individuales y microcontroladores lanzados en la fábrica, puede colocar circuitos integrados lógicos programables (FPGA) y usar la tríada "elementos individuales - FPGA - microcontroladores" para formar una imagen más completa del mundo en los niños, que no solo tiene software y una pequeña interfaz, sino un pensamiento sistémico, en el que las tareas se distribuyen entre la programación y los circuitos, y, aunque en un nivel muy simple de la escuela secundaria, todos los niveles son comprensibles y Tecnología - de la física de los semiconductores a los transistores a las puertas - para registrar el nivel de transferencia - al nivel de la unidad de micro procesador de bloques / - para los comandos de la arquitectura de nivel / sistema - a nivel de programación en C y Python - a robots y así sucesivamente.

La idea de enseñar a los escolares en todo el frente de los circuitos digitales y la programación incrustada suena bien teóricamente, pero ¿cómo darle vida?
Arduino ya tiene placas FPGA económicas, y los fabricantes de FPGA han comenzado a distribuir software gratuito para síntesis sin licencias complejas. Sin embargo, en el camino al nirvana son:
- Software hostil para la síntesis de circuitos y la configuración de FPGA por ellos
- Una seria diferencia entre el modelo mental paralelo del código en el lenguaje de descripción SystemVerilog del equipo y el modelo mental intuitivo y claro de programación secuencial
- Específicamente, los problemas de los niños, por ejemplo: incluso los escolares más pequeños (de 7 a 10 años) son relativamente fáciles de entender el concepto de corriente eléctrica, resistencia y condensadores, elementos lógicos combinacionales, operaciones aritméticas binarias, pero con una comprensión de la lógica secuencial (disparadores D, contadores, registros de desplazamiento, máquinas de estados finitos) hay un enchufe, aunque los estudiantes mayores lo entienden.
Si no sabe qué son los FPGA, puede leer mis textos anteriores
"Cómo comenzar a desarrollar hardware utilizando FPGA: instrucciones paso a paso" , así como
"Introducción al diseño del hardware del chip para aquellos programadores que nunca han hecho esto" .
Escribiré publicaciones separadas sobre modelos mentales y problemas de los niños, y ahora me enfocaré solo en la hostilidad del software para sintetizar código en el lenguaje para describir el equipo. Este software parece pesado para un niño incluso de las capturas de pantalla:
Altera Quartus II:

Xilinx Vivado:

Está claro que dicha GUI no es adecuada para niños. Los niños necesitan una GUI simple y limpia como Arduino, pero con algunos detalles para sintetizar lenguajes de descripción de hardware; por ejemplo, la GUI debe mostrar el tamaño del circuito y la velocidad máxima del reloj a la que el circuito puede funcionar sin sobrecargarse con detalles innecesarios. Y también muestra el esquema sintetizado:

Escribir una GUI simple en estilo Arduino no debería ser una tarea muy difícil, ya que tanto Xilinx como Altera contienen programas en sus paquetes que realizan síntesis y rastreo desde la línea de comandos, y la GUI puede llamar a estos programas. Queda por descubrir quién quisiera hacer esto en forma de un popular proyecto de código abierto. Le prometí a mis camaradas de Arduino.org que buscarían entre mis rusos, ucranianos, etc. contactos, quién podría hacer esto. Sugiero discutir esto en los comentarios.
Pregunta: ¿Por qué sintetizar el circuito flasheado en el FPGA a partir de la descripción en Verilog / SystemVerilog / VHDL? Después de todo, ¿existe una herramienta para la síntesis de alto nivel que le permita sintetizar un circuito a partir de un algoritmo en C?
Respuesta: Tula de este tipo tiene serias restricciones sobre los tipos de esquemas que pueden producir. Pruebe una herramienta de este tipo para diseñar un procesador canalizado con paradas y reenvío.
Pregunta: Pero encontré en el sitio web de esta placa muy arduino con FPGA (
http://www.cnx-software.com/2016/10/21/alorium-xlr8-arduino-compatible-altera-max-0-fpga-board -sells-for-75 / ) que se puede programar con el entorno Arduino habitual, con los bocetos habituales.
Respuesta: Es solo que el fabricante sintetizó el microcontrolador AVR y lo actualizó al FPGA. Usar FPGA de esta manera es como usar una unidad de CD-ROM como soporte de café. Esto se puede hacer, pero esto no agota la esencia de la unidad. Puede hacer una variedad de esquemas en FPGA, comenzando desde un simple elemento AND y bombillas parpadeantes en forma de circuito, y no solo flasheando un gran procesador diseñado por otras personas.