I decided I need a ‘proper’ Open Source Hardware project, something big, something useful, something I can really get my teeth into.
My workbenches are covered with Electronics tools, meters, power supplies, scopes, logic analysers and so on. Each has it’s own power supply. Each has its own way of communicating. Each has it’s own user interface and it’s own software. They are practically all incompatible and take up a tonne of space. Wouldn’t it be nice to be able to afford some automation? Wouldn’t it be nice to create custom test rigs, application-specific instruments, simulators, controllers?
Enter Project Omega. The idea is simple. Build a simple rack-based back plane. Build a common FPGA-Microcontroller-Memory-PLL core that can be replicated onto application specific cards, such as digital I/O, Analog I/O, RF processing, etc. Make it hackable and infinitely configurable using Open Source software. Leverage all the awesome tools out there, give it to the community and build an Electronics platform that can be upgraded in software any time, quickly.
Back-plane and function cards
A general purpose back-plane ties the cards together providing power, control and configuration. Arbitrary digital card-to-card signalling can be effected with a dedicated back-plane FPGA forming a switch fabric. Back-plane hosted Ethernet provides card-to-card streaming and host access. back-plane USB provide debug and other host access in a friendly manner. This architecture is simple but powerful – it should enable an application to be spread over multiple cards and allow any embedded instruments to share data and timing.
The function card core is provided by a dedicated control daughter-card. This card hosts a fast microcontroller and a small FPGA, together with SDRAM and a fast PLL. The purpose of the daughtercard is to increase application board space, and reduce complexity through reuse. The FPGA also provides the backplane connection allowing card-to-card signalling.
Every aspect of the platform can be configured in real time. All devices use SRAM for software and configuration images so no lengthy FLASH programming is needed. There is no cost to continual updating of an application during development an debug. It is even possible to reconfigure the FPGAs on-the-fly direct from the associated microcontroller for some really dynamic application behaviour!
Possible? I think so. Check it out: http://www.omega-project.org.uk/
After thinking long and hard about it, and trying a few projects on the iCE40 platform, I concluded that this FPGA is just too small for all but the most simple applications and was not capable of hosting the sorts of architectures I was planning.
I’ve decided to shelve this project, until a better open-source toolchain appears for a larger device. Several Lattice devices are currently being worked on, and other devices look promising, so watch this space for a revamp!