Josh Johnson Takes Us Back to Black Mesa Labs with His ECP5 FPGA Development Board!
The ECP5 Mini cherry-picks the best bits of the FPGA dev board family tree, and it might just be the answer to your dreams!
There is a well known, age old phrase that says something to the effect of 'only a poor craftsman blames his tools.'
I'm not convinced that it's only poor craftsman who do such, but as a counterpose, perhaps it's only craftsmen of a certain level of proficiency that are able to design the tooling that better so meets their needs.
It's almost something of a rite of passage in the electronics engineering world — we move on from the limitations of the schematic of our first Arduino board, and start laying out our own PTH circuits on a breadboard maybe.
Some time later, after a blur of activity that can sometimes range from months to years, we are looking down at our latest board, with perfectly reflowed SMD parts and some unique specificity in the design that makes it perfect for our application.
This behavior can be observed in wild electronic engineers across the industry, and while traditionally we've seen it expressed through MCU development board designs, these days, FPGAs are becoming just a common a tool of the trade — and equally, engineers are starting to turn out their own FPGA boards, either as learning experiences, or maybe, in an attempt to outdo the functions listed on the manufacturer supplied evaluation kits!
Josh Johnson is well along his path — that rite of passage — having already caught our eye with one of the more comprehensive Lattice iCE40 Feather boards to have hit the scene, shown below for reference.
The design of this board is somewhat comparable to the UPDuino v2.0 from GnarlyGrey, but with a few extra nice-to-have features, like an onboard RGB LED, and more importantly, a form factor that can take advantage of the myriad FeatherWings and baseboards that have been the mark of success of this specific arrangement of pin headers.
The thing is, that rite of passage isn't just about tweaking existing tools to fit your needs, sometimes it's about the learning that goes hand in hand with looking to develop a new tool. Perhaps one that is faster, or has more features and peripherals to play with?
That looks to be the path of progression that Johnson is taking with his latest design, something straight out of Black Mesa Labs — but depending on your affinity to gaming, this might not be the Black Mesa you are familiar with.
If your head is now filled with associations of Gordon Freeman, or the hours of fun we had with the Gravity gun in HL2 - let me stop you there. Not that Black Mesa.
Black Mesa Labs is the playground of Kevin Hubbard (@bmlhubbard), and has previously been the birthplace of the successful BML S7-MINI FPGA Module.
This board has some pretty slim dimensions, given the phenomenal power if packs, thanks to the Xilinx Spartan-7 FPGA at its center, and provides some really exceptional value for money when it comes to prototyping with this family of parts.
With the design having been picked up for manufacture and distribution by Trenz Electronic, it is possible to pick up one of these boards for 34.00 EUR (ex VAT). To the best of my knowledge, the lowest cost vendor board for the Spartan series would be something like the Arty — weighing in at 99 EUR.
It really does show that Hubbard has managed to do the leg work in making this a viable design, without needing to resort to exotic many-layer stackups.
The Spartan might not be as powerful as the Kintex or Artix series parts, but equally, they are no slouch in the specification department. Where they do sometimes find themselves lacking perhaps, is in the toolchain department, or at least, it would be very fair to say, in the open source toolchain department.
One vendor that is perhaps a bit more 'au fait' with the open source way of things however, is Lattice.
The vendor behind the FPGA parts on a huge range of boards to have graced the open source and hobbyist community, Lattice know a thing or two about the wants and needs of our community.
Not only did this massive corporation actually listen to cries of outrage over their recent chances to license agreements that seemed at odds with the open source ethos, they responded in kind, by actually rewording their agreements to allow efforts such as Yosys, Nexptr — indeed the entire iCEStorm toolchain to continue development efforts!
You can see why people might want to design with parts from a company with that sort of proactive response to customer voices — and while the latest board from Johnson may have just missed the recent Lattice-published list of open source boards — there's no question that we'll likely see it in round two!
The ECP5 Mini
Though it sounds a little like the technological basis for the - brilliant, see it if you haven't already! — anime film Paprika, this isn't the DC Mini — but it could still be the answer to your dreams!
The ECP5 Mini is a culmination not only of the work of Johnson, but of others, and several of the boards from recent years that precede it, with the key bits that Johnson saw important, cherry-picked and wrapped up into their own incarnation of FPGA development board.
Based around the Lattice ECP5-12/25F FPGA, this board has an electrical spec somewhat reminiscent of the OrangeCrab, from Greg Davill. In fact, Johnson lists a number of board design projects that have played a part in arriving at the design of the ECP5 Mini:
- Black Mesa Lab's S7 Mini for the form factor and feature set inspiration.
- Greg Davill and his OrangeCrab and Butterstick development boards.
- Matt Venn's Basic ECP5 design.
- SpriteTM / Hackaday's 2019 Supercon Badge.
- Luke Valenty's TinyFPGA-EX.
- 1BitSquared's HyperRAM PMOD for symbol and footprint.
- ECP5 Symbol from xesscorp's Kicad Schematic Symbol Library.
All of these are wonderful examples of hardware design in their own right, and combined with Johnson's design skill, there's a bit of every one of them present in the design of the ECP5 mini.
Lashings of luxury I/O
Some could say that when facing all of the peripheral features and I/O available on the more advance BGA-packaged parts, that the I/O available on the pin headers of the Feather form factor quickly begins to become a limiting factor.
You could take a number of approaches to this problem. Some people resort to packing additional, high-density connectors onto the underside of the board — a valid approach when what little real estate on the top side is already occupied by silicon!
Thing is, those connectors are an additional cost to sink on the BoM, and need to be matched with the mating part, on a baseboard, on the same pitch... you get the idea, it's not necessarily a "simple" solution.
Perhaps another way is to look at ways of increasing the density of the I/O that sits alongside the edges of the board, maybe in a similar fashion as to how Alorium Technology approached the issue, with their Altera MAX 10 Feather board.
Here, you can make out the interleaved mixture of PTH I/O, with a sprinkling of castellated SMD contacts packed in between the 2.54mm pitch header contacts. This is an equally valid approach, but you are still limited by the amount of space around the perimeter of the board along which to place additional contacts, and the mixed topology of a SMD/PTH hybrid connector arrangement.
Not to mention, open-hole edge-plated contacts are really, really frowned against for anything other than direct-to-board attachment — any jumper wires soldered to those tend to find themselves flying loose pretty quickly, and unfortunately, often with what is left of the pad still attached to them!
The reasoning behind this is that the adhesion of the base copper to the drilled holes is usually... well, not very strong at all, when compared to the adhesion of hte copper to the board faces. There is some dependence on the rest of the PTH hole to keep the metal in place, and when looking at cheaper fab processes, simply milling down a line of PTH holes doesn't result in a very strong face of which to solder to.
The approach taken on the ECP5 Mini is rather more bench-friendly IMO, offering a similar design to the EVO, but, with two differentiating factors.
Firstly, the larger board leads to a larger perimeter around which to pack some PTH holes.
Secondly, the choice to stick with the closed-hole contact style, even on the 1.27mm pitch holes, in addition to the larger, 2.54mm pitch contacts means that the board not only is more friendly to flying wires — without the dreaded pad delamination — but also can be mounted on a set of 2.54mm header pins, or on a 1.27mm pitch system to reveal all the I/O.
It's a very flexible way of doing things, supporting many integration implementations from lash-up prototypes, to long term product deployment - and everything in between.
Feature fusion
Other select features that have been fused together in this FPGA board are things like the uSD card slot, not present on the original S7-Mini, but found on boards like the OrangeCrab.
Including a Hyperram footprint is a great way of getting some working external working memory mapped into the FPGA, while keeping the implementation about as simple as it gets for such a feature!
Hyperram is a lot more forgiving on the electrical specification of the tracking with regard to things like length matching, etc. so it is an attractive memory interface for those looking to layout their own boards!
We should also clear up some confusion that could possibly stem from the choice of USB-C connector: USB-C does not USB 3 make, right? As can be seen in the admittedly quite busy screen shot of the board below, this is USB 2.0, with only a single differential pair routed from the USB-C connector.
This is a reasonable take on things for a board at this level of complexity. Yeah, it's not going to give you a 5 Gbps link, but that sort of data rate is a project in its own right — requiring some advanced skill in routing the dual diff pairs, and maintaining the correct impedance for such a data rate, across a number of factors, such as laminate stackup and more — challenging stuff.
However, it is a direct connection to the FPGA itself, and with USB 2 actually being fairly tolerant of wiring styles, a full-speed 2.0, that is, 12 Mbps link, should be easily attainable between FPGA and a host machine!
It also provides an interface to the ECP5 bootloader and configuration flash allowing it to be programmed from the USB interface, as opposed to the JTAG that will be needed for initial development work. That's a nice touch!
With USB supplying the board with a clean(ish!) 5V, fused at 1A, for the board to work with, now would also be a good time to look at how that's broken down into the various rails that the FPGA requires for its different domains.
A pair of Texas Instruments TLV62568 switching buck regulators take care of the +3V3 and +1V1 rails, giving a generous 1A on each rail.
FPGAs can have some hefty current requirements, so specc'ing such a capable supply for the +1V1 rail - going straight to the FPGA core — is a good plan.
The AUX VCC of the FPGA gets its own +2V5 supply, in the form of a nice, clean LDO — another TI part, the TLV73325, giving a clean 2.5V at 300mA, or thereabouts.
And my favorite part of any board, though I am biased, the LEDs! Johnson has provided a generous set of eight, RGB LEDs, perfect for those first breathing signs of life on a board bring-up, and the obligatory larson scanner — or other animation — that soon follows!
Wrapping it up
The ECP5 is a bit of a beast, and it's great to see it sat on a board that leaves it so well supported.
There's all the core functional blocks needed to get the part up and running to the best of its capability, and some well thought out, nice-to-have bits that make it well suited for hobbyists, enthusiasts, and product designs alike.
With any luck, this board might also catch the eye of Trenz Electronic, and with any luck, they will choose to take on the design, making it more accessible to all of us, especially when some of us aren't tooled up for, or comfortable with the work required to mount a hefty BGA package — as houses the ECP5 silicon!
If you fancy the challenge, or perhaps, instead want to take a look through a well laid out KiCAD project, be sure to pull down the latest nightly build of KiCAD, and take a look through the ECP5 Mini design by clicking on through to Johnson's GitHub repo here.
It is with a keen eagerness that we will be keeping an eye on Johnson's Twitter as we wait to see the boards come in from the fab, and the subsequent board assembly and bring-up thread!
I'll be very keen myself to see how Johnson gets on with the BGA soldering, and hope to learn a thing or two about the process!