Eu entrei no escritório do Arduino; falou sobre FPGAs; voluntários necessários

Hoje de manhã fui ao escritório da filial do Arduino na Califórnia. Houve uma reunião entre empresas sobre programas educacionais nos quais o gerente da AMD, Timur Paltashev, me convidou. No final do evento, surgiu uma discussão interessante:

No momento, as crianças em idade escolar são ensinadas a programar o Arduino e outros dispositivos baseados em microcontroladores e processadores incorporados (Lego, Rasberry Pye, etc.). Mas na década de 1970, as crianças em idade escolar foram ensinadas aqui na Califórnia a montar circuitos em uma placa de ensaio, transistores e microcircuitos com um pequeno grau de integração (7400 TTL, CMOS 4000, etc.) com elementos AND-OR-NOT e gatilhos D. É como progresso - você pode escrever um programa em um microcontrolador que conscientemente moveria uma mão robótica, o que é difícil de executar em elementos lógicos individuais, mas como crescemos crianças em idade escolar que podem projetar (não programar) os microcontroladores?

A resposta é geralmente óbvia: entre elementos lógicos individuais e microcontroladores liberados na fábrica, você pode colocar circuitos lógicos programáveis ​​(FPGAs) e usar a tríade "elementos individuais - FPGAs - microcontroladores" para formar uma imagem mais completa do mundo em crianças, que possui não apenas software e uma pequena interface, mas um pensamento sistêmico, no qual as tarefas são distribuídas entre programação e circuitos e, embora no nível médio do ensino médio, todos os níveis sejam compreensíveis e Tecnologia - da física de semicondutores para os transistores para os portões - para Register Transfer Level - ao nível da unidade de processamento / bloco de micro - aos comandos arquitetura / nível do sistema - a nível programação em C e Python - a robôs e assim por diante.



A idéia de ensinar as crianças em toda a frente dos circuitos digitais e da programação incorporada soa bem teoricamente, mas como dar vida a isso?

O Arduino já possui placas FPGA baratas e os fabricantes de FPGA começaram a distribuir software livre para síntese sem licenças complexas. No entanto, a caminho do nirvana são:

  1. Amizade por software para síntese de circuitos e configuração de FPGAs por eles
  2. Uma diferença séria entre o modelo mental paralelo do código na linguagem de descrição SystemVerilog do equipamento e o modelo mental claro e intuitivo da programação seqüencial
  3. Problemas específicos das crianças, por exemplo: crianças em idade escolar ainda mais jovens (7 a 10 anos) são relativamente fáceis de entender o conceito de corrente elétrica, resistência e capacitores, elementos lógicos combinacionais, operações aritméticas binárias - mas com um entendimento da lógica sequencial (gatilhos D, contadores, registros de turnos, máquinas de estados finitos) existe um plug, embora os alunos mais velhos entendam isso.


Se você não sabe o que são FPGAs, pode ler meus textos antigos "Como começar a desenvolver hardware usando FPGAs - instruções passo a passo" , bem como "Introdução ao design do hardware do chip para os programadores que nunca fizeram isso" .

Escreverei posts separados sobre modelos mentais e problemas das crianças, e agora vou me concentrar apenas na hostilidade do software para sintetizar código no idioma para descrever o equipamento. Este software parece pesado para uma criança, mesmo nas capturas de tela:

Altera Quartus II:



Xilinx Vivado:



É claro que essa GUI não é adequada para crianças. As crianças precisam de uma GUI simples e limpa, como o Arduino, mas com algumas especificidades para sintetizar linguagens de descrição de hardware - por exemplo, a GUI deve mostrar o tamanho do circuito e a frequência máxima de clock na qual o circuito pode operar sem sobrecarregar com detalhes desnecessários. E também mostra o esquema sintetizado:



Escrever uma GUI simples no estilo Arduino não deve ser uma tarefa muito difícil, pois o Xilinx e o Altera contêm programas em seus pacotes que executam síntese e rastreamento a partir da linha de comando, e a GUI pode chamar esses programas. Resta descobrir quem gostaria de fazer isso na forma de um projeto popular de código aberto. Prometi a meus camaradas do Arduino.org que procurassem entre meus russos, ucranianos etc. contatos, quem poderia fazer isso. Sugiro discutir isso nos comentários.

Pergunta: Por que sintetizar o circuito piscou no FPGA a partir da descrição em Verilog / SystemVerilog / VHDL? Afinal, existe uma ferramenta para síntese de alto nível que permite sintetizar um circuito a partir de um algoritmo em C?

Resposta: Tula desse tipo tem sérias restrições aos tipos de esquemas que eles podem produzir. Experimente essa ferramenta para projetar um processador em pipeline com paradas e encaminhamento.

Pergunta: Mas eu encontrei no site desta placa muito arduino com FPGA ( http://www.cnx-software.com/2016/10/21/alorium-xlr8-arduino-compatible-altera-max-0-fpga-board -sells-for-75 / ) que pode ser programado com o ambiente usual do Arduino, com os esboços usuais.

Resposta: o fabricante apenas sintetizou o microcontrolador AVR e o enviou ao FPGA. Usar FPGAs dessa maneira é como usar uma unidade de CD-ROM como um suporte de café. Isso pode ser feito, mas isso não esgota a essência da unidade. Você pode fazer uma variedade de esquemas nos FPGAs, iniciando a partir de um elemento AND simples e piscando lâmpadas de maneira circular, e não apenas piscando em um grande processador projetado por outras pessoas.

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


All Articles