I recently bought a DE0-nano FPGA development board, which I’m currently using to mine Bitcoins. It’s kind of a neat board, but one downside to it is that it uses linear regulators to provide the 1.2V core supply to the FPGA, and they’re incredibly inefficient at this. Only about 25% of the power supplied to them actually goes into the 1.2V supply; the other 75% is wasted as heat in the regulators. Since Bitcoin mining is very power-hungry, an awful lot of the power usage is in the 1.2V core supply and the regulators get really hot.
Fortunately, it’s possible to mod the board to use a more efficient external buck regulator to supply the 1.2 volts required by the FPGA core logic. (In theory this should even allow USB-powered mining; in practice this doesn’t seem to work for some reason.)
If you look at the schematics, each of the main voltages on the board (ground, the supply voltage, 3.3V, and 1.2V) is brought out to a pair of pins on the 4-pin jumpers J5 and J6. There’s also a handy zero-ohm resistor across the input to the 1.2V regulator that can be removed to disable it.
Basically, what you need to do is get a suitable buck converter that can accept 3.3-5.5V input and supply 1.2V at up to 1500mA. There are a whole bunch of suitable boards available for cheap on eBay if you search for “DC stepdown”; I bought this one which is probably less than ideal. Solder the input + and – terminals to the appropriate pins on J6 using short lengths of fairly thick wire.
Now, you need to power up the DE0-nano, get a small screwdriver and multimeter and adjust the output voltage trimmer on the regulator board until the voltage between its IN- and OUT+ terminals reads as 1.2V. On mine this meant turning it all the way clockwise, and you’ll probably have to turn it more than 1 full turn. (Yes, I do mean IN- here – we’re using it as the ground connection on both input and output sides.)
Power the board down again, flip it over and desolder R61. The easiest way to do this is to get some solder and form a molten blob on top big enough to reach both sides of the resistor, then use tweezers to remove it whilst still heating it with your soldering iron. R61 is designed to be user-removable, so it’s nice and large and far away from other components.
Finally, solder another short thick wire from OUT+ on the regulator to the 1.2V side of J6. (It’s important to use short, thickish lengths of wire because quite a lot of current passes through them at a relatively low voltage, and if they’re too thin or too long the resulting voltage drop will cause the FPGA to work unreliably or not at all.) Power up the board and check that you measure 1.2V from the GND side of J5 to the 1.2V side of J6 and everything works. With a bit of luck you’re done!
I still need to check how much power saving this actually achieves, but the regulators are no longer roasting hot which is an improvement.
(Obligatory disclaimer: This modification may result in damage to your hardware, I disclaim liability to the maximum extent permitted by law, etc. The usual basically.)