Tomó una entrevista en video del vicepresidente Arduino y discutió con sus alumnos de enseñanza FPGA / FPGA y Verilog

El otro día me encontré y tomé una breve entrevista en video de Kathy Giori, Vicepresidenta de Operaciones Arduino USA . Discutimos con Katie una nueva tendencia que ya ha afectado a la comunidad Arduino: dado que la programación de microcontroladores con la ayuda de Arduino ya es más o menos aprendida, es hora de dar el siguiente paso: enseñar a los escolares a usar el lenguaje para describir el equipo Verilog y los microcircuitos FPGA / FPGA, matrices lógicas elementos con funciones variables. Y para facilitar el dominio de FPGA, vale la pena resucitar los ejercicios con pequeños chips de integración, populares en la década de 1970, como precuela de los FPGA modernos. Todo esto cerrará la brecha entre la física y la programación, elementos discretos y microcontroladores, un transistor y un Arduino.

FPGA y las placas se pueden usar de cualquier fabricante (Xilinx, Altera, Lattice, Digilent, Terasic), todo lo que escribo a continuación no está vinculado a una empresa en particular.

Svetlana Khutka , una maestra de Stanford, participó en la conversación con Katya, quien le contó a Katy sobre el experimento de enseñar a los escolares de forma gratuita a usar FPGA en Kiev con la ayuda de maestros entusiastas de varias universidades de Kiev. Después de eso, compartí con Katie los planes para el próximo experimento de este tipo en la escuela de verano de jóvenes programadores en Novosibirsk , conocida desde la época soviética, y también hablé con otros compañeros de la comunidad de Arduino presentes sobre la implementación de FPGA en dos escuelas y una universidad de Silicon Valley.



La placa base con FPGA, que Katya ahora recomienda, y que estoy rehaciendo para adaptarme a mis necesidades (habrá una publicación separada sobre esto):



A continuación proporcionaré información sobre los resultados del experimento de Kiev, así como algunos planes para el futuro que están desarrollando los activistas: maestros de escuelas y universidades de educación física en Kiev, Chernigov, Novosibirsk, Moscú, Nizhny Novgorod, Samara, San Petersburgo, Almaty y otras ciudades. En el seminario de Kiev, los participantes llegaron a la etapa de crear máquinas de estado de un código de bloqueo e integración con dispositivos periféricos simples (teclado de 16 botones, altavoz). En la escuela de verano en Novosibirsk, tendremos más tiempo e intentaremos construir un procesador con los estudiantes. En el futuro, se planea realizar un curso anual sobre los fundamentos de la electrónica digital en FPGA para escuelas físicas, que puede enriquecer la educación escolar, ya que en la década de 1980 se enriqueció con la introducción de elementos de programación.

Discutiremos esto en detalle:

1. ¿Por qué enseñar a los escolares cómo describir el hardware y cómo usar los FPGA? Justificación del programa.

En la imagen del mundo representado por la educación escolar, existe un "punto ciego" en el campo de los principios del diseño de la electrónica digital, entre física y programación. Los cursos de robótica y arduino no cierran este punto ciego, ya que se reducen a la programación de chips listos para usar. Los ejercicios con elementos discretos y microcircuitos de un pequeño grado de integración, aunque efectivos en la introducción de los principios básicos, se basan en las tecnologías de los años 1960-1970 y no contienen ningún vínculo con el diseño moderno. Un punto ciego puede cerrarse introduciendo elementos de lenguajes de descripción de hardware (NLA) y chips FPGA (circuitos integrados de lógica programable) disponibles para la experimentación escolar: matrices de elementos lógicos reconfigurables. Por lo tanto, la imagen del mundo se vuelve integral y contribuye a la creación de un entorno para el surgimiento de una gran cantidad de ingenieros jóvenes que tienen una idea de todos los aspectos de los microcircuitos modernos para aplicaciones como los automóviles sin conductor y pueden especializarse en el futuro para el diseño de uno u otro aspecto de dichos dispositivos.

La introducción de NLA y FPGA en el plan de estudios de la escuela también está bien relacionada con el curso de matemáticas y física en una escuela de física y matemáticas: álgebra booleana, esquemas aritméticos y máquinas de estados finitos.

Tenga en cuenta que NLA y FPGA, a pesar del parecido superficial con la programación, utilizan otros conceptos básicos:

Programación: ejecución secuencial, ramas de selección, bucles, variables, expresiones, matrices (con el modelo de memoria plana direccionable), funciones (basadas en el uso de la pila), recursividad.

Diseño de lógica digital: elemento lógico combinacional; construir lógica combinacional a partir de estos elementos de la nube, incluidas las primitivas de selección utilizando multiplexores, así como bloques para implementar expresiones aritméticas; el concepto de una señal de reloj para sincronizar cálculos y repeticiones, el concepto de un disparador D para almacenar el estado actual entre medidas; máquina de estado; operaciones paralelas, jerarquía de módulos, el concepto de la tubería (no solo para el procesador, sino también para las unidades aritméticas).



2. El plan general de tales cursos:

  • Sección 1. Conexión con la física, con laboratorio en componentes discretos.

  • Sección 2. Conceptos básicos de lógica digital y aritmética, con microcircuitos de laboratorio con un pequeño grado de integración.

  • Sección 3. Diseño de circuitos basados ​​en la síntesis de un lenguaje de descripción de hardware, con los de laboratorio en FPGA Xilinx o Altera.

  • Sección 4. Arquitectura del procesador: vista desde el lado del programador, con un laboratorio que utiliza el simulador de procesador RISC a nivel de instrucción, por ejemplo, MARS MIPS.

  • Sección 5. Microarquitectura: construcción de un procesador.

  • Proyecto individual: integración de un sensor u otro dispositivo periférico con un circuito implementado en el FPGA.





3. Los resultados del experimento de Kiev.

Un texto detallado con los resultados del experimento de Kiev fue escrito por un profesor del Instituto Politécnico de Kiev, Yevgeny Korotky. Lo complementaré con mis conclusiones personales. Antecedentes - publicaciones en Habré y Geektimes - 1 , 2 , 3 , 4 ). En esas publicaciones se hicieron preguntas. Aquí están las respuestas:

  1. Se ha confirmado la hipótesis de que los escolares pueden usar Verilog.

  2. Verilog también resultó ser interesante para un número suficiente de escolares (algunos colegas dudaron de esto antes de Kiev, argumentando que los niños estaban más interesados ​​en proyectos como un brazo robótico con un microcontrolador)

  3. La idea de que antes de usar Verilog es útil para mostrar elementos lógicos de los escolares y un disparador D en microcircuitos de un pequeño grado de integración, no solo que se confirmó inequívocamente, sino que recibió más justificación.

  4. En total, después de un día de experiencia con el veril, algunos estudiantes comenzaron a hacer preguntas inteligibles, por ejemplo, cuándo usar el bloqueo y cuándo usar la asignación sin bloqueo.

  5. Aparentemente no es realista llevar a los escolares de cero a máquinas estatales que implementan protocolos como SPI en una semana, pero a una máquina estatal de bloqueo de código o semáforo, realmente.

  6. Tampoco es realista llevar una semana para el diseño del procesador, pero intentaremos hacerlo en dos semanas en Novosibirsk.

  7. Durante el experimento de Kiev, intentamos hablar sobre FPGA y procesadores integrados (MediaTek MT7688, ubicado en algún punto intermedio entre Arduino e Intel Galileo o Rasbery Pye en términos de rendimiento). Luego hicimos un hackathon (en la Academia Kiev-Mohyla) y observamos cuántos estudiantes eligieron un proyecto FPGA para el hackathon y cuántos proyectos con un procesador integrado. Resultó - 50 a 50. Es interesante - antes del hackathon, no tenía idea de cuál sería el colapso.

  8. Me preocupaba que los escolares pudieran estar confundidos por la interfaz de usuario en Xilinx Vivado, con toneladas de opciones y elementos de interfaz. Pero resultó que a los estudiantes no les importaba, la compleja GUI no los asustó.

  9. La mayoría de los estudiantes usan Windows. Junto con mi colega Alexander Belits, tengo la idea de preparar para tales eventos un par de docenas de unidades SSD de arranque con Linux (Ubuntu o CentOS) y usarlas de un evento a otro. Alex incluso escribió un guión para clonar tales discos. Ubuntu es más amigable, pero CentOS es más oficialmente compatible con las herramientas de automatización de diseño de circuitos FPGA, en particular Xilinx Vivado y Altera Quartus. ¿Es posible hacer un programa educativo Linux y un programa educativo Verilog / FPGA al mismo tiempo durante un campamento de verano? No está claro, pero se puede probar.

  10. Resulta que Xilinx Vivado tiene errores sin piedad al configurar Artix-7 FPGA, si utiliza cables micro-USB baratos y mal protegidos. En una afluencia mística, antes de ir a Kiev, puse una docena de cables de alta calidad en mi maleta, y esto salvó el seminario.

  11. Tuve la idea de que el uso de módulos FPGA integrables (placas FPGA que se adhieren a las placas), como el Digilent Cmod A7 35T , puede facilitar que los estudiantes cambien de ejercicios con pequeños chips de integración a ejercicios con FPGA. Si esta idea es cierta, no lo entendí. Quizás el uso de placas base más grandes con un rico conjunto de periféricos, como el Terasic DE10-Lite , no será peor. De todos modos, al cambiar de microcircuitos de bajo grado de integración (CMOS 4000 o 74HC) a FPGA, debe cambiar el voltaje de suministro (de 9 V o 5 V a 3.3 V), por lo que no puede pegar Cmod A7 en lugar de decir CMOD 4013 en el mismo tablero con luces y botones, y esperamos que todo siga funcionando.

  12. Confirmé mi observación de que para realizar eventos educativos a corto plazo (1 semana), es fundamental que exista un equipo de estudiantes de una universidad local para guiar a los escolares. En el caso de Kiev, el equipo del Instituto Politécnico de Kiev, Eugene Korotky , proporcionó dicho equipo .

  13. Se hizo más o menos claro en qué casos y en qué medida vale la pena incluir en el programa de tales eventos una parte sobre el nivel de los transistores y sobre la producción de microcircuitos. Esta parte fue impartida por el Profesor Asociado de la Universidad Nacional de Kiev, Alexander Barabanov , traductor de materiales en el curso ASIC Nanómetro para estudiantes. Aparentemente, este material debería incluirse completamente en el curso anual para escolares, en uno pequeño, en un curso de dos semanas en el formato de un campamento de verano, pero con una duración de menos de una semana, probablemente debería dar microcircuitos de un pequeño grado de integración inmediatamente (dentro de 1 hora después del inicio) (por ejemplo, CMOS 4000) y mencione el transistor de paso, en forma de "un transistor es un dispositivo en el que la corriente fluye del punto A al punto B, si el voltaje C es 1 (o 0) en C. Desde los transistores es posible construir elementos lógicos Y, O, NO (muestre la imagen) ".

  14. Durante las conferencias frente a una gran audiencia, se les puede mostrar a los estudiantes circuitos ensamblados en una placa de pruebas a partir de microcircuitos de un pequeño grado de integración. Esto es visual, provoca interés, y tampoco requiere conectar el diseño a una computadora, solo con una batería de 9 V. Mostré tres de estos circuitos que son más críticos para la comprensión: el elemento lógico XOR, el sumador D-trigger combinador de 4 bits con una frecuencia del orden de 1 Hertz ( es decir, medida por segundo).

  15. La pregunta sigue abierta si es posible enseñar a los estudiantes la idea de la canalización, una de las ideas más poderosas en diseño digital y la organización de la informática en general. Para esto, no es necesario construir un procesador de transportador; puede hacer un dispositivo aritmético de transportador . Quizás esto se pueda mencionar al final del curso, cuando los niños juegan lo suficiente con simples circuitos combinacionales y secuenciales y máquinas de estado. Lo más probable es que sea interesante para un pequeño grupo de escolares, pero vale la pena intentarlo.

  16. Para eventos más auténticos, puede utilizar proyectos individuales y trabajos de verificación .



El código en GitHub usado para el evento de Kiev



4. Fuentes de información para el desarrollo de futuros materiales.

Fuentes de información para maestros de escuelas de educación física, que probablemente desarrollen la mayoría de los materiales detallados, después de experimentos iniciales con estudiantes en Ucrania, Rusia y Silicon Valley:

  1. Libro de texto de David Harris y Sarah Harris "Circuitos digitales y arquitectura de computadoras", 2ª edición, traducción al ruso. Este libro de texto se puede descargar de forma gratuita; consulte los artículos sobre Habré al respecto: 1 , 2 , 3 . Recientemente, también se lanzó una nueva edición en papel con impresión en color mejorada .

  2. Diapositivas para maestros, además del libro de texto Harris & Harris. Descarga gratuita

  3. Materiales del curso De NAND a Tetris , creado en Israel y presentado en algunas universidades estadounidenses. Al mismo tiempo, en mi humilde opinión, el curso debe usar ideas y un esqueleto, pero hacer la implementación en subconjuntos de herramientas de diseño "para adultos", en lugar de herramientas artificiales "para niños", como lo hace el curso. Las partes clave se descargan de forma gratuita.

  4. El libro "Código" de Charles Petzold, que explica adecuadamente muchos conceptos en los dedos y cuyo nivel corresponde al nivel de la escuela (la idea fue sugerida por el profesor de la escuela Kiev ORT Sergey Dziuba ). Nuevamente, desde mi punto de vista, vale la pena usar ideas y un esqueleto del libro, pero la mayor parte del material debe reemplazarse por uno más correcto (en lugar de usar pestillos (D-pestillo) use D-flip-flops (D-flip-flop)) y moderno, por ejemplo, en lugar de acumulador basado en 6800 y arcaico 8080 utilizan un subconjunto de arquitectura RISC.

  5. Kits para construir circuitos en una placa de pruebas basados ​​en componentes discretos y microcircuitos de pequeño grado de integración de la compañía estadounidense ETron Circuit Labs, la compañía rusa Cyberfizika, la compañía ucraniana Radiomag (puedo explicar las diferencias entre estos conjuntos en los comentarios, si está interesado).

  6. Materiales de fabricantes de FPGA (Xilinx, Altera) y tarjetas educativas con FPGA (Digilent, Terasic).

  7. Ejemplos de códigos, pruebas y recomendaciones de proyectos desarrollados por Anton Moiseev, Yuri Panchul, Eugene Korotkiy, Alexander Barabanov y otros ingenieros de la compañía y profesores universitarios para diversos eventos en California, Kazajstán, Rusia y Ucrania.





5. Planifique para el próximo número 1. El formato del curso anual de 35 horas académicas, distribuido para el año académico, una hora a la semana.

  1. De la física a los elementos discretos.

    1. Qué es corriente, voltaje y resistencia. ¿Cómo funciona el tablero? Ejercicio: el primer circuito con batería, LED y resistencia. ¿Por qué conectar una resistencia a un circuito con un LED? Lea el etiquetado de la resistencia. Resistencias variables, fotoresistores.

    2. ¿Qué es un transistor? Descripción general de elementos de conmutación de relés, tubos de radio, transistores discretos a transistores en microcircuitos. Ejercicios con un tiristor (SCR - rectificador controlado de silicio - más claramente que un transistor), pipo bipolar y transistores npn.

    3. Trabajo de verificación.

  2. De elementos discretos a lógica combinacional

    1. Álgebra booleana y álgebra de la lógica. Operaciones, expresiones, axiomas e identidades, incluidas las leyes de Morgan. Tablas de verdad.

    2. Elementos lógicos combinacionales AND, OR, NOT, AND-NOT, OR-NOT, EXCLUSIVE-OR (AND, OR, NOT, NAND, NOR, XOR). Cómo se construyen los elementos combinacionales a partir de transistores. Ejercicio: construya AND, NAND o NOR a partir de elementos discretos.

    3. Elementos lógicos en microcircuitos de pequeño grado de integración. Ejercicio individual: cada alumno recibe un chip lógico personal de la serie CMOS 4000, con una descripción técnica del fabricante, con la tarea de dibujar una tabla de verdad, demostrar su trabajo y describir verbalmente la función. Los chips contienen elementos lógicos AND, OR, XOR, NOR, NAND con un número diferente de entradas. ¿Qué son las resistencias pull-up y por qué son necesarias? Agregue botones y resistencias pull-up al ejercicio anterior.

    4. Trabajo de verificación.

  3. Aritmética binaria y su implementación.

    1. Números binarios Convierte de binario a decimal y viceversa. Operaciones de suma y multiplicación. Números negativos y código adicional.

    2. La implementación de un medio sumador y un sumador completo utilizando elementos lógicos. Migración Sumador multibit con acarreo secuencial. Ejercicio en el tablero. Mención de un retraso prolongado y esquemas con un retraso más óptimo.

    3. Usando un sumador completo de 4 bits CMOD 4008. Construyendo a partir de él un sumador de 8 bits y un esquema de resta. Tarea para estudiantes avanzados: para estudiar y hacer una presentación sobre la implementación de sumadores rápidos con transferencia grupal acelerada.

    4. Trabajo de verificación.

  4. Lógica secuencial

    1. Construir un generador de reloj basado en el chip 555. Estudiar el efecto de los condensadores y las resistencias en la frecuencia y duración de los niveles altos y bajos.

      Dado que los condensadores están incluidos en el flejado 555, es posible que se necesiten explicaciones adicionales sobre qué condensadores son, por qué se necesitan en el flejado 555 y cómo están etiquetados. También puede ser útil un ejercicio auxiliar con condensadores de carga y descarga de diferentes capacidades.

    2. Esquemas con un estado interno. Construya el pestillo RS desde las puertas NAND. Estudiar el comportamiento de un D-flip-flop usando un chip CMOS 4013 y una señal de reloj de 555 con una frecuencia de 1 Hz.

    3. Bloques de serie: contador (CMOS 4029) y registro de desplazamiento (4015). Indicador de siete segmentos y su controlador 4511. Ejercicios con estos microcircuitos.

  5. Examen

  6. Desde pequeños circuitos integrados hasta FPGAs - Lógica combinacional

    1. El concepto de FPGA (circuito integrado lógico programable) - una matriz de elementos lógicos reconfigurables. Concepto de lenguaje de descripción de hardware de Verilog, síntesis, ubicación, seguimiento y procedimientos de configuración. Ejercicio: síntesis del módulo de combinación más simple con configuración FPGA en un tablero de entrenamiento.

    2. Continúa aprendiendo Verilog. Tipos de datos, expresiones, asignaciones. Bloques siempre y operadores básicos. : , .

    3. Verilog. . : . : .

    4. Verilog . / . . : , Verilog. Icarus Verilog GTKWave .

    5. : , ( ).


  7. Verilog

    1. Verilog, D- . : always-. Icarus Verilog.

    2. : D-, . . : .

    3. . . : .

    4. . ( ) c . : , : , .

    5. . , .

    6. .

  8. : , RISC- , MARS MIPS .

    1. - . : , , , . . . — MARS MIPS. .

    2. , , . : . .

    3. . . . : , . .

    4. .

  9. :

    1. Verilog MIPS , , . , , . . .

    2. 9.1







6. 2.

  1. , .

    1. , . . .

    2. . CMOS 4000, , , . AND, OR, XOR, NOR, NAND . , .

    3. 2 , .


    1. 4- CMOD 4008.
      8- 4-.

    2. -a == ~ a + 1


    1. 555. .

    2. D- CMOS 4013 555 1 .

    3. “ ” CMOS 4015.

    4. (CMOS 4029) 4511.

  2. ( ) — . Verilog, , , . Verilog, , . Always- .

    1. .

    2. , .

    3. Verilog. . Verilog . / . .

    4. : .

    5. , Verilog. Icarus Verilog , GTKWave .

  3. Verilog. Verilog, D- . : always-. Icarus Verilog. .

    1. .

    2. .

    3. .

    4. 2 3 .

  4. . . . ( ) c .

    1. “ ”.

    2. .

    3. .

  5. : . - . MARS MIPS .

    1. : , , , . . . .

    2. , , . .

    3. . . . , . .

  6. : .

    1. Verilog MIPS , , . , , . . .

    2. .







A. Verilog

Geektimes . -.

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.




B. / FPGA

, — :

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- .


, , ( ).



D. Verilog

module 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



:



« , ».

( , ), . .

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


All Articles