Our Thinking

The “Perfect” FPGA Module (Part 3)

You may have read our previous Blog about how “perfect” our modules are, here you can read how we keep improving a “perfect” thing

 So how do you improve a “perfect” module ? You look at the things that cause the most effort in daily use and see if there is not a simpler way. And that is exactly what we did..

 We found that it is nice to be able to change things such as boot-mode or the value of the I/O Auxiliary Voltage, or to change the timing of the ready signal to the carrier board etcetera. Even in our original KRM-3xx modules all those things were possible, but required a steady hand and a soldering iron to move configuration resistors or jumpers. While changing the I/O Auxiliary Voltage is rarely done, swapping boot-modes between on board QSPI and off board SD for example can happen several times during development. This quickly becomes tedious and the most efficient way is to use two differently configured boards that are swapped out as you need them. This is not very efficient and the wear on the connectors will at some point become excessive and lead to failure.

 So the obvious improvement is to implement these settings as a firmware choice rather than a hard patch, and we did. A new BMC (Board Management Controller) handles all aspects of Module configuration, sequencing of power rails and reset signals.

 Our first module to implement the new HW is the new KRM-1Z7010 REVB. The initial firmware release can detect if it is situated on a legacy carrier and enters REVA emulation mode where Reset and config-done behave just like REV A Modules.

 If the Module detects a smart carrier such as the KRC1710, the Reset and Config-done pins assume the function of an I2C bus and the power manager of the carrier can query the Modules condition, serial number and issue commands to power down, read current consumption, change boot mode etc.  Future FW upgrades will expand on the range of functions that a modules BMC will offer, details will follow and we’re always open to suggestions by the way…

 Since we implemented the advanced features on two signaling pins that are consistently available on all of the KRM-3Zxx and KRM-1Zxx modules, we will gradually upgrade the entire range to support the enhanced functionality. Backwards compatibility is assured and we’ll continue to ship earlier revisions to anyone that prefers that.

 I conclude this post by noting that “perfection” is relative and we’ll do our best to improve our version of it, a little every day ;-)