FPGA Virtex6 Bitcoin Miner

Ui, da hab ich doch tatsächlich bei uns in der Arbeit ein ungenutztes Virtex6-Board gefunden.

In Windeseile den Xilinx-VHDL-Port des Open-Source Bitcoin Miners untergeladen und etwas für das ML605-Board und Virtex-6 angepasst.

Im Grunde musste ich nur den DCM durch einen neueren Clock-Generating-Core für V6 ersetzen, was gleich gemacht war.

Danach war der Source auch schon synthetisierbar.

Das Resultat ist ganz beachtlich. Es wird – laut Synthese-Tool – eine maximale Taktfrequenz von ca 100MHz erreicht, was mit einem einzigen Mining-Core schon um die 100MHash/s ergibt.

Der Mining-Core besteht aus einem kleinen UART-Modul für die Kommunikation mit dem PC und dem eigentlichen Miner, der selbst aus etwas Logik zum Inkrementieren der nonce und dem Vergleich auf das Target und zwei SHA256 besteht (Double-Hashing SHA256(SHA256(X))). Beeindruckend ist hierbei, dass pro SHA256 alle 64 Iterationen vollständig unrolled wurden, d.h. jeder SHA256 hat eine 64stufige Pipeline, die dann effektiv für 1MHash/s bei 1MHz sorgt.

In den Wahnsinns-Virtex (XC6VLX240T-1FFG1156) passen zwei komplette Miner, was insgesamt 4 SHA256-Cores und eine gesamt Hashrate von 200MHash/sec ergibt.

Mit zwei kompletten vollständig ausgerollten Minern ist der Virtex6 mit ungefähr 80% ausgelastet … Man müsste dann eigentlich noch einen langsameren Core hineinkriegen, der nur jeweils 32 Pipeline-Stufen hat. Vlt bekommt man so nochmal 25-50MHash/s zusätzlich raus … Muss ich ausprobieren 🙂

Dabei liegt der Stromverbrauch bei um die 30W (geschätzt, noch nicht nachgemessen), was natürlich unschlagbar ist.

Einziger Nachteil, der aber nur am Anfang nervt, bis alles läuft: Synthese + Implementierung dauern über 1,5h auf meinem Arbeitsrechner … Seufz!

8 Gedanken zu „FPGA Virtex6 Bitcoin Miner

  1. Very nice job! I am trying to get a ML605 mining with the VHDL port. I have problem getting the control software running on Windows 7, the python script just won’t run properly. The curses library is giving me trouble. Are you running on Linux?

    I have 10 years of experience with Xilinx FPGA development, my goal is to get 400 MHash/s from the ML605 by utilizing all DSP48 and timing optimizing for higher clockrate.

  2. Thx for your comment 🙂 Yes, I’m using linux … I didn’t have any problems with the python script or the uart connection to the port. It’s running 24/7 and it’s very stable.

    Wow, 400MHash/s sounds impossible to me 🙂 I’ve done some FPGA designs (one of it is on opencores … But I saw, images are missing … I’ll have to update it) but mostly relied on the capabilities of Xilinx’s or Altera’s toolchains, so I don’t know much about dsp48 although I know my core did use some as multipliers 🙂

    Please keep me informed about your progress 🙂 Good luck!

  3. Hey Thomas, ich habe das Board auch, kannst du mir/uns das Mining auf dem FPGA mal schritt für schritt erlären? Habe nochnie was mit FPGA´s gemacht:( blicke da null durch bei den Tutorials

    • Hallo Julian, für blutige Anfänger kann das Thema FPGA schon recht verwirrend sein. Es gibt da ziemlich viel zu wissen. In Deinem Fall – das Portieren des FPGA-Miners auf das Xilinx-Board – vlt nicht ganz soviel. Im Prinzip läuft der Xilinx-VHDL-Port *fast* out of the box. Der ist für eine andere FPGA-Architektur, weshalb man die Takterzeugung auswechseln muss. Anschließend muss man – falls man den Takt geändert hat – noch die Baudrate im Uart-Modul einstellen. Zuletzt verbindet man die I/O-Pins noch mit clk, rx und tx und das war’s eigentlich schon. Ich könnte das Projekt zum Download anbieten, falls gewünscht. Ich bin aber derzeit im Urlaub und mein Projekt habe ich quasi die nächsten 2 Wochen nicht zur Hand … Darf ich dich noch fragen, wie es kommt, dass du ein ~1200$ FPGA Board hast, mit FPGAs aber noch keine Erfahrungen hast?

      • Hallo Thomas, ich bin Auszubildender in einer großen Forschungseinrichtung. Da das Borad derzeit keine Verwendung hat durfte ich mir es zum Bitcoin minen ausleihen:). Leider ist es nicht ganz so leicht wie mit einer GPU zu minen.
        Deshlab bin ich über jede hilfe dankbar:)

  4. Hey, I too have an ML605 and for some reason, I cant get the thing to run properly.
    Would you mind sending me your files so I can compare my work with yours and see where I went wrong?

    Thanks

Hinterlasse eine Antwort zu Julian Antwort abbrechen