[Oberon] BRAM

Paul Reed paulreed at paddedcell.com
Sat Feb 9 20:46:02 CET 2019

Hi Lyall,

> Apparently this B means block...[W]hereas...[for] CBRAM...[i]n this case
B means
> bridging... Are BRAM and CBRAM the same thing?  Just a happy coincidence
> that block and bridging both begin with b?  =8~)

Yes, coincidence.  Our industry seems very happy to overload acronyms to
the point of confusion and beyond.

> What is significant about the block or blocks in BRAM?

Field-programmable gate arrays (FPGAs), ie chips full of uncommitted logic
building-blocks which are programmed (usually at power-up) to become a
particular application-specific logic circuit, have various types of
resources to offer the circuit designer.

The main resource in most FPGAs is thousands or tens of thousands of
simple look-up tables (LUTs), each of which is programmed to provide a
particular logic function for a combination of inputs, for example a
4-input LUT can be programmed to make its output go low if and only if all
of its inputs are high (imitating a 4-input NAND gate).  The inputs and
outputs of LUTs are linked together and to other types of resources on the
chip using "routing" resources, to implement very complex designs, now
such as entire computing systems on a single chip.

The obvious way to implement such a 4-input LUT is by using a 16x1-bit
static RAM, which has four address inputs.  So in some FPGAs, you have a
choice as to whether to use the LUT resource as a LUT, or as a small RAM. 
If used as a RAM, it's usually called "distributed" RAM, because a large
memory made up of these small elements would be distributed over a region
of the FPGA.

Block RAM in an FPGA is simply RAM which is provided in dedicated blocks
just for the purpose, usually to implement RAMs, ROMs or FIFOs, and is
named as opposed to distributed RAM.


More information about the Oberon mailing list