Abstract:
An apparatus comprising a first circuit and a second circuit. The first circuit may be configured to generate a plurality of signals in response to one or more input signals. The second circuit may be configured to generate one or more control signals in response to said plurality of signals. The one or more control signals may control one or more non-logic features.

Description:
FIELD OF THE INVENTION 
     The present invention relates to a method and/or architecture of a programmable logic device generally and, more particularly, to real time programmable control of features in a programmable logic device (PLD). 
     BACKGROUND OF THE INVENTION 
     A programmable logic device (PLD) allows programmable logic to be implemented in an integrated circuit. Conventional PLDs have configuration bits that select low power, slew rate, and I/O drive standards. The configuration bits are programmed when a design is created. The configuration bits (and thus the features controlled by the configuration bits) cannot be changed while the device is operating (i.e., in real time). If the feature selections need to be changed, the conventional programmable logic device must be reprogrammed. 
     The use of configuration bits requires that feature settings be determined at the time the PLD design is compiled and programmed. Because the configuration bits are fixed, the design of a PLD can require compromises. For example, a low-power feature may be desirable for a majority of the time a PLD is operating. However, if one particular set of operations requires a faster high-power mode, the conventional PLD design will be unable to take advantage of the low-power feature. 
     Inherently low power PLDs such as the “Cool-Runner” family from Xilinx (formally from Philips) use a full CMOS implementation for the product term array eliminating the need for sense-amps that burn DC power. The inherently low power devices can use more die area than similar sense-amp based devices. Although the inherently low power devices can provide a solution for achieving the lowest power budget using a CPLD, the advantage is limited purely to power and can incur a die size/cost penalty depending on the technology used. 
     Some operations of the conventional PLDs are real time programmable. PLD vendors offer dedicated product terms for real time control of logical operations of macrocells and I/O buffers. For example, conventional PLDs offer reset (RPT), preset (SPT) and clock product terms (PTCLK) that can control a macrocell logic operation in real time. PLDs also provide dedicated OE product terms to control a tri-state level of output buffers in real time. However, real time control capability of other non-logic features is not available. For example, Lattice PLDs allow programming analog characteristics, but not in real time. SRAM based PLDs require setting configuration bits at the time of programming. Despite the lack of real time programmability, non-logic features are becoming more common in PLD devices. 
     SUMMARY OF THE INVENTION 
     The present invention concerns an apparatus comprising a first circuit and a second circuit. The first circuit may be configured to generate a first plurality of signals in response to one or more input signals. The second circuit may be configured to generate one or more control signals in response to said first plurality of signals. The one or more control signals may control one or more non-logic features. 
     The objects, features and advantages of the present invention include providing a method and/or architecture for real time programmable control of non-logic features in a programmable logic device that may: (i) dynamically change a configuration of any feature implemented on the device, (ii) control a low or zero power mode on sense-amp based programmable logic devices, (iii) dynamically control non-logic features of the device, (iv) control non-logic features of the device using dedicated product terms, (v) control power consumption of logic blocks independently, (vi) control features such as I/O slew rate and drive characteristics in real time, and/or (vii) allow logic implemented in one logic block to control features in other logic blocks. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which: 
     FIG. 1 is a block diagram of a preferred embodiment of the present invention; 
     FIG. 2 is a detailed block diagram illustrating an application of the circuit of FIG. 1; 
     FIG. 3 is a block diagram illustrating an alternative embodiment of the present invention; and 
     FIG. 4 is a detailed block diagram illustrating non-logic features of an I/O cell of FIG.  2 . 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring to FIG. 1, a block diagram of a circuit  100  is shown in accordance with a preferred embodiment of the present invention. The circuit  100  may be implemented, in one example, as part of a logic block in a programmable logic device. The circuit  100  may have an input  102  that may receive an input signal (e.g., INPUT) and a number of outputs  104   a - 104   n  that may present a number of signals (e.g., C 1 -Cn). The signal INPUT may, in one example, be N-bits wide, where N is an integer. The signal INPUT may be generated, in one example, by an interconnect matrix (IM) or a programmable interconnect matrix (PIM) in response to external signals and/or signals from one or more macrocells (e.g., a state machine). The signals C 1 -Cn may be used, in one example, as control signals. The signals C 1 -Cn may control, in one example, non-logic features of a programmable logic device normally controlled by configuration bits. When the circuit  100  is implemented as part of a logic block, the signals C 1 -Cn may control non-logic features of the logic block containing the circuit  100  and/or other logic blocks. 
     The circuit  100  may comprise, in one example, a circuit  106  and a circuit  108 . The circuit  106  may be implemented, in one example, as a product term generator. In one example, the circuit  106  may comprise a product term array (e.g., an AND array) or a look-up-table (LUT). The circuit  108  may be implemented, in one example, as a feature control logic circuit. The signal INPUT may be presented to an input of the circuit  106 . The circuit  106  may have an output  110  that may present a number of signals (e.g., FCPT 1 -FCPTn) to an input  112  of the circuit  108 . The circuit  106  may be configured to generate the signals FCPT 1 -FCPTn in response to one or more bits of the signal INPUT. The signals FCPT 1 -FCPTn may be, in one example, dedicated product terms. The product terms may be similar to the RPT, SPT, PTCLK and/or OEPT product terms. However, the outputs may be used to control logic implementing various non-logic features of, in one example, a logic block. 
     The circuit  108  may be configured to generate the signals C 1 -Cn in response to one or more of the signals FCPT 1 -FCPTn. The circuit  108  may generate the signals C 1 -Cn as, in one example, a logical combination of the signals FCPT 1 -FCPTn. The circuit  108  generally comprises custom designed logic for dynamically controlling the non-logic features in accord with predetermined design criteria of a particular application. 
     Referring to FIG. 2, a detailed block diagram illustrating an application of the circuit  100  is shown. The circuit  100  is shown implemented in the context of a logic block  114 . The logic block  114  may have an input  116  that may receive the signal INPUT from a PIM  118 , an output  120  that may present a signal (e.g., MC_OUT) to an input  122  of the PIM  118 , an output  124  that may present a signal (e.g., IO_IN) to an input  125  of the PIM  118  and a number of input/outputs  126   a - 126   n  that may connect to a number of I/O pins  128   a - 128   n.    
     The logic block  114  may comprise a product term array  130 , a product term matrix  132 , a number of macrocells  134   a - 134   n , a number of I/O cells  136   a - 136   n  and a power control block (or circuit)  137 . However, other configurations of logic blocks may be implemented to meet the design criteria of a particular application. For example, the I/O cells  136   a - 136   n  may be implemented separately from the logic block  114 . Such an implementation may be found in co-pending application U.S. Ser. No. 09/475,879 which is hereby incorporated by reference in its entirety. The circuit  106  may be implemented, in one example, as a portion of the product term array  130 . One or more of the signals C 1 -Cn may be presented to inputs  138   a - 138   n  of the macrocells  134   a - 134   n , inputs  140   a - 140   n  of the I/O cells  136   a - 136   n  and an input  141  of the power control block  137 , respectively. The inputs  138   a - 138   n  and  140   a - 140   n  may be n-bits wide, where n is an integer. 
     The macrocells  134   a - 134   n  and the I/O cells  136   a - 136   n  may be configured, in one example, to alter non-logic features in response to the signals C 1 -Cn. The non-logic features may include, but are not limited to, a power-down feature, a power-up feature, a low-power feature, slew-rate control, I/O drive characteristics, a sleep mode, and any other feature presently controlled or controllable by configuration bits. 
     The present invention may provide control of various non-logic features of a programmable logic device in real time. The features may have previously only been controllable by reconfiguring the device. For example: 
     a user may trigger a low power or ultra low power (sleep) mode during run time based on the result of any logic programmed into the device or the state of any input pin; 
     a user may control the power consumption of logic blocks independently such that logic in some logic blocks may be used to control the power of others; 
     a user may control other features such as I/O slew rate or I/O drive standards in real time; and/or 
     a user may implement logic in one logic block to control features in other logic blocks. 
     The present invention generally extends the idea of dedicated product terms used for logical control of macrocells and output buffers to other non-logic related features such as power, slew rate and I/O drive characteristics. These features may have been available, but were never controllable in real time. 
     The circuit  100  may be used to control any particular feature that may be implemented. Specifically some features (only some of which are currently offered) may be: (i) Low power mode The sense-amps are slowed down to burn less power, (ii) Power-down/up mode—The logic block would be put into and out of a zero power mode, (iii) I/O slew rate—The I/O buffer slew rate could be changed to reduce noise, (iv) I/O drive characteristics—The I/O current and voltage characteristic could be changed. Other features for which real time control may be desirable may include phase delays and switching spread spectrum on/off. 
     The present invention allows a user to control non-logic features in real time using logic the user has designed and implemented. The user generally determines during the design phase how particular features may be used dynamically. For example, placing some or a majority of the logic blocks in a sleep mode when their functionality is not required. The user may define logic that switches a feature on or off. The design software may implement the logic in, in one example, a feature-control portion of a product term array or logic block. During normal device operation when the feature control product term is evaluated as true, the feature may be activated or deactivated. 
     Some other examples of how this invention could be used are as follows: 
     A user knows they will wish to switch a large number of I/O simultaneously. The user would like to use the slow slew rate feature to reduce the noise that would be generated. However, at other times the user needs the faster speed of the standard slew rate. With the present invention, the user may define logic to detect a set of conditions just prior to the switching event. The logic implemented may then dynamically change the slew rate to the slow setting for just that event, while using the faster rate at all other times. 
     A user may select a PLD to drive a number of different devices on a bus. However, some devices may require a TTL level input while others require a CMOS level input. The user may define logic to dynamically change the I/O buffer drive characteristics depending on the device being driven. 
     A user may wish to limit the power used by a design because of concern for the maximum junction temperature of the device. The user may decide to use a low-power feature which slows the product term sense amplifiers (and so slow the device) to reduce power. However, at certain times the user may require the full speed of the high-power mode. By using the present invention, the user may define a default mode of the low-power mode except for the specific instances when the high-power speed is really needed. 
     The essential advantage provided by the present invention may be the ability to dynamically change the utilization of any feature implemented on, in one example, a programmable logic device. A secondary advantage may be the ability to control a low or zero power mode on sense-amp based programmable logic devices. 
     Referring to FIG. 3, a circuit  100 ′ illustrating an alternative embodiment is shown. The circuit  100 ′ may comprise a circuit  108 ′. The circuit  108 ′ may be implemented, in one example, as a multiplexer circuit. The circuit  108 ′ may have an input  142  that may receive a number of configuration bits. The circuit  108 ′ may be configured, in one example, to selected a number of the configuration bits as the signals C 1 -Cn in response to the signals FCPT 1 -FCPTn. However, the multiplexer  108 ′ may provide less flexibility for controlling the non-logic features than the circuit  108 . The circuit  108 ′ may increase the number of product terms required for a particular level of control. The circuit  106 ′ may be configured to have some product terms that may be selected as either configuration or logic rather than dedicated to configuration. 
     Referring to FIG. 4, a detailed block diagram is shown illustrating non-logic features of the I/O cells  136   a - 136   n  of FIG.  2 . The I/O cells  136   a - 136   n  may be configured, in one example, to alter non-logic features in response to the signals C 1 -Cn. The non-logic features may include, but are not limited to, power control  150 , slew-rate control  152 , I/O drive characteristics  154 , bus hold  156 , and any other feature presently controlled or controllable by configuration bits. The power control feature may comprise a power-down feature, a power-up feature, a low-power feature, and a sleep mode. 
     The increasing number of portable applications may drive a requirement for low power. The present invention may meet the requirement with existing sense-amp based PLD architecture. In addition, the programmable control of non-logic features may support the number of I/O related standards and options that have produced a very feature rich PLD architecture. The real time programmable control of non-logic features may provide a more useful programmable logic device. 
     While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the spirit and scope of the invention.