A dual clock interface for an integrated circuit is described. An integrated circuit includes interface circuitry. The interface circuitry has a hardwired logic block. The hardwired logic block has a clock divider circuit coupled to receive a user clock signal and a core clock signal for dividing the core clock signal responsive to a frequency of the user clock signal to provide a divided clock signal with edges aligned to the core clock signal. The divided clock signal has the frequency of the user clock signal and a phase relationship of the user clock signal. user-side logic is coupled to receive the divided clock signal for the controlled passing of information responsive to the divided clock signal. core-side logic is coupled to receive the core clock signal for the controlled passing of information responsive to the core clock signal.
|
1. An integrated circuit, comprising:
interface circuitry for controlled passing of information to and from the integrated circuit;
the interface circuitry having:
a hardwired block for receiving a user clock signal and a core clock signal;
the hardwired block having a clock divider circuit coupled to receive the user clock signal and the core clock signal;
the clock divider circuit configured to divide the core clock signal responsive to a frequency of the user clock signal to provide a divided clock signal;
the clock divider circuit further configured to provide the divided clock signal with edges aligned to the core clock signal;
the divided clock signal having the frequency of the user clock signal but the divided clock signal having pulses of a pulse width equal to a pulse width of pulses of the core clock signal;
the pulses of the divided clock signal having the edges aligned to the pulses of the core clock signal with a phase relationship of the user clock signal;
wherein edges of a single pulse of the divided clock signal are aligned to edges of a single pulse of the core clock signal;
a user-side resource coupled to receive the divided clock signal for the controlled passing of information responsive to the divided clock signal; and
a core-side resource coupled to receive the core clock signal for the controlled passing of information responsive to the core clock signal.
13. A method for providing a dual clock domain interface in an integrated circuit, comprising:
receiving a user clock signal and a core clock signal, the user clock signal and the core clock signal being synchronous with respect to one another but with a degree of edge alignment uncertainty;
sampling the user clock signal for edge alignment between the user clock signal and the core clock signal, the sampling being at a frequency of the core clock signal;
detecting edges of the user clock signal and the core clock signal responsive to when the edges are sufficiently aligned for detection;
generating an internal clock signal having a pulse;
the pulse being generated responsive to the edges being sufficiently aligned for the detecting;
the pulse having a phase relationship associated with the user clock signal and having edge positioning associated with the core clock signal;
the internal clock signal having a frequency of the user clock signal but the internal clock signal having pulses of a pulse width equal to a pulse width of pulses of the core clock signal;
edges of the pulse of the internal clock signal being aligned to edges of a pulse of the core clock signal with either a rising or falling edge of the edges of the pulse of the internal clock signal having the phase relationship of the user clock signal;
clocking a user-side clock domain responsive to the internal clock signal; and
clocking a core-side clock domain responsive to the core clock signal;
wherein the degree of edge alignment uncertainty is reduced responsive to use of the edge positioning of the core clock signal in the internal clock signal for the clocking of the user-side clock domain.
19. An interface system, comprising:
an integrated circuit having a peripheral component interface, the peripheral component interface having a user-side clock domain and a core-side clock domain;
at least one peripheral device coupled to the integrated circuit via the core-side clock domain of the peripheral component interface for transporting information to and from the integrated circuit;
the integrated circuit coupled to receive a user clock signal and a core clock signal;
the user clock signal and the core clock signal being synchronous with respect to one another but with a degree of edge alignment uncertainty;
the peripheral component interface configured to sample at a frequency of the core clock signal the user clock signal for edge alignment between the user clock signal and the core clock signal;
the peripheral component interface configured to detect edges of the user clock signal and the core clock signal responsive to when the edges are sufficiently aligned for detection;
the peripheral component interface configured to generate an internal clock signal having a pulse;
the pulse being generated responsive to the edges being sufficiently aligned for the detecting;
the pulse having a phase relationship associated with the user clock signal and having edge positioning associated with the core clock signal;
the internal clock signal having a frequency of the user clock signal but the internal clock signal having pulses of a pulse width equal to a pulse width of pulses of the core clock signal;
edges of the pulse of the internal clock signal being aligned to edges of a pulse of the core clock signal with either a rising or falling edge of the edges of the pulse of the internal clock signal having the phase relationship of the user clock signal;
the user-side clock domain coupled for being clocked responsive to the internal clock signal; and
the core-side clock domain coupled for being clocked responsive to the core clock signal;
wherein the degree of edge alignment uncertainty is reduced responsive to use of the edge positioning of the core clock signal in the internal clock signal for clocking of the user-side clock domain.
2. The integrated circuit according to
3. The integrated circuit according to
4. The integrated circuit according to
5. The integrated circuit according to
6. The integrated circuit according to
7. The integrated circuit according to
8. The integrated circuit according to
9. The integrated circuit according to
10. The integrated circuit according to
11. The integrated circuit according to
12. The integrated circuit according to
14. The method according to
15. The method according to
16. The method according to
17. The method according to
18. The method according to
20. The interface system according to
|
One or more aspects of the invention relate generally to integrated circuits and, more particularly, to a dual clock interface for an integrated circuit.
Programmable logic devices (“PLDs”) are a well-known type of integrated circuit that can be programmed to perform specified logic functions. One type of PLD, the field programmable gate array (“FPGA”), typically includes an array of programmable tiles. These programmable tiles can include, for example, input/output blocks (“IOBs”), configurable logic blocks (“CLBs”), dedicated random access memory blocks (“BRAMs”), multipliers, digital signal processing blocks (“DSPs”), processors, clock managers, delay lock loops (“DLLs”), and so forth. Notably, as used herein, “include” and “including” mean including without limitation. One such FPGA is the Xilinx Virtex® FPGA available from Xilinx, Inc., 2100 Logic Drive, San Jose, Calif. 95124.
Another type of PLD is the Complex Programmable Logic Device (“CPLD”). A CPLD includes two or more “function blocks” connected together and to input/output (“I/O”) resources by an interconnect switch matrix. Each function block of the CPLD includes a two-level AND/OR structure similar to those used in Programmable Logic Arrays (“PLAs”) and Programmable Array Logic (“PAL”) devices. Other PLDs are programmed by applying a processing layer, such as a metal layer, that programmably interconnects the various elements on the device. These PLDs are known as mask programmable devices. PLDs can also be implemented in other ways, for example, using fuse or antifuse technology. The terms “PLD” and “programmable logic device” include but are not limited to these exemplary devices, as well as encompassing devices that are only partially programmable.
For purposes of clarity, FPGAs are described below though other types of PLDs may be used. FPGAs may include one or more embedded microprocessors. For example, a microprocessor may be located in an area reserved for it, generally referred to as a “processor block.”
An integrated circuit, such as an FPGA, may include one or more interfaces for communicating information. There are many known types of interfaces, such as a Peripheral Component Interconnect (“PCI”), a Universal Serial Bus (“USB”), and Ethernet, among other known interfaces. For purposes of clarity, by way of example it shall be assumed that a PCI Express (“PCIe”) interface is used for an integrated circuit, although it shall be appreciated from the following description that other types of known interfaces may be used.
For operation of a PCIe interface, a user clock and a core clock are supplied. Conventionally, the user clock and the core clock are synchronous with respect to one another and are edge-aligned with some uncertainty. For example, the user clock may be rising edge-aligned to rising edges of the core clock with some uncertainty. Furthermore, for a PCI, the core clock signal is provided at a standard specified frequency, which for a PCIe is presently approximately 250 MHz. However, uncertainty with respect to such edge alignment translates into having to have larger timing margins. In short, this means that the “windows of operation” have to be increased to accommodate such uncertainty, which generally slows performance.
Accordingly, it would be desirable and useful to provide a dual clock interface that at least reduces the above-described uncertainty such that performance may be enhanced with narrower timing margins.
One or more aspects of the invention generally relate to integrated circuits and, more particularly, to a dual clock interface for an integrated circuit.
An aspect of the invention is an integrated circuit including interface circuitry for controlled passing of information to and from the integrated circuit. The interface circuitry has a hardwired logic block for receiving a user clock signal and a core clock signal. The hardwired logic block has a clock divider circuit coupled to receive the user clock signal and the core clock signal. The clock divider circuit is configured to divide the core clock signal responsive to a frequency of the user clock signal to provide a divided clock signal. The clock divider circuit is further configured to provide the divided clock signal with edges aligned to the core clock signal. The divided clock signal has the frequency of the user clock signal and a phase relationship of the user clock signal. User-side logic is coupled to receive the divided clock signal for the controlled passing of information responsive to the divided clock signal. Core-side logic is coupled to receive the core clock signal for the controlled passing of information responsive to the core clock signal.
Another aspect of the invention is a method for providing a dual clock domain interface in an integrated circuit. A user clock signal and a core clock signal are received, the user clock signal and the core clock signal being synchronous with respect to one another but with a degree of edge alignment uncertainty. The user clock signal is sampled for edge alignment between the user clock signal and the core clock signal, the sampling being at a frequency of the core clock signal. Edges of the user clock signal and the core clock signal, being sufficiently aligned for detection, are detected. An internal clock signal having a pulse is generated. The pulse is generated responsive to the edges being sufficiently aligned for the detecting. The pulse has a phase relationship associated with the user clock signal and edge positioning associated with the core clock signal. A user-side clock domain is clocked responsive to the internal clock signal, and a core-side clock domain is clocked responsive to the core clock signal. The degree of edge alignment uncertainty is reduced responsive to use of the edge positioning of the core clock signal in the internal clock signal for the clocking of the user-side clock domain.
Yet another aspect of the invention is an interface system, including an integrated circuit having a peripheral component interface with a user-side clock domain and a core-side clock domain. At least one peripheral device is coupled to the integrated circuit via the core-side clock domain of the peripheral component interface for transporting information to and from the integrated circuit. The integrated circuit is coupled to receive a user clock signal and a core clock signal. The user clock signal and the core clock signal are synchronous with respect to one another but with a degree of edge alignment uncertainty. The peripheral component interface is configured to sample at a frequency of the core clock signal the user clock signal for edge alignment between the user clock signal and the core clock signal. The peripheral component interface is configured to detect edges of the user clock signal and the core clock signal responsive to when such edges are sufficiently aligned for detection. The peripheral component interface is configured to generate an internal clock signal having a pulse. The pulse is generated responsive to the edges being sufficiently aligned for the detecting. The pulse has a phase relationship associated with the user clock signal and has edge positioning associated with the core clock signal. The user-side clock domain is coupled for being clocked responsive to the internal clock signal, and the core-side clock domain is coupled for being clocked responsive to the core clock signal. The degree of edge alignment uncertainty is reduced responsive to use of the edge positioning of the core clock signal in the internal clock signal for clocking of the user-side clock domain.
Accompanying drawings show exemplary embodiments in accordance with one or more aspects of the invention; however, the accompanying drawings should not be taken to limit the invention to the embodiments shown, but are for explanation and understanding only.
In the following description, numerous specific details are set forth to provide a more thorough description of the specific embodiments of the invention. It should be apparent, however, to one skilled in the art, that the invention may be practiced without all the specific details given below. In other instances, well known features have not been described in detail so as not to obscure the invention. For ease of illustration, the same number labels are used in different diagrams to refer to the same items; however, in alternative embodiments the items may be different.
In some FPGAs, each programmable tile includes a programmable interconnect element (“INT”) 111 having standardized connections to and from a corresponding interconnect element 111 in each adjacent tile. Therefore, the programmable interconnect elements 111 taken together implement the programmable interconnect structure for the illustrated FPGA. Each programmable interconnect element 111 also includes the connections to and from any other programmable logic element(s) within the same tile, as shown by the examples included at the right side of
For example, a CLB 102 can include a configurable logic element (“CLE”) 112 that can be programmed to implement user logic plus a single programmable interconnect element 111. A BRAM 103 can include a BRAM logic element (“BRL”) 113 in addition to one or more programmable interconnect elements 111. Typically, the number of interconnect elements included in a tile depends on the height of the tile. In the pictured embodiment, a BRAM tile has the same height as four CLBs, but other numbers (e.g., five) can also be used. A DSP tile 106 can include a DSP logic element (“DSPL”) 114 in addition to an appropriate number of programmable interconnect elements 111. An IOB 104 can include, for example, two instances of an input/output logic element (“IOL”) 115 in addition to one instance of the programmable interconnect element 111. As will be clear to those of skill in the art, the actual I/O pads connected, for example, to the I/O logic element 115 are manufactured using metal layered above the various illustrated logic blocks, and typically are not confined to the area of the I/O logic element 115.
In the pictured embodiment, a columnar area near the center of the die (shown shaded in
Some FPGAs utilizing the architecture illustrated in
Note that
Synchronous clock source 202, which for example may be a phase-locked loop or a delay-locked loop, or some other synchronous clock source, is used to provide core clock signal 203 and user clock signal 204. Core clock signal 203 and user clock signal 204 are synchronous with respect to one another and edge-aligned with respect to one another, although there is some degree of uncertainty with respect to such edge alignment. For purposes of clarity by way of example and not limitation, it shall be assumed that core clock signal 203 and user clock signal 204 are rising-edge-aligned, though falling-edge-aligned signaling may be used.
Core clock signal 203 and user clock signal 204 are provided to respective pads of FPGA 100 and, more particularly, to pads coupled to a hardwired logic block 205 of internal interface 260. Hardwired logic block 205 receives core clock signal 203 and user clock signal 204 to a clock divider circuit 201 thereof. Clock divider circuit 201 may be configured to divide core clock signal 203 responsive to a frequency of user clock signal 204. It should be appreciated that for a user implementation, such as a user design implemented in programmable logic 240, a number of different frequencies may be used for user clock signal 204. There may not be advance knowledge of the particular frequency at which user clock signal 204 is provided. Accordingly, clock divider circuit 201 may be configured to automatically divide core clock signal 203 to provide a divided clock signal 206 output from clock divider circuit 201 with a frequency of user clock signal 204. For the particular example of a PCIe interface, core clock signal 203 may be set at approximately 250 MHz, and thus divided clock signal 206 may be set equal to the 250 MHz frequency or to a fraction thereof. In other words, depending on the frequency of user clock signal 204, clock divider circuit 201 may be configured to allow the division ratios of divide-by-1, -2, and -4, for example.
As described below in additional detail, in order to reduce uncertainty as between user clock signal 204 and core clock signal 203, divided clock signal 206 may be provided with edges aligned to core clock signal 203. Again, for purposes of clarity by way of example and not limitation, rising edge aligned signals are described below in additional detail.
Internal interface 260 includes core logic 215 and user-side data/control logic 210. User-side data/control logic 210 is clocked responsive to divided clock signal 206, and core logic 215 is clocked responsive to core clock signal 203. User-side data/control logic 210 includes data/control interface 211, and core logic 215 includes a transport protocol interface, such as a Gigabit Transceiver Protocol (“GTP”) interface for a PCIe implementation, namely “transport interface 212.” Transport interface 212 is for communicating with one or more external devices 250 external to FPGA 100. Data/control interface 211 is for communicating with programmable logic 240 internal to FPGA 100. For a PCIe implementation, data/control interface 211 includes a LocalLink and a Management Port for data signaling and control signaling, respectively.
Although separate input/output buffers may be used for user-side data/control logic 210 and core logic 215, in this particular example, user-side data/control logic 210 and core logic 215 share input/output buffer 213. A user-side portion of input/output buffer 213 is clocked responsive to divided clock signal 206 and a core side of input/output buffer 213 is clocked responsive to core clock signal 203. This sharing of input/output buffering may be implemented using dual ported random access memory, such as BRAM 103 of FPGA 100.
Accordingly, it should be appreciated that generally there are two clock domains of internal interface 260, namely one operating responsive to divided clock signal 206 and another operating responsive to core clock signal 203. Divided clock signal 206 is used to drive I/Os for communicating to and from programmable logic 240. This forms internal data/control passing of information. Transport interface for communicating with external devices 250 is clocked responsive to core clock signal 203 for controlled input/output passing of information. It should be appreciated that transport interface 212 for a PCIe implementation is a scalable interface. In other words, various bit widths may be used for communicating with external devices 250. However, all communication may be done at the standard set clock rate, which continuing the above example may be approximately 250 MHz.
In the following description, an example implementation of clock divider circuit 201 is provided for automatic division by 1, 2, or 4 of a clock rate of core clock signal 203. Although these particular numerical examples are used, it should be appreciated from the following description that other values may be used for dividing the frequency of core clock signal 203 to provide the frequency of divided clock signal 206.
With reference to
Output of flip-flop 303 is provided as a data input to flip-flop 304, and output of flip-flop 304 is provided as a data input to flip-flop 305. Output of flip-flop 305 is provided as an input to AND gate 312, and another input to AND gate 312 is core clock signal 203. Output of AND gate 312 is divided clock signal 206.
Notably, the number of flip-flops used for clock divider circuit 201 of
Each logic high output from AND gate 311 indicates the rising edge sampled from user clock signal 204 that is aligned with a rising edge of core clock signal 203. These rising edges provide a “gated” output, such as from AND gate 311, to provide a digital rising edge detector. Because output of flip-flop 305 may be a logic 1 for a longer logic high time than one pulse of core clock signal 203, output of AND gate 312, namely divided clock signal 206, may effectively pass individual pulses of core clock signal 203.
Notably, it should be appreciated that clock divider circuit 201A may be transparent to a user. In other words, provided a user inputs a user clock signal 204 of a supported frequency, divided clock signal 206 may be generated without further user involvement. Furthermore, it should be appreciated that flip-flops 301 through 305 are all configured for feed-forward operation. In other words, clock divider circuit 201A is a feed-forward circuit. Thus, by avoiding having to have the capability to reset clock divider circuit 201A, invalid states due to resetting at the wrong time may be avoided. Furthermore, if “garbage” is input to clock divider circuit 201A, N cycles later where N is an integer value of the number of sequential circuits in series, such “garbage” begins clocking out. Thus, invalid states are not stored after a sufficient number of cycles of operation of clock divider circuit 201A.
Output of flip-flop 301 is provided as an input to AND gate 321. Output of flip-flop 302 is provided as another input to AND gate 321. Output of flip-flop 303 is inverted and provided as yet another input to AND gate 321. Lastly, output of flip-flop 304 is inverted and provided as an input to AND gate 321. Output of flip-flop 304 is also provided as an input to OR gate 322. Output of AND gate 321 is provided as another input to OR gate 322. Output of OR gate 322 is provided as a data input to flip-flop 305.
Thus, the direct coupling of output of flip-flop 304 to a data input of flip-flop 305, as described with reference to
In example 402, user clock signal 204 is half the frequency of, and rising-edge phase-aligned with, core clock signal 203. Notably, there may be a degree of leading uncertainty 501 or lagging uncertainty 502 between the rising-edge phase alignment of core clock signal 203 and a leading rising edge 422A or a lagging rising edge 422B of user clock signal 204, as indicated in the enlarged view 500 illustratively shown in
Example 403 is for user clock signal 204 having a quarter of the frequency of core clock signal 203 and having a three-quarter duty cycle, namely a 75% high time and 25% low time duty cycle. Rising edges 431 and 432 respectively of core clock signal 203 and user clock signal 204 may be detected as being sufficiently aligned, as previously described. Accordingly, four cycles later of core clock signal 203, a pulse 433 responsive to detection of aligned rising edges 431 and 432 may be output for providing divided clock signal 206.
In example 404, user clock signal 204 is a quarter of the frequency of core clock signal 203, and user clock signal 204 has a 50/50 duty cycle. Thus, detection of approximately phase-aligned rising edges 441 and 442 respectively of core clock signal 203 and user clock signal 204 may be used to provide an output pulse 443 four clock cycles later for providing divided clock signal 206.
In example 405, user clock signal 204 is a quarter of the frequency of core clock signal 203, and user clock signal 204 has a one-quarter duty cycle, namely 25% high time and 75% low time. In this example, rising edge 451 of core clock signal 203 is approximately phase-aligned with rising edge 452 of user clock signal 204. The detected sufficiently phase-aligned rising edges 451 and 452 cause pulse 453 to be output four clock cycles later for providing divided clock signal 206. These are but a few examples of outputs that may be provided, and accordingly it should be appreciated that other divisors may be used, as well as same or different duty cycles, for providing divided clock signal 206.
In each of examples 402 through 405, an edge of a core clock signal is generally transferred to an edge of an internal user clock signal. For example, in example 402, rising edge 421 of core clock signal 203 is generally transferred to rising edge 423 of divided clock signal 206. As there generally is little or no uncertainty of a clock signal to itself, such as core clock signal 203 to itself, uncertainty as between clock signals, such clock signals 203 and 204, is at least reduced. Additionally, in each of examples 402 through 405, as a rising edge is detected from a supplied clock signal, such as user clock signal 204, as being sufficiently aligned with an edge of a reference clock signal, such as core clock signal 203, such detection causes the edge of the reference clock signal to be generally transferred to an internal clock signal, such as divided clock signal 206. Such transferred edge to such internal clock signal generally maintains the phase relationship of the supplied clock signal with respect to the reference clock signal, though with some latency, and less uncertainty as the transferred edge is of the reference clock signal. Because of a reduction in uncertainty, timing margin in an interface circuit design may be reduced. Accordingly, performance may be enhanced with such a reduction in uncertainty. Notably, because delay associated with internal circuitry is sufficiently well-known, such delay may be accounted for in routing for implementation of a hardwired clock divider circuit 201 to avoid or have an insignificant amount of uncertainty between the internal clock signal and the reference clock signal.
While the foregoing describes exemplary embodiments in accordance with one or more aspects of the invention, other and further embodiments in accordance with the one or more aspects of the invention may be devised without departing from the scope thereof, which is determined by the claims that follow and equivalents thereof. Claims listing steps do not imply any order of the steps. Trademarks are the property of their respective owners.
Patent | Priority | Assignee | Title |
10128828, | Apr 20 2016 | CIRRUS LOGIC INTERNATIONAL SEMICONDUCTOR LTD | Synchronous, internal clock edge alignment for integrated circuit testing |
10871796, | Aug 06 2019 | XILINX, Inc. | Global clock and a leaf clock divider |
11509450, | Jun 29 2007 | Imagination Technologies Limited | Clock frequency adjustment for semi-conductor devices |
11831745, | Jun 29 2007 | Imagination Technologies Limited | Clock frequency adjustment for semi-conductor devices |
Patent | Priority | Assignee | Title |
6128359, | Oct 27 1998 | Intel Corporation | Phase difference magnifier |
6239626, | Jan 07 2000 | Cisco Technology, Inc. | Glitch-free clock selector |
6424180, | Oct 02 1998 | VLSI Technology, Inc. | Digital phase shift amplification and detection system and method |
7173495, | Apr 05 2005 | DIODES INCORPORATED | Redundant back-up PLL oscillator phase-locked to primary oscillator with fail-over to back-up oscillator without a third oscillator |
7227393, | Jun 03 2004 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Method and apparatus for adaptive delay cancellation in high-speed wireline transmitters |
20030128789, | |||
20040086061, | |||
20060158225, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 03 2006 | STADLER, LAURENT FABRIS | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 018145 | /0429 | |
Aug 08 2006 | XILINX, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Nov 25 2013 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Nov 27 2017 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Oct 21 2021 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
May 25 2013 | 4 years fee payment window open |
Nov 25 2013 | 6 months grace period start (w surcharge) |
May 25 2014 | patent expiry (for year 4) |
May 25 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 25 2017 | 8 years fee payment window open |
Nov 25 2017 | 6 months grace period start (w surcharge) |
May 25 2018 | patent expiry (for year 8) |
May 25 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 25 2021 | 12 years fee payment window open |
Nov 25 2021 | 6 months grace period start (w surcharge) |
May 25 2022 | patent expiry (for year 12) |
May 25 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |