[Oberon] Oberon System on the FPGA

Chris Burrows chris at cfbsoftware.com
Sat Nov 8 02:00:37 CET 2014

> From: Bill Buzzell [mailto:captbill279 at gmail.com]
> Sent: Wednesday, 5 November 2014 6:57 AM
> To: oberon at lists.inf.ethz.ch
> Subject: [Oberon] Oberon System on the FPGA
> >>It is lacking a lot of features from the core like 8 and 16 Bit
> >>arithmetics to the peripherals like ethernet, color, etc. and the
> >>device drivers necessary.
> If you look at the Oberon graphics system as simply the "command
> line" version of the Oberon OS this makes a more versatile
> arrangement. I really don't want my graphics system housed on the
> FPGA if there is a way around it. Besides, realistically, I would
> want a "FPGA-GPU" add on board and have it (as well as all
> peripherals) as modularized as possible.
> Besides, Oberon has the coolest "DOS screen" there is, does it not?
> By farming out the graphics to a "client gpu-board" you retain the
> real-time performance. There are even boards packaging the screen and
> GPU board together. You drive them in a openGL style of interfacing,
> plug and go. I think this is more practical to bundle the "GPU" with
> the screen vs incorporating into my OS. Graphics don't need real-
> time. "Horses for courses".
> What we really have is the ultimate modular platform that has built
> in precision Swiss timing This is what sets Oberon apart from
> anything I have seen.

I have been coming to exactly the same conclusions. Niklaus' and Paul's work in implementing 'Project Oberon on a Chip' was a remarkable achievement, but the thought of being able to run the Oberon OS on another system was not what excited me. My recent experiences with Oberon on real-time microcontroller systems meant that specific components of Project Oberon 2013 immediately grabbed my attention e.g:

* The elegant RISC5 instruction set
* The clarity of the resulting Oberon compiler
* The FPGA extension capabilities
* The high-capacity SD-card filesystem 
* The inexpensive ($6) RF Wi-Fi module
* UART and SPI support

I do not need the OS or a development system on my target (e.g. FPGA) hardware - my requirements are much less ambitious. I just need to be able to work with Oberon on the FPGA RISC5 processor in the same way that I work with the Cortex-M3/M4 development boards using Astrobe. I use an editor and cross-compiler on the PC to develop the code, upload it to board via a serial link and then communicate with the target via a terminal emulator on the PC. 

My requirement for the target executables is 'hard real-time' direct operation of hardware devices combined with the predictability, reliability and maintainability of Oberon software. This is possible with the ARM boards. However, what you cannot do, but can do with the FPGA boards is extend the hardware capabilities either by adding to the instruction set or by using Verilog to program the hardware. The 'FPGA for Fun' website is a good eye-opener for some of the possibilities:


Also I had been looking for a filesystem which is an improvement on the FAT file system designed for 1980's 360K floppies which is still extensively used for multi-GB file systems on microcontroller systems. Also, the simple Wi-Fi hardware controlled by SPI is an added bonus.

Working towards this aim I have developed experimental versions of the following components:

* I have ported the FPGA Oberon compiler to Component Pascal for .NET so that I can edit FPGA Oberon source code using all of Astrobe's facilities (syntax-highlighting, procedure navigation, auto-capitalisation etc.) and compile the RISC Oberon object files on Windows.

* I use Oberon for Win32 on the PC to communicate with the FPGA board via a COM port.

* I have ported the PO2013 filesystem code to BlackBox Component Pascal so that I can read and write files to the Project Oberon filesystem on an SDHC card using a Windows PC.

* I am now experimenting with the RF module on a Cortex-M4 development board with the possible use of providing wireless communication between an Oberon FPGA board and an Oberon Cortex-M3/M4 board.

Currently I am still using the full version of Project Oberon 2013 on the Spartan board even though I only need parts of it. However, I also have a Nexys-2 board that was acquired for the purpose of a porting experiment. As I only need a small VGA-less subset of Project Oberon I am anticipating (hoping!) the porting task will be significantly simplified,


Chris Burrows
CFB Software

More information about the Oberon mailing list