The FIFOs support asymmetric read and write ports based on the block RAM’s asymmetric port capability to support different port widths for each port. The FIFO18E2 supports independent read/write port width combinations of 4, 8, 16, and 32, which can be expanded to 9, 18, and 36 when utilizing the DINP bits. The FIFO36E2 supports independent read/write port width combinations of 4, 8, 16, 32, and 64, which can be expanded to 9, 18, 36, and 72 when utilizing the DINP bits.
When considering features such as output register stages, FWFT mode, or asymmetric ports, FIFO depth varies. When using asymmetric port widths, the FIFO depth differs depending on the number of write words in the WRCLK domain and the number of read words in the RDCLK domain.
FIFO depth in the WRCLK domain is the number of write words that, when written to a FIFO, causes it to go FULL. In a special case, if the read port is narrower than the write port, it is possible that a partial word exists in the FIFO, causing FULL to assert one clock earlier than expected.
FIFO depth in the RDCLK domain is the number of read words that would be in the FIFO if the FIFO were FULL. Because the read port width might not be the same as the write port width, the depth differs when expressed in the RDCLK domain. Also, in a special case where the write port is narrower than the read port, it is possible that a partial word exists in the FIFO that is not available to be read and therefore does not count toward the FIFO depth in the RDCLK domain.
The FIFO depth can be used to understand and calculate:
- When using WRCOUNT, the depth determines how many more writes can be performed before the FIFO goes FULL (in the WRCLK domain). This calculation is:
-
- “FIFO Depth” minus “Number of Words in FIFO” where the number of words available in the FIFO is given by the WRCOUNT (for WRCOUNT_TYPE SIMPLE_DATACOUNT mode for standard FIFOs with no output stages, or EXTENDED_DATACOUNT count mode when using output stages or FWFT).
- “FIFO Depth” minus “Number of Words in FIFO” where the number of words available in the FIFO is given by the WRCOUNT (for WRCOUNT_TYPE SIMPLE_DATACOUNT mode for standard FIFOs with no output stages, or EXTENDED_DATACOUNT count mode when using output stages or FWFT).
- How to calculate the PROG_FULL_THRESH to set the threshold at a specific distance from FULL.
- Determine the range of PROG_FULL_THRESH.
- Determine the range of PROG_EMPTY_THRESH.
- Determine all cases of FULL.
The following tables list the FIFO depths in both the WRCLK and RDCLK domains for all possible FIFO configurations and widths.
|
Latch Mode (REGISTER_MODE = "UNREGISTERED") |
Register Mode (REGISTER_MODE = "REGISTERED") |
||||||||
|---|---|---|---|---|---|---|---|---|---|
| Standard | FWFT | Standard | FWFT | ||||||
| Write Port Width |
Read Port Width |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
| 4 | 4 | 8191 | 8191 | 8192 | 8192 | 8192 | 8192 | 8193 | 8193 |
| 4 | 8 | 8191 | 4095 1 | 8193 | 4096 1 | 8193 | 4096 1 | 8195 | 4097 1 |
| 4 | 16 | 8191 | 2047 1 | 8195 | 2048 1 | 8195 | 2048 1 | 8199 | 2049 1 |
| 4 | 32 | 8191 | 1023 1 | 8199 | 1024 1 | 8199 | 1024 1 | 8207 | 1025 1 |
| 4 | 64 | 8191 | 511 1 | 8207 | 512 1 | 8207 | 512 1 | 8223 | 513 1 |
| 8 | 4 | 4095 | 8190 | 4095 2 | 8191 | 4095 2 | 8191 | 4096 | 8192 |
| 9 | 9 | 4095 | 4095 | 4096 | 4096 | 4096 | 4096 | 4097 | 4097 |
| 9 | 18 | 4095 | 2047 1 | 4097 | 2048 1 | 4097 | 2048 1 | 4099 | 2049 1 |
| 9 | 36 | 4095 | 1023 1 | 4099 | 1024 1 | 4099 | 1024 1 | 4103 | 1025 1 |
| 9 | 72 | 4095 | 511 1 | 4103 | 512 1 | 4103 | 512 1 | 4111 | 513 1 |
| 16 | 4 | 2047 | 8188 | 2047 2 | 8189 | 2047 2 | 8189 | 2047 2 | 8190 |
| 18 | 9 | 2047 | 4094 | 2047 2 | 4095 | 2047 2 | 4095 | 2048 | 4096 |
| 18 | 18 | 2047 | 2047 | 2048 | 2048 | 2048 | 2048 | 2049 | 2049 |
| 18 | 36 | 2047 | 1023 1 | 2049 | 1024 1 | 2049 | 1024 1 | 2051 | 1025 1 |
| 18 | 72 | 2047 | 511 1 | 2051 | 512 1 | 2051 | 512 1 | 2055 | 513 1 |
| 32 | 4 | 1023 | 8184 | 1023 2 | 8185 | 1023 2 | 8185 | 1023 2 | 8186 |
| 36 | 9 | 1023 | 4092 | 1023 2 | 4093 | 1023 2 | 4093 | 1023 2 | 4094 |
| 36 | 18 | 1023 | 2046 | 1023 2 | 2047 | 1023 2 | 2047 | 1024 | 2048 |
| 36 | 36 | 1023 | 1023 | 1024 | 1024 | 1024 | 1024 | 1025 | 1025 |
| 36 | 72 | 1023 | 511 1 | 1025 | 512 1 | 1025 | 512 1 | 1027 | 513 1 |
| 64 | 4 | 511 | 8176 | 511 2 | 8177 | 511 2 | 8177 | 511 2 | 8178 |
| 72 | 9 | 511 | 4088 | 511 2 | 4089 | 511 2 | 4089 | 511 2 | 4090 |
| 72 | 18 | 511 | 2044 | 511 2 | 2045 | 511 2 | 2045 | 511 2 | 2046 |
| 72 | 36 | 511 | 1022 | 511 2 | 1023 | 511 2 | 1023 | 512 | 1024 |
| 72 | 72 | 511 | 511 | 512 | 512 | 512 | 512 | 513 | 513 |
|
|||||||||
|
Latch Mode (REGISTER_MODE = "UNREGISTERED") |
Register Mode (REGISTER_MODE = "REGISTERED") |
||||||||
|---|---|---|---|---|---|---|---|---|---|
| Standard | FWFT | Standard | FWFT | ||||||
| Write Port Width |
Read Port Width |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
| 4 | 4 | 8192 | 8192 | 8193 | 8193 | 8193 | 8193 | 8194 | 8194 |
| 4 | 8 | 8192 | 4096 | 8194 | 4097 | 8194 | 4097 | 8196 | 4098 |
| 4 | 16 | 8192 | 2048 | 8196 | 2049 | 8196 | 2049 | 8200 | 2050 |
| 4 | 32 | 8192 | 1024 | 8200 | 1025 | 8200 | 1025 | 8208 | 1026 |
| 4 | 64 | 8192 | 512 | 8208 | 513 | 8208 | 513 | 8224 | 514 |
| 8 | 4 | 4096 | 8192 | 4096 1 | 8193 | 4096 1 | 8193 | 4097 | 8194 |
| 9 | 9 | 4096 | 4096 | 4097 | 4097 | 4097 | 4097 | 4098 | 4098 |
| 9 | 18 | 4096 | 2048 | 4098 | 2049 | 4098 | 2049 | 4100 | 2050 |
| 9 | 36 | 4096 | 1024 | 4100 | 1025 | 4100 | 1025 | 4104 | 1026 |
| 9 | 72 | 4096 | 512 | 4104 | 513 | 4104 | 513 | 4112 | 514 |
| 16 | 4 | 2048 | 8192 | 2048 1 | 8193 | 2048 1 | 8193 | 2048 1 | 8194 |
| 18 | 9 | 2048 | 4096 | 2048 1 | 4097 | 2048 1 | 4097 | 2049 | 4098 |
| 18 | 18 | 2048 | 2048 | 2049 | 2049 | 2049 | 2049 | 2050 | 2050 |
| 18 | 36 | 2048 | 1024 | 2050 | 1025 | 2050 | 1025 | 2052 | 1026 |
| 18 | 72 | 2048 | 512 | 2052 | 513 | 2052 | 513 | 2056 | 514 |
| 32 | 4 | 1024 | 8192 | 1024 1 | 8193 | 1024 1 | 8193 | 1024 1 | 8194 |
| 36 | 9 | 1024 | 4096 | 1024 1 | 4097 | 1024 1 | 4097 | 1024 1 | 4098 |
| 36 | 18 | 1024 | 2048 | 1024 1 | 2049 | 1024 1 | 2049 | 1025 | 2050 |
| 36 | 36 | 1024 | 1024 | 1025 | 1025 | 1025 | 1025 | 1026 | 1026 |
| 36 | 72 | 1024 | 512 | 1026 | 513 | 1026 | 513 | 1028 | 514 |
| 64 | 4 | 512 | 8192 | 512 1 | 8193 | 512 1 | 8193 | 512 1 | 8194 |
| 72 | 9 | 512 | 4096 | 512 1 | 4097 | 512 1 | 4097 | 512 1 | 4098 |
| 72 | 18 | 512 | 2048 | 512 1 | 2049 | 512 1 | 2049 | 512 1 | 2050 |
| 72 | 36 | 512 | 1024 | 512 1 | 1025 | 512 1 | 1025 | 513 | 1026 |
| 72 | 72 | 512 | 512 | 513 | 513 | 513 | 513 | 514 | 514 |
|
|||||||||
|
Latch Mode (REGISTER_MODE = "UNREGISTERED") |
Register Mode (REGISTER_MODE = "REGISTERED") |
||||||||
|---|---|---|---|---|---|---|---|---|---|
| Standard | FWFT | Standard | FWFT | ||||||
| Write Port Width |
Read Port Width |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
| 4 | 4 | 4095 | 4095 | 4096 | 4096 | 4096 | 4096 | 4097 | 4097 |
| 4 | 8 | 4095 | 2047 1 | 4097 | 2048 1 | 4097 | 2048 1 | 4099 | 2049 1 |
| 4 | 16 | 4095 | 1023 1 | 4099 | 1024 1 | 4099 | 1024 1 | 4103 | 1025 1 |
| 4 | 32 | 4095 | 511 1 | 4103 | 512 1 | 4103 | 512 1 | 4111 | 513 1 |
| 8 | 4 | 2047 | 4094 | 2047 2 | 4095 | 2047 2 | 4095 | 2048 | 4096 |
| 9 | 9 | 2047 | 2047 | 2048 | 2048 | 2048 | 2048 | 2049 | 2049 |
| 9 | 18 | 2047 | 1023 1 | 2049 | 1024 1 | 2049 | 1024 1 | 2051 | 1025 1 |
| 9 | 36 | 2047 | 511 1 | 2051 | 512 1 | 2051 | 512 1 | 2055 | 513 1 |
| 16 | 4 | 1023 | 4092 | 1023 2 | 4093 | 1023 2 | 4093 | 1023 2 | 4094 |
| 18 | 9 | 1023 | 2046 | 1023 2 | 2047 | 1023 2 | 2047 | 1024 | 2048 |
| 18 | 18 | 1023 | 1023 | 1024 | 1024 | 1024 | 1024 | 1025 | 1025 |
| 18 | 36 | 1023 | 511 1 | 1025 | 512 1 | 1025 | 512 1 | 1027 | 513 1 |
| 32 | 4 | 511 | 4088 | 511 2 | 4089 | 511 | 4089 | 511 2 | 4090 |
| 36 | 9 | 511 | 2044 | 511 2 | 2045 | 511 2 | 2045 | 511 2 | 2046 |
| 36 | 18 | 511 | 1022 | 511 2 | 1023 | 511 2 | 1023 | 512 | 1024 |
| 36 | 36 | 511 | 511 | 512 | 512 | 512 2 | 512 | 513 | 513 |
|
|||||||||
|
Latch Mode (REGISTER_MODE = "UNREGISTERED") |
Register Mode (REGISTER_MODE = "REGISTERED") |
||||||||
|---|---|---|---|---|---|---|---|---|---|
| Standard | FWFT | Standard | FWFT | ||||||
| Write Port Width |
Read Port Width |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
Write Port Depth |
Read Port Depth |
| 4 | 4 | 4096 | 4096 | 4097 | 4097 | 4097 | 4097 | 4098 | 4098 |
| 4 | 8 | 4096 | 2048 | 4098 | 2049 | 4098 | 2049 | 4100 | 2050 |
| 4 | 16 | 4096 | 1024 | 4100 | 1025 | 4100 | 1025 | 4104 | 1026 |
| 4 | 32 | 4096 | 512 | 4104 | 513 | 4104 | 513 | 4112 | 514 |
| 8 | 4 | 2048 | 4096 | 2048 1 | 4097 | 2048 1 | 4097 | 2049 | 4098 |
| 9 | 9 | 2048 | 2048 | 2049 | 2049 | 2049 | 2049 | 2050 | 2050 |
| 9 | 18 | 2048 | 1024 | 2050 | 1025 | 2050 | 1025 | 2052 | 1026 |
| 9 | 36 | 2048 | 512 | 2052 | 513 | 2052 | 513 | 2056 | 514 |
| 16 | 4 | 1024 | 4096 | 1024 1 | 4097 | 1024 1 | 4097 | 1024 1 | 4098 |
| 18 | 9 | 1024 | 2048 | 1024 1 | 2049 | 1024 1 | 2049 | 1025 | 2050 |
| 18 | 18 | 1024 | 1024 | 1025 | 1025 | 1025 | 1025 | 1026 | 1026 |
| 18 | 36 | 1024 | 512 | 1026 | 513 | 1026 | 513 | 1028 | 514 |
| 32 | 4 | 512 | 4096 | 512 1 | 4097 | 512 1 | 4097 | 512 1 | 4098 |
| 36 | 9 | 512 | 2048 | 512 1 | 2049 | 512 1 | 2049 | 512 1 | 2050 |
| 36 | 18 | 512 | 1024 | 512 1 | 1025 | 512 1 | 1025 | 513 | 1026 |
| 36 | 36 | 512 | 512 | 513 | 513 | 513 | 513 | 514 | 514 |
|
|||||||||