Oct 062011
 

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.)

 Posted by at 8:16 pm

  9 Responses to “DE0-Nano power efficiency mod”

  1. […] DE0-Nano power efficiency mod @ The Lair of Mako. 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. […]

  2. Hi great tutorial! Just hooked this up, and I’m trying to mine some coins. But i cant get it up to more than 3.13 MH/s and ideas??? I cant get LOOP_LOG2 to compile with higher than 4. I see other people have made it to 3

  3. Out of curiosity, while running a bitcoin miner with the power efficiency, did you measure the current load on the external power input?

  4. *power efficiency mod

  5. Hi there! I recently found your contributions to the open source fpga miner project, and decided to try and get my own DE0 nano board mining bitcoins. I got the design compiled and synthesized, and uploaded to the board. The mining script recognizes the board and sends work to it.

    However, my reject rate is 100%. Is external power required to get valid shares? I’m running at the default clock speed, from USB power.

    Thanks for all your hard work on this project!

  6. Hi, how many mega hashes per second do you get while mining for bitcoins with this thing?

  7. How did you get the de0 nano to work with bitcoin mining? I looked at the open source miner but could not get it to compile.

  8. This is brilliant!

    I’ve been using a DE0-nano for mining and managed to clock it to 80mhz (with a small fan for cooling) and the only thing that’s getting hot is the regulator.

    This is frustrating because the FPGA is running stable and I reckon it will clock a lot further. I’m currently trying to cool it with a copper penny as a heatsink but realize this is probably futile.

    Looking forward to trying this hack out.

  9. What is the M/hash on your DE0-Nano?

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)