WebFPGA - Desenvolvimento Verilog no navegador

Eu acho que muitos programadores, variando de Python-dataayentists e terminando com duros desenvolvedores de drivers, às vezes levantam os olhos de tristeza e suspiram sonhadores: "Oh, será mais difícil, mais difícil ...". Obviamente, estamos falando do Verilog, uma linguagem para descrever e modelar sistemas eletrônicos. A Verilog sempre se destacou entre as linguagens de programação; permitindo resolver problemas que não podem ser superados de outra maneira, requer, no entanto, uma plataforma de hardware específica, FPGA - um circuito integrado lógico programável. O limite para entrar no desenvolvimento da Verilog é relativamente alto, mas em breve poderá se tornar um pouco menor, porque agora

Projeto de financiamento coletivo: WebFPGA.
A essência do projeto : placa de depuração para FPGA iCE40UP5k. Todo o software de desenvolvimento e depuração está localizado na nuvem; a interação com a placa ocorre no navegador usando a API WebUSB.
Plataforma : Kickstarter.
Postado por Ryan Jacobs (programador), Mick Jacobs (engenheiro eletrônico).
Localização : Los Angeles, Califórnia, EUA.



A placa combina o Lattice iCE40UP5k FPGA (5280 células lógicas, 32 GPIO, 1 Mbps SRAM) e o microcontrolador da série STM32F04; mais precisamente, o desenvolvedor não relata o modelo do microcontrolador, mas a julgar pela foto da placa, trata-se de TSSOP-20, e na TSSOP-20 ST Microelectronics lança apenas um microcontrolador da série STM32F04 - STM32L041F6 por € 2,02.

Curiosamente, um dos autores do projeto, Ryan Jacobs, é um estudante da UCLA, ele ainda não possui um currículo explicativo, por isso fornece um link para o GitHub, no qual ele já conseguiu ganhar 1700 estrelas.

Enquanto a parte em nuvem do projeto está hospedada em 6 servidores (as características exatas não são anunciadas, a partir de toda a especificação é sabido apenas que são “dual Xeon”), o desenvolvedor promete que parte dos fundos arrecadados como resultado da campanha pagará pelo equipamento já comprado, se o valor coletado Se o projeto exceder US $ 10.000, esses fundos adicionais serão um sinal indicando um grande número de usuários em potencial e o parque de servidores será expandido. Segundo o autor, o armazenamento em nuvem como Amazon ou Azure não se encaixa no modelo de negócios atual, por isso foi imediatamente decidido implantar todo o back-end em seus próprios servidores.

Para evitar uma possível inquietação entre os usuários em potencial sobre o poder insuficiente de processamento dos servidores, Ryan garante que "os servidores são usados ​​apenas para sintetizar e transmitir ao usuário final um código binário com apenas 3 kilobytes de tamanho". Na minha opinião, o volume de tráfego é realmente pequeno - "alto" deixa o código-fonte do Verilog, que também pode ser compactado bem, "baixo" vem o firmware binário, cujo tamanho é muito pequeno devido à capacidade relativamente pequena do FPGA usado.

Mas com o carregamento de servidores pelo processo de síntese de firmware do código Verilog, na minha opinião, nem tudo é tão otimista. Mesmo se deixarmos de lado o processo de otimizar a localização física dos circuitos resultantes no espaço geral do FPGA, o que definitivamente exige uma interface gráfica bastante rápida e a troca constante de pacotes de informações bastante grandes com o servidor, o processo de sintetizar o próprio firmware permanece, o que, na minha opinião pessoal, é o primeiro , deve consumir uma quantidade suficientemente grande de tempo do processador e, em segundo lugar, é de natureza não determinística e pode ser adiada.

Pessoalmente, eu me familiarizei com os FPGAs na primeira metade do zero (eram FPGAs da Actel, cujo firmware foi desenvolvido no pacote Libero + Synplify + ModelSim) e, tanto quanto me lembro, o processo de síntese nunca foi relâmpago, mesmo para projetos educacionais simples. Na verdade, como qualquer processo de compilação, a síntese é caracterizada por todos os tipos de soluços e gagueiras periódicas, mas esperemos que o tempo médio de resposta do servidor esteja dentro da estrutura da paciência humana. A propósito, quando nas perguntas frequentes o autor fala sobre como otimizar a compilação armazenando arquivos binários (se o código do arquivo Verilog e os sinalizadores do compilador não foram alterados, o usuário recebe simplesmente o último binário recebido), ele menciona que "você não precisará de 2 minutos esperar a conclusão do processo de síntese ".

Se, por algum motivo, você não estiver satisfeito com o desenvolvimento pelo navegador (pelo menos, pode-se supor que o processo será úmido no início), você poderá trabalhar com FPGAs através do IceStorm / iCECube.

Se você está interessado na tecnologia WebUSB, pode prestar atenção nos seguintes projetos abertos (todos os links levam ao GitHub, para que você possa entrar imediatamente sob esses capuzes para esses projetos):

  • WebUSB + Arduino . Funciona apenas em placas-mãe compatíveis com Arduino com USB completo, como Arduino Zero ou Adafruit Feather 32u4.
  • Weblight . Um LED conectado ao microcontrolador ATtiny85 e controlado pela Internet. Obviamente, se você pode controlar o LED, pode controlar outros dispositivos externos, tudo o que pode ser conectado ao GPIO.
  • Yubikey HOTP . Dispositivos para proteger dados pessoais em computadores e smartphones. Eles trabalham com o Facebook, Gmail, GitHub e muitos outros serviços.
  • webdfu . O DFU USB é usado para programar microcontroladores. Eu mesmo uso esse modo para programar dispositivos baseados em microcontroladores STM32. Agora, se o instalador precisar executar a instalação tecnológica e atualizar o firmware de várias dezenas de dispositivos, você pode levar não um laptop com Windows, mas um telefone Android.
  • JS IDE para RTOS Zephyr Project, que permite baixar o código em todas as placas compatíveis com Zephyr, e existem mais de uma centena delas. Portanto, compre agora algo como STM32F723E Discovery ou UDOO Neo Full e escreva o código para eles diretamente no seu telefone.

Na página do projeto, os desenvolvedores falam sobre o suporte à tecnologia WebUSB nos navegadores Chrome, Opera e Edge, mas o mozilla.org agora tem outras informações: o Edge não está na lista de navegadores compatíveis:



Como o Microsoft Edge agora ocupa apenas 5,2% do mercado de navegadores, isso não é crítico, mas se você ainda possui o Edge, esteja ciente de possíveis incompatibilidades. Por outro lado, agora existe a oportunidade de desenvolver FPGAs no Chrome OS, o que antes era impossível em princípio.

Devo ajudar este projeto? Na minha opinião, vale a pena. Infelizmente, quando eu já queria ingressar na hierarquia de apoiadores, aconteceu que, para solicitar o WebFPGA, você deve ser um residente dos Estados Unidos ou do Canadá. Se você é morador do “castelo” global, o autor diplomaticamente pede para contatá-lo e promete pensar no que pode ser feito sobre isso. Não entendo muito bem com o que essa restrição está relacionada, geralmente os autores das campanhas de financiamento coletivo simplesmente determinam os diferentes custos de entrega do item para diferentes países (de acordo com as tarifas de correio do país da localização do projeto), para que o pacote também possa ser recebido em regiões menos prósperas do que na América do Norte.

O FPGA iCE40UP5k, até onde eu sei, não se enquadra em nenhuma restrição de exportação e está disponível gratuitamente na Mouser a um preço de 6,46 €. O microcontrolador STM32L041F6 por € 2,02 está ainda mais disponível para pedido gratuito. Talvez o autor da campanha de crowdfunding tenha decidido ser guiado pelo princípio Pareto 80/20 e recusar gentilmente trabalhar com clientes fora do mundo ecumênico civilizado? Se ele realmente puxa o projeto sozinho, pode ser a decisão de negócios certa.

O projeto, é claro, é um tanto controverso. Desenvolvimento no Verilog em um navegador usando software em nuvem - bem, bem legal; especialmente em países onde o respeito ao software proprietário é suportado por vários precedentes legais da vida real e o download de um IDE realmente interessante e conveniente para o Verilog a partir de torrents, e depois também o uso em seus negócios, é um fenômeno muito menos comum do que , digamos, nos países do primeiro. URSS. É claro que eu mesmo não baixo nada de torrents e não o aconselho, mas alguém pode fazer isso, você pode esperar tudo dele .

Por outro lado, agora é possível usar algum tipo de ambiente de programação gratuito para FPGAs (pelo menos iCEcube2, que, embora esteja vinculado à sua conta do Lattice e ao endereço MAC da máquina de trabalho, seja distribuído gratuitamente) mais uma placa de depuração barata de um fabricante chinês, portanto, se você não pode comprar software especializado, não é necessário se concentrar na computação em nuvem. Mas - o projeto é bastante interessante por si só (Verilog! No navegador! WOW!), E pode levar a algo mais como resultado do desenvolvimento. Talvez, com o tempo, a ecosfera nasça, perto das comunidades de usuários do Arduino ou Raspberry Pi, e entusiastas amadores de FPGA poderão trocar códigos Verilog, núcleos compilados e outros desenvolvimentos tão livremente quanto agora no mundo dos microcontroladores. Em geral, parece-me que os profissionais da campanha superam os contras.

Para crédito dos autores da campanha de crowdfunding, eles não escondem o fato da existência de dispositivos competitivos, que também tentam combinar um material interessante e um preço bastante baixo:

  • O MojoBoard V3, ao preço de US $ 75, carrega o Spartan 6 XC6SLX9 FPGA no pacote TQFP-144, microcontrolador ATmega32U4, companheiro de 84 GPIOs;
  • O IceBreaker, outro projeto de crowdfunding, já foi fechado com sucesso; por US $ 69, é oferecida uma placa-mãe com o conversor Lattice iCE40UP5k FPGA e FT2232;
  • TinyFPGA BX, preço $ 38, FPGA ICE40LP8K (7680 células lógicas), 41 pinos GPIO.

Pessoalmente, enquanto moro na Rússia, não posso participar totalmente do projeto WebFPGA, mas enviei a Ryan US $ 5 usando a opção "Fazer uma doação sem remuneração" (isso é algo como o botão "Enviar dinheiro ao autor" em Habré). Em primeiro lugar, parece-me que o projeto em si é muito interessante e útil. Em segundo lugar, uma pequena doação me inscreve automaticamente em todas as notícias do projeto, então me sinto um pouco Warren Buffett, que às vezes compra uma parte da empresa em que estava interessado, para que mais tarde, como acionista, ainda que minoria, receba anualmente um pacote completo de relatórios.

A julgar pela identidade dos autores, um dos quais passa a noite e dorme no GitHub, mesmo que o projeto não decole, ainda teremos muito código fonte muito útil e, possivelmente, com o tempo, haverá pessoas prontas diga, levante uma faixa caída.

Eu tenho um pequeno blog relacionado a hardware de código aberto e crowdfunding; Se você tiver algum projeto interessante de desenvolvimento de DIY ou crowdfunding no campo da eletrônica, ficarei grato pelo link.

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


All Articles