A method and apparatus is provided for transmitting multi-bit data across asynchronous time domains. In one embodiment, the apparatus includes a first delay circuit to generate a selector signal based upon an input reference signal of a first time domain, a second delay circuit to generate a delayed data signal based upon an input data signal, and selection logic coupled to the first and second delay circuits to select one of the data signal and the delayed data signal based upon the state of the selector signal in accordance with an input clock signal of a second time domain, such that at any given sampling point of the input clock signal, the selector signal indicates valid data.
|
20. An integrated circuit comprising:
a first delay circuit to generate a selector signal based at least in part upon an input reference signal of a first time domain;
a second delay circuit to generate a delayed data signal based at least in part upon an input data signal; and
selection logic coupled to the first and second delay circuits to select between said input data signal and said delayed data signal based at least in part upon a state of the selector signal in accordance with an input clock signal of a second time domain, such that at any given sampling point of the input input clock signal, the selector signal indicates valid data.
0. 36. A method of passing data between a first time domain and a second asynchronous time domain, the method comprising:
delaying a first data signal by a first measure to produce a second data signal wherein said second data signal is valid during transition of said first data signal, and wherein said first data signal is valid during transition of said second data signal, wherein said first data signal exhibits transitions substantially related to a first clock signal associated with said first time domain,
delaying said first clock signal by a second measure to produce a selector signal; and
selecting between said first and second data signals based at least in part upon a state of a second clock signal associated with said second time domain and a state of the selector signal.
12. A method of passing data between a first time domain and a second asynchronous time domain, the method comprising:
receiving a first data signal generated with respect to a first clock signal associated with said first time domain;
receiving a second data signal representing said first data signal delayed by a first measure such that during transition of said first data signal said second data signal is valid, and during transition of said second data signal said first data signal is valid;
receiving a selector signal representing said first clock signal delayed by a second measure; and
selecting between said first and second data signals based at least in part upon a first state of a second clock signal associated with said second time domain and a second state of the selector signal.
9. A method of passing data between a first time domain and a second asynchronous time domain, the method comprising:
receiving a first data signal generated with respect to a reference signal associated with said first time domain, said reference signal having a period of n;
receiving a second data signal, said second data signal being phase-shifted by a factor of n/2 with respect to said first data signal;
receiving a third signal, said third data signal being phase-shifted by a factor of n/4 with respect to said reference signal;
sampling said first data signal, said second data signal and said third signal based at least in part upon a clock signal of said second time domain; and selecting between said first and second data signals based at least in part upon said third signal to output valid data independent of said first and second data signal states at the time of sampling.
24. An apparatus comprising:
first logic to:
receive a first data signal generated with respect to a first clock signal associated with said first time domain,
receive a second data signal representing said first data signal delayed by a first measure such that during transition of said first data signal said second data signal is valid, and during transition of said second data signal said first data signal is valid; and
receive a selector signal representing said first clock signal delayed by a second measure such that any given sampling point of said selector signal will indicate valid data, and
receive a second clock signal associated with said second time domain to sample said first data signal, said second data signal, and said selector signal; and
second logic coupled to said first logic to select between said first and second data signals based at least in part upon a sampled value of said selector signal.
17. A method comprising:
receiving a first data signal generated with respect to a first clock signal associated with a first time domain;
generating a second data signal based at least in part upon said first data signal, said second data signal being out of phase with respect to said first data signal by a first measure such that during transition of said first data signal said second data signal is valid, and during transition of said second data signal said first data signal is valid;
generating a selector signal such that at any given sampling point of said selector signal said selector signal will indicate a valid one of said first and second data signals;
receiving a second clock signal associated with a second time domain; and
sampling said selector signal said first and second data signals based at least in part upon said second clock signal to output a selected one of said first or second data signals with respect to said second time domain.
1. A method comprising:
receiving a first data signal generated with respect to a first clock signal associated with a first time domain;
receiving a second data signal representing said first data signal delayed by a a first measure such that during transition of said first data signal said second data signal is valid, and during transition of said second data signal said first data signal is valid;
receiving a selector signal to select between said first and said second data signals, said selector signal representing said first clock signal delayed by a second measure such that at any given sampling point of said selector signal said selector signal will select valid data;
receiving a second clock signal associated with a second time domain; and
sampling said selector signal and said first and second data signals based at least in part upon said second dock clock signal to output the selected one of said first and second data signals with respect to said second time domain.
0. 28. A method comprising:
receiving a first data signal generated with respect to a first clock signal associated with a first time domain;
delaying a first data signal by a first measure to produce a second data signal wherein said second data signal is valid during transition of said first data signal, and wherein said first data signal is valid during transition of said second data signal, wherein said first data signal exhibits transitions substantially related to a first clock signal associated with said first time domain;
delaying said first clock signal by a second measure to produce a selector signal wherein said selector signal is adapted to be utilized for selecting between said first and said second data signals, and wherein said second measure is determined such that said selector signal is capable of selecting valid data at any sampling point of said selector signal: and
sampling said selector signal and said first and second data signals based, at least in part, upon a second clock signal associated with a second time domain to output the selected one of said first and second data signals with respect to said second time domain.
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
10. The method of
13. The method of
14. The method of
15. The method of
18. The method of
19. The method of
21. The apparatus of
22. The apparatus of
23. The apparatus of
at least two edge triggered flip-flops to latch the input data signal and the delayed data signal based at least in part upon the input clock signal; and
a multiplexer to select between one of said input data signal and said delayed data signal based at least in part upon the state of the selector signal.
25. The apparatus of
a first delay circuit to generate said second data signal based at least in part upon said first data signal; and
a second delay circuit to generate said selector signal based at least in part up on said first clock signal.
26. The apparatus of
27. The apparatus of
0. 29. The method of
0. 30. The method of
0. 31. The method of
0. 32. The method of
0. 33. The method of
0. 34. The method of
0. 35. The method of
0. 37. The method of
0. 38. The method of
0. 39. The method of
delaying said second signal by an amount of time sufficient to cause said second data signal to be approximately 180 degrees out of phase with respect to said first data signal; and
delaying said selector signal by an amount of time sufficient to cause said selector signal to be approximately 90 degrees out of phase with respect to said first clock signal.
0. 40. The method of
|
This application is a reissue application for U.S. Pat. No. 6,904,537 issued on Jun. 7, 2005.
1. Field of the Invention
The present invention generally relates to the field of electronic circuits. More specifically, the present invention relates to a method and apparatus for passing data across an asynchronous clock boundary.
2. Background Information
With advances in integrated circuit, microprocessor, networking and communication technologies, an increasing number of devices, in particular, digital computing devices, are being networked together. Such devices are often first coupled to a local area network, such as an Ethernet based office/home network. In turn, the local area networks are interconnected together through wide area networks, such as ATM networks, Frame Relays, and the TCP/IP based global inter-networks, Internet. In transmitting from one network to another, data typically flows through one or more devices functioning e.g. as a network bridge or router. During the transition between such devices, and even between components within a single device, data will often be driven by multiple asynchronous clock signals regulating the respective traffic flows.
Depending upon how the clocks vary with respect to one another, there is the risk that invalid data may be passed from one time domain to the next. More specifically, there may be a point in time when the second clock samples data as it is transitioning in accordance with the transition of the first clock. If two asynchronous clocks are operating at the same frequency but vary in phase, it is possible to align the clocks to be synchronous by adjusting the phase of one or both clocks. If, however, two asynchronous clocks are operating at different frequencies, the respective clock edges may drift relative to each other in non-integer multiples resulting in unpredictable and perhaps invalid data.
Although asynchronous buffers (e.g. FIFO) with separate read and write clocks have traditionally been utilized to transfer multi-bit data from one time domain to another, it is difficult to design a circuit to accurately handle multi-bit data transfers/transitions commonplace in today's high-speed networks and computing devices without such buffers. Therefore, a novel technique to pass data between time domains while overcoming the limitations of the prior art is desired.
The present invention will be described by way of exemplary embodiments, but not limitations, illustrated in the accompanying drawings in which like references denote similar elements, and in which:
In the following description, various aspects of the present invention will be described. However, it will be apparent to those skilled in the art that the present invention may be practiced with only some or all aspects of the present invention. For purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the present invention. However, it will also be apparent to one skilled in the art that the present invention may be practiced without the specific details. In other instances, well-known features are omitted or simplified in order not to obscure the present invention. Further, the description repeatedly uses the phrase “in one embodiment”, which ordinarily does not refer to the same embodiment, although it may.
For example, in one embodiment, data source 210 may represent a network interface and data sink 220 may represent a microprocessor, while communication channels 205 and 215 may each represent a multi-bit bus architecture such as a universal serial bus (USB), a peripheral component interconnect (PCI) bus, an industry standard architecture (ISA) bus, and so forth. In an alternative embodiment, data source 210 and data sink 220 may represent independent devices interconnected with stability logic 200 by way of separate wire line and/or wireless network segments, each operating asynchronously with respect to the other. In one embodiment, communication channel 205 represents an Ethernet based network segment, whereas communication channel 215 represents a synchronous optical network (SONET) segment. Although in the illustrated embodiment data source 210, stability logic 200 and data sink 220 are depicted as separate devices and/or components, data source 210 and/or data sink 220 may instead be embodied with the functionality of stability logic 200. In one embodiment, stability logic 200 is implemented as an integrated circuit within data sink 220.
Data source 210 is shown including clock signal 206 having a first frequency (f1), and data signal 208 having been sampled by clock signal 206. Data signal 208 illustrates valid data segments as well as data transition points that correspond to the rising edges of clock signal 206. Each transition point indicates a point in time, including an amount of time preceding and following each transition (i.e. set up and hold times), when the value of the sampled data may change with the value of the clock. During these transitions, the data is considered to be unpredictable and may possibly be invalid. In contrast, between each transition of the sampling clock (e.g. between each rising clock edge), data signal 208 is considered to be valid.
Data sink 220 is shown including clock signal 216 having a second frequency of (f2) where f2>f1. In one embodiment clock signal 216 is the sole operational clock utilized by data sink 220, whereas in another embodiment, clock signal 216 is one of multiple clock signals generated and/or provided by data sink 220. In one embodiment of the present invention, stability logic 200 causes data (e.g. data signal 208) associated with a first time domain (e.g. clock signal 206) to be sampled with respect to a second time domain (e.g. clock signal 216) such that the transition of the sampling clock signal does not coincide with a data transition point, thereby avoiding stability concerns, associated with the prior art. For example, in the illustrated embodiment stability logic 200 aligns and samples data signal 208 based upon output clock 216 such that any given transition (e.g. rising edge) of clock signal 216 causes valid data to be sampled.
Selection logic 300 is equipped to receive the above-referenced output signal (SEL) from delay circuit 302, the input data signal (DATA), and the output data signal from delay circuit 304 (DATA′). Additionally, selection logic is equipped to receive an output clock signal that is asynchronous with respect to reference signal 306. In accordance with the teachings of the present invention, selection logic 300 samples both DATA and DATA′ based on the output clock and selects one of the data lines such that during each transition of the output clock, valid data is present on the selected data line. In one embodiment, selection logic 300 selects between data lines (DATA, DATA′) based at least in part upon the output of delay circuit 302 (SEL).
In the illustrated embodiment, registers 510-515 are implemented as edge triggered D flip-flops, however, in other embodiments, registers 510-515 may be implemented through various other types of flip-flops and/or latches known in the art. Together, registers 510-515 operate to further reduce potential metastability concerns with stability logic 300 by providing an additional stage of resolution before being propagated to MUX 520.
As was mentioned above, the novel relationship between the SEL, DATA and DATA′ signals, facilitates the selection of valid data from one of DATA and DATA′ regardless of whether SEL is transitioning or is stable. Although the data that is actually selected in accordance with the present invention will be valid, there is a chance that the same data may be selected two or more consecutive times due to the phase lag (or lead) of DATA′. In one embodiment of the invention, an extra signal (VALID SELECT) is added to e.g. the data bus that echoes the input clock (CLOCK A) at half the frequency of the clock. Depending upon the frequency difference between the clocks, VALID SELECT may be a single-bit or multi-bit signal.
Thus, fit can be seen from the above description, a novel method and apparatus for passing data across an asynchronous clock boundary has been described. While the present invention has been described in terms of the above-described embodiments, the present invention is not limited to the embodiments described. As the present invention can be practiced with further modification and alteration within the spirit and scope of the appended claims, the description is to be regarded as illustrative instead of restrictive on the present invention.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5022057, | Mar 11 1988 | Hitachi, Ltd.; Hitachi Communication Systems, Inc. | Bit synchronization circuit |
5487092, | Dec 22 1994 | International Business Machines Corporation | System for high-speed synchronization across clock domains |
5872959, | Sep 10 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Method and apparatus for parallel high speed data transfer |
6087867, | May 29 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Transaction control circuit for synchronizing transactions across asynchronous clock domains |
6275547, | Sep 18 1997 | Renesas Electronics Corporation | Clock recovery circuit |
6359479, | Aug 04 1998 | Juniper Networks | Synchronizing data transfers between two distinct clock domains |
6516420, | Oct 25 1999 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Data synchronizer using a parallel handshaking pipeline wherein validity indicators generate and send acknowledgement signals to a different clock domain |
6518420, | Jun 04 1997 | Biochemie Gesellschaft m.b.H. | Precipitation process of 7-aminocephalosporanic acid (7-ACA) |
6526106, | May 08 1997 | NEC Electronics Corporation | Synchronous circuit controller for controlling data transmission between asynchrous circuit |
6529570, | Sep 30 1999 | Hewlett Packard Enterprise Development LP | Data synchronizer for a multiple rate clock source and method thereof |
6744833, | Jul 20 1999 | ARRIS Enterprises, Inc | Data resynchronization between modules sharing a common clock |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 20 2001 | GORMAN, J ZACHARY | NETWORK ELEMENTS, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019646 | /0890 | |
Dec 17 2004 | NETWORK ELEMENTS, INC | TriQuint Semiconductor, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019646 | /0897 | |
Sep 08 2005 | TriQuint Semiconductor, Inc | Null Networks LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 019646 | /0903 | |
Aug 13 2015 | Null Networks LLC | Xylon LLC | MERGER SEE DOCUMENT FOR DETAILS | 037057 | /0156 |
Date | Maintenance Fee Events |
Oct 04 2012 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 28 2016 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Nov 17 2012 | 4 years fee payment window open |
May 17 2013 | 6 months grace period start (w surcharge) |
Nov 17 2013 | patent expiry (for year 4) |
Nov 17 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 17 2016 | 8 years fee payment window open |
May 17 2017 | 6 months grace period start (w surcharge) |
Nov 17 2017 | patent expiry (for year 8) |
Nov 17 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 17 2020 | 12 years fee payment window open |
May 17 2021 | 6 months grace period start (w surcharge) |
Nov 17 2021 | patent expiry (for year 12) |
Nov 17 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |