The present invention relates generally to programmable systems-on-a-chip and, more particularly, to a system and method for the calibration of a programmable system-on-a-chip.
As the development and implementation of semiconductor projects becomes increasingly complex, there is often a need for additional peripheral circuitry to achieve design objectives. Some examples of peripheral circuitry may include operational and instrumentation amplifiers, filters, timers, digital logic circuits, analog-to-digital converters (“ADCs”), and digital-to-analog converters (“DACs”). Typically, additional peripheral circuitry tends to consume more power and requires additional space and design considerations which can significantly impact the cost and development cycle of a project.
With the advent of the programmable embedded system-on-a-chip, such as the PSoC® processing device, developed by Cypress Semiconductor Corporation, San Jose, Calif., many of the applications that require peripheral components can now be implemented all within a single integrated circuit. The PSoC® integrates configurable and programmable analog and digital functions, memory, and microcontroller functionality in one package. Analog blocks, for instance, can be configured to produce analog filters, comparators, switch capacitors, dual-tone multi-frequency signaling (DTMF) receivers, and programmable, instrumental, inverting, non-inverting, and operational amplifiers. The digital programmable blocks can be configured to implement, for example, counters, timers, pulse-width modulators (PWMs) and calibration algorithms. As integrated circuits become smaller, faster, and more sensitive, various factors during and after manufacturing can affect the performance. For example, during manufacturing, process variations can result in integrated circuits having significant parametric shifts in various electrical properties. In particular, due to the process variations, the analog circuits within the analog blocks may require calibration to trim out all process variations in the circuit, such as in the ADC, DAC, reference circuits, buffers, etc. Calibration can be performed using read-only memories (ROMs), laser trimming, or flash memories.
In one conventional approach, the external calibration circuitry 150 performs calibration routines to set the trim values for the programmable analog blocks 130 of the system 100. Calibration routines performed by the external calibration circuitry 150 are known by those of ordinary skill in the art and additional details regarding their operations have not been described herein.
Additional peripheral circuitry may be undesirable for the reasons discussed above. In another conventional approach, the system 100 uses the microcontroller in the CPU subsystem 120 to calibrate the programmable analog block 130. The microcontroller determines the calibrated values and stores the values in flash memory. Flash memory typically uses at least 1.6 volts for proper operation with the microcontroller. The conventional system 100 does not permit dynamic calibration. In addition, the communication between the programmable analog blocks 130 is inflexible, thereby prohibiting calibration of all available programmable analog blocks 130 with only on-chip resources. This may require additional external calibration circuitry (e.g., 150) to calibrate all available programmable analog blocks 130. In summary, while newer technologies that incorporate a system-on-a-chip provide compact, low power, and cost effective solutions to increasingly complex applications, many analog functional modes of operation require additional external circuitry to perform the necessary calibration algorithms.
The present invention is illustrated by way of example, and not of limitation, in the figures of the accompanying drawings in which:
The following embodiments of the invention relate to a system for calibration. More specifically, embodiments of the present invention relate to a system-on-a-chip that calibrates programmable analog blocks without the use of external components. The following description sets forth numerous specific details such as examples of specific systems, components, methods, and so forth, in order to provide a good understanding of several embodiments of the present invention. It will be apparent to one skilled in the art, however, that at least some embodiments of the present invention may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in a simple block diagram format in order to avoid unnecessarily obscuring the present invention. Thus, the specific details set forth are merely exemplary. Particular implementations may vary from these exemplary details and still be contemplated to be within the spirit and scope of the present invention.
References in the description to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
In one embodiment, the programmable routing fabric 230 has at least two modes of operation, for example, one for normal operations and the other for calibrating the programmable analog blocks 220. The “normal” mode of operation configures the programmable routing fabric 230 to perform conventional routing operations. For example, this may include transferring analog or digital data between the various blocks of the system-on-a-chip 200. The “calibration” mode of operation is configured to route calibration data between the various blocks of the system-on-a-chip 200. For example, the programmable routing fabric 230 may route calibration data between the programmable logic array 260, ADC 240, and the programmable analog blocks 220 in order to calibrate the programmable values of the programmable analog blocks 220. Other variations of data transfer for the calibration of the programmable analog blocks 220 are discussed below. In another embodiment, the programmable routing fabric 230 may include additional modes of operation. For example, the programmable routing fabric 230 may be configured to operate in a dynamic calibration mode in which the programmable analog blocks 220 can be calibrated during operation of the system-on-a-chip (e.g., “on the fly”), as opposed to an initial calibration of the system-on-a-chip 200 during manufacturing or during start-up of the system-on-a-chip 200. In one embodiment, the microcontroller 280 can switch the programmable routing fabric 230 between modes. In another embodiment, the programmable logic array 260 can switch the programmable routing fabric 230 between modes.
In one embodiment, the programmable analog blocks 220 include an interface to the programmable logic array 260, the DMA controller 270, the microcontroller 280 and the non-volatile memory cell 250. Alternatively, the programmable analog blocks 220 may include fewer interfaces. As described above, in one embodiment, the non-volatile memory cell 250 is a NV latch. The system-on-a-chip 200 may include multiple NV latches. Alternatively, the non-volatile memory cell 250 may be a flash memory cell of a flash memory. In one embodiment, calibration data may be stored in both the NV latches, as well as flash memory. For example, the NV latch may store a first calibrated value, and the flash may store a fine-tuned calibrated value.
In one embodiment, the global analog bus may incorporate programmable routing and include an interface to the programmable logic array 260, the DMA controller 270, the microcontroller 280, and the non-volatile memory cell 250. In one embodiment, the programmable logic array 260 may include an interface to the DMA controller 270, the microcontroller 280 and the non-volatile latch. In one embodiment, the DMA controller 270 may include an interface to the microcontroller 280, the NV latch, and flash memory. In one embodiment, the system-on-a-chip 200 is fully integrated on a single silicon substrate. Alternatively, some of the components of the system-on-a-chip 200 may be integrated on multiple substrates.
In operation, the programmable analog blocks 220 are configured in functional modes of operation with programmable values to be calibrated. Some examples of functional modes of operation may include, but are not limited to: ADC's and DAC's, which require trimming for gain and offset errors; buffers and amplifiers trimmed for absolute voltage; and band gap and regulators trimmed for absolute accuracy. In one embodiment, the output signal of the programmable analog blocks 220 are transferred to the ADC 240 via the global analog bus where the analog output signals are digitized for subsequent digital processing by the microcontroller 280 and/or the programmable logic array 260. The ADC 240 then sends the digitized output signals to the programmable logic array 260 and/or the microcontroller 260. In one embodiment, the programmable logic array 260 is configured to apply a dynamic, iterative calibration algorithm to the digitized output to minimize the difference between the current digitized output signal and a predetermined output value to generate a calibration value. For example, if a programmable analog block 220 is configured as a band gap reference to be set at 1.25V, the programmable logic array 260 dynamically and iteratively calibrates the programmable analog block 220 until its output is within a predetermined range of the target reference voltage. In one embodiment, the programmable logic array 260 utilizes the calibration value to calibrate the programmable value of the programmable analog block 220. For example, the programmable logic array 260 can store the calibrated data in the non-volatile memory cell 250 (e.g., a NV latch, a flash cell, or any combination thereof). Alternatively, the programmable logic array 260 may perform any type of calibration routine to determine the calibrated values for the programmable analog blocks 220 as would be appreciated by one of ordinary skill in the art having the benefit of this disclosure. In this embodiment, the programmable logic array 260 can perform the calibration routines independent of the microcontroller 280. This may free up the microcontroller 280 to perform other operations or to be powered down or off while the programmable logic array 260 performs the calibration. In another embodiment, the programmable logic array 260 can calibrate the programmable analog blocks 220 using the microcontroller 280. For example, after the programmable logic array 260 has calibrated the values, the microcontroller 280 can read the calibrated values and store the calibrated values in the non-volatile memory cell 250. In another embodiment, the system-on-a-chip 200 can be configured to allow the microcontroller 280 to run the calibration routines with or without help from the programmable logic array 260. By having multiple configuration options, the system-on-a-chip 200 can provide various solutions to disparate applications.
In one embodiment, the calibration value is stored in the non-volatile memory cell 250. The non-volatile memory cell 250 may include any non-volatile memory or storage device that can retain electronic data when power is not applied. Some non-limiting examples include flash memory, ROMs, EPROMs, magnetic computer storage devices, and optical storage devices. In one embodiment, the non-volatile memory cell 250 is a memory cell of a non-volatile memory (NVM), such as, for example, a flash memory. In another embodiment, the non-volatile memory cell is an NV latch as described below. In another embodiment, the calibrated value can be stored in both the NV latch and the flash memory. In another embodiment, the NV latch stores a first calibrated value and the flash memory stores additional calibration information.
In one embodiment, the DMA controller 270 transfers the calibration value from the non-volatile memory cell 250 to the associated programmable analog block 220, independent of the microcontroller 280, which, in one embodiment, calibrates the programmable value of the programmable analog block 220. In another embodiment, the DMA controller 270 transfers the calibration value from the non-volatile memory cell 250 in connection with the microcontroller 280.
As described above, typically flash memory uses at least 1.6 volts for operation, and requires the microcontroller 280 to be booted and operational to access the flash memory. However, in one embodiment, when using a NV latch, the DMA controller 270 can independently access the NV latch and load the calibrated values into the corresponding programmable analog block 220 before the microcontroller 280 is booted. Thus, the calibrated values can be loaded or applied to the one or more programmable analog blocks 220 independent of the microcontroller 280 or without interaction with the microcontroller 280. For example, the programmable logic array 260, in connection with the DMA controller 270, can access the non-volatile memory cell 250 to retrieve the calibrated values that were previously determined by the programmable logic array 260 and stored in the non-volatile memory cell 250, and can apply the calibrated values to the one or more programmable analog blocks 220 via the programmable routing fabric 230. In one embodiment, the NV latches operate at 1.2 volts, and thus, can be used to calibrate the one or more programmable analog blocks 220 using lower power than when using flash memory. In another embodiment, the NV latches, storing the calibrated value, can apply the calibrated value on a direct connection with the programmable analog block 220 when the programmable analog block 220 is powered on. This may allow the analog block 220 to be calibrated before the DMA controller 270, the programmable logic array 260, and the microcontroller 280 are powered on. In another embodiment, once the NV latch provides the calibrated value to the programmable analog block 220, the DMA controller 270 can be powered on to read the flash memory and load additional calibration information into the programmable analog block 220. In one embodiment, the programmable logic array 260 can instruct the DMA controller 270 to access the flash memory and apply the calibrated values to the programmable analog block 220 independent of the microcontroller 280 and/or before booting the microcontroller 280. In yet another embodiment, the microcontroller 280 can instruct the DMA controller 270 to access the flash memory and apply the calibrated values to the programmable analog block 220 with or without using the programmable logic array 260.
When using NV latches, in one embodiment, the DMA controller 270 may transfer the calibration values stored in the NV latches to the programmable analog blocks 220 via the programmable routing fabric 230 prior to microcontroller 280 booting up. This may improve the efficiency and speed of the calibration process of the programmable analog blocks 220. For example, in one embodiment, the NV latch bits can operate at 1.2V so that programmable analog blocks, such as references and regulators, which may be calibrated at a 1.2V reference voltage, may be calibrated before the microcontroller 280 reaches operating voltage levels to ensure accurate operation at system boot up. Typically, microcontroller 280 operative voltages are 3.3V or 5V, and, as described above, typically flash memory operates at 1.6 volts. Thus, the NV latches can be used to reduce the power used during calibration of the analog programmable blocks 220 and can be used to apply the calibrated values to the programmable analog blocks 220 sooner in the boot up process. In another embodiment using the NV latches, the programmable logic array 260 applies the calibrated values to the programmable analog blocks 220 after the microcontroller 280 has been booted. In one embodiment, since the programmable logic array 260 can access the non-volatile memory cell 250 using the DMA controller 270, the programmable logic array 260 can calibrate the programmable analog blocks 220 without the microcontroller 280. In another embodiment, the programmable logic array 260 can calibrate the programmable analog blocks 220 with the help of the microcontroller 280. However, even if the programmable logic array 260 uses the microcontroller 280 to calibrate the programmable analog blocks 220, the calibrated values can be applied to the programmable analog blocks 220 from the non-volatile memory cell 250 independent of, and without interaction with the microcontroller 280. For example, the NV latches can directly apply the calibrated values to the programmable analog blocks 220 when the programmable analog blocks 220 are powered on, or the programmable logic array 260 can apply the calibrated values to the programmable analog blocks 220 before booting the microcontroller 280. For example, the programmable logic array 260, using the DMA controller 270, may independently transfer data from the non-volatile memory cell 250 to any of the various blocks of system-on-a-chip 200, including, but not limited to, all programmable analog blocks 220 and the programmable logic array 260, just like the DMA controller 270 can do with the microcontroller 280 when the microcontroller 280 is operational. In an alternative embodiment of the present invention, the microcontroller 280 may direct the transfer of the calibration values from the non-volatile memory cell 250 to the programmable analog blocks 220.
In another embodiment, calibration may be achieved by firmware, hardware, software, or any combination thereof, in conjunction with the microcontroller 280. For example, the microcontroller 280 may execute software that instructs a programmable analog block 220 in a particular mode of operation to output a value to the ADC 240 via the programmable routing fabric 230. The ADC 240 digitizes the analog output of the programmable analog block 220 and the software determines if the output falls within a predetermined range. In one embodiment, the microcontroller 280 applies a dynamic, iterative calibration algorithm to the digitized output to minimize the difference between the current digitized output signal and a predetermined output value to generate a calibration value as described above. The microcontroller 280 can switch the programmable routing fabric 230 to the calibration mode while performing a calibration routine, and then switch to the programmable routing fabric 230 to the normal mode after performing the calibration routine. As described herein, in other embodiment, the programmable logic array 260 can perform the calibration. In this embodiment, the programmable logic array 260 can switch the programmable routing fabric 230 to the appropriate mode.
Referring to
Next, the processing logic transfers the output of the programmable analog block 220 to an ADC 240 via the global analog bus (block 320). In one embodiment, the global analog bus is the analog routing fabric of the programmable routing fabric 230. The ADC digitizes the analog output values of the programmable analog block 220. At block 330, the ADC transfers the digitized analog output values to the programmable logic array 260 via the programmable routing fabric 230.
At block 340, the processing logic performs a dynamic iterative calibration algorithm to the digitized output to minimize the difference between the current digitized output signal and a predetermined output value to generate a calibration value. In one embodiment, the programmable logic array 260 performs the dynamic iterative calibration algorithm. In another embodiment, the microcontroller 280 and the programmable logic array 260 perform the iterative calibration algorithm. Alternatively, other types of calibration algorithms can be implemented as would be appreciated by one of ordinary skill in the art having the benefit of this disclosure. The calibration value is used to calibrate the programmable values of the programmable analog blocks 220. In one embodiment, the analog routing fabric is configured in the “calibration” mode of operation throughout the calibration process as described in
At block 350, the processing logic transfers the calibration value to the programmable analog block 220 via the programmable routing fabric 230 to calibrate the programmable value. If at block 360, the processing logic determines that the newly calibrated programmable analog block 220 output value is not within a predetermined range, the processing logic repeats blocks 320 through 350 in an iterative process until calibration is achieved. It should be noted that when using other non-iterative calibration algorithms, the processing logic may not repeat blocks 320 through 350.
If at block 360, the processing logic determines that the programmable analog block 220 is calibrated, the processing logic stores the calibration value in the non-volatile memory cell 250 (block 370). The non-volatile memory cell 250 may include any non-volatile storage device that can retain electronic data when power is not applied. Some non-limiting examples include flash memory, ROMs, EPROMs, magnetic computer storage devices, and optical storage devices. In addition, the calibration data may be stored in the NV latches as described in
Subsequent to storing the calibration value into the non-volatile memory cell, the processing logic can apply the calibration value to the programmable analog block 220 when the system-on-a-chip 200 is powered on. For example, the non-volatile memory cell can directly apply the calibrated values to the programmable analog block 220 when the programmable analog block 220 is powered on. In another embodiment, the DMA controller 270 can independently transfer the calibration data from the non-volatile memory cell 250 to the programmable analog block 220. For example, in subsequent booting sequences, after the calibration values are saved in the non-volatile memory cell 250, the DMA controller 270 can transfer the calibration data to the programmable analog block 220 without instructions from or other interactions with the microcontroller 280.
Referring to
In one embodiment, the microcontroller 580 configures the programmable analog blocks in the programmable analog system 510 in one of a variety of functional modes of operation to be calibrated, as described above in
In one embodiment, the microcontroller 680 configures the programmable analog blocks in the programmable analog system 610 in one of a variety of functional modes of operation to be calibrated, as described above in
Once the final calibration value is determined, the programmable logic array 660 may store the calibration value in the flash memory 655 or non-volatile latches 650. In one embodiment, the microcontroller 680 reads the final calibration value from the programmable logic array 660 and transfers it to the flash memory 655 for storage. In another embodiment, the microcontroller 680 transfers the final calibration value to an NV latch 650. Alternatively, the final calibration value may be transferred to memory independently of the microcontroller 680. For example, in one embodiment, the programmable logic array 660 transfers the final calibration value to the flash memory 655 and/or NV latch 650 for storage using the DMA controller 670. In another embodiment, multiple paths or memory locations may be used to store the final calibration value. For example, the microcontroller 680 may read the final calibration value from the programmable logic array 660 and transfer it to the flash memory 655, while the programmable logic array 660 transfer the final calibration value to NV latch 650 independently.
The programmable analog blocks may receive the final calibration value from multiple sources. In one embodiment, the NV latch 750 is directly connected to the programmable analog system 710 so the final calibration value may be directly loaded and immediately available in the appropriate programmable analog block, independent of both the DMA controller 770 and microcontroller 780. The benefits associated with a direct loading scheme using NV latches are discussed in
In one embodiment, the final calibration value may be loaded via the flash memory 755 and DMA controller 770. The DMA controller 770 receives the final calibration value from the flash memory 755 and loads the final calibration value in the appropriate programmable analog block. In one embodiment, the programmable logic array 260 can instruct the DMA controller 770 to apply the final calibration value, stored in flash memory 755, to the appropriate programmable analog block independent of the microcontroller 780. In another embodiment, the microcontroller 780 can instruct the DMA controller 770 to apply the final calibration value stored in flash memory 755. In yet another embodiment, the microcontroller 780 receives the final calibration value directly from the flash memory 750 and loads it into the appropriate programmable analog block. In this embodiment, the microcontroller 780 must complete boot up and requires CPU cycles to read from the flash memory 755 and apply the final calibration value to the appropriate programmable analog block.
Alternatively, the programmable analog blocks may receive calibration data from a combination of sources. In one embodiment, the programmable analog block receives a first calibration value from the NV latch 750, then additional calibration data from the flash memory 755 (e.g., via the DMA controller 770 and/or the microcontroller 780). For example, in one embodiment, the programmable analog blocks may receive “rough” or low resolution calibration data from the NV latches 750 and “fine” or higher resolution calibration data from the flash memory 755 via the DMA controller 770, microcontroller 780, or a combination of both. The advantages of using a hybrid methodology would be appreciated by one of ordinary skill in the art having the benefit of this disclosure.
While particular elements, embodiments, and applications of the present invention have been shown and described, it is understood that the invention is not limited thereto because modifications may be made by those skilled in the art, particularly in light of the foregoing teaching. It is therefore contemplated by the appended claims to cover such modifications and incorporate those features which come within the spirit and scope of the invention.
It should be appreciated that references throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention. In addition, while the invention has been described in terms of several embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described. The embodiments of the invention can be practiced with modification and alteration within the scope of the appended claims. The specification and the drawings are thus to be regarded as illustrative instead of limiting on the invention.
This application is a continuation of U.S. application Ser. No. 13/367,212, filed Feb. 6, 2012, which claims priority to U.S. patent application Ser. No. 12/776,565, filed May 10, 2010, now U.S. Pat. No. 8,125,360, which claims the benefit of U.S. Provisional Application No. 61/176,923, all of which are incorporated by reference herein in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
5511095 | Inoue et al. | Apr 1996 | A |
5600678 | Petranovich et al. | Feb 1997 | A |
6384753 | Brooks et al. | May 2002 | B1 |
6614320 | Sullam et al. | Sep 2003 | B1 |
6678861 | Jones et al. | Jan 2004 | B1 |
20050146452 | Kuyel | Jul 2005 | A1 |
20090292937 | Bakker et al. | Nov 2009 | A1 |
Entry |
---|
U.S. Appl. No. 12/776,565: “On-Chip Calibration Method”, Harold Kutz, filed May 10, 2010; 31 pages. |
USPTO Non Final Rejection for U.S. Appl. No. 13/367,212 dated Sep. 18, 2013; 5 pages. |
USPTO Non-Final Rejection for U.S. Appl. No. 12/776,565 dated Nov. 14, 2011; 6 pages. |
USPTO Notice of Allowance for U.S. Appl. No. 12/776,565 dated Dec. 23, 2011; 5 pages. |
USPTO Notice of Allowance for U.S. Appl. No. 13/367,212 dated Dec. 4, 2013; 7 pages. |
Number | Date | Country | |
---|---|---|---|
61176923 | May 2009 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13367212 | Feb 2012 | US |
Child | 14150627 | US | |
Parent | 12776565 | May 2010 | US |
Child | 13367212 | US |