A programmable integrated circuit is disclosed that includes a nonvolatile memory cell programmed to represent a configuration bit associated with a special purpose function. A volatile memory cell is associated with the nonvolatile memory cell. The integrated circuit includes a logic gate for logically combining states of the volatile and nonvolatile memory cells to selectively enable the special purpose function, even before the volatile memory cell is initialized. In this way, the predetermined function can be executed prior to a complete initialization of the integrated circuit.
|
1. A programmable integrated circuit comprising:
at least one nonvolatile memory cell programmed to represent a configuration bit, the configuration bit associated with at least one function implemented in the integrated circuit; at least one volatile memory cell associated with the at least one nonvolatile memory cell; and at least one logic gate for logically combining a first output associated with the at least one nonvolatile memory cell with a second output associated with the at least one volatile memory cell resulting in a combined configuration bit, wherein the at least one function is selectively enabled based on the combined configuration bit and wherein the at least one function is operable to be executed prior to a complete initialization of the integrated circuit.
14. A method of initializing a programmable integrated circuit, the method comprising:
programming at least one nonvolatile memory cell to represent a state of a configuration bit, the configuration bit associated with at least one function implemented in the integrated circuit; providing to functional circuitry associated with the at least one function, output from at least one logic gate for logically combining a first state associated with the at least one nonvolatile memory cell with a second state associated with at least one volatile memory cell associated with the at least one nonvolatile memory cell resulting in a combined configuration bit, wherein the at least one function is selectively enabled based on the combined configuration bit and wherein the at least one function is operable to be executed prior to a complete initialization of the integrated circuit; and transferring information from the at least one nonvolatile memory cell to the volatile memory cell associated with the at least one nonvolatile memory cell.
18. An electronic system for use in connection with a programmable integrated circuit, the system comprising:
means for accessing a stored state of at least one nonvolatile memory cell to represent a state of a configuration bit, the configuration bit associated with at least one function implemented in the integrated circuit; means for transferring information from the at least one nonvolatile memory cell to at least one volatile memory cell associated with the at least one nonvolatile memory cell, the at least one volatile memory cell having a predetermined power-up state; and means for providing to functional circuitry associated with the at least one function, output from at least one logic gate for logically combining a first state associated with the at least one nonvolatile memory cell with a second state associated with the at least one volatile memory cell resulting in a combined configuration bit state, wherein the at least one function is selectively enabled based on the combined configuration bit state and wherein the at least one function is operable to be executed prior to a complete initialization of the integrated circuit.
2. The integrated circuit as set forth in
3. The integrated circuit as set forth in
4. The integrated circuit as set forth in
5. The integrated circuit as set forth in
6. The integrated circuit as set forth in
7. The integrated circuit as set forth in
8. The integrated circuit as set forth in
9. The integrated circuit as set forth in
10. The integrated circuit as set forth in
11. The integrated circuit as set forth in
12. The integrated circuit as set forth in
13. The integrated circuit as set forth in
15. The method as set forth in
16. The method as set forth in
17. The method as set forth in
providing a hold-off circuit in connection with the integrated circuit; receiving at a hold-off pin associated with the hold-off circuit, a hold-off signal; and based on the hold-off signal, selectively inhibiting the integrated circuit from initializing.
19. The system as set forth in
20. The system as set forth in
21. The system as set forth in
a hold-off circuit in connection with the integrated circuit; means for receiving at a hold-off pin associated with the hold-off circuit, a hold-off signal; and means for selectively inhibiting the integrated circuit from initializing, based on a state of the hold-off signal.
|
The present invention relates to providing configuration information to an integrated circuit, and more particularly to a method and apparatus for providing configuration information to a selectable function prior to a complete initialization of the integrated circuit.
Today's digital logic based electronic systems can have a logic complexity implemented in hardware comparable to the logic employed in software systems developed only a few years ago. Many such systems have achieved this complexity by relying on complex programmable logic devices (CPLD) to perform data processing, manipulation, and control.
Because CPLDs are re-programmable, designers can easily and very inexpensively change their designs. This allows designers to optimize their designs and continue to add new features, thus enhancing their products.
CPLDs offer a high level of integration, including a large number of system gates per unit area, and are available in very small packages. This provides a good solution for designers of products that must fit into small enclosures or that have a limited amount of circuit board space to implement a particular logic design.
CPLDs typically include an array of logic function generators or configurable logic elements, input/output ports, and a matrix of interconnect lines. The matrix of interconnect lines generally surrounds the configurable logic elements and connects logic data signals among the various configurable logic elements and between the configurable logic elements and the input/output ports.
A CPLD is re-programmable because the logical relationship between its inputs and outputs is controlled by configuration information contained in a configuration memory associated with the CPLD. The configuration memory is comprised of memory cells that define an interconnection of logic elements, including connection of outputs of some elements to the inputs of other logical elements. It is advantageous to store such configuration information in nonvolatile memory, such as electrically erasable programmable read only memory (EEPROM), or flash memory, because configuration information stored in nonvolatile memory persists even after electrical power is disconnected from a particular device.
In a conventional CPLD, values of particular EEPROM cells are provided directly to logic components within the CPLD. In order to provide the value of a particular state of a particular EEPROM memory cell, a sense amplifier is required to determine the state of the stored bit of information from within the EEPROM. Unfortunately, the sense amplifiers associated with EEPROM memory consume a significant amount of power when they are enabled. Accordingly, while it is possible to use a purely EEPROM based CPLD, such devices have the serious shortcoming of consuming significant amounts of power, for example as much as 30-40 mA or more at about 2.5 V.
Volatile memory, such as SRAM, can also be used to provide interconnection information to the logic resources associated with a CPLD. For example, SRAM-based CPLDs provide logical configuration information to a CPLD without the sense amplifiers required for use in connection with EEPROMs. In contrast to EEPROMs, SRAM cells consume relatively little power while enabled and operating. Accordingly, reading from SRAM cells consumes relatively little power in comparison to reading from EEPROM cells. To address this power problem and other problems, CPLDS have been designed that employ both volatile and nonvolatile memory. Such CPLDs include the CoolRunner II family of CPLDs available from Xilinx, Inc. of San Jose, Calif. In these CPLDS, configuration information is persistently stored in EEPROM and transferred to SRAM upon initialization of the CPLD. This transfer or initialization process can take from approximately 20 μs to approximately 100 μs, and, in some cases, can take much longer, for example up to 1 second. Once the configuration information has been transferred from the EEPROMs to the SRAMs, the EEPROMs and associated sense amplifiers can be disabled, thereby conserving a significant amount of power.
CPLDs that employ both volatile and nonvolatile memory, however, suffer from the drawback that they do not operate until all of the configuration information has been transferred from the nonvolatile memory to the volatile memory. During this transfer time, some CPLDs place all of the I/O pins into a high impedance state to avoid adverse affects to the system in which the CPLD is operating.
In some CPLD target systems, particularly target systems having multiple system voltages, it can take a significant period of time for the target system to reach an initial stable system-power level. As described above, it takes a significant amount of time for the nonvolatile memory to be transferred to the volatile memory (more than about 20 μs). Furthermore, the CPLD should not begin operation (including nonvolatile to volatile memory transfer) until the CPLD has stable system power and until the target system is otherwise ready for the CPLD to begin operation. Unfortunately, the CPLD cannot use a general purpose I/O pin, for example, to receive a status indication that power is stable and the target system is ready for the CPLD to begin operation if that pin is in a high impedance state. The fact that the CPLD should not begin operation until the target system is ready combined with the fact that the CPLD cannot determine whether the target system is ready without first completing initialization can be characterized as a chicken-and-egg problem.
Accordingly, it would be beneficial to provide, for example, a "hold off" input pin on a CPLD to tell the CPLD to wait for a stable, relatively noise-free system power level before beginning initialization of the SRAM, and thereby solve the chicken-and-egg problem. This could be accomplished using a dedicated pin on a CPLD; however, it would be advantageous to preserve as many I/O pins in a particular package associated with a CPLD for actual use as logical inputs and outputs in system design rather than to waste a pin for a dedicated "hold off" function, for example, that is not needed in a particular application.
Accordingly, there is a need for methods and systems that overcome the problems associated with CPLDs, without requiring dedicated pins.
A programmable integrated circuit is provided, including one or more nonvolatile memory cells programmed to represent configuration bits associated with a special purpose function or functions. Corresponding volatile memory cells are associated with the nonvolatile memory cells, and in the preferred embodiment, after initialization of the integrated circuit, the volatile memory cells take on the data values stored in the nonvolatile memory cells. The integrated circuit includes a logic gate for logically combining outputs of the volatile and nonvolatile memory cells for selectively enabling the special purpose function or functions, even before the volatile memory cells are initialized. In this way, the predetermined function can be executed prior to a complete initialization of the integrated circuit.
In the context of using SRAM in connection with an EEPROM CPLD to reduce power consumption by transferring contents of the EEPROM to the SRAM at initialization and then disabling the EEPROM and associated sense amplifier, methods and apparatus consistent with the present invention provide a useful solution to the chicken-and-egg problem associated with CPLDs that use this shadow memory. Specifically, the present invention provides an enable circuit for a special purpose function that, for example, provides hold-off functionality in a CPLD until the CPLD's target system becomes ready for the CPLD to begin operation.
It will be understood that embodiments of the present invention can be used in connection with integrated circuits other than CPLDS, and that the special purpose function can be chosen from functions other than a hold-off function without departing from the teachings of the present invention. For example, a pass gate function can be substituted for the hold-off function. A pass gate is a logical element that selectively allows a data signal to pass (or not pass) through the gate based on a control signal. For another example, a pin termination assignment function can be the special purpose function. The pin termination assignment function sets the internal termination (such as various pull up, pull down, or high impedance states) to be used for an I/O pin or pins. An advantage of enabling a pin termination assignment function prior to complete initialization of the integrated circuit is that the effect on a signal bus is more benign for hot swap applications.
Further, a data multiplexing or demultiplexing function can be employed. In its simplest form, a multiplexer routes a selected one of a plurality of signals onto a single output. It is understood that complex multiplexers can selectively route a subset of a plurality of signals onto a number of output lines. A demultiplexer performs the inverse operation, in which a signal or set of signals is selectively routed onto a selected subset of a plurality of output signals. Alternatively, an arbitrary combinational or sequential logic function can embody the special purpose function.
Further, in yet another alternative embodiment, CPLD devices consistent with the present invention incorporate configurable data security features that are operable to protect the CPLD logic configuration information from unauthorized reading or inadvertent device erasure or reprogramming. Such a special purpose security function is optionally enabled in connection with the pre-initialization circuitry taught in connection with the present invention. These and other functions may be employed without departing from the scope of the present invention.
Exemplary embodiments of the present invention relate generally to portions of an integrated circuit, such as CPLD 100 (as shown in FIGS. 1 and 2), that operate in connection with a function, such as special purpose function 160 (
Referring specifically to
Nonvolatile memory 110 is comprised of a number of nonvolatile memory cells 112 that, in a preferred embodiment, are arranged in a matrix of rows and columns. Similarly, volatile memory 120 is comprised of volatile memory cells 122 that are also preferably arranged in rows and columns. In one embodiment, nonvolatile memory 110 and volatile memory 120 each have substantially the same number of memory cells.
Consistent with the present invention, at least one of the nonvolatile memory cells 114 and at least one of the volatile memory cells 124 are designated as pre-initialization configuration bits. It will be apparent that any number of pre-initialization configuration bits can be employed without departing from the teachings of the present invention. Also, one or more special purpose functions may be controlled by a single pair (one nonvolatile bit and one volatile bit) of pre-initialization bits. Further, a number of special purpose functions can be employed, such as hold-off, pass gate, pin termination assignment, multiplexing/demultiplexing, and combinational and sequential logic.
In one embodiment, pre-initialization configuration bits 114, 124 are specifically associated with a particular special purpose function, such as special purpose function 160. To accomplish pre-initialization enabling of special purpose function 160, a logic gate 166 is used to combine the states of pre-initialization configuration bits 114, 124 to produce an enable signal 182 that is operable to enable special purpose function 160. In one embodiment, each of the cells of volatile memory 120 takes on an initial state of logic zero when powered up. However, it will be understood that other initial states of volatile configuration memory cells can be used with a corresponding change to logic gate 166 without departing from the teachings of the present invention.
In an embodiment, when CPLD 100 is initially powered up, volatile pre-initialization configuration bit 124 is initially in a state of logic zero, for example by virtue of the design of volatile memory 120 or by an earlier preliminary memory initialization process. Accordingly, since bit 124 is zero and logic gate 166 as shown is implemented as a logical OR gate, the state of nonvolatile pre-initialization configuration bit 114 determines the output state of logic gate 166 and, therefore, the state of special purpose function enable bit 182. As a result, if pre-initialization configuration bit 114 in nonvolatile memory 110 is enabled, special purpose function 160 will be enabled. If bit 114 is not enabled, special purpose function 160 will not be enabled.
Control bus 168 is connected (connections not shown) to various components of the CPLD that are controlled by control circuitry 164. For example, control circuitry 164 facilitates the preferred transferring of information from nonvolatile memory, 110 to volatile memory 120 during initialization of the CPLD.
Special purpose function 160 typically receives external input signals by way of external input pins 184. Optionally, special purpose function 160 can generate external outputs that are asserted on external output pins 186. Although different pins are identified as input and output, special purpose function 160 could also be designed to use a single pin as either input or output depending on design considerations.
Special purpose function 160 can also provide output signals to other parts of the CPLD. For example, the special purpose function can provide signal (or signals) 188 to configurable logic 140 to set the state of a latch within configurable logic 140. The special purpose function can also, optionally, provide information to input/output circuitry 150 and to control circuitry 164 associated with CPLD 100. By way of signal 188, the special purpose function can provide information to control circuitry 164 to delay completion of the initialization of the CPLD, for example.
Input and output pins 184, 186 that are optionally in communication with special purpose function 160 are preferably not dedicated pins. In the preferred embodiment, pins 184 and 186 can be used as general purpose I/O pins 192 that are controlled by configurable logic 140 through input/output circuitry 150. Accordingly, pins 184, 186 are either coupled with special purpose function 160 through input/output circuitry 150, or pins 184, 186 are directly connected both to special purpose function 160 and to input/output circuitry 150. In the latter embodiment, if special purpose function 160 is enabled, input/output circuitry 150 does not drive pins 184, 186. If special purpose function 160 is not enabled, it does not drive the pins 184, 186, so the pins can be used by configurable logic 140, control circuitry 164, or other components in CPLD 100.
Additionally, other system resources 220 may have operations that must be completed after an initial power-up before the rest of the board can commence operation. In this example, the ready signals from the power supplies, and an initialization complete signal 221 from other system resources 220 are combined using logic gate 230 to indicate whether certain devices need to hold off before completing their initialization. In this example, logic gate 230 is a logical NAND gate so that it asserts a logical one on the hold-off signal until power converters 212, 214, and 216, and other system resources 220 indicate that they have completed their respective initializations.
Accordingly, in this example, when the hold-off pin 248 changes state from logical one to logical zero, an input to hold-off function 162 detects that the CPLD no longer needs to hold-off completion of its internal initialization, and transfer of information from the nonvolatile memory to the volatile memory can be completed. This can be communicated from hold off function circuitry 162 to control circuitry 164, which controls, for example, the timing of initialization of CPLD 100. Hold-off function circuitry 162 is enabled in connection with enable pin 182, which signal is generated in connection with logic gate 166 based on the outputs of nonvolatile memory cell 114 and volatile memory cell 124. Once CPLD initialization is complete and the configuration information is transferred from the nonvolatile memory to the volatile memory, normal operation of the CPLD commences and the nonvolatile memory, for example an EEPROM, can be turned off to conserve energy. In an embodiment, when the EEPROM is disabled, configuration cell 114 presents a signal that logic gate 166 interprets as a logical zero. Therefore, the information that was transmitted from nonvolatile configuration cell 114 to volatile configuration cell 124 causes enable output 182 of logic gate 166 to be preserved and consistent in its state during pre-initialization periods and after initialization.
The present invention is described in connection with a CPLD for purposes of illustration only. It will be understood that the teachings of the present invention are similarly applicable to other types of integrated circuits, such as, for example, microprocessors. The act of logical combination of the configuration signals is described in connection with a logical OR gate. However, it is understood that negative logic could be used in connection with a logical NAND gate and that other logical combinations and substitutions can be employed without departing from the teachings of the present invention. The above description of the invention is intended to be illustrative and not limiting. Other embodiments of this invention will be apparent to those skilled in the art in view of the above disclosure.
Patent | Priority | Assignee | Title |
6980025, | Sep 02 2003 | Agate Logic, Inc | Programmable function generator and method operating as combinational, sequential, and routing cells |
7081771, | Feb 20 2004 | Lattice Semiconductor Corporation | Upgradeable and reconfigurable programmable logic device |
7167405, | Sep 19 2005 | Lattice Semiconductor Corporation | Data transfer verification systems and methods |
7215139, | Feb 20 2004 | Lattice Semiconductor Corporation | Upgradeable and reconfigurable programmable logic device |
7375549, | Feb 09 2006 | Lattice Semiconductor Corporation | Reconfiguration of programmable logic devices |
7378871, | Nov 30 2004 | SOCIONEXT INC | Programmable device with structure for storing configuration information |
7378873, | Jun 02 2006 | Lattice Semiconductor Corporation | Programmable logic device providing a serial peripheral interface |
7417455, | Sep 02 2003 | Agate Logic, Inc | Programmable function generator and method operating as combinational, sequential and routing cells |
7459931, | Apr 05 2006 | Lattice Semiconductor Corporation | Programmable logic devices with transparent field reconfiguration |
7495970, | Jun 02 2006 | Lattice Semiconductor Corporation | Flexible memory architectures for programmable logic devices |
7538574, | Dec 05 2005 | Lattice Semiconductor Corporation | Transparent field reconfiguration for programmable logic devices |
7554358, | Apr 05 2006 | Lattice Semiconductor Corporation | Programmable logic devices with user non-volatile memory |
7570078, | Jun 02 2006 | Lattice Semiconductor Corporation | Programmable logic device providing serial peripheral interfaces |
7957208, | Jun 02 2006 | Lattice Semiconductor Corporation | Flexible memory architectures for programmable logic devices |
Patent | Priority | Assignee | Title |
5128559, | Aug 30 1990 | SGS-Thomson Microelectronics, Inc. | Logic block for programmable logic devices |
5402014, | Jul 14 1993 | STMicroelectronics, Inc | Peripheral port with volatile and non-volatile configuration |
6038400, | Sep 27 1995 | Analog Devices International Unlimited Company | Self-configuring interface circuitry, including circuitry for identifying a protocol used to send signals to the interface circuitry, and circuitry for receiving the signals using the identified protocol |
6531887, | Jun 01 2001 | Macronix International Co., Ltd. | One cell programmable switch using non-volatile cell |
6558967, | Feb 17 2000 | SAMSUNG ELECTRONICS CO , LTD | Multi-bit-per-cell memory system with numbers of bits per cell set by testing of memory units |
6577534, | Aug 22 2000 | Renesas Electronics Corporation | Non-volatile semiconductor memory device having a low defective rate |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jan 07 2003 | WIRTZ, FRANK C , II | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013655 | /0367 | |
Jan 08 2003 | Xilinx Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Feb 08 2008 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 10 2012 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Feb 10 2016 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 10 2007 | 4 years fee payment window open |
Feb 10 2008 | 6 months grace period start (w surcharge) |
Aug 10 2008 | patent expiry (for year 4) |
Aug 10 2010 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 10 2011 | 8 years fee payment window open |
Feb 10 2012 | 6 months grace period start (w surcharge) |
Aug 10 2012 | patent expiry (for year 8) |
Aug 10 2014 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 10 2015 | 12 years fee payment window open |
Feb 10 2016 | 6 months grace period start (w surcharge) |
Aug 10 2016 | patent expiry (for year 12) |
Aug 10 2018 | 2 years to revive unintentionally abandoned end. (for year 12) |