Showing results for 
Show  only  | Search instead for 
Did you mean: 

Oberon System Implemented on a Low-Cost FPGA Board

Xilinx Employee
Xilinx Employee
0 4 201K


By Niklaus Wirth, Professor (retired), Swiss Federal Institute of Technology (ETH)


(Excerpted from the latest issue of Xcell Journal)


In 1988, Jürg Gutknecht and I completed and published the programming language Oberon as the successor to two other languages, Pascal and Modula-2, which I had developed earlier in my career. We originally designed the Oberon language to be more streamlined and efficient than Modula-2 so that it could better help academics teach system programming to computer science students. To advance this endeavor, in 1990 we developed the Oberon operating system (OS) as a modern implementation for workstations that use windows and have word-processing abilities. We then published a book that details both the Oberon compiler and the operating system of the same name. The book, entitled Project Oberon, includes thorough instructions and source code.


A few years ago, my friend Paul Reed suggested that I revise and reprint the book because of its value for teaching system design, and because it serves as a good starting point to help would-be innovators build dependable systems from scratch.


There was a big obstacle, however. The compiler I originally developed targeted a processor that has essentially disappeared. Thus, my solution was to rewrite a compiler for a modern processor. But after doing quite a bit of research, I couldn’t find a processor that satisfied my criteria for clarity, regularity and simplicity. So I designed my own. I was able to bring this idea to fruition because of the modern FPGA, as it allowed me to design the hardware as well as the system software. What’s more, choosing a Xilinx FPGA allowed me to update the system while keeping the design as close as possible to the original version from 1990.


The new processor is called RISC, and it was implemented on the low-cost Digilent Spartan-3 development board, hosting a 1-Mbyte static RAM (SRAM) memory. The only system hardware additions I made were to add an interface for a mouse and an SD card to replace the hard-disk drive in the older system. The book and the source code for the entire system are available on


The processor consists of an arithmetic-logic unit; an array of 16 registers of 32 bits; and a control unit with instruction register, IR and program counter PC. The processor features 20 instructions: four for moving, shifting and rotating; four for logic operations; four for integer arithmetic; four for floating-point arithmetic; two for memory access; and two for branching.


The small size of this system is witness to how much can be achieved with how little. The Oberon system’s dimensions are ridiculously small compared with most modern operating systems, although it includes a file system, a text editor and a viewer (windows) management. The side effect is that it rests on just a few simple rules, and that therefore it is easy to learn how to use it.





  1. This blog entry is an excerpt from an article in the latest issue of Xcell Journal. The article carried this acknowledgement: “Xcell Journal is honored to publish this article by industry legend Niklaus Wirth, who invented Pascal and several derivative programming languages and has pioneered some classic approaches to computer and software engineering. A recipient of the ACM Turing Award and of the IEEE Computer Pioneer Award, Professor Wirth has retired from teaching but continues to help educators develop and inspire the innovators of tomorrow.”
  2. Professor Wirth’s latest Oberon system as discussed above in the Xcell Journal article was implemented on an older Spartan-3 Starter Board from Digilent. There is also a working port of Professor Wirth’s Oberon system to Saanlima’s Pipistrello development board based on the newer Xilinx Spartan-6 LX45 FPGA. Saanlima developed a “wing” (daughtercard) for the Pipistrello board to augment the Pipistrello board’s 64Mbytes of DRAM with the 2Mbytes of SRAM and the PS2 keyboard and mouse ports required by the Oberon System.



Saanlima Pipistrello Spartan-6 FPGA Development Board.jpg



Saanlima Pipistrello Development Board based on the Xilinx Spartan-6 LX45 FPGA




Saanlima Pipistrello Board with Oberon Wing.jpg



Saanlima Oberon Wing for the Pipistrello FPGA Development Board


Tags (1)