Why unfair?

Well when I obtained the iCE40HX8K-EVB it had already existed for quite some time the ULX3S I had just received the unit from the Crowd Supply campaign.
And Olimex therefore had lots of time to “perfect” the documentation Radiona on the other hand has not yet had the luxury of time yet.
Hardware
Well I’m not really going to… The FPGA on the ULX3S is quite powerful and the board itself has more features as well, lets just call them different classes of products.
Software
Well both FPGAs are supported by the open source command line friendly toolchains.
Xilinx years ago sort of cured me of any desire for using huge closed source applications for programmable logic.
Many thanks to the developers of yosys, icestorm, nextpnr, prjtrellis, writers of programmer software and GNU / libre-software in general.
Getting started documentation
I must admit that I’m not that impressed with the getting started experience.
The Radiona wiki links to what they call the ULX3S official site.
And at the time of writing this I find it somewhat lacking in getting started information.
Things I miss:
- How to power the board (without frying it or having to look closely at the schematic).
- Precompiled “hello world” bit streams for the different variants of the FPGA on there boards.
- A simple guide on flashing said bit stream using the build in programmer on the board.
Eventually one does find the https://github.com/emard/ulx3s-examples, and gets around to compiling the toolchain for ECP5 (I previously only compiled it for ICE40)
However when trying to flash the bitstream (after changing the makefile to suit the 85F variant that I got)
The pre build binary of ujprog that comes with the example code fails with the message
ULX2S / ULX3S JTAG programmer v 3.0.92 (built Oct 3 2020 19:32:10)
Cannot find JTAG cable.
I have try to specify the port using -P and it does get a LED flashing but no blinking LEDs.
I also try to build ujprog from the sources, but I get the same massage including the version number.
Longer down the road I stumble across https://github.com/q3k/ulx3s-foss-blinky.git which from the get go targets my variant of FPGA (let doubt that I just compile the bitcode the wrong way)
It uses OpenOCD to do the flashing and best of all it WORKS 🙂
The OpenOCD flashing does seem to be a bit slow though… So I keep looking and finds a manual of sorts it has a list of programming options and even a description of how to power the board.
The list contains a different programmer openFPGALoader that seems to have more resent updates than ujprog, and the schematic does have a note about them changing the wiring of the programmer in a revision of the board.
Compiles the code, fingers crossed that they have updated it to match the production PCB…
Success 2: openFPGALoader –board=ulx3s bitstream.bit also works
Conclusiuon
Is the current documentation a bit rough around the edges? Probably yes.
Is the board amassing?
Probably also yes…
I mean the FPGA is large enough to hold an entire Amiga “implementation”.
The quality of the hardware looks nice too.
And the board contains an integrated programmer and a selection of peripherals to keep me busy for a while.
Would I recommend the board… Well I haven’t spend enough time with it just yet, but it does seem likely.
If you do get the 85F I would recommend the ulx3s-foss-blinky as a hello world.
And if you have a production PCB i would recommend checking out openFPGALoader for flashing the bit stream.
Leave a Reply