Ele fez uma entrevista em vídeo com o vice-presidente Arduino e discutiu com seus alunos FPGAs / FPGA e Verilog

Outro dia, conheci e fiz uma pequena entrevista em vídeo com Kathy Giori, vice-presidente de operações da Arduino nos EUA . Discutimos com Katie uma nova tendência que já tocou a comunidade Arduino: como a programação de microcontroladores com a ajuda do Arduino já é mais ou menos aprendida, é hora de dar o próximo passo: ensinar as crianças em idade escolar a usar a linguagem para descrever equipamentos Verilog e microcircuitos FPGA / FPGA, matrizes lógicas elementos com funções variáveis. E, para facilitar o domínio do FPGA, vale a pena ressuscitar os exercícios com um pequeno grau de chips de integração, popular na década de 1970, como um prequel dos FPGAs modernos. Tudo isso fechará a lacuna entre física e programação, elementos discretos e microcontroladores, um transistor e um Arduino.

O FPGA e as placas podem ser usados ​​de qualquer fabricante (Xilinx, Altera, Lattice, Digilent, Terasic), tudo o que escrevo abaixo não está vinculado a uma empresa específica.

Svetlana Khutka , professora de Stanford, participou da conversa com Katya, que contou a Katy sobre o experimento de crianças em idade escolar ensinando gratuitamente a usar o FPGA em Kiev com a ajuda de professores entusiasmados de várias universidades de Kiev. Depois disso, compartilhei com Katie os planos para o próximo experimento na escola de verão de jovens programadores em Novosibirsk , conhecido desde os tempos soviéticos, e também conversei com outros camaradas da comunidade Arduino presentes sobre a implementação do FPGA em duas escolas e uma faculdade do Vale do Silício.



A placa-mãe com FPGA, que Katya agora recomenda, e que estou refazendo um pouco para me adaptar às minhas necessidades (haverá um post separado sobre isso):



Abaixo, fornecerei informações sobre os resultados do experimento de Kiev, bem como alguns planos para o futuro que estão sendo desenvolvidos por ativistas - professores de escolas e universidades de educação física em Kiev, Chernigov, Novosibirsk, Moscou, Nizhny Novgorod, Samara, São Petersburgo, Almaty e outras cidades. No seminário de Kiev, os participantes chegaram ao estágio de criação de máquinas de estado de um bloqueio de código e integração com dispositivos periféricos simples (teclado de 16 botões, alto-falante). Na escola de verão em Novosibirsk, teremos mais tempo e tentaremos construir um processador com os alunos. No futuro, está planejado fazer um curso anual sobre o básico da eletrônica digital no FPGA para escolas físicas, o que pode enriquecer a educação escolar, pois na década de 1980 foi enriquecido pela introdução de elementos de programação.

Vamos discutir isso em detalhes:

1. Por que ensinar as crianças em idade escolar a descrever hardware e como usar FPGAs? Justificação do programa.

Na imagem do mundo representado pela educação escolar, existe um "ponto cego" no campo dos princípios do design da eletrônica digital, entre física e programação. Os cursos de robótica e arduino não fecham esse ponto cego, pois se resumem à programação de chips prontos. Exercícios com elementos discretos e microcircuitos de pequeno grau de integração, embora eficazes na introdução dos princípios básicos, baseiam-se nas tecnologias das décadas de 1960-1970 e não contêm nenhum vínculo com o design moderno. Um ponto cego pode ser fechado com a introdução de elementos das linguagens de descrição de hardware (NLA) e chips FPGA (circuitos integrados lógicos programáveis) disponíveis para experimentação escolar - matrizes de elementos lógicos reconfiguráveis. Assim, a imagem do mundo se torna integral e contribui para a criação de um ambiente para o surgimento de um grande número de jovens engenheiros que têm uma idéia de todos os aspectos dos microcircuitos modernos para aplicações como carros autônomos e podem se especializar no futuro para o design de um ou outro aspecto desses dispositivos.

A introdução de NLA e FPGA no currículo escolar também está bem ligada ao curso de matemática e física de uma escola de física e matemática - álgebra booleana, esquemas aritméticos e máquinas de estados finitos.

Observe que os NLA e os FPGAs, apesar da semelhança superficial com a programação, usam outros conceitos básicos:

Programação: execução sequencial, ramificações de seleção, loops, variáveis, expressões, matrizes (com o modelo de memória endereçável plana), funções (baseadas no uso da pilha), recursão.

Projeto de lógica digital: elemento lógico combinacional; construir lógica combinacional a partir desses elementos da nuvem, incluindo primitivas de seleção usando multiplexadores, bem como blocos para implementar expressões aritméticas; o conceito de um sinal de relógio para sincronizar cálculos e repetição; o conceito de um gatilho D para armazenar o estado atual entre as medidas; máquina de estado; operações paralelas, hierarquia de módulos, o conceito de pipeline (não apenas para o processador, mas também para unidades aritméticas).



2. O plano geral de tais cursos:

  • Seção 1. Conexão com a física, com laboratório em componentes discretos.

  • Seção 2. Noções básicas de lógica digital e aritmética, com microcircuitos de laboratório com um pequeno grau de integração.

  • Seção 3. Projetando circuitos com base na síntese de uma linguagem de descrição de hardware, com os de laboratório nos FPGAs Xilinx ou Altera.

  • Seção 4. Arquitetura do processador: vista do lado do programador, com um laboratório usando o simulador de processador RISC no nível da instrução, por exemplo, MARS MIPS.

  • Seção 5. Microarquitetura: construindo um processador.

  • Projeto individual: integração de um sensor ou outro dispositivo periférico com um circuito implementado no FPGA.





3. Os resultados do experimento de Kiev.

Um texto detalhado com os resultados do experimento de Kiev foi escrito por um professor do Instituto Politécnico de Kiev, Yevgeny Korotky. Vou complementá-lo com minhas conclusões pessoais. Contexto - posts sobre Habré e Geektimes - 1 , 2 , 3 , 4 ). Nessas postagens foram feitas perguntas. Aqui estão as respostas:

  1. A hipótese de que crianças em idade escolar podem usar o Verilog foi confirmada

  2. Verilog também se mostrou interessante para um número suficiente de crianças em idade escolar (alguns colegas duvidaram disso antes de Kiev, argumentando que as crianças estavam mais interessadas em projetos como um braço robótico com um microcontrolador)

  3. A ideia de que, antes de usar o Verilog, é útil mostrar elementos lógicos para crianças em idade escolar e um gatilho D em microcircuitos com um pequeno grau de integração - não apenas que foi inequivocamente confirmado, mas recebeu mais justificativa.

  4. No total, após um dia de experiência com o verbo, alguns alunos começaram a fazer perguntas inteligíveis - por exemplo, quando usar o bloqueio e quando usar a tarefa sem bloqueio.

  5. Aparentemente, não é realista levar alunos de zero a máquinas de estado que implementam protocolos como SPI em uma semana, mas a uma máquina de estado de bloqueio de código ou semáforo - realmente.

  6. Também não é realista trazer uma semana para o design do processador, mas tentaremos fazê-lo em duas semanas em Novosibirsk.

  7. Durante o experimento de Kiev, tentamos falar sobre FPGA e processadores embarcados (MediaTek MT7688, localizado em algum lugar no meio entre Arduino e Intel Galileo ou Rasbery Pye em termos de desempenho). Em seguida, fizemos um hackathon (na Academia Kiev-Mohyla) e observamos quantas crianças em idade escolar escolheram um projeto FPGA para o hackathon e quantos projetos com um processador integrado. Acabou - 50 a 50. É interessante - antes do hackathon, eu não tinha ideia de qual seria o colapso.

  8. Eu temia que as crianças em idade escolar ficassem confusas com a interface do usuário no Xilinx Vivado, com inúmeras opções e elementos de interface. Mas os alunos não se importaram - a GUI complexa não os assustou.

  9. A maioria dos estudantes usa o Windows. Juntamente com meu colega Alexander Belits, tenho uma ideia de preparar para esses eventos algumas dezenas de unidades SSD inicializáveis ​​com Linux (Ubuntu ou CentOS) e usá-las de evento para evento. Alex até escreveu um script para clonar essas unidades. O Ubuntu é mais amigável, mas o CentOS é mais oficialmente suportado pelas ferramentas de automação de design de circuitos FPGA, em particular o Xilinx Vivado e o Altera Quartus. É possível executar o programa educacional Linux e o programa educacional Verilog / FPGA ao mesmo tempo durante um acampamento de verão? Não está claro, mas pode ser tentado.

  10. Acontece que o Xilinx Vivado não funciona de maneira implacável ao configurar o Artix-7 FPGA, se você usar cabos micro-USB baratos e mal blindados. Em algum fluxo místico, antes de ir para Kiev, coloquei uma dúzia de cabos de alta qualidade na minha mala, e isso salvou o seminário.

  11. Tive a ideia de que o uso de módulos FPGA compatíveis com placa de prancha (placas FPGA que aderem a placas de placa de ensaio ), como o Digilent Cmod A7 35T , pode facilitar a troca de exercícios com pequenos chips de integração para exercícios com FPGAs. Se essa idéia é verdadeira, eu não entendi. Talvez o uso de placas-mãe maiores com um rico conjunto de periféricos, como o Terasic DE10-Lite , não seja pior. De qualquer forma, ao alternar de microcircuitos de baixo grau de integração (CMOS 4000 ou 74HC) para FPGA - você precisa alterar a tensão de alimentação (de 9 V ou 5 V para 3,3 V), para não colar o Cmod A7 em vez de dizer o CMOD 4013 na mesma placa de ensaio com luzes e botões e espera que tudo continue funcionando.

  12. Confirmei minha observação de que, para realizar eventos educacionais de curta duração (1 semana), é fundamental que uma equipe de estudantes de uma universidade local esteja presente para orientar as crianças em idade escolar. No caso de Kiev, essa equipe foi fornecida pelo professor do Instituto Politécnico de Kiev, Eugene Korotky .

  13. Tornou-se mais ou menos claro em que casos e até que ponto vale a pena incluir no programa de tais eventos uma parte sobre o nível de transistores e sobre a produção de microcircuitos. Esta parte foi ministrada pelo professor associado da Universidade Nacional de Kiev Alexander Barabanov , tradutor de materiais do curso Nanometer ASIC para estudantes. Aparentemente, esse material deve ser totalmente incluído no curso anual para crianças em idade escolar, em um pequeno - em um curso de duas semanas no formato de um acampamento de verão, mas com uma duração de menos de uma semana, você provavelmente deve fornecer microcircuitos com um pequeno grau de integração imediatamente (dentro de 1 hora após o início) (por exemplo, CMOS 4000) e mencione o transistor de passagem, na forma de “um transistor é um dispositivo no qual a corrente flui do ponto A ao ponto B, se a tensão C for 1 (ou 0) em C. A partir dos transistores, é possível criar elementos lógicos AND, OR, NOT (mostre a figura). ”

  14. Durante as palestras diante de um grande público, os alunos podem ver circuitos montados em uma placa de ensaio a partir de microcircuitos com um pequeno grau de integração. Isso é visual, provoca interesse e também não requer a conexão do design a um computador - apenas com uma bateria de 9 V. Mostrei três desses circuitos mais críticos para a compreensão - o elemento lógico XOR, o somador de gatilho D combinador de 4 bits com uma frequência da ordem de 1 Hertz ( ou seja, medir por segundo).

  15. A questão permanece em aberto se é possível ensinar aos alunos a idéia de pipelining, uma das idéias mais poderosas do design digital e da organização da computação em geral. Para isso, não é necessário construir um processador de transportador; você pode fazer um dispositivo aritmético de transportador . Talvez isso possa ser mencionado no final do curso, quando as crianças brincam o suficiente com simples circuitos combinacionais e seqüenciais e máquinas de estado. Muito provavelmente será interessante para um subconjunto muito pequeno de crianças em idade escolar, mas vale a pena tentar.

  16. Para eventos mais autênticos, você pode usar projetos individuais e trabalhos de verificação .



O código no GitHub usado para o evento Kiev



4. Fontes de informação para o desenvolvimento de materiais futuros.

Fontes de informação para professores de escolas de educação física, que provavelmente desenvolverão a maioria dos materiais detalhados, após experimentos iniciais com estudantes na Ucrânia, Rússia e Vale do Silício:

  1. Manual de David Harris e Sarah Harris, “Circuitos digitais e arquitetura de computadores”, 2ª edição, tradução para o russo. Este livro pode ser baixado de graça, veja artigos sobre Habré sobre ele - 1 , 2 , 3 . Recentemente, uma nova edição em papel com impressão colorida aprimorada também foi lançada.

  2. Slides para professores, além do livro Harris & Harris. Download grátis.

  3. Materiais do curso From NAND to Tetris , criado em Israel e apresentado em algumas universidades americanas. Ao mesmo tempo, IMHO, o curso deve usar idéias e um esqueleto, mas fazer a implementação em subconjuntos de ferramentas de design "adultas", em vez de ferramentas artificiais "infantis", como o curso. As principais partes são baixadas gratuitamente.

  4. O livro de Charles Petzold "Code", que explica adequadamente muitos conceitos nos dedos e cujo nível corresponde ao nível da escola (a idéia foi sugerida pelo professor da escola ORT de Kiev, Sergey Dziuba ). Novamente, do meu ponto de vista, vale a pena usar idéias e um esqueleto do livro, mas a maior parte do material deve ser substituída por uma mais correta (em vez de usar trincos (trava D), usar chinelos D (flip-flop)) e modernos, por exemplo, em vez de acumuladores baseados em 6800 e 8080 arcaico usam um subconjunto da arquitetura RISC.

  5. Kits para construção de circuitos em uma placa de ensaio com base em componentes discretos e microcircuitos de pequeno grau de integração da empresa americana ETron Circuit Labs, da empresa russa Cyberfizika, da empresa ucraniana Radiomag (posso explicar as diferenças entre esses conjuntos nos comentários, se você estiver interessado).

  6. Materiais dos fabricantes de FPGAs (Xilinx, Altera) e cartões educacionais com FPGAs (Digilent, Terasic).

  7. Exemplos de código, testes e recomendações de projetos desenvolvidos por Anton Moiseev, Yuri Panchul, Eugene Korotkiy, Alexander Barabanov e outros engenheiros da empresa e professores universitários para vários eventos na Califórnia, Cazaquistão, Rússia e Ucrânia.





5. Planeje a edição futura 1. O formato do curso anual de 35 horas acadêmicas, dispersas pelo ano acadêmico, uma hora por semana

  1. Da física aos elementos discretos

    1. O que é corrente, tensão e resistência. Como funciona a tábua de pão? Exercício: O primeiro circuito com bateria, LED e resistor. Por que conectar um resistor a um circuito com um LED. Leia a etiqueta do resistor. Resistores variáveis, fotorresistores.

    2. O que é um transistor? Visão geral dos elementos de comutação de relés, tubos de rádio, transistores discretos para transistores em microcircuitos. Exercícios com um tiristor (SCR - retificador controlado por silício - mais claramente que um transistor), transistores bipolares pnp e npn.

    3. Trabalho de verificação.

  2. Dos elementos discretos à lógica combinacional

    1. Álgebra booleana e álgebra da lógica. Operações, expressões, axiomas e identidades, incluindo as leis de Morgan. Tabelas da verdade.

    2. Elementos lógicos combinacionais AND, OR, NOT, AND-NOT, OR-NOT, EXCLUSIVE-OR (AND, OR, NOT, NAND, NOR, XOR). Como os elementos combinacionais são construídos a partir de transistores. Exercício: crie AND, NAND ou NOR a partir de elementos discretos.

    3. Elementos lógicos em microcircuitos de pequeno grau de integração. Exercício individual: cada aluno recebe um chip lógico pessoal da série CMOS 4000, com uma descrição técnica do fabricante, com a tarefa de desenhar uma tabela verdade, demonstrando seu trabalho e descrevendo verbalmente a função. Os chips contêm elementos lógicos AND, OR, XOR, NOR, NAND com um número diferente de entradas. O que são resistores pull-up e por que eles são necessários? Adicione botões e resistores de pull-up ao exercício anterior.

    4. Trabalho de verificação.

  3. Aritmética binária e sua implementação

    1. Números binários Converta de binário para decimal e vice-versa. Operações de adição e multiplicação. Números negativos e código adicional.

    2. A implementação de um meio adicionador e um adicionador completo usando elementos lógicos. Migração Adicionador multi-bits com transporte sequencial. Exercício na tábua de pão. Mencione um longo atraso e esquemas com um atraso mais ideal.

    3. Usando um somador completo de 4 bits CMOD 4008. Construindo a partir de um somador de 8 bits e um esquema de subtração. Lição de casa para estudantes avançados: estudar e fazer uma apresentação sobre a implementação de dispositivos de adição rápida com transferência de grupo acelerada.

    4. Trabalho de verificação.

  4. Lógica sequencial

    1. Construindo um gerador de relógio baseado no chip 555. Estudo do efeito de capacitores e resistências na frequência e duração de níveis altos e baixos.

      Como os capacitores estão incluídos na cinta 555, podem ser necessárias explicações adicionais sobre o que são capacitores, por que eles são necessários na cinta 555 e como são rotulados. Um exercício auxiliar com capacitores de carga e descarga de diferentes capacidades também pode ser útil.

    2. Esquemas com um estado interno. Crie trava RS a partir dos portões NAND. Estudo do comportamento de um flip-flop D usando um chip CMOS 4013 e um sinal de relógio de 555 com uma frequência de 1 Hz.

    3. Blocos seriais - contador (CMOS 4029) e registrador de deslocamento (4015). Indicador de sete segmentos e seu driver 4511. Exercícios com esses microcircuitos.

  5. Exame.

  6. De pequenos circuitos integrados a FPGAs - Lógica Combinacional

    1. O conceito de FPGA (circuito integrado lógico programável) - uma matriz de elementos lógicos reconfiguráveis. Conceito da linguagem de descrição de hardware da Verilog, síntese, posicionamento, rastreamento e configuração. Exercício: síntese do módulo de combinação mais simples com configuração FPGA em uma placa de treinamento.

    2. Aprendizado contínuo Verilog. Tipos de dados, expressões, atribuições. Sempre bloqueia e 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. .







Apêndice A. Qual é a linguagem de descrição de hardware da Verilog e como ela se relaciona ao design de microcircuitos

De uma publicação sobre os golpistas da Geektimes Microelectronics. Reportagem em vídeo da 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.




Apêndice B. O que é FPGA / FPGA e por que o estudo de FPGAs não pode ser substituído por um estudo mais profundo de Arduino ou Rasberry

Pye.De um post no Habr.Como começar a desenvolver ferro usando FPGAs - instruções passo a passo :

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


Além da conferência em Tomsk e do próximo experimento planejado em julho e Novosibirsk, que é apoiado pela Escola de Verão de Novos Programadores de Novosibirsk, também há um plano inicial para organizar tal experimento no Cazaquistão (isso está particularmente interessado em Venus Zhanalina participando do seminário de Kiev).



Apêndice D. Exemplos de código Verilog simples e os esquemas gerados por ele

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



Como funciona: Uma



explicação detalhada está no texto "Introdução ao design do chipset Harver para os programadores que nunca fizeram isso" .

Se você é professor e deseja participar do desenvolvimento de tais materiais (tudo isso de forma voluntária, sem comunicação com uma empresa em particular), informe-me nos comentários. Qualquer crítica também é interessante.

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


All Articles