[Oberon] Volatile variables in Oberon

Skulski, Wojciech skulski at pas.rochester.edu
Mon Aug 1 01:31:17 CEST 2016


Chris wrote:

> It is not allowed in Oberon-07 based systems either e.g. Project Oberon
> 2013. Oberon-07 is more strict than Component Pascal as it limits the use of
> pointer variables to record types. Pointers to arrays are not supported.

Not supporting pointers to arrays is surprising for an FPGA-based project. Looking from the hardware side, an array is one of just two fundamental constructs in programmable logic. The other one is a register. Just to clarify, a register can be made out of distributed flip-flops, while an array corresponds to FPGA RAM. (There are two kinds of RAM, the block BRAM and the distributed RAM. For this discussion they are pretty much the same.). There is not much else in the FPGA but these two kinds of objects. I find it surprising that one of them is supported via the SYSTEM put and get, while the other is not. 

There is a fundamental need in the FPGA-based project to interface the software to hardware. You can also say "interface the CPU to the logic portion of the design". This can only be done by mapping software objects to hardware objects. Mapping a variable to a register has been discussed in this thread. The solution seems adequate. However, mapping the software array to the hardware array seems to be left out of focus. I can imagine a kluge using PUT and GET, but it will be a kluge. 

Component Pascal offered the untagged arrays for much the same purpose. I wonder why a similar solution seems to be missing from the FPGA Project Oberon.

Regards,
Wojtek


More information about the Oberon mailing list