RAM1B
AI

The **RAM1B** typically refers to a specific type of **Single-Port Block RAM** (BRAM) primitive found in certain FPGA architectures (notably early Lattice Semiconductor or specific ASIC libraries). It serves as a fundamental building block for on-chip memory.
---
### 1. Key Technical Specifications
The "1B" designation usually signifies a **1-Kilobit (1024 bits)** memory density. Below are the common electronic characteristics:
| Feature | Description |
| :--- | :--- |
| **Capacity** | 1024 bits (1Kb) |
| **Port Type** | Single-Port (Read or Write at one time) |
| **Volatility** | Volatile (Data is lost when power is removed) |
| **Access Mode** | Synchronous (Clock-edged triggered) |
| **Output Type** | Registered or Latched |
---
### 2. Physical and Logical Pins
To interface with a RAM1B primitive in a circuit or HDL (Hardware Description Language), the following electronic pins are utilized:
* **Address Pins (`ADR`):** Used to select the specific memory location. For a 1Kb block, the number of pins depends on the data width (e.g., 10 bits for a 1024x1 configuration).
* **Data Input (`DI`):** The lines used to feed data into the memory during a write cycle.
* **Data Output (`DO`):** The lines where data is retrieved during a read cycle.
* **Write Enable (`WE`):** A logic high (1) signal allows writing; a logic low (0) keeps the data intact.
* **Clock (`CLK`):** Synchronizes all operations to the rising or falling edge.
* **Chip Select (`CS`):** Enables or disables the entire memory block to save power.
---
### 3. Internal Architecture
Internally, the RAM1B is composed of three main electronic stages:
1. **Address Decoder:** Logic gates that translate the binary address into a specific row and column within the memory matrix.
2. **Storage Array:** A grid of **6T (Six-Transistor) SRAM cells**. Each cell uses cross-coupled inverters to store a single bit of data.
3. **Sense Amplifiers:** Circuits that detect the small voltage changes on the bit-lines during a read operation and amplify them to standard logic levels (0V or VCC).
---
### 4. Implementation Example (Verilog)
In FPGA design, a RAM1B might be instantiated as follows:
```verilog
// Example instantiation of a 1Kb Block RAM
RAM1B #(
.DATA_WIDTH(8), // Configuring as 128 x 8-bit
.INIT_FILE("init.hex") // Optional initial memory content
) my_memory (
.DI(data_in),
.ADR(address),
.WE(write_enable),
.CLK(clk),
.DO(data_out)
);
```
---
### 5. Common Use Cases
* **FIFO Buffers:** Temporary storage for data streams between different clock domains.
* **Look-Up Tables (LUTs):** Storing pre-calculated mathematical values (like Sine/Cosine tables).
* **Micro-code Storage:** Small instruction sets for state machines or soft-core processors.
---
- ⤷What is the difference between Single-Port and Dual-Port RAM in FPGAs?
- ⤷ How does an SRAM cell (6T) differ from a DRAM cell?
- ⤷ How do you calculate the required address bits for a 1Kb RAM block?