![]() Here read clock means system B clock and write clock means system A clock.Īsynchronous FIFO is used at places when the performance is a matter, when one does not want to waste clock cycles in handshake signals, when there is a lot of system resources available. Similarly, FIFO empty will be driven by the read clock. FIFO full signal is used by system A (as when FIFO is full, we don't want system A to write data into FIFO, this data will be lost), so it will be driven by the write clock. These signals are generated with respect to the corresponding clock. To facilitate error free operations, we have FIFO full and FIFO empty signals. System A writes the data in the FIFO and System B reads out the data from it. It has got two clocks, one for writing and the other for reading. The figure below shows one such case (there is no difference between circuits shown for req and data, they are one and same).Īn Asynchronous FIFO has got two interfaces, one for writing the data into the FIFO and the other for reading the data out. Sometimes it is good to synchronize the data also to be double sure, but normally we don't do this, as it takes a lot of logic and what we gain is very small. If we do the double or triple stage synchronizing, then the transfer rate comes down, due to the fact that a lot of clock cycles are wasted just handshaking. The figure below shows how this is done with respect to the above example. To avoid this we go for double or triple stage synchronizers, which increase the MTBF and thus are immune to metastability to a good extent. This method is straightforward, but it too has got loop holes: when system B samples the systems A's req line and System A samples system B's ack line, they are done with respect to their internal clock, so there will be setup and hold time violation. Receiver asserts the ack (acknowledge) signal, asserting that it has accepted the data.Transmitter asserts the req (request) signal, asking the receiver to accept the data on the data bus.The protocol for this uses the same old method that is found with 8155 chip used with 8085. In this method the system (module) A sends data to system/module B based on the handshake signals ack and req signals. In such a case if we need to do data transfer, there are very few methods to achieve this: ![]() Here we have two systems, which are asynchronous in nature to each other. ![]() When they operate at same frequency, but at two different clock phase angles When they operate at two different frequency So we need to go out for special design and interfacing techniques.Īny two systems are considered asynchronous to each other: This interfacing is difficult in the sense that design becomes asynchronous at the boundary of interface, which results in setup and hold violation, metastability and unreliable data transfers. There are times when a designer needs to interface two systems working at two different clocks.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |