Asynchronous ASIC
By dividing the clock domain into a phase-shift clock domain and generating a phase-shift clock, the problems of clock drift and noise in the synchronous clock domain are solved, and data exchange with low power consumption and low complexity are realized, maintaining the synchronization advantage of reference clocks .
Patent Information
- Application Number
- CN202411262678.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-24
- Filing Date
- 2019-10-23
- Publication Date
- 2024-12-13
AI Technical Summary
In digital logic devices, synchronization between multiple blocks in the synchronous clock domain results in clock drift and unwanted noise, especially as clock frequency increases, these problems become more significant and often accompanied by high power consumption and complexity. Buffer mechanism.
By dividing the clock domain into phase shift clock domains and generating a phase shift clock relative to the reference clock in each phase shift clock domain, each block is asynchronously exchanged data, avoiding noise and high power consumption caused by synchronous switching. Maintains the synchronous advantage over a single reference clock.
Effectively reduces the power consumption and complexity of ASIC, reduces the need to rebuffer data signals, and reduces noise caused by synchronous switching, while maintaining the advantages of synchronization between multiple blocks and a single clock domain.
Smart Images

Figure CN119126919A_ABST
Abstract
Description
[0001] This application is a divisional application of an application with a filing date of October 23, 2019, a PCT international application number of PCT / US2019 / 057723, a Chinese national phase application number of 201980085678.5, and an invention name of “Asynchronous ASIC”.
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS
[0003] This application claims priority to U.S. Provisional Application No. 62 / 750,180, filed on October 24, 2018, the contents of which are hereby incorporated by reference in their entirety. Technical Field
[0004] The present disclosure relates to electronic circuits, and in particular, to systems and methods for providing clock signals to components of electronic devices. Background Art
[0005] Almost all digital logic devices utilize clock signals to trigger or control the timing behavior of electronic components in these devices. For example, a clock signal provided to a clock input of a register will cause the register to propagate a data input to a data output. At a low level, a clock signal (e.g., a periodic digital logic signal that alternates between a logical 1 and a logical 0) may cause one or more semiconducting devices (e.g., transistors in a register) to switch from a conductive state to a non-conductive state, or vice versa.
[0006] In a device including an application specific integrated circuit (ASIC), the ASIC may be considered to include discrete functional units or "blocks" where registers in each block are synchronized with a local clock for the block. A block may include circuits (including programmable logic circuits) configured to perform one or more functions associated with the block. In a so-called synchronous circuit design, two or more blocks may be synchronized with the same global clock in a single "clock domain". By synchronizing the blocks within a clock domain, synchronous circuits are able to avoid the common problems caused by using multiple independent local clocks - i.e., clock drift, which may require inefficient rebuffering work to correct. However, by providing the same clock signal to multiple blocks at the same time, synchronous circuits may experience unwanted high-order effects, such as resonant circuit noise caused by a large number of transistors switching at once ("transistor resonance"). For modern digital devices, the number of such transistors may be staggered - on the order of billions for some devices - and the resulting resonant circuit noise may become quite significant. In addition, these unwanted effects may be amplified as the clock frequency increases. It is desirable to utilize a clock scheme that maintains the advantages of synchronous clocks while avoiding the unwanted noise they may introduce. As described herein, this may be accomplished by partitioning the clock domain into "phase-shifted clock domains" that exchange data asynchronously but synchronously with "phase-shifted clocks" derived from a common reference clock. Summary of the invention
[0007] Systems and methods for providing a clock signal in a digital device are disclosed. In some examples, an electronic device is disclosed that includes a first clock configured to operate at a frequency. A first circuit in the electronic device is configured to synchronize with the first clock. A second circuit is configured to determine a second clock based on the first clock. The second clock is configured to operate at the frequency of the first clock and is also configured to operate with a phase shift relative to the first clock. A third circuit is configured to synchronize with the second clock. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Figure 1 An example electronic device with blocks grouped into clock domains is shown in accordance with some embodiments.
[0009] Figure 2 An example electronic device with blocks grouped into a clock domain and a phase-shifted clock domain is shown in accordance with some embodiments.
[0010] Figure 3 An example of two phase-shifted clock domains of an electronic device configured to exchange data is shown in accordance with some embodiments.
[0011] Figure 4An example first-in-first-out (FIFO) buffer configured for transferring data between two phase-shifted clock domains of an electronic device is shown in accordance with some embodiments.
[0012] Figure 5 An example of generating a phase-shifted clock from a reference clock according to some embodiments is shown.
[0013] Figure 6 A block diagram is shown of an example process for configuring data transfer between two phase-shifted clock domains of an electronic device in accordance with some embodiments. DETAILED DESCRIPTION
[0014] In the following description of the examples, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific examples that may be practiced. It should be understood that other examples may be used and structural changes may be made without departing from the scope of the disclosed examples.
[0015] Figure 1 1 shows a high-level diagram of an ASIC 100 according to some embodiments. ASIC 100 includes seven functional blocks 110, 112, 114, 116, 118, 120, and 122; three reference clocks 130, 132, and 134; and three clock domains 140, 142, and 144 (which are synchronized with reference clocks 130, 132, and 134, respectively). Figure 1 As shown, three clock domains (140, 142, 144) are shared between seven blocks in ASIC 100 (110, 112, 114, 116, 118, 120, 122) to enable multiple blocks (e.g., blocks 110, 112, 114) to be synchronized with the same clock domain (e.g., clock domain 140). Blocks synchronized with the same clock domain enjoy benefits such as eliminating clock drift (eliminating the need to synchronize blocks to independent clocks). In such a system, data can be transmitted synchronously between two blocks in the same clock domain (e.g., between block 110 and block 112 in the example).
[0016] However, synchronizing multiple blocks (e.g., blocks 110, 112, 114) to the same clock domain (e.g., clock domain 140) can introduce its own problems. For example, due in part to the length of the wiring (wires) connecting the transmission blocks and the receiving blocks, propagation delays are caused by data signals sent from a transmission block (e.g., block 110) to a receiving block (e.g., block 112), and these signals may not all arrive at their respective destinations in the receiving block at the same time (due in part to the different lengths of the wiring carrying these signals). Correcting for such timing errors introduces overhead and complexity; for example, data signals may need to be buffered along the transmission path as they propagate from the transmission block to the receiving block, and the buffering process typically increases the power consumption of the digital logic device that includes the transmission block and the receiving block. To make matters worse, the need for buffering increases with the size and complexity of the digital logic device, which increasingly requires a larger number of blocks and thinner wiring for inter-chip communication.
[0017] In addition, synchronizing multiple blocks of digital logic devices within a single clock domain means that the conductive state transition activities of the semiconductor devices within these blocks will be synchronized. For example, all transistors in blocks within the same clock domain (e.g., blocks 110, 112, 114 within clock domain 140) can change state at the same time. The generated resonance can introduce unwanted digital noise proportional to the size, complexity, and transistor density of ASIC 100. Although such noise can be reduced by adding noise isolation to the ASIC blocks, adding noise isolation generally introduces unwanted power consumption and may provide undesirable layout and design constraints. It would be desirable to stagger the time at which such transistors transition between the on and off states within a single clock domain.
[0018] Thus, to reduce power consumption and complexity of the ASIC, the need to re-buffer data signals between two ASIC blocks synchronized to the same clock domain is reduced. Additionally, noise caused by synchronous switching of semiconductors within a single clock domain can be reduced. Furthermore, these goals can be achieved while retaining the benefits (e.g., simplicity, reliability) of synchronizing multiple ASIC blocks to a single reference clock within a single clock domain.
[0019] In some embodiments, this can be achieved by generating one or more phase-shifted clocks from a reference clock within a single clock domain synchronized with a single reference clock; and by coupling each phase-shifted clock to a subset of registers within the phase-shifted clock domain. The phase-shifted clocks generated from the reference clock may share the same frequency as the reference clock, but operate with a phase shift relative to the reference clock. Because the phase-shifted clocks are generated from the same reference clock and operate at the same frequency as the reference clock, no clock drift occurs between two phase-shifted clocks within the same phase-shifted clock domain or between a phase-shifted clock and its reference clock. The registers within a clock domain can be divided into subgroups ("phase-shifted clock domains"), each of which is clocked to a phase-shifted clock; the phase shift of each phase-shifted clock determines when the transistors in its corresponding register change state relative to the reference clock. These state change times can be staggered by the circuit designer to achieve a desired "load balance". Load balancing can reflect the designer's efforts to control the switching peaks of the design. For example, an ASIC in which many or all registers switch at the same time may experience high peak currents from the power supply, as well as high levels of noise. However, by synchronizing the ASIC blocks with phase-shifted clocks so that large groups of registers do not switch at the same time, lower peak current and lower noise from the power supply can be achieved.
[0020] Figure 2 1 shows an example of dividing the clock domain of the example ASIC 100 into phase-shifted clock domains according to some embodiments. Figure 2 As shown, clock domain 140 (which is synchronized with reference block 130) is subdivided into three phase-shifted clock domains: 140A, 140B, and 140C. Phase-shifted clock domain 140A can be synchronized with phase-shifted clock 130A; phase-shifted clock domain 140B can be synchronized with phase-shifted clock 130B; and phase-shifted clock domain 140C can be synchronized with phase-shifted clock 130C, where phase-shifted clocks 130A, 130B, and 130C are derived from reference clock 130 and operate at the same frequency as reference clock 130. Similarly, in this example, clock domain 142 is subdivided into phase-shifted clock domains 142A, 142B, and 142C, and are synchronized with phase-shifted clocks 132A, 132B, and 132C, respectively, where the phase-shifted clocks are derived from reference clock 132. Not all clock domains need to be divided into phase-shifted clock domains; for example, in the example shown, clock domain 144 is not divided into phase-shifted clock domains and remains synchronized with reference clock 134 .
[0021] ASIC blocks can be synchronized to one or more phase-shifted clock domains. Figure 2In the example shown, block 110 is synchronized with phase-shifted clock domain 140A; block 112 is synchronized with phase-shifted clock domain 140B; and block 114 is synchronized with phase-shifted clock domain 140C. In some cases, two or more ASIC blocks may be synchronized with a single phase-shifted clock domain. In addition, two or more portions (e.g., groupings of components or registers) in a single ASIC block may be synchronized with different phase-shifted clock domains. For example, as shown, a first portion of block 120 is synchronized with phase-shifted clock domain 142B, and a second portion of block 120 is synchronized with phase-shifted clock domain 142C. A circuit designer may divide an ASIC block or a region of an ASIC block into phase-shifted clock domains based on design considerations for a particular application.
[0022] The phase-shifted clock can be generated using various techniques known in the art for generating a clock from a reference clock. For example, a delay locked loop (DLL) can be used to generate a phase-shifted clock (e.g., phase-shifted clock 130A) having the same frequency as a reference clock (e.g., reference clock 130) as a phase-shifted version of the reference clock.
[0023] Figure 3 An example of two phase-shifted clock domains of an ASIC (such as example ASIC 100) configured to exchange data asynchronously according to some embodiments is shown. Figure 3As shown, block 110 (which is synchronized with phase-shifted clock domain 140A) and block 112 (which is synchronized with phase-shifted clock domain 140B) exchange data asynchronously. Block 110 includes an asynchronous transmission module 310A for transmitting data and / or control signals to block 112 via bus 150A, and block 112 includes an asynchronous reception module 312A for receiving data from block 110 (via transmission module 310A). Modules 310A and 312A can be arranged in a master / slave configuration, where module 310A is configured as a master and module 312A is configured as a slave. Similarly, in an example where block 112 is configured to send data and block 110 is configured to receive data, block 112 may include an asynchronous transmit module 312B for transmitting data and / or control signals to block 110 via bus 150B (which may be the same as bus 150A in some examples), and block 110 may include an asynchronous receive module 310B for receiving data from block 112 (via transmit module 312B). Modules 312B and 310B may be arranged in a master / slave configuration, with module 312B configured as a master and module 310B configured as a slave. The transmit / receive modules in each block are clocked to the phase-shifted clock of its corresponding phase-shifted clock domain: for example, transmit module 310A and receive module 310B in block 110 are clocked to phase-shifted clock 130A, and transmit module 312B and receive module 312A in block 112 are clocked to phase-shifted clock 130B. (In some examples, transmit modules and receive modules such as those described herein need not be separate units and may overlap or share common components).
[0024] The data bus 150A and / or 150B may carry data and / or control signals in any suitable configuration. Various problems may be introduced when data crosses asynchronously between clock domains or phase-shifted clock domains. For example, the data on the bus 150A / 150B becomes irrelevant, such as if data from one "lane" of the data bus arrives at the receiving end earlier or later than expected (e.g., due to differences in the length of the electrical trace that the data in each lane must travel). In addition, if the data transmitted from the transmitting phase-shifted clock domain is not captured in the receiving phase-shifted clock domain due to data instability, the data transmitted from the transmitting phase-shifted clock domain may be lost. Such phase-shifted clock domain crossing problems may cause functional errors in the receiving phase-shifted clock domain. Various suitable techniques for addressing clock domain crossings may be applicable to phase-shifted clock domain crossings; an example system for handling phase-shifted clock domain crossing problems is a first-in, first-out (FIFO) buffer such as described below. The clock domain crossing logic may be implemented, for example, completely or partially within the asynchronous receive module 312A in block 112; within the asynchronous transmit module 310A in block 110; within the asynchronous receive module 310B in block 110; within the asynchronous transmit module 312B in block 112; within a circuitry sitting between blocks 110 and 112; or in any other suitable location or combination of locations.
[0025] Figure 4 A portion of an example FIFO buffer 400 configured to hand off data between phase-shifted clock domains of an ASIC (e.g., phase-shifted clock domains 140A and 140B in example ASIC 100) is shown in accordance with some embodiments. In some examples, FIFO buffer 400 may be implemented in whole or in part within asynchronous receive module 312A in block 112; within asynchronous transmit module 310A in block 110; within asynchronous receive module 310B in block 110; within asynchronous transmit module 312B in block 112; within a circuit arrangement between blocks 110 and 112; or in any other suitable location or combination of locations. Figure 4 As shown, input 402 (shown as 402 (K) in the figure) is data transmitted to FIFO buffer 400; for example, input 402 may correspond to Figure 3The data shown is transmitted from block 110 to block 112 via one or more wirings in bus 150A. In the example shown, input 402 has a width K of four bits, wherein four bits are shown as 402A, 402B, 402C and 402D (which may correspond to the number K of wirings in bus 150A). However, the value of K may correspond to any suitable data width. Each of bits 402A to 402D is provided as an input to a corresponding register 404A to 404D. Registers 404A to 404D are each clocked by corresponding channel clocks 406A to 406D. Each channel clock 406A to 406D is a phase-shifted clock, which is selected for corresponding registers 404A to 404D as described below. Channel clocks 406A to 406D advance data bits 402A to 402D to multiplexer 408 respectively through registers 404A to 404D. Generally, the number of registers 404, the number of channel clocks 406, and the number of inputs to multiplexer 408 will all be equal to the data width K of input 402 (four in this example, although any suitable data width may be used).
[0026] Channel clocks 406A-406D are selected so that input bits 402A-402D arrive at the input of multiplexer 408 in an aligned sequence corresponding to their bit positions within input 402. Channel clocks 406A-406D may be generated from a reference clock (e.g., reference clock 130) and as described below with respect to Figure 5 and 6 402A to 402D arrive at multiplexer 408 in an aligned sequence, multiplexer 408 may write the aligned data to memory 410 (which may include RAM or any other suitable type of storage). The aligned data may be read from memory 410 as data 440. The details of memory 410 may be selected to be suitable for the application at hand; for example, example memory 410 may include storage sufficient to store ten stages for each data bit 402A to 402D.
[0027] The write address for writing input 402 to memory 410 can be controlled by a write pointer 420, which can be sequentially advanced by a write clock 422 while a write enable 424 is active. Similarly, the read address for reading data 440 from memory 410 can be controlled by a read pointer 430, which can be sequentially advanced by a read clock 432 while a read enable 434 is active. In this example, the write clock 422 belongs to the phase-shifted clock domain 140A, while the read clock 432 belongs to the phase-shifted clock domain 140B. The phase-shifted clock domain 140A (and therefore the write clock 422) can be synchronized with the phase-shifted clock 130A; while the phase-shifted clock domain 140B (and therefore the read clock 432) can be synchronized with the phase-shifted clock 130B. As described above, one or more of the phase-shifted clock 130A and the phase-shifted clock 130B may be synchronized with the reference clock 130; while the other one or more of the phase-shifted clock 130A and the phase-shifted clock 130B may be a phase-shifted version of the reference clock 130 (although operating at the same frequency as the reference clock 130). Thus, the FIFO buffer 400 provides an example of transferring data from a first block (e.g., 110) in a first phase-shifted clock domain (e.g., 140A) to a second block (e.g., 112) in a second phase-shifted clock domain (e.g., 140B). In addition, data may be transferred in a similar manner in the reverse direction (i.e., from block 112 to block 110 via bus 150B).
[0028] Channel clocks 406A to 406D, write clock 422, and read clock 432 correspond to phase-shifted clocks generated from a reference clock (e.g., reference clock 130), as described above. Write clock 422 may correspond to phase-shifted clock 130A described above (with which phase-shifted clock domain 140A is synchronized); and read clock 342 may correspond to phase-shifted clock 130B described above (with which phase-shifted clock domain 140B is synchronized). In some examples, channel clocks 406A to 406D, write clock 422, and read clock 432 may be selected from one or more of phase-shifted clock "candidates," where each phase-shifted clock candidate is generated from a reference clock (e.g., via a DLL); shares the frequency of the reference clock; and differs from other phase-shifted clock candidates in a phase shift relative to the reference clock.
[0029] Figure 5 An example of generating a phase-shifted clock from a reference clock according to some embodiments is shown. The DLL may accept as input a reference clock 502 having a period T (which may correspond to, for example, reference clock 130) and output N phase-shifted clock candidates (e.g., eight clock signals 506A to 506H). The number N of phase-shifted clock candidates may, but need not, be equal to the number of channel clocks (e.g., 406A to 406D). Figure 5 In the example shown, each of the phase-shifted clock candidates 506A to 506H is shifted in phase by a multiple of T / N relative to the reference clock 502. For example, if the reference clock 502 has a period of 24 ns (e.g., Figure 5 ), and as shown, n is 8, then phase-shifted clock candidate 506A may have a phase shift of 0 ns (i.e., 0*24 / 8 ns); phase-shifted clock candidate 506B may have a phase shift of 3 ns (i.e., 1*24 / 8 ns); phase-shifted clock candidate 506C may have a phase shift of 6 ns (i.e., 2*24 / 8 ns); and so on. Techniques for using a DLL to generate phase-shifted clocks (e.g., phase-shifted clock candidates 506A to 506H) from a reference clock will be familiar to those skilled in the art. T is the reciprocal of the reference clock frequency, and the number N may be selected by the circuit designer based on considerations such as desired accuracy, latency, and complexity requirements, as well as the reference clock frequency. For example, a larger number N of phase-shifted clock candidates may potentially result in lower latency at the expense of complexity (because more appropriate phase-shifted clock candidates may potentially be selected).
[0030] Once the phase-shifted clock candidates 506A to 506H have been generated, a channel clock (e.g., 406A to 406D) may be selected for each bit of the input data (e.g., K bits 402A to 402D of the input data 402). In some examples, the clock selection may be performed as follows. Knowing that each of the N phase-shifted clock candidates 506A to 506H is shifted in phase by a different multiple of T / N relative to a reference clock, where T is the length of one cycle of the reference clock (e.g., a cycle starting at time t0 and ending at time t1), it is known that each of 506A to 506H will include a rising edge at a different time within a single cycle of the reference clock. That is, for the N phase-shifted clock candidates, the phase-shifted clock candidate with index i may include a rising edge at time t0+i*((t1-t0 / N)). For example, if t0 is 10, t1 is 14, and N is 8, then the phase-shifted clock candidate with index 0 (e.g., corresponding to phase-shifted clock candidate 506A) may include a rising edge at time 10+0*((14-10) / 8)=10. Similarly, the phase-shifted clock candidate with index 1 (e.g., corresponding to phase-shifted clock candidate 506B) may include a rising edge at time 10+1*((14-10) / 8)=10.5; the phase-shifted clock candidate with index 2 may include a rising edge at time 10+2*((14-10) / 8)=11; and so on.
[0031] Knowing that each of the N phase-shifted clock candidates can include rising edges at evenly spaced intervals within a single cycle of the reference clock, it can be predicted that a half-cycle data pulse (e.g., data pulse 504 that can be provided along bus 150A as a bit of data input 402) will be captured by N / 2 phase-shifted clock candidates. That is, if the half-cycle data pulse is provided to N latches, each of which is gated by a respective one of the N phase-shifted clock candidates, then half of the N latches—whose respective gates transition from low to high while the data pulse is high—will produce a logic 1 at their respective outputs. Furthermore, if the phase-shifted clock candidates are ordered in sequence (i.e., each successive phase-shifted clock candidate is characterized by a longer phase shift than the phase-shifted clock candidate that precedes it), then the half-cycle data pulse can be captured by successive groups of phase-shifted clock candidates. For example, in Figure 5 , data pulse 504 is shown as transitioning from low to high at time t0, and transitioning from high to low at the midpoint between time t0 and time t1 (from which point it remains low). In this example, data pulse 504 will be captured by four of the eight phase-shifted clock candidates: e.g., phase-shifted clock candidates 506A to 506D, which correspond to the four phase-shifted clock candidates that transition from low to high while data pulse 504 is high.
[0032] From the group of phase-shifted clock candidates that capture the half-cycle data pulse 504, a preferred phase-shifted clock candidate can be selected as the channel clock. It may be desirable that the channel clock captures data after it has arrived and stabilized - that is, after transients have settled and the data has entered a sufficiently stable state at the receiving block (e.g., 112) to ensure that the data is valid. It may be further desirable that the channel clock captures data at a significant time distance from the rising or falling edge of the data in order to increase tolerance for on-chip variations (OCV), jitter, temperature drift, and other sources of fluctuations in the data or clock signals. According to these example criteria, various metrics can be used to identify a preferred phase-shifted clock candidate from the group of phase-shifted clock candidates and select the channel clock accordingly. In some embodiments, the channel clock may be selected as a phase-shifted clock candidate whose rising edge is closest to the middle of the reference clock cycle (that is, the phase shift of the phase-shifted clock candidate relative to the reference clock is closest to 180 degrees); this may be because during normal device operation, data will arrive in increments corresponding to a complete cycle of the reference clock, so that the phase-shifted clock candidate whose rising edge is closest to the middle of the reference clock cycle may be the phase-shifted clock candidate that best ensures data stability. In some embodiments, the channel clock may be selected as the last phase-shifted clock candidate in a group of phase-shifted clock candidates that captures a half-cycle data pulse (that is, the last phase-shifted clock candidate before the midpoint of the reference clock cycle). In some embodiments, the channel clock may be selected as the first phase-shifted clock candidate after a group of phase-shifted clock candidates that captures a half-cycle data pulse (that is, the first phase-shifted clock candidate after the midpoint of the reference clock cycle). In some embodiments, the channel clock may be selected as any phase-shifted clock candidate in a group of phase-shifted clock candidates that captures a data pulse.
[0033] The number of phase-shifted clock candidates N may affect the accuracy of the channel clock. The larger the value of N, the smaller the phase shift difference between two adjacent phase-shifted clock candidates; and the greater the probability that the ideal channel clock can be selected. However, increasing the number of phase-shifted clock candidates N generally increases the time and circuit complexity required to perform the channel clock calibration process. Depending on the requirements of the specific device being used, the designer can select the desired value of N.
[0034] The above channel clock selection process may be repeated (sequentially or simultaneously) for two or more of the K data bits of the example data 402. For example, a half-cycle data pulse 504 may be provided on a path corresponding to each bit of the data 402 (e.g., data bits 402A to 402D), and for each bit, an optimal channel clock may be selected from the N phase-shifted clock candidates. Because the data travel time may be slightly different between data bits, some phase-shifted clock candidates may be better suited for certain data bits than other phase-shifted clock candidates. A separate channel clock is selected on a per-bit basis and each data bit 402A to 402D is clocked separately according to its corresponding channel clock, thereby facilitating the correct alignment of the data bits entering the memory 410 as described above.
[0035] In addition to selecting one or more channel clocks, a read clock (e.g., 432) may be selected from one of the phase-shifted clock candidates 506A to 506H. As with the channel clocks, the selected read clock shares the frequency of the reference clock, but differs in phase, as described above. The read clock in the example may correspond to the above description of Figure 2 Phase-shifted clock 130B is described; for example, all components in phase-shifted clock domain 140B that receive data from phase-shifted clock domain 140A can be synchronized with the selected read clock. In order to minimize the above-mentioned noise effects—which may be amplified by the resonance caused by synchronizing most of the electronic device to the same clock—circuit designers may wish to select a read clock that is the phase-shifted clock candidate that is most different in phase from other reference clocks and other phase-shifted clocks of the device. This can help to minimize the extent to which transistor states are switched at the same time. For example, in a device in which many blocks in the device are synchronized to a reference clock, the read clock can be selected as a phase-shifted clock candidate with a half-cycle phase shift relative to the reference clock.
[0036] Similarly, in some examples, the write clock (eg, 422) may be selected from one of the phase-shifted clock candidates 506A to 506H. The write clock in the example may correspond to the above description of Figure 2 The phase-shifted clock 130A described above; for example, all components in the phase-shifted clock domain 140A that transfer data to the phase-shifted clock domain 140B can be synchronized with the selected write clock. In some examples, the write clock can be selected according to a process similar to that described above with respect to the read clock. In some examples, the write clock can simply be a buffered version of the reference clock (e.g., 130), or in some cases, can be the reference clock itself.
[0037] The designer may wish to avoid, to the extent possible, selecting a phase-shifted clock that has the same phase shift as a reference clock or a phase-shifted clock to which a significant portion of the device is synchronized. By appropriately distributing digital devices into phase-shifted clock domains and selecting phase-shifted clocks for those phase-shifted clock domains that are sufficiently different in phase, the resonance (and accompanying noise) created by synchronously switching transistors can be managed.
[0038] Figure 6 An example process 600 of a device (e.g., device 100 described above) configured for transmitting data between a transmission block associated with a first phase-shifted clock domain (e.g., 140A) and a receiving block associated with a second phase-shifted clock domain (e.g., 140B) is shown. In the example process shown, the stages on the left side of the figure can correspond to steps performed by a "master" transmission block (e.g., by the asynchronous transmission module 310A described above), and the stages on the right side of the figure can correspond to steps performed by a "slave" receiving block (e.g., by the asynchronous reception module 312A described above). However, other suitable configurations are possible, and the various steps of the example process can be performed by a transmission block, by a receiving block, by circuitry separate from the transmission block and the receiving block, or by any suitable combination of the above.
[0039] At stage 610, the master block may send an initialization signal on all data and control buses to initialize the phase-shifted clock selection and data transfer process. For example, the initialization signal may be a logic 0 on all data and control buses. At stage 612, the master block may send a test pulse (e.g., a two-clock cycle pulse) to reset all latches at the slave block (stage 614).
[0040] At stage 616, the slave block may enter the channel clock selection stage described above; as described above, the DLL may generate a desired number of phase-shifted clock candidates, where the phase-shifted clock candidates are provided as clock inputs to the corresponding latches as described above. At stage 618, the master block may send a half-cycle data test pulse to the latch, followed by a logic low (stage 620), such as described above with respect to signal 504. The master block then waits for a ready signal from the slave (stage 622). Meanwhile, at stage 624, the latch of the slave block samples the data test pulse as described above. At stage 626, the slave block may select a preferred channel clock for each data bit, such as described above. Once the channel clock has been selected, a read clock (e.g., corresponding to phase-shifted clock 130B) is selected (stage 628), as described above. (In some examples, a write clock such as one that may correspond to phase-shifted clock 130A may also be selected as described above.)
[0041] After the channel clock and the read clock have been selected, the slave block can send a ready signal to the master block (stage 630), indicating that the clock has been selected and data transfer should begin. The read pointer (stage 632) and write pointer (stage 634) for the memory 410 can be initialized at this stage, such as described above with respect to Figure 4 As shown. It may be desirable that the read pointer and the write pointer are initialized to values that are offset from each other to avoid potential race conditions that may compromise the data integrity of the memory. After initialization of the read and write pointers, data transmission can begin on the master block (stage 636), and data reception can begin on the slave block (stage 638), such as described above.
[0042] Some embodiments disclosed herein relate to an electronic device, comprising: a first clock configured to operate at a frequency; a first circuit configured to synchronize with the first clock; a second circuit configured to determine a second clock based on the first clock, the second clock configured to operate at the frequency of the first clock and also configured to operate with a phase shift relative to the first clock; and a third circuit configured to synchronize with the second clock. In addition or alternative to one or more of the embodiments disclosed herein, in some embodiments, determining the second clock includes: generating a plurality of clock candidates, each of the plurality of clock candidates being configured to operate at the frequency of the first clock and also configured to operate with a corresponding phase shift relative to the first clock; and selecting the second clock from the plurality of clock candidates. In addition or alternative to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected as the clock candidate with the corresponding phase shift closest to 180 degrees among the plurality of clock candidates. In addition or alternative to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected to reduce transistor resonance of the electronic device. In addition or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the electronic device is an ASIC, the first circuit corresponds to a first functional block in the ASIC, the second circuit includes a delay locked loop, and the third circuit corresponds to a second functional block in the ASIC. In addition or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the electronic device further includes a memory, the electronic device is configured to perform a data write operation relative to the memory, the data write operation is synchronized with the first clock, and the electronic device is also configured to perform a data read operation relative to the memory, the data read operation is synchronized with the second clock. In addition or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the first circuit is also configured to transfer data to the third circuit.In addition to or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the electronic device further comprises a data bus electrically coupled to the first circuit and the third circuit, the data bus comprising one or more wirings including a first wiring; the first circuit is further configured to transmit the data to the third circuit via the data bus; the electronic device further comprises one or more latches including a first latch, the first latch being configured to receive the data via the first wiring, the first latch being configured to synchronize with a third clock determined based on the first clock; determining the third clock based on the first clock comprises: generating a plurality of clock candidates, each of the plurality of clock candidates being configured to operate at a frequency of the first clock and also being configured to operate with a corresponding phase shift relative to the first clock, and selecting the third clock from the plurality of clock candidates; and the third clock is selected from the plurality of clock candidates based on a waiting time between the first circuit transmitting the data and the first latch receiving the data. In addition to or in lieu of one or more of the embodiments disclosed herein, in some embodiments, each of the one or more latches corresponds to a corresponding wiring in the one or more wirings and is configured to receive the data via the corresponding wiring; each of the one or more latches is configured to be synchronized with a corresponding clock selected from the multiple clock candidates; and each corresponding clock is selected from the multiple clock candidates based on a waiting time between the first circuit transmitting the data and the corresponding latch receiving the data.
[0043] Some embodiments disclosed herein relate to a method, comprising: at an electronic device including a first circuit, a second circuit, and a third circuit, synchronizing the first circuit with a first clock operating at a frequency; determining a second clock based on the first clock, the second clock operating at the frequency of the first clock and also operating at a phase shift relative to the first clock; and synchronizing the third circuit with the second clock. In addition or alternatively to one or more of the embodiments disclosed herein, in some embodiments, determining the second clock comprises: generating a plurality of clock candidates, each of the plurality of clock candidates operating at the frequency of the first clock and also operating at a corresponding phase shift relative to the first clock; and selecting the second clock from the plurality of clock candidates. In addition or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected as a clock candidate having a corresponding phase shift closest to 180 degrees among the plurality of clock candidates. In addition or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected to reduce transistor resonance of the electronic device. In addition or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the first circuit corresponds to a first functional block in an ASIC, the second circuit includes a delay locked loop, and the third circuit corresponds to a second functional block in the ASIC. In addition or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the method further includes: performing a data write operation relative to a memory of the electronic device according to a conversion of the first clock; and performing a data read operation relative to the memory according to a conversion of the second clock. In addition or in lieu of one or more of the embodiments disclosed herein, in some embodiments, the method further includes: transferring data from the first circuit to the third circuit.
[0044] Some embodiments disclosed herein relate to a method of transmitting data, the method comprising: synchronizing a first circuit with a first clock operating at a frequency, the first clock being associated with a first clock domain; determining a second clock based on the first clock, the second clock operating at the frequency of the first clock and also operating at a phase shift relative to the first clock, the second clock being associated with a second clock domain; synchronizing a second circuit with the second clock, the second circuit being configured to receive data from the first circuit via one or more latches electrically coupled to a data bus, the data bus comprising one or more wirings including a first wiring, the one or more latches comprising a first latch configured to receive the data via the first wiring; generating a plurality of clock candidates, each of the plurality of clock candidates being configured to operate at the frequency of the first clock and also configured to operate at a corresponding phase shift relative to the first clock; synchronizing the first latch with a third clock selected from the plurality of clock candidates; and transmitting the data from the first circuit to the second circuit via the data bus and the first latch. In addition or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the third clock is selected from the plurality of clock candidates based on a wait time between the first circuit transmitting the data and the first latch receiving the data. In addition or alternatively to one or more of the embodiments disclosed herein, in some embodiments, each of the one or more latches corresponds to a corresponding wiring in the one or more wirings and is configured to receive the data via the corresponding wiring, and the method further includes: for each of the one or more latches, selecting a corresponding clock from the plurality of clock candidates based on a wait time between the latch and the first circuit transmitting the data, and synchronizing the latch with its corresponding clock.
[0045] Although the disclosed embodiments have been fully described with reference to the accompanying drawings, it should be noted that various changes and modifications will become apparent to those skilled in the art. For example, elements in one or more implementations may be combined, deleted, modified, or supplemented to form further implementations. These changes and modifications should be understood to be included within the scope of the disclosed embodiments as defined by the appended claims.
Claims
1. An electronic device, include: a first circuit configured to synchronize with a first clock configured to operate at a frequency; a second circuit configured to generate a second clock and a third clock based on the first clock, wherein: The second clock is configured to operate at a frequency of the first clock and is further configured to operate at a first phase shift relative to the first clock, The third clock is configured to operate at a frequency of the first clock and is further configured to operate at a second phase shift relative to the first clock, and the second clock and the third clock being selected from a plurality of clock candidates; and a third circuit configured to synchronize with the second clock; in: Each clock candidate of the plurality of clock candidates is associated with a respective phase shift relative to the first clock; Selecting the second clock from the plurality of clock candidates comprises: for a first data bit among a plurality of data bits, comparing a first corresponding phase shift with a transition edge of the first clock; and Selecting the third clock from the plurality of clock candidates includes, for a second data bit among the plurality of data bits, comparing a second corresponding phase shift with a transition edge of the first clock.
2. The electronic device according to claim 1, in, Each clock candidate of the plurality of clock candidates is configured to operate at a frequency of the first clock.
3. The electronic device according to claim 1, in, The second clock is selected as a clock candidate having a corresponding phase shift closest to 180 degrees among the plurality of clock candidates.
4. The electronic device according to claim 1, in, The second clock is selected to reduce transistor resonance of the electronic device.
5. The electronic device according to claim 1, in, The electronic device includes an ASIC, the first circuit includes a first functional block in the ASIC, the second circuit includes a delay locked loop, and the third circuit includes a second functional block in the ASIC.
6. The electronic device according to claim 1, further comprising a memory, in: The electronic device is configured to perform a data writing operation with respect to the memory, the data writing operation being synchronized with the first clock, and The electronic device is further configured to perform a data reading operation with respect to the memory, wherein the data reading operation is synchronized with the second clock.
7. The electronic device according to claim 1, further comprising: include: A data bus is electrically coupled between the first circuit and the third circuit, wherein the first circuit is further configured to transmit data to the third circuit via the data bus.
8. The electronic device according to claim 7, in: The electronic device includes one or more latches; Each latch of the one or more latches corresponds to a corresponding wiring in the data bus and is configured to receive data via the corresponding wiring; Each of the one or more latches is configured to be synchronized with a corresponding clock selected from the plurality of clock candidates; as well as Each respective clock is selected from the plurality of clock candidates based on a latency between the first circuit transmitting the data and a respective latch receiving the data.
9. A method, include: At an electronic device including a first circuit, a second circuit, and a third circuit, synchronizing the first circuit with a first clock operating at a frequency; generating a second clock and a third clock based on the first clock; The second clock and the third clock are selected from a plurality of clock candidates, wherein: the second clock operates at a frequency of the first clock and also operates at a first phase shift relative to the first clock, and the third clock operates at the frequency of the first clock and also operates at a second phase shift relative to the first clock, and synchronizing the third circuit with the second clock; in: Each clock candidate of the plurality of clock candidates is associated with a respective phase shift relative to the first clock; Selecting the second clock from the plurality of clock candidates comprises: for a first data bit among a plurality of data bits, comparing a first corresponding phase shift with a transition edge of the first clock; and Selecting the third clock from the plurality of clock candidates includes, for a second data bit among the plurality of data bits, comparing a second corresponding phase shift with a transition edge of the first clock.
10. The method according to claim 9, in, Each clock candidate of the plurality of clock candidates operates at a frequency of the first clock.
