Pages:
Author

Topic: Modular FPGA Miner Hardware Design Development - page 9. (Read 119276 times)

member
Activity: 70
Merit: 10
Quote
I only looked at the XC6SLX75 to XC6SLX150, but those both fit the board. I guess the XC6SLX100 will also fit, but I didn't check. The XC6SLX??-?N will also fit, as there is just some missing functionality (not needed).
How about, for example, the XC6SLX25-N3FGG484C. It's ~$50USD, one third the price of an LX150. If you can verify that both chips will happily use the same landing, then the first prototype can have that LX25 soldered on. Full testing of the board, FPGA, power supply, and FPGA with firmware can be performed. If everything looks good the remaining boards can be soldered with LX150s.
[...]

The XC6SLX25 seems to be a bit very small to me. The price difference to a XC6SLX75 is 38.02EUR (67.33EUR-29.31EUR). The smallest stock chip with avnet is the XC6SLX25-3FGG484C for 32.24EUR, anyway. I am basically objecting to not being able to use the prototypes for serious mining in case they work. It's a gamble of course: with the small FPGA you either loose less money if there is a bug or you throw away money if it works.
member
Activity: 70
Merit: 10
[...]
Quote
For the MSP430 code - what functions will need to be written (have not looked at updated schematic yet). What clock rates will the communication bus need to run at? Do I need to come up with a protocol, or will this be a community effort? How do the community envision the USB connection (CDC, HID, etc)? For the connection to the mainboard - what will the packet look like?
I'm not involved in this design enough to give a perfectly accurate answer, but since no one else has chimed in yet I'll make some quick comments. I've written controllers for my FPGA firmware before, so I have a bit of experience with it already.
[...]

Sorry for not saying anything earlier. The MCU has two main communication channels to the FPGAs, at least one of which needs to be implemented. One channel is the JTAG interface, where the FPGAs are connected in a standard JTAG ring. I unfortunately have no feeling how "normal" software on a PC interacts with a JTAG programmer, but the MCU should probably expose a similar interface to the PC via USB. Comments?

The second interface is SPI: the two FPGAs are connected in parallel, having different SSEL lines for addressing. Speaking in a layer model, the first layer is a serial interface engine for SPI, with the signals SCLK, MOSI, MISO, SSEL0 and SSEL1. This bus can also be used to program the FPGAs, for which a few extra signal lines are used: !PROGRAM0, !PROGRAM1 reset the respective FPGA, DONE and !IRQ inform the MCU about the status of the programming. !IRQ can also be an output from the MCU, delaying the configuration of the FPGAs.

The second layer should contain low-level functions: "send a binary buffer to FPGAs specified by a SSEL mask", "read a given bit number into a binary buffer from FPGAs specified by a SSEL mask", "reset FPGAs specified by PROGRAM mask", "Check status of DONE", "check status of IRQ", "install interrupt for IRQ"...

The third layer should contain functions like "reset and bootload an FPGA", "send new workload", "read golden nonce"... This layer depends on how the firmware inside the FPGAs works.

Additionally, the MCU must expose a selection of these functions (or all) to the PC in some format. I am always in favour of a serial connection with a text protocol, but that may be unnecessarily difficult.
hero member
Activity: 560
Merit: 517
Quote
I only looked at the XC6SLX75 to XC6SLX150, but those both fit the board. I guess the XC6SLX100 will also fit, but I didn't check. The XC6SLX??-?N will also fit, as there is just some missing functionality (not needed).
How about, for example, the XC6SLX25-N3FGG484C. It's ~$50USD, one third the price of an LX150. If you can verify that both chips will happily use the same landing, then the first prototype can have that LX25 soldered on. Full testing of the board, FPGA, power supply, and FPGA with firmware can be performed. If everything looks good the remaining boards can be soldered with LX150s.

It may also be good for those who wish to sample the product before buying the more expensive LX150 version, or just generally play around with the board without feeling like they are risking destroying an expensive device.

Quote
For the MSP430 code - what functions will need to be written (have not looked at updated schematic yet). What clock rates will the communication bus need to run at? Do I need to come up with a protocol, or will this be a community effort? How do the community envision the USB connection (CDC, HID, etc)? For the connection to the mainboard - what will the packet look like?
I'm not involved in this design enough to give a perfectly accurate answer, but since no one else has chimed in yet I'll make some quick comments. I've written controllers for my FPGA firmware before, so I have a bit of experience with it already.

Communications between uC and FPGA:
The uC needs to deliver Work to the FPGA at least every 2^32/(MH/s) seconds. Supposing FPGA performance of 200MH/s that is every 21 seconds. However, Long Polling will result in massive spikes of BUS bandwidth, requiring ASAP deliver of Work to every FPGA.

Work going to the FPGA is a data packet with a raw size of 96+256 (352) bits of data, but could go up to 608 bits in highly optimized FPGA firmware.

With clever optimization it would be possible to eliminate the peak bandwidth issues caused by a Long Polling event. Hence I would suggest that the delivery of ~608bits in a 1/4th of a second should be sufficient at worst case. That's about 2.5Kbits/s of bandwidth. Any better than that increases the MH/s performance of the system as a whole during Long Poll events, which are typically devastating regardless.

The delivery of 608-bit Work units to at most 64 FPGAs over a 20 second period would also give under 2.5Kbit/s. So 2.5Kbit/s seems like a good target. Double or triple that for communication fluff.

The uC needs to pull successful calculations from the FPGA on average every 21 seconds. These Results will be buffered in a FIFO on the FPGA, so you do not need to worry about peak bandwidth here. As long as you can pull the data out a little bit faster than one per 21 seconds per FPGA then that is sufficient.

Results coming from the FPGA will have a raw size of 96+32 (128) bits. This is unlikely to be larger, but could potentially be 1024bits.

The uC may want to send various commands to the FPGA and pull back some information. For example:

Commands: Change Clock Frequency, Self Test
Queries: Version, Self Test Result, Current Nonce, Estimated Temperature, Current Clock Frequency, Fault Error


Communications between uC and PC:
The uC needs to talk to the PC to give information about the current status of the FPGAs, update stored firmware, report current hashing rate, enable/disable FPGAs, etc. The PC needs to give the uC new work, and indicate Long Polling events. The uC needs to give the PC results from the FPGAs.


If the uC is responsible for programming the FPGAs, it must do that. Hopefully the FPGAs will have fault detection and downclocking built-in. If that is the case the uC needs to report faults, and possibly re-enable FPGAs at lower clock speeds. This is under the assumption that the FPGAs might have the ability to adjust their internal clock speeds. If they don't then they'll only have two clock speeds: MAX and OFF, possibly more with the aid of firmwares.

... That's all I can think of off the top of my head. I hope it is useful.
sr. member
Activity: 410
Merit: 252
Watercooling the world of mining
@ fpgaminer:
Great surely gets us closer to a working prototype.Should give us nice first results Cheesy

@ bahnfire:
I certainly no expert on the software side,but i would prefere the HID version.
The frequency is not critical in my eyes as we dont need high bandwith. So rather slow for not getting into HF issues.
Please somebody more expertised in USB and software join up with you.
I dont know how easy it is to rout out all the debugging functions?  

@ li_gangyi:
I would also prefere a single frequency source for each FPGA to prevent ozcillation between them.

Of course we will build some boards in minor quantity first.
But as li_gangyi is doing the assembley himself he certainly may check if the design works at all when he finished the first one.  

Im also not suree about the interchangeablility of the Spartan series.
But i agree using the LX75 instead of the LX150 would cut costs an minimise risks regarding investments.

Comments?
member
Activity: 70
Merit: 10
[...]
Also, is the FPGA landing currently designed to be compatible with all Spartan-6's in the same package? The Spartan-6 chips are designed to allow for that, so the first prototypes could be tested with a far cheaper FPGA before trying out the expensive LX150.

I only looked at the XC6SLX75 to XC6SLX150, but those both fit the board. I guess the XC6SLX100 will also fit, but I didn't check. The XC6SLX??-?N will also fit, as there is just some missing functionality (not needed). The XC6SLX??T should not fit, as they put various supply voltages on pins that I considered on the NC net. They may work, but I honestly didn't look too closely at the datasheet there.
member
Activity: 70
Merit: 10
[...] For the FPGA, I suggest the ASEM1-100.000MHZ-LC-T: it's small (3.2x2.5mm2) and should be sufficiently stable. [...]

The oscillator you've suggested runs @ 3.3V, we'd need a 2.5V unit.

You are right, didn't pay attention to that. But the ASEMB-100.000MHZ-LY-T is a 2.5V capable oscillator that has 10ppm accuracy (enough?). The matching 25MHz oscillator is ASEMB-25.000MHZ-XY-T (higher temperature range, but the -LX-T version is non-stock at Diikey).

Quote
The design as it is on dropbox and github calls for the clock to be connected to IO_L30N_GCLK0_USERCCLK_2, pin AB13. The clock is shared between the two FPGAs (no need to have a dedicated clock for each). I will put the oscillator into the design, so it is no longer routed to the MCU.

I'm not sure how you plan to do this, to do it properly you'd need to buffer the oscillator and/or series termination at each end to reduce reflections.
[...]

I planned to just connect the oscillator to the pins and have a Thevenin termination on the other end of the line. pusle suggested to remove the termination and instead put a resistor (which value?) between the oscillator and the FPGA pins. What are your suggestions?
hero member
Activity: 560
Merit: 517
Quote
I'll be the voice of reason here... are you sure you guys want to populate 5 boards on the first batch? I think it's wiser to make 1 or 2. You know, get your feet wet before jumping in
Perhaps spin 5+ PCBs, and populate them one by one while testing each time? Assuming who ever is doing the soldering can do them one at a time. You could still order the parts up-front. If the boards turn out to have a mistake, then it's only one set of parts wasted (unless you can reflow the FPGA back off) and the others will just sit in their anti-static bags waiting for the revised PCBs.

Also, is the FPGA landing currently designed to be compatible with all Spartan-6's in the same package? The Spartan-6 chips are designed to allow for that, so the first prototypes could be tested with a far cheaper FPGA before trying out the expensive LX150.
full member
Activity: 210
Merit: 100
I'll be the voice of reason here... are you sure you guys want to populate 5 boards on the first batch? I think it's wiser to make 1 or 2. You know, get your feet wet before jumping in
full member
Activity: 157
Merit: 100
[...] For the FPGA, I suggest the ASEM1-100.000MHZ-LC-T: it's small (3.2x2.5mm2) and should be sufficiently stable. [...]

The oscillator you've suggested runs @ 3.3V, we'd need a 2.5V unit.

Quote
The design as it is on dropbox and github calls for the clock to be connected to IO_L30N_GCLK0_USERCCLK_2, pin AB13. The clock is shared between the two FPGAs (no need to have a dedicated clock for each). I will put the oscillator into the design, so it is no longer routed to the MCU.

I'm not sure how you plan to do this, to do it properly you'd need to buffer the oscillator and/or series termination at each end to reduce reflections.

FPGAminer: certainly good news, when this board get's made, I'm sure one of them will go to you.
jr. member
Activity: 139
Merit: 1
The World’s First Blockchain Core
For the MSP430 code - what functions will need to be written (have not looked at updated schematic yet). What clock rates will the communication bus need to run at? Do I need to come up with a protocol, or will this be a community effort? How do the community envision the USB connection (CDC, HID, etc)? For the connection to the mainboard - what will the packet look like?
hero member
Activity: 560
Merit: 517
I am not sure if this was made clear in this thread or not, but I will bring the news regardless:

Over in the Open Source FPGA Miner thread we have succeeded in getting a working, and verified design running on my LX150T dev kit. I did verification against a live pool at 50MH/s. The design can currently be clocked up to 100MH/s. I thought you folks would enjoy the good news if you hadn't heard it yet Cheesy

Most of us believe the LX150 can push beyond 100MH/s, so we are working towards that end through either a dual-core design or higher clocking. I am hoping for anywhere between 150MH/s and 200MH/s.

I should also note that I use a DCM to adjust the incoming 100MHz clock to the desired frequency (I saw some discussion on that in this thread). I use the clkfx output, because it gives the range I need for testing weird frequencies. There should be no problems using a different frequency external clock, but 100MHz is what I am getting from the Avnet board.
hero member
Activity: 504
Merit: 500
FPGA Mining LLC
Can do that, but wasn't there the comment that putting vias onto pads causes problems during manufacturing? And eagle doesn't like it at all (a lot of drc errors).
If at all, that's a problem for BGA pads. The rather huge thermal pad of that voltage regulator can certainly have vias, I'd encourage that as well. (Look at any commercial PCBs, e.g. your graphics card, and you'll see loads of vias below things like voltage regulators or power MOSFETs.)
member
Activity: 70
Merit: 10
[...]
We still need to put in the clk sources as well.
I suggest 100Mhz with a 2.5v oscillator module, on pin IO L40P GCLK11 M1A5 (each FPGA has 1).

I already suggested a suitable MEMS oscillator before:

[...] For the FPGA, I suggest the ASEM1-100.000MHZ-LC-T: it's small (3.2x2.5mm2) and should be sufficiently stable. [...]

The design as it is on dropbox and github calls for the clock to be connected to IO_L30N_GCLK0_USERCCLK_2, pin AB13. The clock is shared between the two FPGAs (no need to have a dedicated clock for each). I will put the oscillator into the design, so it is no longer routed to the MCU.

Edit: I looked at the routed PSU, you might want to put some vias under the LMZ modules to better sink heat away from the thermal pad. In fact you could use unused layers in the board to make a more effective heatsink as well.

Can do that, but wasn't there the comment that putting vias onto pads causes problems during manufacturing? And eagle doesn't like it at all (a lot of drc errors).
full member
Activity: 157
Merit: 100
I uploaded a new version of the FPGA section and of li_gangyi's PSU schematic and board to github and dropbox. Commit logs:

Routed PSU: Fixed the package of the PSU switchers (had two pads) and routed the PSU section.

Created symbols for VCCINT[01]: Added corresponding symbols to the project.lbr library and used them in the FPGA files. Also replaced the older name of the library with the correct one in the schematic.

Next is the MCU section.

We still need to put in the clk sources as well.
I suggest 100Mhz with a 2.5v oscillator module, on pin IO L40P GCLK11 M1A5 (each FPGA has 1).

Edit: I looked at the routed PSU, you might want to put some vias under the LMZ modules to better sink heat away from the thermal pad. In fact you could use unused layers in the board to make a more effective heatsink as well.
member
Activity: 70
Merit: 10
I uploaded a new version of the FPGA section and of li_gangyi's PSU schematic and board to github and dropbox. Commit logs:

Routed PSU: Fixed the package of the PSU switchers (had two pads) and routed the PSU section.

Created symbols for VCCINT[01]: Added corresponding symbols to the project.lbr library and used them in the FPGA files. Also replaced the older name of the library with the correct one in the schematic.

Next is the MCU section.
sr. member
Activity: 410
Merit: 252
Watercooling the world of mining
I had a look at the routing and layout plans. They look really fine and i couldn't find any mistakes so far.
So great work from Olaf.Mandel and li_gangyi, thanks.

In return. Has anybody found any mistakes in my MSP 430 setup so far ? Or what needs to be added ?

What is to be done for getting the final testboard ? Any additional requirements not added yet ?
Maybe we should set up a list of what is in now.

@ Bahnfire:
I remember you to be used to firmware programming for the MSP 430. Maybe you could give us word on that and head towards a firmware for our application.
Also maybe have an additional eye on our current Layout.



I also take it as agreed that li_gangyi produces the first testborad and ships(& sales) them to the ones of us producing the initial testing and software for it.
Any objections on this ?

I personally will dig further into the copyright matter.Please have a look on the CERN OHL and the GPL v3 ion combination as i already posted, and give me your thought if it seems applicable to you.     
jr. member
Activity: 139
Merit: 1
The World’s First Blockchain Core
Sorry about the delay in replying back - I was supposed to come back Friday night/Saturday morning from vacation and ended up coming back late Sunday night. I will look over the multiple pages posts and will see if anything major changed and where we are in the design.
full member
Activity: 157
Merit: 100
Something like that yeah, let me copy that in.

Edit: Done, it's inside my folder.
member
Activity: 70
Merit: 10
I wanted the thru hole parts for better strength, if you're gonna be plugging the molex a couple times, the surface mount part might just shear off.

Ok, so it should be changed back.

Another point: the Library parts for the switchers are a bit buggy: the symbol is too narrow and the package gives an overlap error (did you use a rectangle to extent an SMD pad?). If you copy the device to the library, this can be easily fixed. Thank you!
full member
Activity: 157
Merit: 100
I wanted the thru hole parts for better strength, if you're gonna be plugging the molex a couple times, the surface mount part might just shear off.
Pages:
Jump to: