Related Applications
This application relates to co-pending U.S. patent application Ser. No. 07/945,548, entitled "Time Domain Boundary Bridge Method and Apparatus for Asynchronous Sequential Machines", TI-17202, filed Sep. 16, 1992; and to U.S. patent application Ser. No. 07/945,771, entitled "Time Domain Boundary Bridge Method and Apparatus", TI-17200, filed Sep. 16, 1992.
Field of the Invention
This invention relates generally to a method and apparatus for providing an improved circuit and method for coupling synchronous circuitry to an asynchronous bus or to an unrelated time domain bus, wherein the asynchronous bus has multiple data bits for use by the synchronous circuitry. In coupling synchronous devices to an asynchronous data bus, it is desirable that the detection of the asynchronous data bus signals occur without requiring that the asynchronous data bus signals have a specified duration and without requiring that the asynchronous transmitting device manually handshake with the receiving device, while achieving maximum throughput rates. The method and apparatus disclosed herein address these needs. The method and apparatus disclosed is applicable to circuits, integrated circuits and systems wherein observation, capture or detection of asynchronous data bus signals is required.
Background of the Invention
Without limiting the scope of the invention, its background is described in connection with a synchronous circuit coupled to an asynchronous bus interface, such as an integrated circuit or circuit board coupled to an asynchronous system bus.
In systems using an asynchronous bus to couple devices, or in coupling two devices each clocked on unrelated clock time domains, the receiving device contains synchronous circuitry which must be able to reliably receive data from the asynchronous bus and capture data from it without missing the next data word to be sent on the bus. To accomplish this the asynchronous signals present at the bus interface must be synchronized to the time domain used within the synchronous receiving circuit.
Heretofore, in the design of asynchronous bus coupling circuitry, the typical approach to these problems was to provide a multiple ported FIFO buffer which couples the two time domains by capturing data from the bus, disabling further writes by the bus, and then allowing the synchronous circuitry to read the data out, which in turn enables subsequent writes by the bus logic. While effective in providing reliable operation, the FIFO approach of the prior art is gate count intensive and complex. Alternatively, the receiving device may handshake with the sending device through a system of data flags and wait signals which prevent the asynchronous data from changing or disappearing while the receiving device is reading it, essentially holding off subsequent data words. This approach has the disadvantage of tying up the bus, and thus slowing down the data rate, as well as requiring additional signal channels on the bus interface. In order for this prior art approach to work, it is required that the asynchronous event or signal being detected remain present until the synchronous receiving circuit acknowledges that it has successfully captured the data, a requirement which results in the bus being unavailable for extended time periods.
A need for an efficient method and apparatus for synchronizing asynchronous data signals, without requiring additional handshaking signals or unduly restricting the duration of such signals or events on an asynchronous bus, thus exists. Accordingly, improvements which overcome any or all of the above discussed problems are presently desirable.
Summary of the Invention
Generally, and in one form of the invention, a circuit is described which implements a time domain boundary buffer circuit in a standard digital logic process. In the preferred embodiment of the invention, data signals on the asynchronous bus are accompanied by a single bit enable event or signal; these signals are coupled to a time domain boundary buffer circuit comprising a data ready circuit and a data buffer circuit. The data ready circuit comprises a flip flop or an S-R latch followed by two synchronization registers clocked on the synchronous circuitry clock, the flip flop being self cleared when the event has been synchronized so that the time domain buffer circuit is ready for a subsequent event. The data buffer circuit comprises a register coupled to the asynchronous bus, the register loads the data when the enable input signal hits the first flip flop of the data ready circuit, and holds the data in a register clocked by the sending device until the data ready circuit reaches the synchronized time domain, at that time the data is shifted into a second register clocked on the synchronous clock, the data is available at the output of the second register, and the first register is again available for capturing subsequent data words from the asynchronous bus.
An integrated circuit or IC is described for use in a multiple chip bus system, wherein user defined application logic from a standard ASIC or standard cell library is coupled to a plurality of input buffers containing the time domain boundary buffer circuitry. A system is described wherein each IC in the system contains the time domain boundary circuitry and the IC's are coupled together to communicate on a multiple device bus, such as the Futurebus+. The system thus created will exhibit superior throughput characteristics while providing low error rate data capture.
Brief Description of the Drawings
In the drawings:
FIG. 1 depicts the time domain boundary buffer circuit of the invention;
FIG. 2 depicts an IC containing buffers incorporating the time domain boundary buffer circuit of the invention and further containing user specified application logic circuitry;
Corresponding numerals and symbols in the different figures refer to corresponding parts unless otherwise indicated.
Detailed Description of Preferred Embodiments
FIG. 1 depicts the time domain boundary buffer circuit of the invention in an embodiment suitable for use in transmitting data from one time domain, Domain A, to a second synchronous time domain, Domain B. The bus data signals are placed on the input signal labeled "Data from Domain A". The clock from the transmitting device or the bus is placed on the input labeled "Clock Domain A". The data ready indicator from the transmitting device is placed on the input labeled "Enable". A reset signal for use in clearing all registers is coupled to the input labeled RST*. The outputs comprise a flag synchronized to the synchronous clock of Domain B and labeled "Data ready indicator", and a data bus output synchronized on the Domain B synchronous clock and labeled "Timed domain B synchronized version of Data".
The strobe input is coupled through OR gate 21 to the edge triggered D flip flop 23, which has its clock input coupled to the clock input labeled "Clock Domain A". The output of flip flop 23 is then coupled to the two clock synchronizer comprised of flip flop 25 and flip flop 27, which are both clocked on the synchronous clock labeled Clock Domain B. The QZ output of flip flop 27 is coupled to the clear input of flip flop 23 through a NOR gate 29, and the combination forms a self clearing circuit to make the Enable input available for subsequent data words. OR gate 21, flip flops 23, 25 and 27 and NOR gate 29 form a time domain boundary bridge circuit as described in detail in co-pending application U.S. patent application Ser. No. 07/945,771, titled "Time Domain Boundary Bridge Circuit Method and Apparatus", and herein incorporated by reference.
The data signals to be captured are placed on the input labeled "Data from Domain A" and coupled to the input of multiplexer 33. The output of multiplexer 33 is coupled to the input of flip-flop 35, which is clocked on the clock from the Domain A transmitting device. The output of flip flop 35 is coupled through multiplexer 37 to the input of flip-flop 39, which is clocked on the synchronous clock for time domain B, which is labeled Clock Domain B. The output of the flip-flop 39 is data synchronized on the time domain B clock and labeled "Time domain B synchronized version of `Data`".
In operation, the time domain boundary bridge circuitry of flip-flops 23, 25, 27 and logic gates 21 and 29 is used to control the capture of the data signals into the registers. First, flip-flop 23 captures an Enable signal from the time domain A or asynchronous bus, and OR gate 21 operates to insure that the captured signal remains in flip-flop 23 until it is cleared by the time domain B circuitry. The Enable input also controls multiplexer 33 and causes the data present on the "Data from Domain A" input to be loaded into register 35 on the time domain A clock. After the data is loaded into register 35, register 35 will recirculate the data until the enable signal captured in flip flop 23 is cleared out by the action of gate 29. AND gate 31 makes sure this recirculation occurs by controlling multiplexer 33 such that no new data is loaded into register 35 until the captured enable signal is cleared out of register 23. The asynchronous bus is required to provide the Enable signal so that the data on the bus is only captured when it is valid, i.e., when none of the bits are changing. A strobe or data ready signal is generally provided when a bus carries multiple bits so that the receiving device knows when to sample the data, thus the design of the invention is compatible with most known asynchronous or multiple clock domain bus systems.
At this point, data is captured in register 35 and ready for synchronization to the synchronous clock domain, clock domain B. Register 23 contains an enable bit captured from the bus and likewise available for synchronization to clock domain B. The circuit of the invention advantageously uses the synchronization of the enable signal to control the capture of the data into the data register clocked on the domain B clock, thus reducing the required logic over the prior art and providing an error free version of the data in time domain B.
This is accomplished by using the output of flip-flop 25 to control multiplexer 37, which in turn controls the loading of flip-flop 39. On the first time domain B clock cycle after the enable signal is captured into flip-flop 23, the output of flip-flop 25 will rise to a logic high state. The high signal will cause multiplexer 37 to pass the output of register 35 to the input of register 39. On the second clock cycle of time domain B, the output of flip-flop 27 will rise to a logic high and indicate that data is ready to the receiving synchronous circuitry. Simultaneously, the flip-flop 39 will output the captured data.
As the data ready indication signal goes high, the QZ output of flip-flop 27 will cause NOR gate 29 to asynchronously clear the output of register 23. The third clock cycle will then clock a low value into flip-flop 25, which will cause multiplexer 37 to recirculate. This is necessary because each Data ready indicator signal will appear at the output of flip flop 27 for two clock cycles in time domain B, as the low logic level is clocked through the two clock synchronizer of flip-flops 25 and 27. As the Data ready signal is high for two clocks, the data at the output from register 39 must be kept valid for those same two clock cycles to insure that the data and the data ready signal always correspond.
Note that as soon as the flip-flop 23 is cleared by the self clearing logic of NOR gate 29 and flip-flop 27, the circuit is ready to capture a new data indicator on the Enable input and the new data signals at multiplexer 33 and register 35. In a system operating at maximum rates, the data ready indicator will always be high, because as soon as flip flop 23 is cleared it is set again by a new data word on the bus.
The time domain boundary bridge circuitry comprising flip-flops 23, 25 and 27 and logic gates 21 and 29 may be replaced by any of the alternative arrangements as detailed in co-pending patent application U.S. patent application Ser. No. 07/945,548, titled "Time-Domain Bridge Method and Apparatus For Asynchronous Sequential Machines", and herein incorporated by reference. For example, flip-flop 23 and OR gate 21 may be replaced by an S-R latch for use in purely asynchronous systems wherein no clock signal is available to the receiving circuitry. Flip-flop 35 would be "clocked" on a delayed version of the Enable signal in that embodiment. In all other respects the circuit would operate in the same manner as shown in FIG. 1. Alternative equivalent circuitry could replace each of the elements in FIG. 1, for example, the edge triggered flip flops could be replaced by master slave dual phase clocked latches. Other equivalent circuitry alternatives will be obvious to the practitioner skilled in the art, and all such alternatives are comprehended by this specification and the claims herein.
FIG. 2 depicts an integrated circuit coupled to an asynchronous bus interface and including the time domain boundary buffer circuitry of the invention. IC 41 comprises time domain boundary buffer 43, user specified application logic block 45, and output buffers 47. In operation, the user specified application logic may be logic implementing any well known function, and may contain RAM, ROM, EPROM, microprocessor or programmable logic clocked on the synchronous clock of time domain B. The asynchronous bus interface is coupled between IC 41 and a transmitting device having an unrelated time domain. The logic in user specified application logic block 45 is coupled to the data signals on the asynchronous bus interface through the use of the time domain boundary buffer circuit 43, and enables the user specified logic to reliably receive data transmitted on the asynchronous bus at a rate which allows maximum data transfers.
A few preferred embodiments have been described in detail hereinabove. It is to be understood that the scope of the invention also comprehends embodiments different from those described, yet within the scope of the claims. Words of inclusion are to be interpreted as nonexhaustive in considering the scope of the invention.
Internal and external connections can be ohmic, capacitive, direct or indirect, via intervening circuits or otherwise. Implementation is contemplated in discrete components or fully integrated circuits in silicon, gallium arsenide, or other electronic materials families, as well as in optical-based or other technology-based forms and embodiments.
While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications and combinations of the illustrative embodiments, as well as other embodiments of the invention, will be apparent to persons skilled in the art upon reference to the description. It is therefore intended that the appended claims encompass any such modifications or embodiments.