Flashing Firmware

Dear @scottwilber,

I was wondering how difficult it is to flash different firmwares onto the Comscire devices and would you be willing to share information about the process?

It would be amazing to have a table of what devices exist and what firmware each of them can run and then be able to experiment with different algorithms without needing a new device for each.

Flashing new firmware, once it is developed, is not difficult. However, that is only the final step in a complex development process. The MED100Kxx devices require a custom programming connector since there is no typical 10-pin header on the very small boards. I developed about 8 different versions of MMI firmware to compare and use. I believe 5 or 6 of these are available for loan, but I don’t think Jamal, who has the full variety of the MED100Kxx versions in hand, is active at the moment.

If you want to design your own firmware, it’s a substantial learning curve. There are dev boards for most Intel FPGAs, which is the best way to get a start. Typically everything you need is included in the kits. Programming is in VHDL or Verilog, but schematic capture is occasionally necessary as well. I most recently used Cyclone III and Cyclone V for my designs. For commercial use and full functionality, the professional programming software (Quartus Prime) is required, plus a programming dongle (Terasic blaster) and a license for the firmware processor (NIOS) for some applications. Intel’s professional programming software is ridiculously expensive in my opinion. Xilinx is the other popular brand of FPGAs, but I selected Altera (now Intel) for various reasons at the time (about 17 years ago).

FPGAs, like most processing devices, are designed for deterministic programs. Developing nondeterministic designs – including TRNGs, QRNGs and MMI generators – is strictly an art. Beyond that, FPGAs can be programmed to do about anything one can imagine. They are extremely versatile and powerful. The University of Florida in Gainesville built a supercomputer based on a large number of Intel FPGAs (Intel Parallel Computing Center at UFRC – Research Computing). Machine learning and AI are among other applications.

1 Like

Thank you for your detailed answer about the development process. At this point I am more interested in being able to flash already made firmware onto the FPGAs. I noticed the custom connector on the handful of MED100Kx3/4 devices that Jamal has entrusted me with (I am Tobias, he probably mentioned it.)

Would you mind elaborating on the pinout and what programmer and software would be needed for flashing?

Tobias, The ten tabs on the connector correspond to the usual 10-pin header normally available for programming these FPGAs. Those connect to the Terasic Blaster (or equivalent programming dongle), which connects to the programming computer via USB. (Intel documentation page) A custom adapter bridges the 10-pin header to the 10-tab connector on the board. I don’t know the specific pins without doing some research, though I probably followed the same pattern of pin connections as on the header (that is, pin 1 on the front (component side), left; pin 2 on the back, left; and so on to pin 10 on the back, right). The programming software is Quartus Prime available from Intel.

I’m not sure what you want to end up with. If you re-flash the program memory with firmware only I could provide, the board will just be another variation of MED (or a 4Mbps random generator). Those are the only firmware programs I currently have for these boards. I sent Jamal one or more examples (several of a couple of models) of all of these.

If you are thinking of customizing the firmware, which is possible, then we are back to a significant learning curve.

1 Like

Hi Scott, thanks so much for elaborating on the details of the connector and what programming dongle to use. For now it would already be very helpful to be able to flash the different firmwares you created onto the devices for the sake of testing and trying them out. I’ll try to get a hold of some hardware dongles to try it out. Once we will be able to flash and share firmware versions it will improve the collective effort to push MMI research and more people will be able to assist you in getting potential future batches of the MEDs ready for even more people.

I am aware that FPGA programming entails a steep learning curve, so that would be some future step :slight_smile:

Hi Tobias, the reason I created a number of different versions was to allow a direct comparison of performance of different processing methods. The effort to make the comparison software is ongoing as described on the forum. I am not a programmer so I can only suggest design features. To make such a comparison requires two different versions in hand at the same time.

It is no small effort to make the firmware programming available to others, but I am not sure how much that would move the general effort forward. Once comparisons are made and the “best” design is revealed, I can flash that into all the hardware I have on hand. I have already programmed about 100 generators with what I think is the most responsive design. However, I try to never assume or guess without actual testing.

I think the most productive efforts would be collaborating in perfecting a comparison program so the most responsive version can be used going forward. In addition, direct comparisons of responsivity (effect size) will provide additional information I can use to fine-tune my theoretical modeling. That could be important for developing even more responsive designs, which would be great.

1 Like

Ability to change version of MED without shipping new hardware (that takes a long time when international) would definitely be useful. It would also make a comparison easier, when you only need to have two MED units and make them into desireable models for any particular experiment.

1 Like

yes, that is exactly what I actually meant @D0ublezer0