I am excited. Special purpose, complicated digital logic is now as accessible as writing code.
I’ve been both a logic designer and a programmer, and have used both darned fast logic and pretty darned fast processors to do “things that needed doing”. As a hobbyist, I’ve seen vast improvements in the processing power available in components bearing accessible prices — not only desk top computers, but also embedded processing boards. The Arduino is a case in point, but also make others including multiple AVR-based boards, ARM-based boards, and even some Intel boards. With attainable boards and available development environments, most things that can be solved with a program can be tackled by someone at home.
Although the hardware is the first obvious requirement, in my view the greatest breakthroughs have come in the software environments. It doesn’t help to have a $25 processor board if one needs to purchase a $3000 set of software tools to use it. GNU compilers and the Arduino IDE set the pace, and others are following.
The story hasn’t been so good, though, for problems that can’t be solved easily by a processor. Larry Stewart (one of my friends here at Wayland STEM) has said that all programs are either Lisp programs or Fortran programs (I’ll invite him to expand on this concept later); but there is a third kind of program that doesn’t run on a processor at all — a hardware program.
Now, you might say that there is no such thing as a hardware program. Hardware is made of chips connected by wires. It does only what is wired to do. You would be partially right, but if the wires could be easily reconnected, it starts to be more like programs we know for processors. In the early days of computing, the IBM 402 tabulating calculator was programmed not with a processor programm, but by wiring together blocks of logic. The wiring panel was removable. By changing panels, the function of the machine could be completely changed. The machine was programmed with wires.
The IBM 402 was developed long before we had fast central processors. In fact, with one exception you can find referenced on the Wikipedia article I linked to above, no one uses the IBM 402 to do real work. Programmable processors are fast enough to do everything quicker, and you don’t need to move large plug panels to change the program. That has been the trend — faster programmable processors have gradually taken over much of the work for which dedicated logic was once required.
Today there are still problems not well solved by programmable processors. When time must be accurately measured, or many things must happen at the same time, or many simple things must occur truly in parallel, or something must happen too fast, wired together hardware remains the only answer.
Industry has moved beyond the old days of wiring together hundreds of simple chips to make dedicated hardware. The time required to move a signal form one chip to another has not gotten much faster. Chips work fast only because the wires are internal. Instead, a new type of part was developed that has thousands of logic gates on one chip, but the wires between the gates can be changed. The acronym FPGA or Field Programmable Gate Array describes it perfectly. A large array (regular structure) of gates (simple logic elements) which is programmable (the connections can be established at will) in the Field (meaning not in the factory). Different companies have different strategies for implementing the wires, but the effect is the same. One chip can be internally rewired to implement many dedicated hardware functions.
This was brilliant. One could make specialized digital logic with the production economies of scale, fast speeds, and benefits of Moore’s law on mass produced tiny geometry silicon chips. All of the advantages with few disadvantages.
But for hobbyists, these disadvantages were crippling.
- The parts are surface mount, and difficult to hand solder,
- The tools that convert the intended logic diagrams into the wiring instructions typically cost in excess of $10,000, and
- Once you had the wiring file, it was complicated to impose that on the chip.
I know. I personally build some hobby boards using small FPGAs. I had to borrow tools for work to make the programming files, and implemented hundreds of lines of C code to impress that programming file onto the FPGAs.
So, this is why I am excited:
A company catering to hobbyists has made a board that makes it easy to add dedicated logic of high complexity to your projects. Embedded Micro has a product named Mojo. It began as a Kickstarter project, and is now complete. It consists of a small FPGA, an Arduino micro controller to handle the details of setting up the FPGA, a free tool suite from the FPGA maker (Xilinx), and tutorials to teach how to tie it all together.
I ordered two of these, they arrived, and I have successfully written and loaded trivial code. The code isn’t much, but I’ve proven that I can go from design to implementation.
This is a fantastic tool, and I am absolutely delighted that it is finally in our hands. With these and your embedded processor of choice, few projects will be our of reach.