XC3000 | XC4000E | XC4000X | XC5200 | XC9000 | Spartan | SpartanXL | Spartan2 | Virtex |
---|---|---|---|---|---|---|---|---|
N/A | Macro | Macro | N/A | N/A | Macro | Macro | Macro | Macro |
RAM16X4D is a 16-word by 4-bit static dual port random access memory with synchronous write capability. The device has two separate address ports: the read address (DPRA3 - DPRA0) and the write address (A3 - A0). These two address ports are completely asynchronous. The read address controls the location of data driven out of the output pin (DPO3 - DPO0), and the write address controls the destination of a valid write transaction.
When the write enable (WE) is Low, transitions on the write clock (WCLK) are ignored and data stored in the RAM is not affected. When WE is High, any positive transition on WCLK loads the data on the data input (D3 - D0) into the word selected by the 4-bit write address. For predictable performance, write address and data inputs must be stable before a Low-to-High WCLK transition. This RAM block assumes an active-High WCLK. However, WCLK can be active-High or active-Low. Any inverter placed on the WCLK input net is absorbed into the block.
The initial contents of RAM16X4D cannot be specified directly. Initial contents may be specified only for RAMs that are 1-bit wide and 16 or 32 bits deep. See Specifying Initial Contents of a RAM in the RAM16X1 section.
Mode selection is shown in the following truth table.
Inputs | Outputs | |||
---|---|---|---|---|
WE (mode) | WCLK | D3-D0 | SPO3-SPO0 | DPO3-DPO0 |
0 (read) | X | X | data_a | data_d |
1 (read) | 0 | X | data_a | data_d |
1 (read) | 1 | X | data_a | data_d |
1 (write) | D3-D0 | D3-D0 | data_d | |
1 (read) | X | data_a | data_d | |
data_a = word addressed by bits A3-A0 data_d = word addressed by bits DPRA3-DPRA0 |
The SPO output reflects the data in the memory cell addressed by A3 - A0. The DPO output reflects the data in the memory cell addressed by DPRA3 - DPRA0.
Note: The write process is not affected by the address on the read address port.