But it has an adress that is generated internally. Is not it? So FIFO also has addresses as other memories. Hence it is wrong to say that FIFO does not have address. What is the difference between the addresses of SRAM and addres of a FIFO? Is it that we can change the address of a SRAM at any order, but for a FIFO it will be incrementing in a regular way and we cannot address a FIFO in any order?
Since the FIFO logic can only be used in conjunction with the memory block, there is no separate FIFO controller macro. As with the RAM blocks, the nomenclature does not refer to a possible aspect ratio, but rather to the deepest possible data depth and the widest possible data width. The FIFO 4k can be configured into the following aspect ratios: 4,096x1, 2,048x2, 1,024x4, 512x9, and 256x18. In addition to being fully synchronous, the FIFO4K also has the following features:
• Four FIFO flags: Empty, Full, Almost-Empty, and Almost-Full
• EMPTY flag is synchronized to the read clock
• FULL flag is synchronized to the write clock
• Both Almost-Empty and Almost-Full flags have programmable thresholds
• Active low asynchronous reset
• Active low block enable
• Active low write enable
• Active high read enable
• Ability to configure the FIFO to either stop counting after the empty or full states are reached or to
allow the FIFO counters to continue
• Designer software will automatically facilitate falling-edge clocks by bubble pushing the inversion
to previous stages.
The FIFOs maintain a separate read and write address. Whenever the difference between the write address and the read address is greater than or equal to the almost-full value (AFVAL), the Almost-Full flag is asserted. Similarly, the Almost-Empty flag is asserted whenever the difference between the write address and read address is less than or equal to the almost-empty value (AEVAL).
Due to synchronization between the read and write clocks, the Empty flag will de-assert after the second read clock edge from the point that the write enable asserts. However, since the Empty flag is synchronized to the read clock, it will assert after the read clock reads the last data in the FIFO. Also, since the Full flag is dependent on the actual hardware configuration, it will assert when the actual physical implementation of the FIFO is full.
For example, when a user configures a 128x18 FIFO, the actual physical implementation will be a 256x18 FIFO element. Since the actual implementation is 256x18, the Full flag will not trigger until the 256x18 FIFO is full, even though a 128x18 FIFO was requested. For this example, the Almost-Full flag can be used instead of the Full flag to signal when the 128th data word is reached. In order to accommodate different aspect ratios, the almost-full and almost-empty values are expressed in terms of data bits instead of data words. SmartGen translates the user’s input, expressed in data words, into data bits internally. SmartGen will allow the user to select the thresholds for the Almost-Empty and
Almost-Full flags, in terms of either the read data words or the write data words, and make the appropriate conversions for each flag. After the empty or full states are reached, the FIFO can be configured so the FIFO counters either stop or continue counting.
Another question I have for FIFO. I saw a FIFO architecture that shows a Dual port RAM as the storage element in a document. In another document I found FIFO storage elements are rows of Flipflops with each row containing Flipflops. How many architecture of FIFO is possible? Do u have any document that writes about architectures of FIFO?
please post the document you refer to....