Big, Ugly Pig: Bring-Up, Phase 1

I got the prototype PCBs for the next version of the XuLA Board from @laen's service a few weeks ago. Here's the front and back of the bare board:

My goal with this version was to make the simplest changes that would bring the biggest perceived benefits to the customer. That's usually accomplished by just making everything bigger, so I did the following:

  1. Changed the FPGA from a Spartan-3A to a Spartan-6 with the following increases in on-chip resources:

    Resource XC3S200AVQ100 XC6SLX25FTG256
    #LUTs 4K 24K
    #BRAMs 16 52
    #Multipliers 16 38
    #DCMs 4 4
    #I/Os 68 186
  2. Increased the SDRAM from 4M x 16 to 16M x 16 Mb.
  3. Added a socket for a MicroSD flash to provide the FPGA with gigabytes of non-volatile storage to use after it is configured. 

Making room for the MicroSD socket required me to push some of the other XuLA components around. After assembling the parts onto a prototype, the board ended-up looking like this:

It's a bit cramped and it looks like the components have been forced in there, but that's the only way I could find to make it all fit in the same form factor as the original XuLA. Unfortunately, beauty takes a backseat here.

In order to get an FPGA with a lot more logic resources than the Spartan-3A, I had to use a Spartan-6 in a package with a lot more I/O. But even after connecting all the SDRAM and MicroSD signals to the FPGA, there were still more than 100 pins left-over on the BGA package. I couldn't add any more I/O to the board prototyping header and remain compatible with the original XuLA, so I just had to waste 'em. That's a first for me; I'm usually struggling to find enough FPGA pins to connect everything.

Given the things I did, I started referring to the new XuLA board as a "Big, Ugly Pig". Seems to fit.

After assembly, the first thing I like to do when I'm bringing-up a new FPGA board (after checking for power/ground shorts) is just download a simple bitstream that makes an LED blink. But the XuLA doesn't have any on-board LEDs that the FPGA can drive. Luckily, I already had some external seven-segment LED hardware built for the original XuLA, so I could just use that with the new board. Here's a video of me downloading a bitstream that makes the new XuLA output a string of digits:

Passing this first test shows a few things:

  1. The voltage regulators for the PIC 18F14K50 microcontroller and the FPGA are working.
  2. The PIC is managing the USB interface correctly.
  3. The JTAG signals from the PIC are loading the bitstream into the FPGA without errors.
  4. The FPGA is coming out of configuration mode and into user mode without a problem.
  5. The 12 MHz clock generated by the PIC is getting over to the FPGA and driving the state machine.
  6. The outputs from the FPGA are driving the LEDs.

That's pretty good for a first trial. Now I can start testing the other components connected to the FPGA.

Taxonomy upgrade extras:


I like the spartan 6 upgrade. "just making everything bigger" - definitely the way to go!

eek .. so now the XULA200 is going to be obsolete ??

No! The XuLA-200 will continue.

I assume you are extrapolating from the discontinuation of the XuLA-50 board. That product was terminated because its production cost wasn't that much different from the XuLA-200 but it had a much lower logic capacity than the XuLA-200. So I couldn't sell a XuLA-50 at a price that made any sense to the end user.

The new XuLA will be more expensive than the XuLA-200 because the Spartan-6 FPGA costs so much more than the Spartan-3A. So the XuLA-200 will still be attractive to cost-sensitive customers.

Also, the XuLA boards are all open-source so even if I discontinue manufacturing a model, anyone can come along and make some for themselves or to sell to others. So no XuLA board can ever become truly unavailable (unless the actual components become obsolete).

Hope that answers any questions.

Thanks very much ... I ordered two in addition to the 50K I already have and they arrived in quick time.
I suppose I should RTFM or something but is there a Eagle library component defined so I can place the XULA as a component  in a schematic ?

I have my Eagle library under github:
You can find the XuLA connector footprint in xess.lbr under the name XULA-CONN.
Let me know if you design XuLa into anything. Love to see it!

Ahh, finally. Congratulations!
I've been checking the blog hoping to hear an update on this. While this quadruples the main metric I case about (block ram bits), at 936 kB this is more mouse than pig IMO. I presume the LX25 is in the 17x17 mm^2 package and thus the largest that'll fit?
The uSDcard slot is a *very* welcome addition. Can the FPGA be programmed with a bitstream from an SDcard? (sorry if it's covered in the video)
I'll definitely take a couple of these new XuLAs.

D'oh! I missed the "XC6SLX25FTG256" which answered one of my questions. Still, lovely board, looking forward to try.

Really nice post…Thanks a lot for sharing…Would like to read more post from you.

Pricing ??

It was a bit disappointing to find a ol' SDRAM when the Spartan-6 has built-in memory controller supporting "DDR, DDR2, DDR3, and LPDDR". Was it really that important to keep that unchanged from XuLA-200 or was the problem the tougher layout requirements?

I was trying to get this design done with a minimum of cost, time and effort. By sticking with the SDRAM, I can use the already-developed SDRAM controller and not have to debug a new controller along with a new FPGA.
Also, the embedded controller has restrictions on what pins you can connect the DDR to, but I was free to choose the pins I wanted for the SDRAM. That allowed me to mount the SDRAM and FPGA on opposite sides of the PCB and still get the routing done with a cheap 6/6 mil trace/space PCB service.
Higher-speed RAM is coming, but not on this iteration.

Hi Just wondering what the availability for these new modules will be and approx price diff to the XULA200?. I am going to order two of the XULA200 soon but can hold off a bit to add one or two big ugly pigs to the order.
Would also be nice to have an extended version with some of the extra i/o run to additional header pins on the outside of the existing ones. The PCB would be slightly wider but mounting the pins would be optional. You could call it the big, ugly, wide pig. I know the project is open source but now your into BGA country so that's a challenge in itself.
Nice products. Thanks


I want to congratulate you for the great work you do. I commented that I teach and I'm tiredof seeing students pass courses such as digital systems design without ever tastedeverything on real hardware. So I gave myself the task of designing a tool that is low costand high degree of integration so as to be attractive to students, to their manufacturingand assembling its own PCB. Initially I have a design with the XC9572XL CPLD, with which it works relatively well, but fails to develop a low cost USB programmer for that device and so buy from Digilent exceeded the costs that they had thought. The other problem was the capacity of the CPLD and FPGA wanted to pass, so searching the internet for days and nights I found your project and I am surprised to have foundsomeone who could create such a good project and also provided designs for wemanufacture our own prototype. Thank you very much from Colombia South America and want to achieve development based on your own but adding a dsPIC with support forUSB OTG so we can use this card in several subjects.

Take this opportunity to ask you about the BGA assembly. I know the people of OSHPark PCB, but I know a company that can join me with this type of prototype chip. Who do you recommend me?

My assembly is currently done by a local company here in North Carolina so I don't think that will be of much help to you. I'm not sure what the environment is for PCB assembly in Colombia and whether they offer BGA mounting. For mounting a small number of BGAs the costs can be quite high so you might want to look into some of the "toaster-oven" reflow efforts of some of the DIY people on YouTube. Once you get into higher volumes (like 100, so not really that high), then the unit cost of having BGAs mounted drops considerably. You may have to look to Asia for this. Most PCB manufacturers over there also have an assembly division or partner so they can build the complete board for you. A company I have had good results with in South Korea is SEP.
Good luck! Let me know how things progress.

When can we buy those things?

I'm still working on it. I haven't found any problems with the board, yet, but I have had problems while building the new python software framework to work with it.