I think many programmers, ranging from Pitonist dataseentists to harsh driver developers, occasionally erect their eyes with grief and sigh wistfully: “Oh, so much more like that ...”. We are, of course, talking about Verilog, a language for describing and modeling electronic systems. Verilog has always stood apart among programming languages; allowing you to solve problems that cannot be mastered in any other way, however, it requires a specific hardware platform, FPGA - a programmable logic integrated circuit. Verilog’s development entry threshold is relatively high, but it may soon be a little lower, because it’s right now.
Crowdfunding project : WebFPGA.
The essence of the project : The debug board for the FPGA iCE40UP5k. All development and debugging software is hosted in the cloud, interaction with the board takes place in the browser using the WebUSB API.
Platform : Kickstarter.
Author : Ryan Jacobs (programmer), Mick Jacobs (electronic engineer).
Location : Los Angeles, California, USA.

The board integrates the FPGA Lattice iCE40UP5k (5280 logic cells, 32 GPIO, 1 Mbit SRAM) and the microcontroller STM32F04-Series; more precisely, the developer does not report the model of the microcontroller, but judging by the photograph of the board, this is TSSOP-20, and in TSSOP-20 ST Microelectronics releases only one microcontroller “STM32F04-Series” - STM32L041F6 for € 2.02.
')
Interestingly, one of the authors of the project, Ryan Jacobs - a student of UCLA, he has no sensible resume, so he gives a link to GitHub, which has already managed to earn 1700 stars.
While the cloud part of the project is hosted on 6 servers (the exact characteristics are not voiced, all specifications are known only as “dual Xeon”), the developer promises that part of the funds collected as a result of the campaign will go to payments for the equipment already purchased, if the amount collected will exceed the project goal of $ 10,000, then these additional funds will be a signal, talking about a large number of potential users and the server park will be expanded. According to the author, cloud storage like Amazon or Azure does not fit into the current business model at all, so it was immediately decided to deploy the entire backend on its own servers.
To warn potential unrest among potential users about the lack of computing power of the servers, Ryan assures that “servers are used only for synthesizing and transmitting to the end user a binary code that is only 3 kilobytes in size”. In my opinion, the traffic volume is really small - the source code goes to Verilog, which can also be compressed well, the binary firmware comes down, the size of which is really small due to the relatively small capacity of the FPGA used.
But with the server loading process of synthesizing firmware from Verilog-code, in my opinion, everything is not so unequivocally optimistic. Even if we leave out the process of optimizing the physical placement of the resulting circuit in the common space of the FPGA, which definitely requires a fairly nimble graphical interface and constant exchange with the server of rather large information packets, it still remains the process of actually synthesizing the firmware, which, in my personal opinion, is first , must eat a sufficiently large amount of processor time and, secondly, is non-deterministic and can be delayed.
Personally, my acquaintance with the FPGA was in the first half of the zero (these were Actel FPGAs, the firmware of which was developed in the Libero + Synplify + ModelSim bundle) and, as I recall, the synthesis process, even for simple training projects, was never lightning fast. Actually, as with any compilation process, all periodic interruptions and stuttering are characteristic of the synthesis, but let's hope that the average response time of the server will be within the framework of human patience. By the way, when in the FAQ the author talks about compiling optimization by caching binary files (in case the Verilog file code and compiler flags were unchanged, the user just received the last received binary), he mentions that “you will not need 2 minutes wait for the completion of the synthesis process. "
If for some reason you are not satisfied with the development through the browser (at least it can be assumed that the process will be damp at first), then you can work with FPGA via IceStorm / iCECube.
If you are interested in the WebUSB technology, then you can pay attention to the following open projects (all links lead to GitHub, so you can immediately go under the hood of these projects):
- WebUSB + Arduino . Only works on Arduino-compatible boards with full USB, like Arduino Zero or Adafruit Feather 32u4.
- WebLight . The LED connected to the ATtiny85 microcontroller and controlled via the Internet. Of course, if you can control the LED, you can control other external devices, everything that can be connected to the GPIO.
- Yubikey HOTP . Devices to protect personal data on computers and smartphones. They work with Facebook, Gmail, GitHub and many other services.
- webdfu . USB DFU is used for programming microcontrollers. I myself use this mode for programming devices based on STM32 microcontrollers. Now, if the installer needs to go around the technological installation and update the firmware of several dozens of devices, you can take the Android phone with you, not a Windows laptop.
- JS IDE for RTOS Zephyr Project, which allows you to download code to all boards compatible with Zephyr, and there are more than a hundred of them. So buy something like STM32F723E Discovery or UDOO Neo Full right now and write code for them right on your phone.
On the project page, developers talk about supporting WebUSB technology in Chrome, Opera and Edge browsers, but on mozilla.org there is now other information, Edge is not in the list of compatible browsers:

Considering that Microsoft Edge now occupies only 5.2% of the browser market, this is not critical, but if you have Edge, keep in mind possible incompatibility. On the other hand, it is now possible to develop for the FPGA in Chrome OS, which was previously impossible in principle.
Is it worth helping this project? In my opinion, it is worth. Unfortunately, when I really wanted to join the ranks of backers, it turned out that to order WebFPGA you must be a resident of the USA or Canada. If you are a resident of the global “zamkadya”, then the author diplomatically asks to contact him and promises to think about what can be done with this. I don’t quite understand what causes such a restriction, usually the authors of crowdfunding campaigns simply determine the different cost of delivering the item to different countries (in accordance with the tariffs of the mail of the country where the project is localized), so the package can be received in less prosperous regions than North America.
The FPGA iCE40UP5k, as far as I know, does not fall under any export restrictions and is freely available on Mouser at a price of € 6.46. The STM32L041F6 microcontroller for € 2.02 is all the more available for free ordering. Perhaps the author of the crowdfunding campaign decided to follow the Pareto 80/20 principle and gently refuse to work with customers outside of civilized ecumene? If he really pulls the project alone, then this may be the right business decision.
The project, of course, is somewhat controversial. Development on Verilog in a browser using cloud software - well, sort of cool; especially for countries where respect for proprietary software is supported by numerous real judicial precedents and download some really cool and convenient IDE for developing on Verilog from torrents, and then also use it in its commercial activities - a phenomenon much less common than let's say in former countries THE USSR. I myself don’t shake anything from torrents and I don’t advise you, but
someone can do that, you can expect everything from
him .
On the other hand, it is now possible to use some free programming environment for the FPGA (at least iCEcube2, which, although attached to your Lattice account and MAC address of the working machine, is distributed completely free), plus an inexpensive debugging board from a Chinese manufacturer, so if you cannot buy specialized software, it is not necessary to focus on cloud computing. But - the project is cool enough in and of itself (Verilog! In the browser! WOW!), And as a result of development it can lead to something more. Maybe, over time, an ecosphere will be born that is close to the Arduino or Raspberry Pi user communities and FPGA enthusiasts will be able to exchange Verilog-code, compiled cores and other developments as freely as it does in the world of microcontrollers. In general, it seems to me that the advantages of the campaign outweigh the disadvantages.
To the credit of the authors of the crowdfunding campaign, they are not silent about the existence of competitive devices, which also try to combine interesting stuffing and a fairly low price:
- The MojoBoard V3, priced at $ 75, carries the Spartan 6 XC6SLX9 FPGA in the TQFP-144 package, combing an 84 GPIO companion microcontroller ATmega32U4;
- IceBreaker, another crowdfunding project, already successfully closed; For $ 69, a board with Lattice iCE40UP5k FPGA and an FT2232 converter is offered;
- TinyFPGA BX, price $ 38, FPGA ICE40LP8K (7680 logic cells), 41 GPIO pins.
Personally, living in Russia, I cannot fully participate in the WebFPGA project, but I sent $ 5 to Ryan using the option “Make a donation without remuneration” (this is something like the “Send money to the author” button on Habré). First, it seems to me that the project itself is very interesting and useful. Secondly, a small donation automatically subscribes me to all the news on the project, so I feel a little Warren Buffett, who sometimes buys a single share of the company he is interested in, so that later, as a shareholder, although minority, receive a full reporting package each year.
Judging by the identity of the authors, one of whom is sleeping and spending the night on GitHub, so even if the project does not take off, we still get a large amount of very useful source code, and perhaps over time there will be people ready, say raise the fallen banner.
I run a small
blog related to open source hardware and crowdfunding; If you have an interesting DIY-development or crowdfunding project in the field of electronics, I will be grateful for the link.