Programmable microcontroller architecture

Abstract
Embodiments of the present invention are directed to a microcontroller device having a microprocessor, programmable memory components, and programmable analog and digital blocks. The programmable analog and digital blocks are configurable based on programming information stored in the memory components. Programmable interconnect logic, also programmable from the memory components, is used to couple the programmable analog and digital blocks as needed. The advanced microcontroller design also includes programmable input/output blocks for coupling selected signals to external pins. The memory components also include user programs that the embedded microprocessor executes. These programs may include instructions for programming the digital and analog blocks “on-the-fly,” e.g., dynamically. In one implementation, there are a plurality of programmable digital blocks and a plurality of programmable analog blocks.
Description
BACKGROUND OF THE INVENTION

1. Field of the Invention


The present invention relates to the field of microcontrollers. Specifically, embodiments of the invention relate to a microcontroller system architecture effectuating both analog and digital programmable circuits.


2. Related Art


Microcontrollers have become commonplace in the thirty years since their introduction. They have all but replaced mechanical and electromechanical components in the area of control over “real world” activities. For applications now controlled by microcontrollers, control functions therein are now much more functional, reliable, and economical.


Major improvements in microcontroller design since their introduction have made them nearly ubiquitous in modem control applications. The in-circuit emulator improved debugging and the integration of hardware and software. Embedded application development effectuated by C and other compilers has reduced software development time and allowed much larger programs and concomitantly more complex applications. One time programmability (OTP) of microcontrollers extended their utility, particularly for highly specialized and/or low volume applications. Programmability also improved the development cycle for users of microcontrollers.


Microcontrollers have embedded processors, memories, power sources, voltage references, voltage/power and temperature sensors, timers, oscillators, and other circuits. Various microcontrollers have differing features, including capacities. The 8-bit microcontrollers are an extremely useful, common, and well-populated class.


Contemporarily, there are thousands of different 8-bit microcontrollers from a number of sources. Nevertheless, selecting a microcontroller for a particular application and/or matching a particular microcontroller to a specific application remains a challenge. First, selecting a particular microcontroller from the many available can be confusing and tedious. After a selection is made, changing design requirements, engineering solutions, and/or unexpected higher capacity requirements often require scrapping the original selection and repeating the confusing and tedious selection process.


Conventionally, these problems may be addressed by custom designing a microcontroller with a “perfect,” e.g., exact, particular combination of required peripheral functionalities, and no surplusage, incorporating all needed functions, and eliminating a requirement for any external chips. This is demanding of time and resources, because it requires custom design and manufacturing operations for each selected application. It is expensive, in as much as it can take no advantage of the usual electronics industry economies of scale, which otherwise typically hold electronic prices at reasonably low levels.


Microcontrollers effectuate a wide range of applications in modem electronic installations into which they are functionally integrated. One major microcontroller utilization is the embedded system application. Most embedded system applications interface to the “real world.” This real world is analog in nature, and most microcontrollers interfacing with it offer an analog to digital (A/D) converter; true analog peripherals are rare. However, many microcontroller designs with real world interfacing embedded systems require that analog signals be multiplied, filtered, or otherwise conditioned before conversion to digital. While conventional analog functional components are available for use with microcontrollers, they are custom components and still require a separate microcontroller and an effective electrical coupling and signal synchronization and transfer modality to effectuate their use therewith. This is inefficient and costly.


Microcontrollers have a number of components to effectuate device application. Such components in conventional microcontrollers have fixed functions, which a are disadvantageous in two major ways. First, in selecting a microcontroller for a particular application, it must be known in advance precisely which functions are required to effectuate that application and that this functional requirement is static. Second, specifying any particular function carries a cost, in as much as that function is static. The following example illustrates this second limitation.


A conventional microcontroller with “off the shelf” availability is selected for a particular application because it has a timer functionality, required by the application for which it is to be used. To effectuate this particular microcontroller's timer functionality, the microcontroller has two integrated timing components. However, the application at hand may be effectuated by the microcontroller if it had only a single timer component. This is wasteful of chip resources, power and computing demands, etc. Yet finding an exact, or even closer match from the finite supply of available microcontrollers with off the shelf availability is difficult and time consuming.


This limitation can be offset by negotiation with the microcontroller manufacturer for a custom designed and built chip, or the user, seeking the microcontroller for the particular application at hand may continue to search for another microcontroller with off the shelf availability, having components more closely matching the requirements of the application at hand. However, as discussed above, either of these solutions is also costly in terms of time, resources, and/or expense.


Further, microcontrollers employing conventional component technology have individual characteristic spectra of application, which are typically rather limited and static. Often, particular microcontrollers have rather precisely defined design functionalities, which are static and unchangeable, or changeable only in rather limited ways. Thus in this regard, conventional microcontrollers applications are inherently one dimensional and inflexible. This is also true of other circuits, such as an application specific integrated circuit (ASIC).


Conventional microcontrollers themselves are not reconfigurable to any convenient degree. A relatively small fraction of available conventional microcontrollers, and those implementing very general functions, have some degree of reconfigurability. However, the degree of reconfigurability is very limited. For example, one particular type of conventional microcontrollers implementing very general functions includes logic devices such as programmable gate arrays. Programmable gate arrays typically are characterized by very fine grained logic architectures.


In so far as programmable gate arrays are reconfigurable at all, their reconfiguration is a static process, requiring a programmable gate array being so reconfigured to be out of service during the process, which takes an inordinate amount of time and requires a heavy price in computational resources. This is because the fine grain architecture of the programmable gate array being reconfigured demands thousands, for some common reconfigurations even millions of bits of information to be written, for each and every logic block requiring re-writing to effectuate the reconfiguration.


The conventional art is problematic because it generally fails to address the limitations of individual microcontroller and integrated circuit (IC) applicability and flexibility, and configurablity and programmability. Where reconfigurability is possible at all in conventional microcontrollers and ICs, it is typically achieved statically, with the microcontroller or IC out of service, to a very limited degree, and requires relatively long times and informational input to achieve. Custom designed analog-based devices are coupled with microcontrollers and/or ICs in such a way as to harmonize their operations in particular microcontroller/IC applications requiring analog functionality. Contemporary solutions to these problems using conventional resources are inadequate because of the time and effort required for custom choosing a particular conventional microcontroller/IC design for a certain application from a relatively limited field, resource costs of functionalities selected in the conventional microcontrollers/ICs selected, and the inordinate expense of custom chips, such as ASICs.


SUMMARY OF THE INVENTION

What is needed is a method of integrating a system with a microcontroller and integrated circuits (ICs) on a single chip to effectuate a single-chip system, including analog functionality, and/or a system so integrated with a microcontroller and/or other IC. What is also needed is a single-chip system which has sufficient flexibility to function in a very wide range of multiple applications, including applications wherein integrated analog functionalities are required. Further, what is needed is a method of programming and dynamically reconfiguring a single-chip system, and a single-chip system which is so programmable and dynamically reconfigurable. Further still, what is needed is a single-chip system which achieves the foregoing advantages and yet is relatively inexpensive and simple to configure, apply, use, and reconfigure.


Embodiments of the present invention provide an integrated system with a microcontroller and integrated circuits ICs on a single chip to effectuate a single-chip system, including programmable analog and digital functionality and a microprocessor, and a method of configuring such an integrated system. The present invention also provides a single-chip system which has sufficient flexibility to function in a very wide range of multiple applications, including applications wherein integrated analog functionalities are required. Further, the present invention provides a method of programming and dynamically reconfiguring a single-chip system, and a single-chip system which is so programmable and dynamically reconfigurable. Further still, the present invention provides a single-chip system which achieves the foregoing advantages and yet is relatively inexpensive and simple to configure, apply, use, and reconfigure.


Embodiments of the present invention are directed to a microcontroller device having a microprocessor, programmable memory components, and programmable analog and digital blocks. The programmable analog and digital blocks are configurable based on programming information stored in the memory components. Programmable interconnect logic, also programmable from the memory components, is used to couple the programmable analog and digital blocks as needed. The advanced microcontroller design also includes programmable input/output blocks for coupling selected signals to external pins. The memory components also include user programs that the embedded microprocessor executes. These programs may include instructions for programming the digital and analog blocks “on-the-fly,” e.g., dynamically. In one implementation, there are a plurality of programmable digital blocks and a plurality of programmable analog blocks.


In one embodiment, the present invention provides a method of integrating a system with a microcontroller/IC on a single chip to effectuate a single-chip system, including programmable analog functionality. Another embodiment provides a system so integrated with a microcontroller/IC. In one embodiment, the present invention also provides a single-chip system which has sufficient flexibility to function in a very wide range of multiple applications, including applications wherein integrated analog functionalities are required. In the present embodiment, the single-chip system is capable of executing a wide range of applications requiring programmable mixed (analog and digital) signals. In the present embodiments, both digital and analog functionalities are effectuated in block components integrated with a microcontroller/IC on a single chip. These block components are complete functional units, each with a very large number of operations programmed within them.


In one embodiment, the present invention further provides a method of programming and dynamically reconfiguring a single-chip system, and a single-chin system which is so programmable and dynamically reconfigurable. The programming is effectuated, in one embodiment, by firmware executing a series of instructions run by a microprocessor component of the microcontroller/IC. In one embodiment, a new microcontroller/IC programming paradigm is effectuated, wherein a user of the single-chip system loads a configuration into the functional blocks and/or programmable interconnects electrically coupling the functional blocks with each other, with other microcontroller components, and with the outside world.


In one embodiment, the programmable interconnects configure, not only the functional blocks, but also the way in which the functional blocks intercommunicate. In one embodiment, actual connection pins of the device can be configured to communicate with different internal resources, allow intercommunication via different methods and/or modalities, and actual reconfiguration of the internal structure of the device. In one embodiment, the reconfigurability features effectuate dynamic reconfiguring and programming, with no need to take the single-chip system out of service. The single-chip system can be dynamically reconfigured “on the fly,” easily and in very little time. Advantageously, these features effectuate the ability to program microcontroller/IC sequences and simultaneously program unique hardware functions that are expressible via the newly configured single-chip system.


In one embodiment, the present invention provides a single-chip system which achieves the foregoing advantages and yet is relatively inexpensive and simple to configure, apply, use, and reconfigure. The inherent great flexibility and widespread applicability of microcontroller systems of the present embodiments obviates searching, shopping, and research for the “right” microcontroller and mix of functionalities and/or design and manufacture of custom microcontroller and mix of system functionalities. Real savings in effort, time, and cost are effectuated by embodiments of the present invention.


These and other advantages of the present invention will become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiments, which are illustrated in the various drawing figures.





BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention.



FIG. 1A is a high level block diagram showing an exemplary integrated circuit (or microcontroller) upon which embodiments of the present invention may be implemented.



FIG. 1B is a block diagram showing in some greater detail an exemplary integrated circuit (or microcontroller) upon which embodiments of the present invention may be implemented.



FIG. 1C is a block diagram showing in some greater detail the analog, digital, and timing blocs of an exemplary integrated circuit (or microcontroller) upon which embodiments of the present invention may be implemented.



FIG. 2 shows an array of analog blocks in accordance with one embodiment of the present invention.



FIG. 3 shows the interconnects between analog blocks in an array in accordance with one embodiment of the present invention.



FIG. 4A is a functional block diagram of one embodiment of a continuous time block in accordance with the present invention.



FIG. 4B is a schematic diagram of one embodiment of a continuous time block in accordance with the present invention.



FIG. 5 illustrates the feedback inputs into a continuous time block in accordance with one embodiment of the present invention.



FIG. 6 illustrates the positive inputs into a continuous time block in accordance with one embodiment of the present invention.



FIG. 7 illustrates the negative inputs into a continuous time block in accordance with one embodiment of the present invention.



FIGS. 8A and 8B are circuit diagrams illustrating the functionality of a switched capacitor circuit by comparison to another circuit in accordance with one embodiment of the present invention.



FIG. 9A is a block diagram of one embodiment of a switched capacitor block in accordance with the present invention.



FIG. 9B is a schematic diagram of the switched capacitor block of FIG. 9A in accordance with one embodiment of the present invention.



FIG. 10 shows one set of inputs into the switched capacitor block of FIG. 9A in accordance with one embodiment of the present invention.



FIG. 11 shows the other set of inputs into the switched capacitor block of FIG. 9A in accordance with one embodiment of the present invention.



FIG. 12A is a block diagram of another embodiment of a switched capacitor block in accordance with the present invention.



FIG. 12B is a schematic diagram of the switched capacitor block of FIG. 12A in accordance with one embodiment of the present invention.



FIG. 13 shows the inputs into the switched capacitor block of FIG. 12A in accordance with one embodiment of the present invention.



FIG. 14A is a block diagram showing one embodiment of a switched capacitor biquad in accordance with the present invention.



FIG. 14B is a schematic diagram showing one embodiment of a switched capacitor biquad in accordance with the present invention.



FIG. 15 is a flowchart of the steps in a process for implementing multiple functions using a single integrated circuit in accordance with one embodiment of the present invention.



FIG. 16 illustrates a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 17 illustrates a block diagram of an exemplary programmable digital device having a plurality of programmable digital circuit blocks in accordance with an embodiment of the present invention.



FIG. 18 illustrates a block diagram of a timer configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 19 illustrates a block diagram of a counter configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 20 illustrates a block diagram of a pulse width modulator (PWM) configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 21 illustrates a block diagram of a UART transmitter configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 22 illustrates a block diagram of a UART receiver configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 23 illustrates a block diagram of a SPI Master configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 24 illustrates a block diagram of a SPI Slave configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.



FIG. 25 is a block diagram of a microcontroller device with a configurable input/output interface as embodied by the present invention.



FIG. 26 is a block diagram of a configurable input/output interface as embodied by the present invention.



FIG. 27 is a flowchart of a process 300 for using a configurable input/output interface for a microcontroller to input data as embodied by the present invention.



FIG. 28 is a flowchart of a process 400 for using a configurable input/output interface for a microcontroller to output data as embodied by the present invention.



FIG. 29 is a flowchart of a process 2900 for configuring a system, in accordance with one embodiment of the present invention.





DETAILED DESCRIPTION OF THE INVENTION

Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be obvious to one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention.


In the following description of an embodiment of the present invention, reference is made to an exemplary microcontroller with an integrated system incorporated into a single functional device. It is appreciated that the exemplary microcontroller is illustrative only, and that embodiments of the present invention may be facilitated on any integrated circuit. The exemplary embodiments described herein do not, and are not meant to limit the application of embodiments of the present invention to microcontrollers, or to any specific integrated circuit device or type.



FIG. 1A is a block diagram showing a high level view of an exemplary integrated circuit (or microcontroller) 10 upon which embodiments of the present invention may be implemented. In this embodiment, integrated circuit 10 includes a bus 11, and coupled to bus 11 are synchronous random access memory (SRAM) 12 for storing volatile or temporary data during firmware execution, central processing unit (CPU) 14 for processing information and instructions, flash read-only memory (ROM) 16 for holding instructions (e.g., firmware), input/output (I/O) pins providing an interface with external devices and the like, and system function blocks 25. The system function blocks 25 include both analog blocks 20, and digital blocks 100, which are further described below. A test interface TI may be coupled to integrated circuit 10 via a test interface coupler TIC, which may be detachable, to perform debugging operations during startup and initialization of the integrated circuit.


In the present embodiment, flash ROM 16 stores parameters describing microcontroller 10, allowing microcontroller 10 to be programmed during production, during system testing, or in the field. It is contemplated that microcontroller 10 may also be self-programmed remotely. System function blocks 25 are configurable system resources that can reduce the need for other microcontroller parts and external components.


With reference to FIG. 1B, an exemplary integrated circuit (or microcontroller) 10 upon which embodiments of the present invention may be implemented is shown in greater detail. It is seen that system blocks 25 are constituted by at least three (3) distinct functionalities. These functionalities include analog system blocks 20, digital system blocks 100, and programmable interconnects 1000. Further, it is seen that the digital system blocks 100 and the analog system blocks 20 are coupled to the programmable interconnect 1000 by intra-block routing channels 1002. The programmable interconnect 1000 is connected via an internal input/output (I/O) bus 1001 to pin by pin configurable I/O transceivers 18, which effectuate communicative coupling between system 10 and external modalities. The total pin count of pin by pm configurable I/O transceivers 18 may vary from one application to another, depending on the system device under consideration. A system timing block 19 is also coupled to programmable interconnect 1000.


System timing block 19 includes system timing information used, among other things, for synchronizing and otherwise effectuating interfacing between system functionalities. System timing block 19, like system blocks 25, is programmable. Advantageously, this allows system timing block 19 to generate a myriad of different time bases, as required for any particular application the system is being configured to effectuate. These time bases may be fed into analog system blocks 20 and digital system blocks 100, for use therein, via programmable interconnect 1000. Examples of analog functions requiring such time bases, executed by analog system blocks 20 include conversions, modulations, and the like. One striking example of a digital function requiring such time bases, executed by digital system blocks 100 is their universal asynchronous receiver transmitter (UART) functionality.


Referring to FIG. 1C, system block 25 is depicted in greater detail. System block 25 is constituted, in one embodiment, by a distinct analog functional block 20, a distinct digital functional block 100, and a programmable interconnect 1000. Analog block 20 is seen to be constituted, in the present embodiment, by a matrix interconnecting internally N analog sub-blocks A1 through AN. The number N may be any number of analog sub-blocks required for a particular application. Likewise, digital block 100 is seen to be constituted, in the present embodiment, by a matrix interconnecting internally M digital sub-blocks D1 through DM. The number M may be any number of digital sub-blocks required for a particular application.


The internal matrices of analog blocks 20 and digital blocks 100 may be constituted, in one embodiment, partially by a routing matrix (e.g., global mapping system 105; FIG. 26). Any number of analog sub-blocks less than N may constitute registers (e.g., registers 50; FIG. 16), including configuration registers. Likewise, any number of digital sub-blocks less than M may constitute registers, including configuration registers. Configuration registers (e.g., configuration registers 50: FIG. 16), will be discussed in detail below. Analog blocks 20 and digital blocks 100 are electrically and/or communicatively coupled to programmable interconnect 1000, in the present embodiment, by intra-block routing 1002. Analog block 20 and digital block 100, having multiplicities N and M of respective sub-blocks, are effectively both pluralities of functional units with a communicatively coupling internal matrix constitution.


Thus, each individual functional unit, e.g., sub-blocks A1 through AN and D1 through DM, may communicate and interact with each and/or any other functional unit. Which functional unit communicates with which other functional unit is programmable, via the configurablity of the programmable interconnect 1000. Advantageously, this allows users to choose communicative interactions between functional units, further promoting system flexibility. It is seen that programmable interconnect 1000 has an input global mapping unit 211 and an output global mapping unit 212. The global mapping units 211 and 212 promote the configurability of the system 10 (FIGS. 1A, 1B) by mapping the communicative interaction between the functional units.


A hierarchy of programmable interconnectivity is effectuated within system 10. Pin by pin configurable I/O transceivers 18 and input and output global mapping units 211 and 212, respectively, on programmable interconnect 1000, effectuate configurable interconnectivity between the system 10 and the “outside world,” as well as the microcontroller SRAM, ROM, and CPU components 12, 16, and 14, respectively (FIGS. 1A, 1B). These microcontroller components are communicated with via the system bus 11, and addressed via the programmable interconnect 1000 by the functional unit 25. Further, several sub-blocks within the analog and digital system blocks 20 and 100, respectively, are assigned addresses that are mapped onto system bus 11. Thus, the master computer system, e.g., the microcontroller, can re-write the blocks as memory functions, e.g., in SRAM 12.


Correspondingly, the memory function within each functional block 20 and 100 has specific functions allocated to them. These memory functionalities are registers (e.g., registers 50; FIG. 16) and will be discussed in detail below. To illustrate cursorily, one of the digital functional sub-blocks, e.g., DM, has a memory register location, which is that particular subblock's assigned function. If the microcontroller writes into the functional register of a sub-block, it may change the function of the sub-block to another function. This is one mechanism of functional dynamic reconfigurability, and will be discussed in greater detail below.


Other blocks affect autonomous system operations, such as interrupts. Thus, it is determined by configuring it whether a block will generate an interrupt into the computer system (e.g., the microcontroller) or not. Other registers within a block determine whether a block may accept data from the I/O, or from a neighboring or distant other block. This is the function of the configuration registers (e.g., configuration registers 50: FIG. 16), to be discussed in detail below. Writing to configuration registers changes the functional operability of a block.


Analog blocks 20 and digital blocks 100 share some similarities. However, analog blocks 20 have an added parametric setting register among its sub-blocks A1 through AN. Parametric settings effectuate functionalities related to physical parameters, such as potential voltages, current amperages, and ratios which cause amperage and/or voltage transitions to occur. Parametric settings may be varied by writing into, e.g., programming the parametric setting registers. To illustrate, if a block is implementing an A/D conversion function, a voltage value that the block generates, e.g., a signal amplitude, is detected by a set of registers. Writing to, e.g., programming the appropriate parametric setting register may cause the block to change its output signal potential amplitude.


Typically, all of the configuration settings on a digital block 100 is within a small set of registers, in one embodiment four registers per block. The registers'capacity is eight bits. Special hardware within the microcontroller load into block 100 from a table 16T within flash ROM 16 (FIGS. 1A, 1B), a configuration for as many (or as few) sub-blocks D1 through DM as necessary. Thus, within a single instruction, a configuration may be transferred from flash ROM 16 to the functional block 100.


Typically, configuration is static, and all blocks can be loaded with all of the requisite configuration register data in one operation. To change a particular subset of blocks from one configuration to another, another instruction is transferred from flash ROM 16 to the appropriate blocks. This is effectuated by a hardware subsystem 14S within the microcontroller CPU 14 that directly reads from flash ROM 16, over the internal address/system data bus 11, to the appropriate locale within system block 25. Advantageously, this informational sequencing is quite rapid, conserving time and computational resources. This hardware 14S may be thought of as a morph transmogrifier, loading new state tables to system block 25 functional units designated for a new functionality.


Further, configuration registers exist for the programmable interconnect 1000, analog block 20, digital block 100, pin by pin configurable I/O transceiver 18, and routing. Thus, every function can be assigned a configuration state, loaded, and changed as required for an exceedingly wide range of applications.



FIG. 1B depicts a more detailed view, incorporating numerous other functionalities of the exemplary integrated circuit (or microcontroller) 10, which was discussed in overview above.


One possible functionality, which may be an application of a system incorporating features of the present embodiment, is analog to digital (A/D) conversion. In performing A/D conversion, it is necessary to get signals entering on certain of the pins constituting parts of pin by pin configurable I/O transceivers 18 into the system block in the process. Owing to uncertainty in which block a user configuring the system 10 for A/D conversion will choose for performing the A/D conversion function, as well as uncertainty as to which pins the user will select for routing relevant signals, a mechanism is necessitated to achieve the requisite routing from the pin to the actual functional block inside the system; and vice versa, because a corresponding waveform will be generated in the functional block, which must be brought back out for use. Importantly, keeping in mind one advantageous feature of the present embodiment, that the design of embodiments of the present invention is not to dictate their applicability, but rather to effectuate implementation of the largest possible spectrum of applicability, the configurability of pin by pin configurable I/O transceivers 18, programmable interconnect 1000, and system blocks 25 may be crucial.


In as much as dictating a specific requisite pin locale from which a particular signal will emerge from system 10 is undesirable, a routing modality incorporating features of the present embodiment effectuate the redirection of signals to an almost arbitrary location on pin by pin configurable I/O transceivers 18. Advantageously, this simultaneously maximizes flexibility and greatly enhances user convenience and system applicability. In one embodiment, this designed inherent reconfigurability functions as an exceptionally flexible signal routing capability.


Referring again to both FIG. 1A and FIG. 1B, a fixed system bus 11 electrically and/or communicatively transfers instructions, including sequencing instructions, between the microcontroller/IC central processing unit 14 and the rest of the system. Included in these transfers are microcontroller instructions to interrogate and/or otherwise communicate with the system blocks 25.


Dedicated functionalities and/or peripherals 17 is interconnected with system bus 11. Dedicated functionalities and/or peripherals 17 may include a plethora of common functions of value to the function of system 10. A multiplier/accumulator (MAC) 1003 combines arithmetic logic functions of multiplication, counting, and storage of arithmetic results.


With reference to FIG. 1B, a clocking architecture is effectuated, in one embodiment, by a number of components of an IC/microcontroller 10, including a precision oscillator and phase locked loop (PLL) 998 which provides timing signals to CPU 14. PLL 998 receives a precision voltage reference signal from a voltage reference 999, and timing signals from a 32 kHz crystal oscillator 997. The 32 kHz crystal oscillator 997 may be coupled via external timing connection terminals X1 and X2 to a high-precision external timing reference signal generator (not shown) for a variety of applications such as calibration and synchronization, etc. Also included in the microcontroller clocking architecture are a watch dog timer 992 and a sleep timer 991, which may, in one embodiment, address the system internal address/data bus 11 via a timing address/data sub-bus 11.2. An interrupt controller 990, in one embodiment, generates interrupt signals, as required.


A power on reset control unit 993 performs functions related to power supply stability, particularly on system startup. Power on reset control unit 993 works, in one embodiment, in conjunction with a brown-out detection unit 994, which detects substandard, subnominal power system parameters, which could have deleterious effects on system and/or microcontroller operation, and may generate interrupts and/or other warning and/or protective actions accordingly. The following co-pending U.S. application is hereby incorporated by reference, Ser. No. 09/887,955, by Warren Snyder and Harold Kutz, entitled “Novel Power On Reset Circuit For A Microcontroller,” filed Jun. 22, 2001, and which is assigned to the assignee of the present invention. Further, the following co-pending U.S. application is also hereby incorporated by reference, Ser. No. 09/887,923, by Warren Snyder and Harold Kutz, entitled “Novel Method and System For Interaction Between A Processor and A Power On Reset Circuit To Dynamically Control Power States In A Microcontroller,” filed Jun. 22, 2001, and which is also assigned to the assignee of the present invention.


Exemplary Programmable Analog Functionality


The following co-pending US application is hereby incorporated by reference, Ser. No. 09/909,047, by Monte Mar, entitled “A Programmable Analog System Architecture,” filed Jul. 18, 2001, and which is assigned to the assignee of the present invention.


The present invention provides, in one embodiment, a programmable analog system architecture that is suited for a variety of applications and that can reduce development time and expenses. The programmable analog system architecture is integrated with a microcontroller that provides sequencing and programming instructions. The present invention introduces a single chip solution that contains a set of tailored analog blocks and elements that can be dynamically configured and reconfigured in different ways to implement a variety of different analog functions.


The analog system architecture can be generally referred to as a programmable analog “system-on-a-chip” block. Such progranimable blocks can be used in those applications that typically require multiple chips that may be fabricated using different technologies. Implementation in embedded applications, including audio, wireless, handheld, data communications, Internet control, and industrial and consumer systems, is contemplated.


In the present embodiment, the analog blocks 20 are arranged on a single integrated circuit, or chip. The analog blocks 20 can be electrically coupled in different combinations to perform different analog functions. Each analog block 20 can also be configured according to the function to be performed. In the present embodiment, the analog blocks 20 include analog elements that have changeable characteristics that can be specified according to the function to be performed. Inputs received by an analog block are directed through the analog block according to the specified characteristics of the analog elements. The combination of analog blocks 20 and the characteristics of the analog elements, and hence the analog function to be performed, can be dynamically programmed. A number of registers are configurable to store programming data for the programmable digital circuit blocks.


In one embodiment, the analog blocks 20 include switched analog blocks that can be electrically coupled to and decoupled from one or more other analog blocks. That is, latches and switches can be dynamically configured so that signals can be passed from one block to another, while other blocks are bypassed. Accordingly, a set of analog blocks can be selectively combined to implement a particular analog function. Other analog functions can be implemented by selectively combining a different set of analog blocks. In one embodiment, the switched analog blocks are switched capacitor blocks. In another embodiment, two different types of switched capacitor blocks are used; the two types are distinguishable according to the type and number of inputs they receive and how those inputs are treated. In yet another embodiment, the analog blocks also include continuous time blocks.


In one embodiment, the continuous time blocks and the switched capacitor blocks are arranged in rows and columns in an array. In one such embodiment, the array includes a first row of continuous time blocks and multiple rows of switched capacitor blocks, where the first row of continuous time blocks is disposed between the switched capacitor blocks and an edge of the array. In one embodiment, the analog blocks in a column are each coupled to a respective digital bus (that is, there is a digital bus for each column of analog blocks).


The analog functions that can be performed using the system architecture and method of the present invention include (but are not limited to) an amplifier function, a digital-to-analog converter function, an analog-to-digital converter function, an analog driver function, a low band pass filter function, and a high band pass filter function. The programmable analog circuit blocks may, in one embodiment, be constituted by a matrix of n by m analog configurable system macros, n and m independently being an integer of at least two. Each of said analog configurable system macros is configured to provide one or more analog functions, which may also include gain functions, comparator functions, switched capacitor functions, filter functions, analog-to-digital conversion functions, digital-to-analog conversion functions, and amplifier functions, among others. The programmable analog circuit may, in one embodiment, be constituted by a matrix of n by m number of programmable analog circuit blocks, each coupled to an adjacent block and configured to provide at least one of a plurality of analog functions.



FIG. 1A is a block diagram showing an exemplary integrated circuit (or microcontroller) 10 upon which embodiments of the present invention may be implemented. In this embodiment, integrated circuit 10 includes a bus 11, and coupled to bus 11 are synchronous random access memory (SRAM) 12 for storing volatile or temporary data during firmware execution, central processing unit (CPU) 14 for processing information and instructions, flash read-only memory (ROM) 16 for holding instructions (e.g., firmware), input/output (I/O) pins providing an interface with external devices and the like, and analog blocks 20. The analog blocks 20 are further described below. A test interface (not shown) may be coupled to integrated circuit 10 to perform debugging operations during startup and initialization of the integrated circuit.


In the present embodiment, flash ROM 16 stores parameters describing microcontroller 10, allowing microcontroller 10 to be programmed during production, during system testing, or in the field. It is contemplated that microcontroller 10 may also be self-programmed remotely.


Analog blocks 20 are configurable system resources that can reduce the need for other microcontroller parts and external components. In the present embodiment, analog blocks 20 include an array of twelve blocks. A precision internal voltage reference provides accurate analog comparisons. A temperature sensor input is provided to the array of analog blocks to support applications like battery chargers and data acquisition without requiring external components.


In the present embodiment, there are three types of analog blocks: continuous time blocks, and two types of switched capacitor blocks (referred to herein as type A and type B). Continuous time blocks provide continuous time analog functions. Continuous time blocks are described in further detail in conjunction with FIG. 4A.


Switched capacitor blocks provide discrete time analog functions such as analog-to-digital conversion (ADC) and digital-to-analog conversion (DAC) functions. The key difference between the type A and type B switched capacitor blocks is in generating biquad filters (see FIGS. 14A and 14B below). Both type A and type B blocks can implement basic switched capacitor functions (outside of filters), and the type A block can also function as a summing amplifier. Switched capacitor blocks are described in further detail in conjunction with FIGS. 9A and 10A, below.


Analog functions supported by integrated circuit 10 comprising analog blocks include, but are not limited to: 14-bit multi-slope and 12-bit delta-sigma ADC, successive approximation ADCs up to nine bits, DACs up to nine bits, programmable gain stages, sample and hold circuits, filters (high band pass and low band pass) with programmable coefficients, amplifiers, differential comparators, and temperature sensors.



FIG. 2 shows an array of analog blocks 20 in accordance with one embodiment of the present invention. In this embodiment, there are twelve analog blocks 21a-21l arranged in an array of three rows 22a-22c by four columns 23a-23d. Each column 23a-d includes one of each type of analog block, e.g., a continuous time block 21a-d (designated “ACAxx”); a type A switched capacitor block 21e, 21g, 21j and 21l (designated “ASAxx”); and a type B switched capacitor block 21f, 21h, 21i, and 21k (designated “ASBxx”). Note that, in this embodiment, the type A and type B switched capacitor blocks in rows 22b and 22c are arranged in an alternating, or checkerboard, pattern.


In the present embodiment, the analog blocks 21a-l can be powered down individually to different power levels, so that it is not necessary for all of the blocks to be running at full power. In one embodiment, the analog blocks 21a-l have four power levels.



FIG. 3 shows the interconnects between analog blocks 20 in an array in accordance with one embodiment of the present invention. In this embodiment, each analog block 21a-l is interconnected with its adjacent (e.g., nearest neighbor) analog block. Note that, although the analog blocks 21a-l are interconnected, they may not be electrically coupled. The distinction between being connected and being electrically coupled is important because the analog functions performed by the analog blocks 20 are implemented by enabling certain analog blocks of the circuit and bypassing others according to user programming. That is, certain analog blocks in the array of analog blocks 20 are selectively and electrically coupled to other analog blocks according to the function to be performed. As will be seen, the analog functions are also implemented by setting characteristics of passive elements (e.g., capacitors and resistors) within each of the analog blocks 20.


In accordance with one embodiment of the present invention, different combinations of analog blocks 20 can be selected according to the user programming in order to perform different functions. In one embodiment, individual analog blocks can be enabled and bypassed, respectively, by enabling and closing appropriate switches in response to the programming. Signals are thereby routed through the analog blocks 20 by enabling and closing programmable switches, so that the signals are routed to the analog blocks necessary to accomplish the particular analog function selected. Mechanisms other than switches may be used to enable and bypass analog blocks.


In the present embodiment, for each column 23a-d, there is a respective digital bus 24a-d and a respective analog bus 25a-d coupled to each analog block in the column. Any analog block on these buses can have its output enabled to drive the buses. The analog buses 25a-d are each a gated operational amplifier (op-amp) output. The digital buses 24a-d are each a comparator output derived by buffering the operational amplifier output through an inverter. In one embodiment, reference buses (not shown) are also provided to provide a reference voltage for ADC and DAC functions.


The continuous time blocks 21a-21d can be programmed to serve as a first-order isolation buffer, if necessary. In that case, data essentially flow through the array of analog blocks 20 from top to bottom (e.g., from row 22a to row 22c). However, if the signals do not need to be buffered, then the signals can arrive directly at a switched capacitor block in one row (e.g., row 22c), then be switched to another row (e.g., row 22b).


In FIG. 3, output signals from each analog block include DO and those signals that include “out” in their designation (such as OUT, GOUT, and LOUT). Signals labeled otherwise are input signals to a block.



FIG. 4A is a functional block diagram of one embodiment of a continuous time block 40 in accordance with the present invention. Continuous time block 40 exemplifies continuous time blocks 21a-d of FIGS. 2 and 3. Continuous time block 40 is unclocked; that is, an analog signal input to continuous time block 40 may vary with time, and the output of continuous time block 40 will reflect that (instead of sampling the input as a clocked block would).


In the present embodiment, continuous time block 40 of FIG. 4A performs basic amplifier operations. In one embodiment, one function of continuous time block 40 is to amplify and isolate analog inputs to the array of analog blocks 20 (FIG. 3), although continuous time block 40 may not always be used in this manner. Continuous time block 40 also provides the means to convert differential input voltages into single-ended signals to drive other analog blocks 20.


In the present embodiment, continuous time block 40 of FIG. 4A receives positive (P) inputs 41 at multiplexer (MUX) 45, negative (N) inputs 42 at MUX 46, and feedback (F) inputs at MUX 47. Multiplexers 45, 46 and 47 function as controlled switches for directing the inputs through continuous time block 40. It is appreciated that the inputs to continuous time block 40 are a function of the location of continuous time block 40 in the array of analog blocks 20 (FIGS. 2 and 3), and that the inputs received by continuous time block 40 depend on the particular analog function being implemented.


Continuous time block 40 also includes analog elements having characteristics that can be set and changed in response to the user's programming in accordance with the particular analog function to be implemented. In the present embodiment, continuous time block 40 includes programmable resistors 48a and 48b. In accordance with the present invention, the resistance of resistors 48a and 48b can be changed in response to the user's programming.



FIG. 4B is a schematic diagram of one embodiment of a continuous time block 40 in accordance with the present invention. Block inputs 60 are inputs received from other analog blocks in the array of analog blocks 20 (FIG. 2). SCBLK (SOUTH) 53 is the input from a switched capacitor block below continuous time block 40 in a column 23a-d (FIG. 3). Port inputs 61 are inputs received from components and elements external to the array of analog blocks 20. ABUS 25 is the input from the analog bus (e.g., analog buses 25a-d of FIG. 3) and AGND 54 is the analog ground. CBUS 24 is the output to the digital bus (e.g., buses 24a-d of FIG. 3). Other outputs (OUT) 30.1 include GOUT, OUT and LOUT (see FIG. 3). When cascading two blocks, GOUT is used when trying to achieve a gain, and LOUT is used when trying to achieve a loss. REFLO 72 and REFHI 73 are reference voltages.


Continuing with reference to FIG. 4B, GAIN 74 controls whether the resistor string (48a, 48b) is connected around the op-amp for gain or loss (note that GAIN 74 does not guarantee a gain or loss block; this is determined by the routing of the other ends of the resistors 48a-b). GIN 51 and LIN 52 are inputs to continuous time block 40 (see also FIG. 3). P.MUX 55, N.MUX 56 and RB.MUX 70 are bit streams which control the non-inverting input MUX 45, the inverting input MUX 46, and MUX 47, respectively. R.MUX 69 is a bit stream controlling the center tap of the resistor string 48a-b. RT.MUX 68 is a bit stream controlling the connection of the two ends of the resistor string 48a-b. RT.MUX bits 68 control the top end of the resistor string 48a-b, which can either be connected to Vcc or to the op-amp output. RB.MUX bits 70 control the connection of the bottom end of the resistor string 48a-b.


With reference still to FIG. 4B, MUX 32 under control of bit stream O.MUX 77 provides a testability feature by feeding signals into continuous time block 40 that bypass the other portions of the block. COMP 49 is a bit controlling whether the compensation capacitor (not shown) is switched in or not in the op-amp. By not switching in the compensation capacitance, a fast response can be obtained if the amplifier is being used as a comparator.


PWR 50 is a bit stream for encoding the power level for continuous time block 40. C.PHASE 75 controls which internal clock phase the comparator data are latched on. C.LATCH 76 controls whether the latch is active or if it is always transparent. CS 78 controls a tri-state buffer that drives the comparator logic. OS 79 controls the analog output bus (ABUS 25). A complementary metal oxide semiconductor (CMOS) switch connects the op-amp output to ABUS 25.



FIG. 5 illustrates the feedback inputs 43 into a continuous time block 40 in accordance with one embodiment of the present invention. DING 51 is GIN 51 of FIG. 4B, DINL 52 is LIN 52 of FIG. 4B, and AGND 54 is the analog (actual) ground. IN6 (SCBLK) 53 is the input from a switched capacitor block situated below continuous time block 40 in a column 23a-d in an array of analog blocks 20 (FIG. 3).



FIG. 6 illustrates the positive inputs 41 into a continuous time block 40 in accordance with one embodiment of the present invention. AGND 54 is the analog ground, and OBUS (ABUS) 25 is the input from the analog bus (e.g., analog buses 25a-d of FIG. 3). INA 63 and IND 65 are the inputs from another continuous time block; that is, the continuous time blocks to either side of continuous time block 40. If continuous time block 40 is situated on the left or right edge of the array of analog blocks 20 (FIG. 3), such as in columns 23a or 23d, then only one of the inputs INA 63 or IND 65 would be present. INB 64 is the input from outside of the array of analog blocks 20. IN466 and IN567 are input from adjacent switched capacitor blocks, either in the same column as continuous time block 40 or from a switched capacitor block in an adjacent column.



FIG. 7 illustrates the negative inputs 42 into a continuous time block 40 in accordance with one embodiment of the present invention. AGND 54 is the analog ground, and AIN 71 is the input from an adjacent continuous time block (depending on the location of continuous time block 40 in the array of analog blocks 20 of FIG. 3, there may be more than one input from an adjacent continuous time block, as described in the preceding paragraph). RF1 (REFLO) 72 and RF2 (REFHI) 73 are reference voltages.



FIGS. 8A and 8B are circuit diagrams illustrating the functionality of a switched capacitor circuit 85 by comparison to another circuit 80 in accordance with one embodiment of the present invention. In FIG. 8A, an amount of current flows through resistor 81 in a time period T. Resistor 81 has a resistance value of R1. In FIG. 8B, switch 86 and switch 87 of switched capacitor circuit 85 are enabled and closed according to clock phases φ1 and φ2, respectively. Switched capacitor circuit 85 also includes a capacitor 88 with a capacitance of C1. An amount of charge will transfer through switches 86 and 87 in a time period T. In essence, the amount of charge transferred through switches 86 and 87 in time period T will appear like a current (current being charge per time). The resistance of switched capacitor circuit 85 equivalent to R1 is T/C1.



FIG. 9A is a block diagram of one embodiment of a switched capacitor block 90 in accordance with the present invention. This embodiment of switched capacitor block 90 is referred to as a type A switched capacitor block. Switched capacitor block 90 exemplifies analog blocks 21e, 21g, 21j and 21l of FIGS. 2 and 3.


With reference to FIG. 9A, the present embodiment of switched capacitor block 90 receives reference (REF) inputs 130, SN input 99, and inputs from three different types of capacitor arrays, CA inputs 131, CB inputs 140 and CC inputs 141. The designations “CA,” “CB” and “CC” are simply chosen to distinguish the three different types of capacitor arrays. REF inputs 130 and CA inputs 131 are described further in conjunction with FIG. 1A0, and CB inputs 140 and CC inputs 141 are described further in conjunction with FIG. 1A1. SN input 99 is a summary node of the array of analog blocks 20 (FIG. 3). It is appreciated that the inputs to switched capacitor block 90 are a function of the location of switched capacitor block 90 in the array of analog blocks 20 (FIGS. 2 and 3), and that the inputs received by switched capacitor block 90 depend on the particular analog function being implemented.


Continuing with reference to FIG. 9A, AGND 54 is the analog ground, OBUS (ABUS) 25 is the output to the analog bus (e.g., analog buses 25a-d of FIG. 3), and OUT 98 is an output from switched capacitor block 90 that may serve as an input to an adjacent switched capacitor block (refer to FIG. 3).


In the present embodiment, switched capacitor block 90 includes a multiplicity of switches 91a, 91b, 93a, 93b, 94, 95, 96a, 96b and 97. Each of the switches 91a-b, 93a-b, 94, and 96a-b is assigned to a clock phase φ1 or φ2; that is, they are enabled or closed depending on the clock phase. Switches 93a-b, 94, and 96a-b are assigned to gated clocks and function in a known manner. Switches 95 and 97 are not clocked but instead are enabled or closed depending on the user's programming.


Switched capacitor block 90 also includes analog elements having characteristics that can be set and changed in response to the user's programming in accordance with the particular analog function to be implemented. In the present embodiment, switched capacitor block 90 includes capacitors 92a-92e. In accordance with the present invention, the capacitance of capacitors 92a-e can be changed in response to the user's programming. In the present embodiment, the capacitors 92a-c are binarily weighted capacitors that allow the capacitor weights to be programmed by the user, while the capacitors 92d-e are either “in” or “out” (that is, they are not binarily weighted) according to the user programming. In one embodiment, the binary encoding of capacitor size for capacitors 92a-c comprises 31 units (plus zero) each and the encoding of capacitor size for capacitors 92d-e is 16 units each.


Switched capacitor block 90 is configured such that it can be used for the input stage of a switched capacitor biquad filter. When followed by a type B switched capacitor block, the combination of blocks provides a complete switched capacitor biquad (see FIGS. 14A and 14B).



FIG. 9B is a schematic diagram of a switched capacitor block 90a in accordance with one embodiment of the present invention. ABUS 25 is the output to the analog bus (e.g., buses 25a-d of FIG. 3). CBUS 24 is the output to the digital bus (e.g., buses 24a-d of FIG. 3). PWR 50 is a bit stream for encoding the power level for switched capacitor block 90a. CS 78 controls the output to CBUS 24.


Continuing with reference to FIG. 9B, BQTAP 161 is used when switched capacitor block 90a is used with a type B switched capacitor block to form a switched capacitor biquad (refer to FIGS. 14A and 14B below). AC.MUX 162 is for controlling the multiplexing of the inputs for both the C (CC) inputs 141 and the A (CA) inputs 131. A.REF 163 is for controlling the reference voltage inputs (REF 130). A.SIGN 164 controls the switch phasing of the switches on the bottom plate of the capacitor 92b. B.MUX 165 is for controlling the multiplexing of the inputs for the B (CB) inputs 140.



FIG. 10 shows one set of inputs into one embodiment of a type A switched capacitor block 90 in accordance with the present invention. It is appreciated that the inputs to switched capacitor block 90 are a function of the location of switched capacitor block 90 in the array of analog blocks 20 (FIGS. 2 and 3), and that the inputs received by switched capacitor block 90 depend on the particular analog function being implemented.


Referring to FIG. 10, REF inputs 130 includes the analog ground AGND 54 and reference voltages RF1 (REFLO) 72 and RF2 (REFHI) 73. CA inputs 131 can include inputs INB 132, INC 133, IND 134 and INE 135 from a continuous time block and/or switched capacitor block adjacent to switched capacitor block 90. CA inputs 131 can also include reference voltage RF2 (REFHI) 73 from a continuous time block and/or switched capacitor block adjacent to switched capacitor block 90. MUX 136 can be programmed so that either CA inputs 131 or REF inputs 130 are sampled on clock phase φ1, thereby allowing inverting or non-inverting configurations. The selection of RF1 (REFLO) 72 and RF2 (REFHI) 73 can be controlled by a comparator (not shown).



FIG. 11 shows the other set of inputs into the type A switched capacitor block 90 of FIG. 9A in accordance with the present invention. As previously mentioned, the inputs to switched capacitor block 90 are a function of the location of switched capacitor block 90 in the array of analog blocks 20 (FIGS. 2 and 3), and the inputs received by switched capacitor block 90 depend on the particular analog function being implemented.


With reference to FIG. 11, CB inputs 140 can include inputs INA 142, INB 143, INC 144 and IND 145 from a continuous time block and/or switched capacitor block adjacent to switched capacitor block 90. CC inputs 141 can include INB 143 and INE 146 from a continuous time block and/or switched capacitor block adjacent to switched capacitor block 90.



FIG. 12A is a block diagram of another embodiment of a switched capacitor block 100 in accordance with the present invention. This embodiment of switched capacitor block 100 is referred to as a type B switched capacitor block. Switched capacitor block 100 exemplifies analog blocks 21f, 21h, 21i and 21k of FIGS. 2 and 3.


With reference to FIG. 12A, the present embodiment of switched capacitor block 100 receives reference (REF) inputs 101, CCAOUT outputs 112, and inputs from two different types of capacitor arrays, CA inputs 102 and CB inputs 103. The designations “CA” and “CB” are chosen to distinguish the two different types of capacitor arrays that are inputs to switched capacitor block 100, and they may be different from the CA inputs 131 and CB inputs 140 of FIG. 9A. REF inputs 101, CA inputs 102 and CB inputs 103 are described further in conjunction with FIG. 1A3. CCAOUT 112 is a non-switched capacitor feedback from the output. It is appreciated that the inputs to switched capacitor block 100 are a function of the location of switched capacitor block 100 in the array of analog blocks 20 (FIGS. 2 and 3), and that the inputs received by switched capacitor block 100 depend on the particular analog function being implemented.


Continuing with reference to FIG. 12A, AGND 54 is the analog ground, OBUS (ABUS) 25 is the output to the analog bus (e.g., analog buses 25a-d of FIG. 3), and OUT 113 is an output from switched capacitor block 100 that may serve as an input to an adjacent switched capacitor block (refer to FIG. 3).


In the present embodiment, switched capacitor block 100 includes a multiplicity of switches 104a, 104b, 105a, 105b, 106a, 106b, 107, 108 and 109. Each of the switches 104a-b, 105a-b, 106a-b and 109 is assigned to a clock phase φ1 or φ2; that is, they are enabled or closed depending on the clock phase. Switches 105a-b, 106a-b and 109 are assigned to gated clocks and function in a known manner. Switches 107 and 108 are not clocked but instead are enabled or closed depending on the user's programming.


Switched capacitor block 100 also includes analog elements having characteristics that can be set and changed in response to the users programming in accordance with the particular analog function to be implemented. In the present embodiment, switched capacitor block 100 includes programmable capacitors 111a-111e. In accordance with the present invention, the capacitance of capacitors 111a-e can be changed in response to the user's programming. In the present embodiment, the capacitors 111a-c are binarily weighted capacitors that allow the capacitor weights to be programmed by the user, while the capacitors 111d-e are either “in” or “out” (that is, they are not binarily weighted) according to the user programming. In one embodiment, the binary encoding of capacitor size for capacitors 111a-c comprises 31 units (plus zero) each and the encoding of capacitor size for capacitors 111d-e is 16 units each.


Switched capacitor block 100 is configured such that it can be used for the output stage of a switched capacitor biquad filter. When preceded by a type A switched capacitor block, the combination of blocks provides a complete switched capacitor biquad (see FIGS. 14A and 14B).



FIG. 12B is a schematic diagram of a switched capacitor block 100a in accordance with one embodiment of the present invention. ABUS 25 is the output to the analog bus (e.g., buses 25a-d of FIG. 3). CBUS 24 is the output to the digital bus (e.g., buses 24a-d of FIG. 3). PWR 50 is a bit stream for encoding the power level for switched capacitor block 90a. CS 78 controls the output to CBUS 24.


Continuing with reference to FIG. 12B, BQTAP 161 is used when switched capacitor block 100a is used with a type A switched capacitor block to form a switched capacitor biquad (refer to FIGS. 14A and 14B below). A.MUX 166 is for controlling the multiplexing of the inputs for the A (CA) inputs 102. A. REF 167 is for controlling the reference voltage inputs (REF inputs 101). A.SIGN 168 controls the switch phasing of the switches on the bottom plate of the capacitor 111b; the bottom plate samples the input or the reference. B.MUX 169 is for controlling the multiplexing of the inputs for the B (CB) inputs 103.



FIG. 13 shows the inputs into one embodiment of a type B switched capacitor block 100 in accordance with the present invention. It is appreciated that the inputs to switched capacitor block 100 are a function of the location of switched capacitor block 100 in the array of analog blocks 20 (FIGS. 2 and 3), and that the inputs received by switched capacitor block 100 depend on the particular analog function being implemented.


With reference to FIG. 13, REF inputs 101 includes the analog ground AGND 54 and reference voltages RF1 (REFLO) 72 and RF2 (REFHI) 73. CA inputs 102 can include inputs INA 121, INB 122, INC 123, IND 124 and INE 125 from a continuous time block and/or switched capacitor block adjacent to switched capacitor block 100. CB inputs 103 can include INB 122 and INE 125 from a continuous time block and/or switched capacitor block adjacent to switched capacitor block 100. MUX 126 can be programmed so that either CA inputs 102 or REF inputs 101 are sampled on clock phase φ1, thereby allowing inverting or non-inverting configurations.



FIGS. 14A and 14B are diagrams showing one embodiment of a switched capacitor biquad 110 in accordance with the present invention. FIG. 14A shows the basic interconnection between a type A switched capacitor block 90 and a type B switched capacitor block 100. FIG. 14B is a schematic of a switched capacitor biquad 110 resulting from the interconnection of switched capacitor block 90 and switched capacitor block 100.



FIG. 15 is a flowchart of the steps in a process 1500 for implementing multiple functions using a single integrated circuit (e.g., integrated circuit 10 of FIG. 1A) in accordance with one embodiment of the present invention.


As described above, integrated circuit 10 includes a plurality of analog blocks 20 (FIGS. 2 and 3) that can be electrically coupled in different combinations to perform different functions. In step 1510 of FIG. 15, according to the user's programming, an analog block is selected from analog blocks 20.


In step 1520, the selected analog block is selectively and electrically coupled to one or more of the other analog blocks 20, depending on the particular analog function to be implemented and according to the user's programming. Certain analog blocks may be bypassed (not used) in the resultant circuit. Characteristics of elements in the analog blocks 20 can also be specified according to the user's programming, also depending on the particular analog function to be implemented.


In step 1530, the analog blocks 20 are reconfigured to perform a different analog function (e.g., a different combination of the analog blocks 20 can be selectively and electrically coupled to perform another function).


Exemplary Programmable Digital Functionality


The following co-pending U.S. application is hereby incorporated herein by reference, Ser. No. 09/909,045, by Warren Snyder, entitled “Digital Configurable Macro Architecture,” filed Jul. 18, 2001, and which is assigned to the assignee of the present invention. Further, the following co-pending U.S. application is also hereby incorporated herein by reference, Ser. No. 09/909,109, by Warren Snyder, entitled “Configuring Digital Functions In A Digital Configurable Macro Architecture,” filed Jul. 18, 2001, and which is also assigned to the assignee of the present invention.


A new digital configurable macro architecture is described. The digital configurable macro architecture is well suited for microcontroller or controller designs. In particular, the foundation of the digital configurable macro architecture is a programmable digital circuit block. In an embodiment, programmable digital circuit blocks are 8-bit circuit modules that can be programmed to perform any one of a variety of predetermined digital functions by changing the contents of a few registers therein, unlike a FPGA which is a generic device that can be programmed to perform any arbitrary digital function. Specifically, the circuit components of the programmable digital circuit block are designed for reuse in several of the predetermined digital functions such that to minimize the size of the programmable digital circuit block. The programmable digital circuit blocks can be configured, for example, as timers, counters, serial communication ports, cyclic redundancy generators/checkers (CRC), or pseudo random sequence generators (PRS). The user selects the digital function that is needed and configures the programmable digital circuit block accordingly.


The programmable digital circuit blocks can be configured to be coupled in series or in parallel to handle more complex digital functions. For example, a 24-bit timer can be designed by coupling three 8-bit programmable digital circuit blocks that have been individually configured as 8-bit timers. Additionally, a first programmable digital circuit block that is configured as a CRC generator can feed a second programmable digital circuit block that is configured as a serial output communication port. A variety of mathematical functions such as addition, multiplication, exponential, logarithmic, arithmetic and floating point operations, and a plethora of other mathematical functions may be effectuated herein.


More importantly, the configuration of the programmable digital circuit block is determined by its small number of configuration registers. This provides much flexibility. In particular, the configuration of the programmable digital circuit block is fast and easy since changes in configuration are accomplished by changing the contents of the configuration registers, whereas the contents are generally a small number of configuration data bits. Thus, the programmable digital circuit block is dynamically configurable from one predetermined digital function to another predetermined digital function for real-time processing. The function of the registers described herein may be effectuated, in one embodiment, by latches.



FIG. 16 illustrates a programmable digital circuit block 100 in accordance with an embodiment of the present invention. The programmable digital circuit block 100 is the foundation of a new digital configurable macro architecture of the present invention. The digital configurable macro architecture is well suited for microcontroller or controller designs.


The design of the programmable digital circuit block 100 in the digital configurable macro architecture was developed after examining and studying conventional microcontrollers to determine the types of digital functions that were implemented within various conventional microcontrollers. It was discovered that there were not very many different types of digital functions demanded in microcontroller applications. Furthermore, it was determined that these different types of digital functions had many circuit components in common. Moreover, it was determined that the digital functions were generally implemented as 8-bit or multiples of 8-bits because their length was generally based on the length of standard buses. This led to the development of the programmable digital circuit blocks 100, the building block of the digital configurable macro architecture.


In an embodiment, the programmable digital circuit block 100 is an 8-bit circuit module that can be programmed to perform any one of a variety of predetermined digital functions (which are useful in microcontroller applications) by changing the contents of a few configuration registers 50 therein, unlike a FPGA which is a generic device that can be programmed to perform any arbitrary digital function. Specifically, the circuit components of the programmable digital circuit block 100 are designed for reuse in several of the predetermined digital functions such that to minimize the size of the programmable digital circuit block 100. Hence, the programmable digital circuit block 100 is highly efficient in terms of die area. In an embodiment, the programmable digital circuit block 100 can be configured as a timer, a counter, a pulse width modulator (PWM), a cyclic redundancy generator/checker (CRC), a pseudo random sequence generator (PRS), a dead zone delay, a UART (universal asynchronous receiver-transmitter) transmitter, a UART (universal asynchronous receiver-transmitter) receiver, a SPI (serial peripheral interface) Master, or a SPI (serial peripheral interface) Slave.


In another embodiment, the programmable digital circuit block 100 can be configured as a timer, a counter, a pulse width modulator (PWM), a cyclic redundancy generator/checker (CRC), a pseudo random sequence generator (PRS), or a dead zone delay, whereas the digital communication functions (e.g., UART and SPI) are eliminated to further reduce the size of the programmable digital circuit block 100. In particular, the user selects the digital function that is needed and configures the programmable digital circuit block 100 accordingly. It should be understood that the programmable digital circuit block 100 can be designed to implement other digital functions.


In as much as a design can have an array of programmable digital circuit blocks 100, configurable to be coupled together in series or in parallel to handle more complex digital functions or to increase precision, a number of capabilities become achievable. As in the example recited above wherein a 24-bit timer can be designed by coupling three 8-bit programmable digital circuit blocks 100 that have been individually configured as 8-bit timers, other similar capabilities are achieved. For example, an 8-bit timer can be extended to 16- or 32-bit digital functions by similarly coupling multiple programmable digital circuit blocks 100 together. And in another example above, the capability of a first programmable digital circuit block configured as a CRC generator feeding a second programmable digital circuit block to configure a serial output communication port, illustrates achieving the advantages of reducing device programming and increasing its performance.


The configuration of the programmable digital circuit block 100 is determined by its configuration registers 50. The programmable digital circuit block 100 generally has one or more configuration registers 50. Importantly, a significant level of flexibility is thus achieved, in as much as the configuration of the programmable digital circuit block 100 may be made quickly, simply, and dynamically. It is achieved in one embodiment, by changing the contents of the configuration registers 50, which are generally a small number of configuration data bits. This dynamic configurability/reconfigurability between predetermined digital functions enables programmable digital circuit block 100 to effectuate, in one embodiment, real-time processing. In contrast, FPGAs need to have their look-up tables re-programmed in order to have them implement a new digital function, a time-consuming task that is not done in real-time processing.


Referring to FIG. 16, in an embodiment the programmable digital circuit block 100 includes one or more configuration registers 50, one or more data registers 40, a plurality of selectable logic circuits 30, one or more configurable inputs 20, one or more configurable outputs 10, one or more cascade outputs 60, one or more is cascade inputs 70, a clock input 80, and a system input 90. It should be understood that the programmable digital circuit block 100 can have other designs including lengths other than 8-bits.


The configuration registers 50 are programmed via the system bus 90. Any device, such as a microprocessor using data stored in a RAM or flash memory, can program (or write to) the configuration registers. The configuration registers 50 receive and store a plurality of configuration data corresponding to any one of the plurality of predetermined digital function described above. The programmed configuration registers 50 configure the programmable digital circuit block 100 to perform any one of the predetermined digital functions based on the configuration data. Moreover, the configuration registers 50 can be dynamically programmed with the configuration data for real-time processing. In addition, the configuration data includes (1) bits for indicating one of the predetermined digital functions and configuring the selectable logic circuits 30, (2) bits for configuring and selecting the configurable inputs 20 and the configurable outputs 10 and the clock input 80, (3) bits for indicating the mode of the predetermined digital function (e.g., parity, no parity, etc.), (4) bits for indicating the length of the predetermine digital function if several programmable digital circuit block 100 are coupled together (e.g., 8-bit, 16-bit, 24-bit, etc.), and (5) bits for indicating and configuring the interface between adjacent programmable digital circuit blocks 100 that are coupled together (e.g., configuring and selecting the cascade inputs 70 and the cascade outputs 60 for serial or parallel interfacing).


In general, the number of bits in the configuration data is sufficiently small to enable the configuration registers 50 to be programmed on-the-fly so that the programmable digital circuit block 100 can be dynamically configured and interfaced. Thus, the programmable digital circuit blocks 100 can be configured as a timer for a first length of time, re-configured as a counter for a second length of time, reconfigured as a PWM for a third length of time, and so on, for real-time processing. For example, it is possible for a single register write to configure the programmable digital circuit block 100 from a timer to a PWM or to a counter or to a CRC generator or etc. Some number of registers are configurable to store programming data for the programmable digital circuit blocks.


The connections 50A-50F between the configuration registers 50 and other components of the programmable digital circuit block 100 enable the configuration registers 50 to properly configure the programmable digital circuit block 100 to any one of the predetermined digital functions and to properly interface the programmable digital circuit block 100 with other programmable digital circuit blocks in series or in parallel.


Continuing with FIG. 16, the selectable logic circuits 30 are tailored such that they have a minimum set of circuit resources that can be programmed by the configuration registers 50 to implement any one of a variety of predetermined digital functions, unlike the FPGA where a substantial amount of circuit resources may remain unused. In particular, the design and structure of the selectable logic circuits 30 are dependent on the predetermined digital functions such that to minimize the size of the programmable digital circuit block 100. The fixed number of digital functions for the programmable digital circuit block 100 substantially influences the design of the programmable digital circuit block 100, providing cost savings and improving performance. The configuration registers 50 configure and select any of the selectable logic circuits 30 to perform one of the predetermined digital functions based on the configuration data. More importantly, the selectable logic circuits 30 are reused in several of the predetermined digital functions as will be illustrated below, ensuring the size efficiency of the programmable digital circuit block 100. In an embodiment, the selectable logic circuits 30 include a plurality of logic gates.


Moreover, the selectable logic circuits 30 realize any one of the variety of predetermined digital functions by using the data registers 40 to receive data, load data, capture data, etc. Thus, the data registers 40 are also reused in several of the predetermined digital functions as will be illustrated below.


Again referencing FIG. 16, the cascade outputs 60 and the cascade inputs 70 are selected and configured according to the configuration data. The cascade outputs 60 allow the programmable digital circuit block 100 to output signals for directly interfacing with adjacent or neighboring programmable digital circuit blocks. The cascade inputs 70 allow the adjacent or neighboring programmable digital circuit blocks to send signals that directly interface and are received by the programmable digital circuit block 100. Specifically, the cascade outputs 60 and the cascade inputs 70 enable multiple programmable digital circuit blocks to seamlessly interface to handle more complex digital functions or to increase precision as described above (e.g., 32-bit timer, CRC generator and SPI Master, 24-bit counter, etc.).



FIG. 17 illustrates a block diagram of an exemplary programmable digital device 200 having a plurality of programmable digital circuit blocks 210A-210H in accordance with an embodiment of the present invention. The plurality of programmable digital circuit blocks 210A-210H includes a first group and a second group. The first group includes the programmable digital circuit blocks 210A-210B and 210E-210F. Moreover, each programmable digital circuit block of the first group can be configured as a timer, a counter, a pulse width modulator (PWM), a cyclic redundancy generator/checker (CRC), a pseudo random sequence generator (PRS), or a dead zone delay. The second group includes the programmable digital circuit blocks 210C-210D and 210G-210H. Moreover, each programmable digital circuit block of the second group can be configured as a timer, a counter, a pulse width modulator (PWM), a cyclic redundancy generator/checker (CRC), a pseudo random sequence generator (PRS), a dead zone delay, a UART (universal asynchronous receiver-transmitter) transmitter, a UART (universal asynchronous receiver-transmitter) receiver, a SPI (serial peripheral interface) Master, or a SPI (serial peripheral interface) Slave.


As illustrated in FIG. 17, adjacent or neighboring programmable digital circuit blocks are interfaced via cascade lines 205 (input or output) as described above.


The cascade lines 205 enable the programmable digital circuit blocks 210A-210H to seamlessly interface to handle more complex digital functions or to increase precision. For example, a 32-bit counter can be designed by coupling four 8-bit programmable digital circuit blocks that have been individually configured as 8-bit counters. Similarly, the 8-bit counter can be extended to 16- or 24-bit digital functions by coupling multiple programmable digital circuit blocks together. Additionally, a first programmable digital circuit block that is configured as a CRC generator can feed a second programmable digital circuit block that is configured as a serial output communication port, reducing device programming and increasing performance.


Moreover, the exemplary programmable digital device 200 includes a signal bus for digitized analog signals, a clock bus, a system bus for programming the programmable digital circuit blocks 210A-210H, and a plurality of global data buses for transmitting data to/from the programmable digital circuit blocks 210A-210H.



FIG. 18 illustrates a block diagram of a timer configuration of a programmable digital circuit block in accordance with an embodiment of the present invention. FIG. 19 illustrates a block diagram of a counter configuration of a programmable digital circuit block in accordance with an embodiment of the present invention. FIG. 20 illustrates a block diagram of a pulse width modulator (PWM) configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.


As illustrated in FIGS. 18-20, the selectable logic circuits 320 and 340 are reused for the timer, counter, and PWM configurations. Moreover, the first data register 310, the second data register 330, and the third data register 350 of the programmable digital circuit block are reused for the timer, counter, and PWM configurations. In essence, the configuration data loaded onto the configuration registers determines how the data registers 310, 330, and 350 are to be used, what operation is to be performed on the data by the selectable logic circuits 320 and 340, where the input data is selected from (e.g., system bus (SB), signal bus, global bus, etc.), where the output data is transmitted, what clock signal is to be used, what are the cascade inputs (e.g., DIN, CI, etc.) from other programmable digital circuit blocks, what are the cascade outputs (e.g., DOUT, CO, etc.) to other programmable digital circuit blocks, when to generate an interrupt (INT), and what is the data flow within the programmable digital circuit block so that the programmable digital circuit block can properly perform any one of the predetermined digital functions.



FIG. 21 illustrates a block diagram of a UART transmitter configuration of a programmable digital circuit block in accordance with an embodiment of the present invention. FIG. 22 illustrates a block diagram of a UART receiver configuration of a programmable digital circuit block in accordance with an embodiment of the present invention. FIG. 23 illustrates a block diagram of a SPI Master configuration of a programmable digital circuit block in accordance with an embodiment of the present invention. FIG. 24 illustrates a block diagram of a SPI Slave configuration of a programmable digital circuit block in accordance with an embodiment of the present invention.


As illustrated in FIGS. 21-24, the selectable logic circuits 410 and 420 are reused for the UART transmitter, the UART receiver, the SPI Master, and the SPI Slave configurations. Moreover, the first data register 310, the second data register 330, and the third data register 350 of the programmable digital circuit block are reused in several of the UART transmitter, the UART receiver, the SPI Master, and the SPI Slave configurations. However, the selectable logic circuit 430 is used in the UART transmitter configuration of FIG. 21 since the UART protocol requires that particular protocol bits (e.g., start bits, stop bits, etc.) to be generated by the UART transmitter.



FIGS. 18-24 illustrate that the programmable digital circuit block can be configured fast and easily. Furthermore, FIGS. 18-24 illustrate that the programmable digital circuit block is highly efficient in terms of die area.


In a programmable digital circuit according to one embodiment, at least three programmable digital circuit blocks are coupled in series and/or in parallel. Each programmable digital circuit block is (i) controlled by an n-bit register or look-up table containing programming information including a cascading bit and (ii) configured to provide at least one of a plurality of mathematical functions, wherein the cascading bit determines whether a particular programmable digital circuit block is coupled is series with an adjacent programmable digital circuit block, and when programmed, the programmable digital circuit provides at least one digital system function.


Exemplary Mapping & Configurability Functionality


The following co-pending U.S. application is hereby incorporated herein by reference, Ser. No. 09/953,423, by Warren Snyder, entitled “a Configurable Input/Output Interface For A Microcontroller,” filed Sep. 14, 2001, and which is assigned to the assignee of the present invention.


One embodiment of the present invention provides a configurable input/output interface which allows designers to specify which resource on the microcontroller device will be accessible to a given I/O pin. Furthermore, embodiments of the present invention can access the rest of the microcontroller device functions through a configurable interface and can be reconfigured dynamically (e.g., per clock cycle). The present invention provides a configurable input/output interface which gives designers the flexibility to easily create customized configurations which incur no NRE and require no unusual design skills.


The present invention is an input/output (I/O) pin with a configurable interface to a microprocessor, and to a global mapping which determines access to functional units on the microcontroller. The I/O pin can be selectively coupled to the global mapping or to the microprocessor on each clock cycle. The mapping configuration selectively couples a different functional unit or units of the microcontroller to access the I/O pin on each clock cycle. The interface between the I/O pin and the rest of the system can be dynamically configured by software created or modified by a user, or by hardware. The present invention facilitates repositioning pin locations on a microcontroller because it is a software modification rather than a hardware modification. The present invention further enables the microcontroller functions to be configured by the user rather than by the microcontroller vendor.



FIG. 25 is a block diagram showing a microcontroller device 101 having a configurable interface 110 consisting of input/output (I/O) pin 102, configuration system 103, and global mapping system 105. Configuration system 103 can, depending upon its configuration, selectively couple I/O pin 102 with either a microprocessor 104 or global mapping system 105. Global mapping system 105 is coupled with a plurality of functional units of Digital Configurable System Macro (DCSM) 106. Global mapping system 105 selectively couples I/O pin 102 with a selected functional unit or units of DCSM 106.


The functional units of DCSM 106 are programmable digital and analog units which can be configured and connected by a user as needed to create a customized microcontroller device. The digital units can be timers, controllers, serial communications units, Cycle Redundancy Check (CRC) generators, Universal Asynchronous Receiver/Transmitters (UARTs), etc. For functions that require higher precision or counting, the digital units can be combined. The analog units are programmable operational amplifier circuits which can be interconnected to create a desired amplifier circuit. Typical peripherals that can be created are amplifiers, programmable gain, digital to analog converters, analog to digital converters, analog drivers, and high-, low-, and band-pass filters, etc. Higher order user modules such as modems, complex motor control, and complete sensor signal chains can be created from these building blocks. The ability to program microcontroller device 101 to suit a particular application necessitates a reconfigurable I/O interface which is provided by the present invention.



FIG. 26 is a block diagram of a configurable input/output interface 200 for a microcontroller as embodied by the present invention. For purposes of clarity, the following discussion will utilize the block diagram of FIG. 26 with flow chart 300 of FIG. 27, to describe one embodiment of the present invention.


In one embodiment, I/O pin 102 and configuration system 103 are integrated into a pin unit. A plurality of these integrated pin units are combined to create a port. However, each of the pin units in a port is still operable to be addressed individually by global mapping system 105. In one embodiment, 8 of these integrated pin units comprise each port. However, while the present embodiment recites an 8-pin port, the present invention is well suited to utilize ports with other numbers of pins as well. An 8 pin port is recited so that disproportionate amounts of addressing resources are not used by the I/O interfaces.


With reference to FIG. 26 and to step 305 of FIG. 27, the registers of configuration system 103 and global mapping system 105 are configured. For an input operation, these registers are in logic decoder 205 and the input global mapping 211. This configuration information can be sent from microprocessor 104 (shown in FIG. 265). However, the configuration of the global mapping is not exclusively limited to the microprocessor. Other mechanisms on microcontroller 101 which are capable of changing the configuration bits, such as a state machine, flash bits, or static RAM, can be used to change the configuration.


Global mapping system 103 is maintained by a control program which supplies the logic to selectively couple I/O pin 102 with functional units of DCSM 106. The programming of the control program is done by the user which allows greater flexibility than using a pre-determined mapping scheme provided by a silicon vendor. The control program also facilitates reconfiguring pin assignment because it is now a software modification rather than a hardware modification.


Customer firmware initializes a particular mapping by writing the configuration to registers associated with the global map. The configuration of the mapping can be changed at any time (e.g., per clock cycle). The global mapping system allows, for example, 4 separate functional units on DCSM 106 to send 4 different signals through the same I/O pin by coupling a particular signal from a functional unit of the DCSM to the I/O pin from cycle to cycle. In another example, a single clock signal can be simultaneously coupled to 4 different I/O pins. This facilitates interfacing with resources on microcontroller device 101 in multiple ways, either from a single or multiple pin configuration.


With reference to FIG. 26 and to step 310 of FIG. 27, data is received at I/O pad 218, and directed through receiver driver 203 by way of input bus 201.


With reference to FIG. 26 and to step 315 of FIG. 27, a logic operation is performed to determine whether data is sent to global mapping system 105 or to microprocessor 104. Depending on the configuration of logic decoder 205 done in step 305, the data is sent either to input global mapping 211 of global mapping system 105 or to microprocessor 104. A signal from control bus 217 indicates to logic decoder 205 which bus driver to enable.


With reference to FIG. 26 and to step 320 of FIG. 27, the data is sent to microprocessor 104 and process 300 ends at this point. Bus driver 206 couples I/O pad 218 to data bus 208, thus giving microprocessor 104 access to the circuit.


With reference to FIG. 26 and to step 325 of FIG. 2700, data is sent to input global mapping 211. This is the result of logic decoder 205 being configured by the control program to send the data to global mapping system 105 in step 305. Bus driver 207 couples I/O pin 102 to global input bus 209 and thus to input global mapping 211.


With reference to FIG. 26 and to step 330 of FIG. 27, input global mapping 211 sends the data to the DCSM 106 and process 300 ends at this point. Global mapping 211 is configured by the control program in step 305 to send the data to a specific functional unit or units of DCSM 106.



FIG. 28 is a flowchart of a process 400 for using a configurable input/output interface for a microcontroller to output data as embodied by the present invention. For purposes of clarity, the following discussion will utilize the block diagram of FIG. 26 with flow chart 400 of FIG. 28, to describe one embodiment of the present invention.


Referring to FIG. 26 and to step 410 of FIG. 28, the registers of configuration system 103 and global mapping system 105 are configured. For an output operation, the registers are the configuration registers 216 and the output global mapping 212 registers. Again, a control program configures configuration registers 215 and output global mapping 212 to selectively couple I/O pin 102 with a functional unit or units of DCSM 106 or with microprocessor 104. The configuration can be done by microprocessor 104, or any mechanism on microcontroller 101 which is capable of changing the configuration bits, such as a state machine, flash bits, or static RAM, and can be changed at any time (e.g., per clock cycle).


Configuration registers 216 can also be configured to provide a variety of system functions for the I/O interface of the present invention and which can be reconfigured at any time (e.g., per clock cycle). For example, configuration registers 216 provide the capability for programmable pull-up or pull-down resistors, programmable interrupts per pin (e.g., positive edge triggered, negative edge triggered, or triggered on any change), programmable interrupt polarities and modes, and programmable drive strength. In one embodiment of the present invention, there are 8 configuration registers for each I/O pin allowing a maximum of 256 functions which could be defined for each pin. However, 2 or more registers can be used to control a particular pin function. For example, 2 registers can be used for the I/O driver to provide 4 drive strength levels, 2 registers used for interrupt polarity, etc. Thus the present invention is well suited to various register configurations to provide more or less system functions as needed.


Referring to FIG. 26 and to step 420 of FIG. 28, a logic operation takes place where multiplexer 215 reads the configuration information held in configuration registers 216 and selectively couples data from either microprocessor 104 or output global mapping 212 to output bus 202.


With reference to FIG. 26 and to step 430 of FIG. 28, multiplexer 215, as a result of the configuration of registers 216, couples data register 214 to output bus driver 204 and output bus 202. In so doing, data held in data register 214 from microprocessor 104 will be output later in process 400. A signal from control bus 217 will enable data register 214 to shift the data out to multiplexer 215.


With reference to FIG. 26 and to step 440 of FIG. 26, multiplexer 215, as a result of the configuration of registers 215, couples output global mapping 212 to output bus 102 through bus driver 213. This allows data from a functional unit or units of DCSM 106 to be output later in process 400. Global output bus 210 couples output global mapping 212 with output bus driver 213, and multiplexer 215.


With reference to FIG. 26 and to step 450 of FIG. 28, data selected at step 420 of FIG. 28 is output from I/O pad 218 and process 400 ends at this point.


A global routing matrix (e.g., global mapping system 105; FIG. 26) is configured to couple the I/O blocks to the programmable digital and programmable analog circuit blocks. Further, a system macro routing matrix (e.g., intra-block routing channels 1002, configuration system 103; FIGS. 2, 26, respectively) is configured to couple a subset of the programmable digital circuit blocks to the programmable analog circuit blocks.


Exemplary Circuit and System


Exemplary Circuit


It is appreciated that an exemplary circuit (e.g., circuit 10; FIG. 1A) incorporating an embodiment of the present invention herein may be an integrated circuit of any type, such as microcontrollers. Such a circuit will have a microprocessor (e.g., CPU 14; FIG. 1A), and a number of programmable analog circuit blocks (e.g., analog blocks 20; FIG. 1B). The circuit will also have some number of programmable digital circuit blocks (e.g., digital blocks 100; FIG. 1B) coupled, directly or indirectly, to at least one of the programmable analog circuit blocks. Further, the analog and digital blocks are coupled, directly of indirectly, to the microprocessor, for example, via a system bus (e.g., bus 11; FIGS. 1A, 1B). The exemplary circuit will have at least one of its programmable digital circuit blocks configured to provide at least one of a number of mathematical functions, and at least one of its analog circuit blocks configured to provide at least one of some number of analog functions.


In the exemplary circuit, at least one of the programmable digital circuit blocks is coupled to at least one of another of the digital circuit blocks. Further, in the exemplary circuit, at least one of the programmable analog circuit blocks is coupled to at least one of another of the analog circuit blocks. This enables the exemplary circuit to effectuate at least one analog and/or digital system function.


A programmable memory (e.g., flash ROM 16, registers 50; FIGS. 1B, 16, respectively), coupled therein to the programmable analog and digital circuit blocks contains data for programming at least one of the programmable digital circuit blocks and at least one of the analog circuit blocks. The programmable memory may be effectuated in registers and/or latches (e.g., registers 50: FIG. 16), within the analog and digital blocks and elsewhere, such as in programmable interconnects between the circuit blocks, and in programmable I/O pin arrays. Programmable memory is also available in the exemplary circuit herein within a program memory, such as flash ROM (e.g., flash ROM 16; FIG. 1). This programmable memory is erasable, which may be executed electrically.


A number of input and/or output blocks (e.g., pin by pin configurable I/O transducers 18; FIG. 1B) are coupled directly or indirectly to at least one of the programmable memory, the digital circuit blocks, the analog circuit blocks, and the microprocessor. At least one of the input and/or output blocks sends signals to the microprocessor. At least one of the input and/or output blocks sends signals to the analog and to the digital circuit blocks. At least one of the input and/or output blocks (I/O blocks) sends signals to the programmable memory. Further, at least one of the analog circuit blocks sends signals to at least one of the digital circuit blocks. At least one of the I/O blocks sends signals to the programmable memory, and at least one of the I/O blocks sends signals to the microprocessor.


In the present exemplary circuit, a number of registers are configured to store programming data for the programmable digital circuit blocks. Some number of latches are configured to store programming data for the programmable analog circuit blocks.


A global routing matrix (e.g., global mapping system 105; FIG. 26) is configured to couple the I/O blocks to the programmable digital and programmable analog circuit blocks. Further, a system macro routing matrix (e.g., intra-block routing channels 1002, configuration system 103; FIGS. 2, 26, respectively) is configured to couple a subset of the programmable digital circuit blocks to the programmable analog circuit blocks.


Programmable digital blocks may programmatically communicate with other programmable digital blocks. Programmable analog blocks may programmatically communicate with other analog blocks. Further, programmable digital blocks and programmable analog blocks may programmatically intercommunicate.


The programmable analog circuit blocks may, in one embodiment, be constituted by a matrix of n by m analog configurable system macros, n and m independently being an integer of at least two. Each of said analog configurable system macros is configured to provide one or more analog functions, which may include gain functions, comparator functions, switched capacitor functions, filter functions, analog-to-digital conversion functions, digital-to-analog conversion functions, and amplifier functions, among others. The programmable analog circuit, constituted by a matrix of n by m number of programmable analog circuit blocks, each coupled to an adjacent block and configured to provide at least one of a plurality of analog functions. In the exemplary circuit herein, at least two of the number of programmable digital circuit blocks are coupled in series to provide a digital system function.


In the programmable digital circuit according to one embodiment, at least three programmable digital circuit blocks are coupled in series and/or in parallel. Each programmable digital circuit block is (i) controlled by an n-bit register or look-up table containing programming information including a cascading bit and (ii) configured to provide at least one of a plurality of mathematical functions, wherein the cascading bit determines whether a particular programmable digital circuit block is coupled is series with an adjacent programmable digital circuit block, and when programmed, the programmable digital circuit provides at least one digital system function.


Exemplary System


Thus, an exemplary system (e.g., system 10; FIGS. 1A, 1B) is effectuated by the exemplary circuit herein. The exemplary system is constituted by a microcontroller (e.g., as effectuated by bus 11, SRAM 12, ROM 16, and microprocessor 16, etc.; FIGS. 1A, 1B), a subsystem constituted by a functionality (e.g., SoC blocks 25; FIGS. 1A; 1B) coupled (e.g., via system bus 11; FIGS. 1A, 1B) to the microcontroller, and a coupling mechanism (e.g., pin by pin configurable I/O transceivers 18; FIG. 1B) coupled to the subsystem. The functionality is configurable to selectively execute a first function (e.g., analog and/or digital) according to an input of a first type (e.g., a function-designating configuration setting). The coupling mechanism is configurable to implement a connectability state for the system by which the system is connectable to an external entity according to an input of a second type (e.g., a pin activation/deactivation, and/or pin function designating program). The functionality, as configured herein, may perform digital function, an analog function, or a mix of analog and digital functions.


The system is further constituted by an interconnecting mechanism, and the functionality further constituted by a first sub-functionality (e.g., analog system blocks 20; FIGS. 1B, 1C) performing the analog functions and a second sub-functionality (e.g., digital system blocks 100; FIGS. 1B, 1C) performing the digital functions. The interconnecting mechanism is configurable to interconnect the first sub-functionality and the second sub-functionality according to an input of a third type, e.g., an intrafunctionality (e.g., within system block 25; FIGS. 1A, 1B, 1C) interconnection configuring program.


Further, the exemplary system herein is constituted in part by a timing functionality (e.g., system timing block 19; FIG. 1B), which is configurable to generate a number of time bases according to an input of a fourth type (e.g., a time base selection configuration setting).


Exemplary Method of Configuration of Functions


With reference to FIG. 29, a process 2900 for configuring a system (e.g., system 10; FIG. 1B) is described. Beginning instep 2910, an analog and/or digital function is selected. This function may be effectuated in part by one or more functional units, e.g., functionalities, which may, in one embodiment, be analog and digital functionalities (e.g., analog and digital system blocks 20 and 100, respectively; FIG. 1B).


In step 2920, an interconnection state between analog and digital functionalities, and between the functionalities and the rest of the system, including an integrated circuit, which in one embodiment may be a microcontroller, is selected. The interconnection state is one capable of effectuating the selected function. The interconnection state may be set within a programmable interconnecting mechanism (e.g., programmable interconnect 1002; FIG. 1B).


A connectability state is then selected; step 2930. The connectability state is one capable of effectuating a functional connection with an external entity, which can be any other system, electronic device, communication medium, or any other functional entity outside of the system. The connectability state may be set within a programmable, e.g., configurable, electrical and/or communicative coupling mechanism (e.g., pin by pin configurable I/O transceivers; FIG. 1B). In one embodiment, an exemplary connectability state may be achieved by activating certain connection pins, ports, and/or other mechanism components by coupling them to particular signal sources, such as the analog and digital functionalities, within the system. In one embodiment, an exemplary connectability state may be achieved by activating certain connection pins, ports, and/or other mechanism components, and deactivating others.


In step 2940, it is determined whether or not a timing function is to be configured. Process 2900 proceeds as determined by the outcome of this decision.


If in step 2940, it is decided that a timing function is to be configured, a time base is selected in step 2945. The time base, in one embodiment, may be any of a myriad of possible timing and/or other periodic signals of various waveforms, generated by a system timing functionality (e.g., system timing block 19; FIG. 1B). The time base may be provided for use by any of the analog and digital functionalities in performance of their configured function, wherein the selected function requires a timing reference of a particular frequency, period, amplitude, and/or waveform.


For example, in certain functional situations, a digital functionality may be configured to perform a UART function, which would require a particular time base input from the system timing functionality. In another example, an analog functionality may be configured to perform a conversion and/or modulation function, which would also require a particular time base input from the system timing functionality.


After selection of a time base (step 2945), or if it was determined in step 2940 that no timing function was to be configured, process 2900 proceeds via step 2950, wherein the selected function, interconnection state, and connectability state (and time base, if selected in step 2945) are implemented. The implementation of the function, interconnection state, and connectability state (and time base, if selected in step 2945) may, in one embodiment, be implemented simultaneously. In another embodiment, the may be implemented sequentially. In yet another embodiment, they mat be implemented by a combination of simultaneous and sequential actions. Process 2900 is complete upon full, successful execution of step 2950.


Process 2900 may be implemented by any effective mechanism for effectuating a user input upon the system, including, but not limited to, generation and transmission of appropriate electrical, electronic, optical, digital, analog, and/or any other communicative signals provided to the system by any effective external agent, such as a computer system or any other signal generating and inputting system. Thus, process 2900 may be implemented by a programmed agent operating automatically and executing a program to effectuate process 2900 and its corresponding purposes.


In summary, the present invention provides an integrated system with a microcontroller and integrated circuits (ICs) on a single chip to effectuate a single-chip system, including analog and digital functionality, and a method of configuring such an integrated system. The present invention also provides a single-chip system which has sufficient flexibility to function in a very wide range of multiple applications, including applications wherein integrated analog functionalities are required. Further, the present invention provides a method of programming and dynamically reconfiguring a single-chip system, and a single-chip system which is so programmable and dynamically reconfigurable. Further still, the present invention provides a single-chip system which achieves the foregoing advantages and yet is relatively inexpensive and simple to configure, apply, use, and reconfigure.


Embodiments of the present invention are directed to a microcontroller device having a microprocessor, programmable memory components, and programmable analog and digital blocks. The programmable analog and digital blocks are configurable based on programming information stored in the memory components. Programmable interconnect logic, also programmable from the memory components, is used to couple the programmable analog and digital blocks as needed. The advanced microcontroller design also includes programmable input/output blocks for coupling selected signals to external pins. The memory components also include user programs that the embedded microprocessor executes. These programs may include instructions for programming the digital and analog blocks “on-the-fly,” e.g., dynamically. In one implementation, there are a plurality of programmable digital blocks and a plurality of programmable analog blocks.


The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.


An embodiment of the present invention, a programmable microcontroller architecture, is thus described. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the below claims.

Claims
  • 1. A microprocessor circuit, comprising: a plurality of programmable analog circuit blocks wherein said analog circuit blocks are dynamically programmable and configurable to perform one or more of a plurality of various analog function and wherein said plurality of programmable analog circuit blocks comprises a matrix of n by m, n and m independently being an integer of at least two;each of said plurality of programmable analog circuit blocks is configured to provide one or more analog function and wherein said plurality of programmable analog circuit blocks are configured to be individually at different power levels;a plurality of programmable digital circuit blocks configured to provide at least one of a plurality of digital functions, wherein each programmable digital circuit block is configurable to perform any one of said digital functions upon being configured with a single register write operation;a routing matrix configured to couple a subset of said plurality of programmable analog circuit blocks to a first subset of said plurality of programmable digital circuit blocks, at least a first one of said programmable analog circuit blocks being coupled to at least a first one of said programmable digital circuit blocks; anda programmable non-volatile memory coupled directly or indirectly to said plurality of programmable digital circuit blocks and said plurality of programmable analog circuit blocks, said programmable memory comprising data for programming at least one of said programmable digital circuit blocks and at least one of said plurality of programmable analog circuit blocks.
  • 2. The circuit as recited in claim 1, wherein when programmed, each of said plurality of programmable analog circuit blocks provides at least one of said plurality of analog functions.
  • 3. The circuit of as recited in claim 1, wherein when programmed, each programmable digital circuit blocks provides at least one of said digital functions.
  • 4. The circuit as recited in claim 2, wherein when programmed, said plurality of programmable analog circuit blocks and said plurality of programmable digital circuit blocks provides at least one digital and/or analog function.
  • 5. The circuit as recited in claim 1, wherein when programmed, said routing matrix couples a second one of said subset of said plurality of programmable analog circuit blocks to a second one of said subset of said plurality of programmable digital circuit blocks.
  • 6. The circuit as recited in claim 1, wherein each of said plurality of programmable analog circuit blocks is configured to provide one or more analog functions selected from the group consisting of a gain function, a comparator function, a switched capacitor function, a filter function, an analog to digital conversion function, a digital to analog conversion function, and an amplifier function.
  • 7. The circuit as recited in claim 1, wherein at least two of said plurality of programmable digital circuit blocks are coupled in series to provide a digital system function.
  • 8. A microcontroller means, comprising: a plurality of programmable analog means wherein said analog means are dynamically programmable and configurable to perform one or more of a plurality of various analog functions and wherein said plurality of programmable analog means comprises a matrix of n by m, n and m independently being an integer of at least two;each of said plurality of programmable analog means is configured to provide one or more analog functions and wherein said plurality of programmable analog means are configured to be individually at different power levels;a plurality of programmable digital means configured to provide at least one of a plurality of digital means, wherein each programmable digital means is configured to perform any one of said digital function upon being configured with a single register write operation;a routing means configured to couple a subset of said plurality of programmable analog means to a first subset of said plurality of programmable digital means, at least a first one of said programmable analog means being coupled to at least a first one of said programmable digital means; anda programmable non-volatile memory means coupled directly or indirectly to said plurality of programmable digital means and said plurality of programmable analog means, said programmable memory means comprising data for programming at least one of said programmable digital means and at least one of said plurality of programmable analog means.
  • 9. The microcontroller means as recited in claim 8, wherein when programmed, each of said plurality of programmable analog means provides at least one of said plurality of analog function.
  • 10. The microcontroller means as recited in claim 8, wherein when programmed, each programmable digital means provides at least one of said digital function.
  • 11. The microcontroller means as recited in claim 8, wherein when programmed, said plurality of programmable analog means and said plurality of programmable digital means provideds at least one digital and/or analog function.
  • 12. The microcontroller means as recited in claim 8, wherein when programmed, said routing means couples a second one of said subset of said plurality of programmable analog means to a second one of said subset of said plurality of programmable digital means.
  • 13. The circuit as recited in claim 8, wherein each of said programmable analog means is configured to provide one or more analog means selected from the group consisting of a gain means, a comparator means, a switched capacitor means, a filter means, an analog to digital conversion means, a digital to analog conversion means, and an amplifier means.
  • 14. The circuit as recited in claim 8, wherein at least two of said plurality of programmable digital means are coupled in series to provide a digital system function.
  • 15. A microcontroller circuit, comprising: a microprocessor;a plurality of programmable analog circuit blocks wherein said programmable analog circuit blocks are dynamically programmable and configurable to perform one or more of a plurality of various analog functions and wherein said plurality of programmable analog circuit blocks comprises a matrix of n, by m, n and m independently being an integer of at least two;each of said plurality of programmable analog circuit blocks is configured to provide one or more analog function and wherein said plurality of programmable analog circuit blocks are configured to be individually at different power levels;a plurality of programmable digital circuit blocks configured to provide at least one of a plurality of digital functions, wherein each programmable digital circuit block is configurable to perform any one of said digital functions upon being configured with a single register write operation;a routing matrix configured to couple a subset of said plurality of programmable analog circuit blocks to a first subset of said plurality of programmable digital circuit blocks, at least a first one of said programmable analog circuit blocks being coupled to at least a first one of said programmable digital circuit blocks; anda programmable non-volatile memory coupled directly or indirectly to said plurality of programmable digital circuit blocks and said plurality of programmable analog circuit blocks, said programmable memory comprising data for programming at least one of said programmable digital circuit blocks and at least one of said plurality of programmable analog circuit blocks.
  • 16. The circuit as recited in claim 15, wherein when programmed, each of said plurality of programmable analog circuit blocks provides at least one of said plurality of analog functions.
  • 17. The circuit as recited in claim 15, wherein when programmed, each programmable digital circuit block provides at least one of said digital functions.
  • 18. The circuit as recited in claim 15, wherein when programmed, said plurality of programmable analog circuit blocks and said plurality of programmable digital circuit blocks provides at least one digital and/or analog function.
  • 19. The circuit as recited in claim 15, wherein when programmed, said routing matrix couples a second one of said subset of said plurality of programmable analog circuit blocks to a second one of said subset of said plurality of programmable digital circuit blocks.
  • 20. The circuit as recited in claim 15, wherein each of said plurality of programmable analog circuit blocks is configured to provide one or more analog functions selected from the group consisting of a gain function, a comparator function, a switched capacitor function, a filter function, an analog to digital conversion function, a digital to analog conversion function, and an amplifier function.
  • 21. The circuit as recited in claim 15, wherein at least two of said plurality of programmable digital circuit blocks are coupled in series to provide a digital system function.
RELATED UNITED STATES APPLICATION

This utility application claims priority to U.S. Provisional Patent Application, Ser. No. 60/243,708, entitled “Advanced Programmable Microcontroller Device,” with filing date Oct. 26, 2000, by Warren Snyder, et al., and assigned to the assignee of the present application.

US Referenced Citations (1148)
Number Name Date Kind
3600690 White Aug 1971 A
3725804 Langan Apr 1973 A
3740588 Stratton et al. Jun 1973 A
3805245 Brooks et al. Apr 1974 A
3810036 Bloedorn May 1974 A
3831113 Ahmed Aug 1974 A
3845328 Hollingsworth Oct 1974 A
3940760 Brokaw Feb 1976 A
4061987 Nagahama Dec 1977 A
4134073 MacGregor Jan 1979 A
4138671 Comer et al. Feb 1979 A
4176258 Jackson Nov 1979 A
4250464 Schade, Jr. Feb 1981 A
4272760 Prazak et al. Jun 1981 A
4283713 Philipp Aug 1981 A
4326135 Jarrett et al. Apr 1982 A
4344067 Lee Aug 1982 A
4380083 Andersson et al. Apr 1983 A
4438404 Philipp Mar 1984 A
4475151 Philipp Oct 1984 A
4497575 Philipp Feb 1985 A
4604363 Newhouse et al. Aug 1986 A
4608502 Dijkmans et al. Aug 1986 A
4656603 Dunn Apr 1987 A
4670838 Kawata Jun 1987 A
4689740 Moelands et al. Aug 1987 A
4692718 Roza et al. Sep 1987 A
4701907 Collins Oct 1987 A
4727541 Mori et al. Feb 1988 A
4736097 Philipp Apr 1988 A
4740966 Goad Apr 1988 A
4755766 Metz Jul 1988 A
4773024 Faggin et al. Sep 1988 A
4794558 Thompson Dec 1988 A
4802103 Faggin et al. Jan 1989 A
4802119 Heene et al. Jan 1989 A
4807183 Kung et al. Feb 1989 A
4809345 Tabata et al. Feb 1989 A
4812684 Yamagiwa et al. Mar 1989 A
4813013 Dunn Mar 1989 A
4827401 Hrustich et al. May 1989 A
4831546 Mitsuta et al. May 1989 A
4833418 Quintus et al. May 1989 A
4868525 Dias Sep 1989 A
4876466 Kondou et al. Oct 1989 A
4876534 Mead et al. Oct 1989 A
4878200 Asghar et al. Oct 1989 A
4879461 Philipp Nov 1989 A
4879688 Turner et al. Nov 1989 A
4885484 Gray Dec 1989 A
4907121 Hrassky Mar 1990 A
4935702 Mead et al. Jun 1990 A
4939637 Pawloski Jul 1990 A
4942540 Black et al. Jul 1990 A
4947169 Smith et al. Aug 1990 A
4953928 Anderson et al. Sep 1990 A
4962342 Mead et al. Oct 1990 A
4964074 Suzuki et al. Oct 1990 A
4969087 Tanagawa et al. Nov 1990 A
4970408 Hanke et al. Nov 1990 A
4972372 Ueno Nov 1990 A
4977381 Main Dec 1990 A
4980652 Tarusawa et al. Dec 1990 A
4999519 Kitsukawa et al. Mar 1991 A
5043674 Bonaccio et al. Aug 1991 A
5049758 Mead et al. Sep 1991 A
5050168 Paterson Sep 1991 A
5053949 Allison et al. Oct 1991 A
5055827 Philipp Oct 1991 A
5059920 Anderson et al. Oct 1991 A
5068622 Mead et al. Nov 1991 A
5073759 Mead et al. Dec 1991 A
5083044 Mead et al. Jan 1992 A
5095284 Mead Mar 1992 A
5097305 Mead et al. Mar 1992 A
5099191 Galler et al. Mar 1992 A
5107146 El-Ayat Apr 1992 A
5107149 Platt et al. Apr 1992 A
5109261 Mead et al. Apr 1992 A
5119038 Anderson et al. Jun 1992 A
5120996 Mead et al. Jun 1992 A
5122800 Philipp Jun 1992 A
5126685 Platt et al. Jun 1992 A
5127103 Hill et al. Jun 1992 A
5128871 Schmitz Jul 1992 A
5136188 Ha et al. Aug 1992 A
5140197 Grider Aug 1992 A
5142247 Lada et al. Aug 1992 A
5144582 Steele Sep 1992 A
5146106 Anderson et al. Sep 1992 A
5150079 Williams et al. Sep 1992 A
5155836 Jordan et al. Oct 1992 A
5159292 Canfield et al. Oct 1992 A
5159335 Veneruso Oct 1992 A
5160899 Anderson et al. Nov 1992 A
5161124 Love Nov 1992 A
5165054 Platt et al. Nov 1992 A
5166562 Allen et al. Nov 1992 A
5175884 Suarez Dec 1992 A
5179531 Yamaki Jan 1993 A
5184061 Lee et al. Feb 1993 A
5196740 Austin Mar 1993 A
5198817 Walden et al. Mar 1993 A
5200751 Smith Apr 1993 A
5202687 Distinti Apr 1993 A
5204549 Platt et al. Apr 1993 A
5206582 Ekstedt et al. Apr 1993 A
5220512 Watkins et al. Jun 1993 A
5225991 Dougherty Jul 1993 A
5230000 Mozingo et al. Jul 1993 A
5235617 Mallard, Jr. Aug 1993 A
5241492 Girardeau, Jr. Aug 1993 A
5243554 Allen et al. Sep 1993 A
5245262 Moody et al. Sep 1993 A
5248843 Billings Sep 1993 A
5248873 Allen et al. Sep 1993 A
5258760 Moody et al. Nov 1993 A
5260592 Mead et al. Nov 1993 A
5260979 Parker et al. Nov 1993 A
5270963 Allen et al. Dec 1993 A
5276407 Mead et al. Jan 1994 A
5276890 Arai Jan 1994 A
5280199 Itakura Jan 1994 A
5280202 Chan et al. Jan 1994 A
5289023 Mead Feb 1994 A
5303329 Mead et al. Apr 1994 A
5304955 Atriss et al. Apr 1994 A
5305017 Gerpheide Apr 1994 A
5305312 Fornek et al. Apr 1994 A
5307381 Ahuja Apr 1994 A
5313618 Pawloski May 1994 A
5317202 Waizman May 1994 A
5319370 Signore et al. Jun 1994 A
5319771 Takeda Jun 1994 A
5321828 Phillips et al. Jun 1994 A
5324958 Mead et al. Jun 1994 A
5325512 Takahashi Jun 1994 A
5329471 Swoboda et al. Jul 1994 A
5331215 Allen et al. Jul 1994 A
5331315 Crosetto Jul 1994 A
5331571 Aronoff et al. Jul 1994 A
5334952 Maddy et al. Aug 1994 A
5335342 Pope et al. Aug 1994 A
5336936 Allen et al. Aug 1994 A
5339213 O'Callaghan Aug 1994 A
5339262 Rostoker et al. Aug 1994 A
5341044 Ahanin et al. Aug 1994 A
5341267 Whitten et al. Aug 1994 A
5345195 Cordoba et al. Sep 1994 A
5349303 Gerpheide Sep 1994 A
5355097 Scott et al. Oct 1994 A
5357626 Johnson et al. Oct 1994 A
5361290 Akiyama Nov 1994 A
5371524 Herczeg et al. Dec 1994 A
5371860 Mura et al. Dec 1994 A
5371878 Coker Dec 1994 A
5371883 Gross et al. Dec 1994 A
5374787 Miller et al. Dec 1994 A
5377333 Nakagoshi et al. Dec 1994 A
5378935 Korhonen et al. Jan 1995 A
5381515 Platt et al. Jan 1995 A
5384467 Plimon et al. Jan 1995 A
5384745 Konishi et al. Jan 1995 A
5384910 Torres Jan 1995 A
5390173 Spinney et al. Feb 1995 A
5392784 Gudaitis Feb 1995 A
5394522 Sanchez-Frank et al. Feb 1995 A
5396245 Rempfer Mar 1995 A
5398261 Marbot Mar 1995 A
5399922 Kiani et al. Mar 1995 A
5408194 Steinbach et al. Apr 1995 A
5414308 Lee et al. May 1995 A
5414380 Floyd et al. May 1995 A
5416895 Anderson et al. May 1995 A
5422823 Agrawal et al. Jun 1995 A
5424689 Gillig et al. Jun 1995 A
5426378 Ong Jun 1995 A
5426384 May Jun 1995 A
5428319 Marvin et al. Jun 1995 A
5430395 Ichimaru Jul 1995 A
5430687 Hung et al. Jul 1995 A
5430734 Gilson Jul 1995 A
5432476 Tran Jul 1995 A
5438672 Dey Aug 1995 A
5440305 Signore et al. Aug 1995 A
5451887 El-Avat et al. Sep 1995 A
5453904 Higashiyama et al. Sep 1995 A
5455525 Ho et al. Oct 1995 A
5455731 Parkinson Oct 1995 A
5455927 Huang Oct 1995 A
5457410 Ting Oct 1995 A
5457479 Cheng Oct 1995 A
5463591 Aimoto et al. Oct 1995 A
5479603 Stone et al. Dec 1995 A
5479643 Bhaskar et al. Dec 1995 A
5479652 Dreyer et al. Dec 1995 A
5481471 Naglestad et al. Jan 1996 A
5488204 Mead et al. Jan 1996 A
5491458 McCune Feb 1996 A
5493246 Anderson Feb 1996 A
5493723 Beck et al. Feb 1996 A
5495077 Miller et al. Feb 1996 A
5495593 Elmer et al. Feb 1996 A
5495594 MacKenna et al. Feb 1996 A
5497119 Tedrow et al. Mar 1996 A
5499192 Knapp et al. Mar 1996 A
5500823 Martin et al. Mar 1996 A
5517198 McEwan May 1996 A
5519854 Watt May 1996 A
5521529 Agrawal et al. May 1996 A
5530444 Tice et al. Jun 1996 A
5530673 Tobita et al. Jun 1996 A
5530813 Paulsen et al. Jun 1996 A
5537057 Leong et al. Jul 1996 A
5541878 LeMoncheck et al. Jul 1996 A
5542055 Amini et al. Jul 1996 A
5543588 Bisset et al. Aug 1996 A
5543590 Gillespie et al. Aug 1996 A
5543591 Gillespie et al. Aug 1996 A
5544067 Rostoker et al. Aug 1996 A
5544311 Harenberg et al. Aug 1996 A
5546433 Tran et al. Aug 1996 A
5546562 Patel Aug 1996 A
5552725 Ray et al. Sep 1996 A
5552748 O'Shaughnessy Sep 1996 A
5554951 Gough Sep 1996 A
5555452 Callaway, Jr. et al. Sep 1996 A
5555907 Philipp Sep 1996 A
5557762 Okuaki et al. Sep 1996 A
5559502 Schutte Sep 1996 A
5559996 Fujioka Sep 1996 A
5563526 Hastings et al. Oct 1996 A
5563529 Seltzer et al. Oct 1996 A
5564010 Henry et al. Oct 1996 A
5564108 Hunsaker et al. Oct 1996 A
5565658 Gerpheide et al. Oct 1996 A
5566702 Philipp Oct 1996 A
5572665 Nakabayashi et al. Nov 1996 A
5572719 Biesterfeldt Nov 1996 A
5574678 Gorecki Nov 1996 A
5574852 Bakker et al. Nov 1996 A
5574892 Christensen Nov 1996 A
5579353 Parmenter et al. Nov 1996 A
5587945 Lin et al. Dec 1996 A
5587957 Kowalczyk et al. Dec 1996 A
5590354 Klapproth et al. Dec 1996 A
5594388 O'Shaughnessy et al. Jan 1997 A
5594734 Worsley et al. Jan 1997 A
5594876 Getzlaff et al. Jan 1997 A
5594890 Yamaura et al. Jan 1997 A
5600262 Kolze Feb 1997 A
5604466 Dreps et al. Feb 1997 A
5608892 Wakerly Mar 1997 A
5614861 Harada Mar 1997 A
5625316 Chambers et al. Apr 1997 A
5629857 Brennan May 1997 A
5629891 LeMoncheck et al. May 1997 A
5630052 Shah May 1997 A
5630057 Hait May 1997 A
5630102 Johnson et al. May 1997 A
5631577 Freidin et al. May 1997 A
5633766 Hase et al. May 1997 A
5642295 Smayling Jun 1997 A
5646544 Iadanza Jul 1997 A
5646901 Sharpe-Geisler et al. Jul 1997 A
5648642 Miller et al. Jul 1997 A
5651035 Tozun Jul 1997 A
5652893 Ben-Meir et al. Jul 1997 A
5663900 Bhandari et al. Sep 1997 A
5663965 Seymour Sep 1997 A
5664199 Kuwahara Sep 1997 A
5666480 Leung et al. Sep 1997 A
5670915 Cooper et al. Sep 1997 A
5673198 Lawman et al. Sep 1997 A
5675825 Dreyer et al. Oct 1997 A
5677691 Hosticka et al. Oct 1997 A
5680070 Anderson et al. Oct 1997 A
5682032 Philipp Oct 1997 A
5684434 Mann et al. Nov 1997 A
5684952 Stein Nov 1997 A
5686844 Hull et al. Nov 1997 A
5687325 Chang Nov 1997 A
5689195 Cliff et al. Nov 1997 A
5689196 Schutte Nov 1997 A
5691664 Anderson et al. Nov 1997 A
5691898 Rosenberg et al. Nov 1997 A
5694063 Burlison et al. Dec 1997 A
5696952 Pontarelli Dec 1997 A
5699024 Manlove et al. Dec 1997 A
5703871 Pope et al. Dec 1997 A
5706453 Cheng et al. Jan 1998 A
5708589 Beauvais Jan 1998 A
5708798 Lynch et al. Jan 1998 A
5710906 Ghosh et al. Jan 1998 A
5712969 Zimmermann et al. Jan 1998 A
5721931 Gephardt et al. Feb 1998 A
5724009 Collins et al. Mar 1998 A
5727170 Mitchell et al. Mar 1998 A
5729704 Stone et al. Mar 1998 A
5730165 Philipp Mar 1998 A
5732277 Kodosky et al. Mar 1998 A
5734272 Belot et al. Mar 1998 A
5734334 Hsieh et al. Mar 1998 A
5737557 Sullivan Apr 1998 A
5737760 Grimmer et al. Apr 1998 A
5745011 Scott Apr 1998 A
5748048 Moyal May 1998 A
5748875 Tzori May 1998 A
5752013 Christensen et al. May 1998 A
5754552 Allmond et al. May 1998 A
5754826 Gamal et al. May 1998 A
5757368 Gerpheide et al. May 1998 A
5758058 Milburn May 1998 A
5761128 Watanabe Jun 1998 A
5763909 Mead et al. Jun 1998 A
5764714 Stansell et al. Jun 1998 A
5767457 Gerpheide et al. Jun 1998 A
5774704 Williams Jun 1998 A
5777399 Shibuya Jul 1998 A
5781030 Agrawal et al. Jul 1998 A
5781747 Smith et al. Jul 1998 A
5784545 Anderson et al. Jul 1998 A
5790957 Heidari Aug 1998 A
5796183 Hourmand Aug 1998 A
5799176 Kapusta et al. Aug 1998 A
5802073 Platt Sep 1998 A
5802290 Casselman Sep 1998 A
5805792 Swoboda et al. Sep 1998 A
5805897 Glowny Sep 1998 A
5808883 Hawkes Sep 1998 A
5811987 Ashmore, Jr. et al. Sep 1998 A
5812698 Platt et al. Sep 1998 A
5818254 Agrawal et al. Oct 1998 A
5818444 Alimpich et al. Oct 1998 A
5819028 Manghirmalani et al. Oct 1998 A
5822387 Mar Oct 1998 A
5822531 Gorczyca et al. Oct 1998 A
5828693 Mays et al. Oct 1998 A
5838583 Varadarajan et al. Nov 1998 A
5841078 Miller et al. Nov 1998 A
5841996 Nolan et al. Nov 1998 A
5844256 Higashino Dec 1998 A
5844404 Caser et al. Dec 1998 A
5848285 Kapusta et al. Dec 1998 A
5850156 Wittman Dec 1998 A
5852733 Chien et al. Dec 1998 A
5854625 Frisch et al. Dec 1998 A
5857109 Taylor Jan 1999 A
5861583 Schediwy et al. Jan 1999 A
5861875 Gerpheide Jan 1999 A
5864242 Allen et al. Jan 1999 A
5864392 Winklhofer et al. Jan 1999 A
5867046 Sugasawa Feb 1999 A
5867399 Rostoker et al. Feb 1999 A
5869979 Bocchino Feb 1999 A
5870004 Lu Feb 1999 A
5870309 Lawman Feb 1999 A
5870345 Stecker Feb 1999 A
5872464 Gradinariu Feb 1999 A
5874958 Ludolph Feb 1999 A
5875293 Bell et al. Feb 1999 A
5877656 Mann et al. Mar 1999 A
5878425 Redpath Mar 1999 A
5880411 Gillespie et al. Mar 1999 A
5880598 Duong Mar 1999 A
5883623 Cseri Mar 1999 A
5886582 Stansell Mar 1999 A
5887189 Birns et al. Mar 1999 A
5889236 Gillespie et al. Mar 1999 A
5889723 Pascucci Mar 1999 A
5889936 Chan Mar 1999 A
5889988 Held Mar 1999 A
5894226 Koyama Apr 1999 A
5894243 Hwang Apr 1999 A
5894565 Furtek et al. Apr 1999 A
5895494 Scalzi et al. Apr 1999 A
5896068 Moyal Apr 1999 A
5896330 Gibson Apr 1999 A
5898345 Namura et al. Apr 1999 A
5900780 Hirose et al. May 1999 A
5901062 Burch et al. May 1999 A
5903718 Marik May 1999 A
5905398 Todsen et al. May 1999 A
5909544 Anderson, II et al. Jun 1999 A
5911059 Profit, Jr. Jun 1999 A
5914465 Allen et al. Jun 1999 A
5914633 Comino et al. Jun 1999 A
5914708 LaGrange et al. Jun 1999 A
5917356 Casal et al. Jun 1999 A
5920310 Faggin et al. Jul 1999 A
5923264 Lavelle et al. Jul 1999 A
5926566 Wang et al. Jul 1999 A
5929710 Bien Jul 1999 A
5930148 Bjorksten et al. Jul 1999 A
5930150 Cohen et al. Jul 1999 A
5931959 Kwiat Aug 1999 A
5933023 Young Aug 1999 A
5933356 Rostoker et al. Aug 1999 A
5933816 Zeanah et al. Aug 1999 A
5935233 Jeddeloh Aug 1999 A
5935266 Thurnhofer et al. Aug 1999 A
5939904 Fetterman et al. Aug 1999 A
5939949 Olgaard et al. Aug 1999 A
5941991 Kageshima Aug 1999 A
5942733 Allen et al. Aug 1999 A
5943052 Allen et al. Aug 1999 A
5945878 Westwick et al. Aug 1999 A
5949632 Barreras, Sr. et al. Sep 1999 A
5952888 Scott Sep 1999 A
5956279 Mo et al. Sep 1999 A
5959871 Pierzchala et al. Sep 1999 A
5963075 Hiiragizawa Oct 1999 A
5963105 Nguyen Oct 1999 A
5963503 Lee Oct 1999 A
5964893 Circello et al. Oct 1999 A
5966027 Kapusta et al. Oct 1999 A
5966532 McDonald et al. Oct 1999 A
5968135 Teramoto et al. Oct 1999 A
5969513 Clark Oct 1999 A
5969632 Diamant et al. Oct 1999 A
5973368 Pearce et al. Oct 1999 A
5974235 Nunally et al. Oct 1999 A
5977791 Veenstra Nov 1999 A
5978584 Nishibata et al. Nov 1999 A
5978937 Miyamori et al. Nov 1999 A
5982105 Masters Nov 1999 A
5982229 Wong et al. Nov 1999 A
5982241 Nguyen et al. Nov 1999 A
5983277 Heile et al. Nov 1999 A
5986479 Mohan Nov 1999 A
5987246 Thomsen et al. Nov 1999 A
5988902 Holehan Nov 1999 A
5994939 Johnson et al. Nov 1999 A
5996032 Baker Nov 1999 A
5999725 Barbier et al. Dec 1999 A
6002268 Sasaki et al. Dec 1999 A
6002398 Wilson Dec 1999 A
6003054 Oshima et al. Dec 1999 A
6003107 Ranson et al. Dec 1999 A
6003133 Moughanni et al. Dec 1999 A
6005814 Mulholland et al. Dec 1999 A
6005904 Knapp et al. Dec 1999 A
6008685 Kunst Dec 1999 A
6008703 Perrott et al. Dec 1999 A
6009270 Mann Dec 1999 A
6009496 Tsai Dec 1999 A
6011407 New Jan 2000 A
6012835 Thompson et al. Jan 2000 A
6014135 Fernandes Jan 2000 A
6014509 Furtek et al. Jan 2000 A
6014723 Tremblay et al. Jan 2000 A
6016554 Skrovan et al. Jan 2000 A
6016563 Fleisher Jan 2000 A
6018559 Azegami et al. Jan 2000 A
6023422 Allen et al. Feb 2000 A
6023565 Lawman et al. Feb 2000 A
6026134 Duffy et al. Feb 2000 A
6026501 Hohl et al. Feb 2000 A
6028271 Gillespie et al. Feb 2000 A
6028959 Wang et al. Feb 2000 A
6031365 Sharpe-Geisler Feb 2000 A
6032268 Swoboda et al. Feb 2000 A
6034538 Abramovici Mar 2000 A
6037807 Wu et al. Mar 2000 A
6038551 Barlow et al. Mar 2000 A
6041406 Mann Mar 2000 A
6043695 O 'Sullivan Mar 2000 A
6043719 Lin et al. Mar 2000 A
6049223 Lytle et al. Apr 2000 A
6049225 Huang et al. Apr 2000 A
6051772 Cameron et al. Apr 2000 A
6052035 Nolan et al. Apr 2000 A
6052524 Pauna Apr 2000 A
6055584 Bridges et al. Apr 2000 A
6057705 Wojewoda et al. May 2000 A
6058263 Voth May 2000 A
6058452 Rangasayee et al. May 2000 A
6061511 Marantz et al. May 2000 A
6066961 Lee et al. May 2000 A
6070003 Gove et al. May 2000 A
6072803 Allmond et al. Jun 2000 A
6075941 Itoh et al. Jun 2000 A
6079985 Wohl et al. Jun 2000 A
6081140 King Jun 2000 A
6088822 Warren Jul 2000 A
6094730 Lopez et al. Jul 2000 A
6097211 Couts-Martin et al. Aug 2000 A
6097432 Mead et al. Aug 2000 A
6101457 Barch et al. Aug 2000 A
6101617 Burckhartt et al. Aug 2000 A
6104217 Magana Aug 2000 A
6104325 Liaw et al. Aug 2000 A
6107769 Saylor et al. Aug 2000 A
6107826 Young et al. Aug 2000 A
6107882 Gabara et al. Aug 2000 A
6110223 Southgate et al. Aug 2000 A
6111431 Estrada Aug 2000 A
6112264 Beasley et al. Aug 2000 A
6121791 Abbott Sep 2000 A
6121805 Thamsirianunt et al. Sep 2000 A
6121965 Kenney et al. Sep 2000 A
6125416 Warren Sep 2000 A
6130548 Koifman Oct 2000 A
6130551 Agrawal et al. Oct 2000 A
6130552 Jefferson et al. Oct 2000 A
6133773 Garlepp et al. Oct 2000 A
6134181 Landry Oct 2000 A
6134516 Wang et al. Oct 2000 A
6137308 Nayak Oct 2000 A
6140853 Lo Oct 2000 A
6141376 Shaw Oct 2000 A
6141764 Ezell Oct 2000 A
6144327 Distinti et al. Nov 2000 A
6148104 Wang et al. Nov 2000 A
6148441 Woodward Nov 2000 A
6149299 Aslan et al. Nov 2000 A
6150866 Eto et al. Nov 2000 A
6154064 Proebsting Nov 2000 A
6157024 Chapdelaine et al. Dec 2000 A
6157270 Tso Dec 2000 A
6161199 Szeto et al. Dec 2000 A
6166367 Cho Dec 2000 A
6166960 Marneweck et al. Dec 2000 A
6167077 Ducaroir et al. Dec 2000 A
6167559 Furtek et al. Dec 2000 A
6169383 Johnson Jan 2001 B1
6172571 Moyal et al. Jan 2001 B1
6173419 Barnett Jan 2001 B1
6175914 Mann Jan 2001 B1
6175949 Gristede et al. Jan 2001 B1
6181163 Agrawal et al. Jan 2001 B1
6183131 Holloway et al. Feb 2001 B1
6185127 Myers et al. Feb 2001 B1
6185450 Seguine et al. Feb 2001 B1
6185522 Bakker Feb 2001 B1
6185703 Guddat et al. Feb 2001 B1
6185732 Mann et al. Feb 2001 B1
6188228 Philipp Feb 2001 B1
6188241 Gauthier et al. Feb 2001 B1
6188381 van der Wal et al. Feb 2001 B1
6188391 Seely et al. Feb 2001 B1
6188975 Gay Feb 2001 B1
6191603 Muradali et al. Feb 2001 B1
6191660 Mar et al. Feb 2001 B1
6191998 Reddy et al. Feb 2001 B1
6192431 Dabral et al. Feb 2001 B1
6198303 Rangasayee Mar 2001 B1
6201407 Kapusta et al. Mar 2001 B1
6201829 Schneider Mar 2001 B1
6202044 Tzori Mar 2001 B1
6204687 Schultz et al. Mar 2001 B1
6205574 Dellinger et al. Mar 2001 B1
6208572 Adams et al. Mar 2001 B1
6211708 Kemmer Apr 2001 B1
6211715 Terauchi Apr 2001 B1
6211741 Dalmia Apr 2001 B1
6215352 Sudo Apr 2001 B1
6219729 Keats et al. Apr 2001 B1
6222528 Gerpheide et al. Apr 2001 B1
6223144 Barnett et al. Apr 2001 B1
6223147 Bowers Apr 2001 B1
6223272 Coehlo et al. Apr 2001 B1
RE37195 Kean May 2001 E
6225866 Kubota et al. May 2001 B1
6236242 Hedberg May 2001 B1
6236275 Dent May 2001 B1
6236278 Olgaard May 2001 B1
6236593 Hong et al. May 2001 B1
6239389 Allen et al. May 2001 B1
6239798 Ludolph et al. May 2001 B1
6240375 Sonoda May 2001 B1
6246258 Lesea Jun 2001 B1
6246410 Bergeron et al. Jun 2001 B1
6249167 Oguchi et al. Jun 2001 B1
6249447 Boylan et al. Jun 2001 B1
6253250 Evans et al. Jun 2001 B1
6256754 Roohparvar Jul 2001 B1
6262717 Donohue et al. Jul 2001 B1
6263302 Hellestrand et al. Jul 2001 B1
6263339 Hirsh Jul 2001 B1
6263484 Yang Jul 2001 B1
6271679 McClintock et al. Aug 2001 B1
6272646 Rangasayee et al. Aug 2001 B1
6275117 Abugharbieh et al. Aug 2001 B1
6278568 Cloke et al. Aug 2001 B1
6280391 Olson et al. Aug 2001 B1
6281753 Corsi et al. Aug 2001 B1
6282547 Hirsh Aug 2001 B1
6282551 Anderson et al. Aug 2001 B1
6286127 King et al. Sep 2001 B1
6288707 Philipp Sep 2001 B1
6289300 Brannick et al. Sep 2001 B1
6289478 Kitagaki Sep 2001 B1
6289489 Bold et al. Sep 2001 B1
6292028 Tomita Sep 2001 B1
6294932 Watarai Sep 2001 B1
6294962 Mar Sep 2001 B1
6298320 Buckmaster et al. Oct 2001 B1
6304014 England et al. Oct 2001 B1
6304101 Nishihara Oct 2001 B1
6304790 Nakamura et al. Oct 2001 B1
6307413 Dalmia et al. Oct 2001 B1
6310521 Dalmia Oct 2001 B1
6310611 Caldwell Oct 2001 B1
6311149 Ryan et al. Oct 2001 B1
6314530 Mann Nov 2001 B1
6320184 Winklhofer et al. Nov 2001 B1
6320282 Caldwell Nov 2001 B1
6321369 Heile et al. Nov 2001 B1
6323846 Westerman et al. Nov 2001 B1
6324628 Chan Nov 2001 B1
6326859 Goldman et al. Dec 2001 B1
6332137 Hori et al. Dec 2001 B1
6332201 Chin et al. Dec 2001 B1
6337579 Mochida Jan 2002 B1
6338109 Snyder et al. Jan 2002 B1
6339815 Feng et al. Jan 2002 B1
6342907 Petty et al. Jan 2002 B1
6345383 Ueki Feb 2002 B1
6347395 Payne et al. Feb 2002 B1
6351789 Green Feb 2002 B1
6353452 Hamada et al. Mar 2002 B1
6355980 Callahan Mar 2002 B1
6356862 Bailey Mar 2002 B2
6356958 Lin Mar 2002 B1
6356960 Jones et al. Mar 2002 B1
6359950 Gossmann et al. Mar 2002 B2
6362697 Pulvirenti Mar 2002 B1
6366174 Berry et al. Apr 2002 B1
6366300 Ohara et al. Apr 2002 B1
6366874 Lee et al. Apr 2002 B1
6366878 Grunert Apr 2002 B1
6369660 Wei et al. Apr 2002 B1
6371878 Bowen Apr 2002 B1
6373954 Malcolm et al. Apr 2002 B1
6374370 Bockhaus et al. Apr 2002 B1
6377009 Philipp Apr 2002 B1
6377575 Mullaney et al. Apr 2002 B1
6377646 Sha Apr 2002 B1
6380811 Zarubinsky et al. Apr 2002 B1
6380929 Platt Apr 2002 B1
6380931 Gillespie et al. Apr 2002 B1
6384947 Ackerman et al. May 2002 B1
6385742 Kirsch et al. May 2002 B1
6388109 Schwarz et al. May 2002 B1
6388464 Lacey et al. May 2002 B1
6396302 New et al. May 2002 B2
6396687 Sun et al. May 2002 B1
6397232 Cheng-Hung et al. May 2002 B1
6404204 Farruggia et al. Jun 2002 B1
6404445 Galea et al. Jun 2002 B1
6407953 Cleeves Jun 2002 B1
6408432 Herrmann et al. Jun 2002 B1
6411665 Chan et al. Jun 2002 B1
6411974 Graham et al. Jun 2002 B1
6414671 Gillespie et al. Jul 2002 B1
6421698 Hong Jul 2002 B1
6425109 Choukalos et al. Jul 2002 B1
6429882 Abdelnur et al. Aug 2002 B1
6430305 Decker Aug 2002 B1
6433645 Mann et al. Aug 2002 B1
6434187 Beard et al. Aug 2002 B1
6437805 Sojoodi et al. Aug 2002 B1
6438565 Ammirato et al. Aug 2002 B1
6438735 McElvain et al. Aug 2002 B1
6438738 Elayda Aug 2002 B1
6441073 Tanaka et al. Aug 2002 B1
6445211 Saripella Sep 2002 B1
6449628 Wasson Sep 2002 B1
6449755 Beausang et al. Sep 2002 B1
6449761 Greidinger et al. Sep 2002 B1
6452437 Takeuchi et al. Sep 2002 B1
6452514 Philipp Sep 2002 B1
6453175 Mizell et al. Sep 2002 B2
6453461 Chaiken Sep 2002 B1
6456304 Angiulo et al. Sep 2002 B1
6457355 Philipp Oct 2002 B1
6457479 Zhuang et al. Oct 2002 B1
6460172 Insenser Farre et al. Oct 2002 B1
6463488 San Juan Oct 2002 B1
6466036 Philipp Oct 2002 B1
6466078 Stiff Oct 2002 B1
6466898 Chan Oct 2002 B1
6473069 Gerpheide Oct 2002 B1
6473825 Worley et al. Oct 2002 B1
6477691 Bergamashi/Rab et al. Nov 2002 B1
6480921 Mansoorian et al. Nov 2002 B1
6483343 Faith et al. Nov 2002 B1
6487700 Fukushima Nov 2002 B1
6489899 Ely et al. Dec 2002 B1
6490213 Mu et al. Dec 2002 B1
6492834 Lytle et al. Dec 2002 B1
6496971 Lesea et al. Dec 2002 B1
6498720 Glad Dec 2002 B2
6499134 Buffet et al. Dec 2002 B1
6499359 Washeleski et al. Dec 2002 B1
6504403 Bangs et al. Jan 2003 B2
6507214 Snyder Jan 2003 B1
6507215 Piasecki et al. Jan 2003 B1
6507857 Yalcinalp Jan 2003 B1
6509758 Piasecki et al. Jan 2003 B2
6512395 Lacey et al. Jan 2003 B1
6516428 Wenzel et al. Feb 2003 B2
6522128 Ely et al. Feb 2003 B1
6523416 Takagi et al. Feb 2003 B2
6525593 Mar Feb 2003 B1
6526556 Stoica et al. Feb 2003 B1
6529791 Takagi Mar 2003 B1
6530065 McDonald et al. Mar 2003 B1
6534970 Ely et al. Mar 2003 B1
6535061 Darmawaskita et al. Mar 2003 B2
6535200 Philipp Mar 2003 B2
6535946 Bryant et al. Mar 2003 B1
6536028 Katsioulas et al. Mar 2003 B1
6539534 Bennett Mar 2003 B1
6542025 Kutz et al. Apr 2003 B1
6542844 Hanna Apr 2003 B1
6542845 Grucci et al. Apr 2003 B1
6552933 Roohparvar Apr 2003 B2
6553057 Sha et al. Apr 2003 B1
6554469 Thomson et al. Apr 2003 B1
6557164 Faustini Apr 2003 B1
6559685 Green May 2003 B2
6560306 Duffy et al. May 2003 B1
6560699 Konkle May 2003 B1
6563391 Mar May 2003 B1
6564179 Belhaj May 2003 B1
6566961 Dasgupta et al. May 2003 B2
6567426 van Hook et al. May 2003 B1
6567932 Edwards et al. May 2003 B2
6570557 Westerman et al. May 2003 B1
6571331 Henry et al. May 2003 B2
6571373 Devins et al. May 2003 B1
6574590 Kershaw et al. Jun 2003 B1
6574739 Kung et al. Jun 2003 B1
6575373 Nakano Jun 2003 B1
6577258 Ruha et al. Jun 2003 B2
6578174 Zizzo Jun 2003 B2
6580329 Sander Jun 2003 B2
6581191 Schubert et al. Jun 2003 B1
6587093 Shaw et al. Jul 2003 B1
6587995 Duboc et al. Jul 2003 B1
6588004 Southgate et al. Jul 2003 B1
6590422 Dillon Jul 2003 B1
6590517 Swanson Jul 2003 B1
6591369 Edwards et al. Jul 2003 B1
6592626 Bauchot et al. Jul 2003 B1
6594799 Robertson et al. Jul 2003 B1
6597212 Wang et al. Jul 2003 B1
6597824 Newberg et al. Jul 2003 B2
6598178 Yee et al. Jul 2003 B1
6600346 Macaluso Jul 2003 B1
6600351 Bisanti et al. Jul 2003 B2
6600575 Kohara Jul 2003 B1
6601189 Edwards et al. Jul 2003 B1
6601236 Curtis Jul 2003 B1
6603330 Snyder Aug 2003 B1
6603348 Preuss et al. Aug 2003 B1
6604179 Volk et al. Aug 2003 B2
6606731 Baum et al. Aug 2003 B1
6608472 Kutz et al. Aug 2003 B1
6610936 Gillespie et al. Aug 2003 B2
6611220 Snyder Aug 2003 B1
6611276 Muratori et al. Aug 2003 B1
6611856 Liao et al. Aug 2003 B1
6611952 Prakash et al. Aug 2003 B1
6613098 Sorge et al. Sep 2003 B1
6614260 Welch et al. Sep 2003 B1
6614320 Sullam et al. Sep 2003 B1
6614374 Gustavsson et al. Sep 2003 B1
6614458 Lambert et al. Sep 2003 B1
6615167 Herzl et al. Sep 2003 B1
6617888 Volk Sep 2003 B2
6618854 Mann Sep 2003 B1
6621356 Gotz et al. Sep 2003 B2
6624640 Lund et al. Sep 2003 B2
6625765 Krishnan Sep 2003 B1
6628163 Dathe et al. Sep 2003 B2
6628311 Fang Sep 2003 B1
6631508 Williams Oct 2003 B1
6634008 Dole Oct 2003 B1
6636096 Schaffer et al. Oct 2003 B2
6637015 Ogami et al. Oct 2003 B1
6639586 Gerpheide Oct 2003 B2
6642857 Schediwy et al. Nov 2003 B1
6643151 Nebrigic et al. Nov 2003 B1
6643810 Whetsel Nov 2003 B2
6649924 Philipp et al. Nov 2003 B1
6650581 Hong et al. Nov 2003 B2
6658498 Carney et al. Dec 2003 B1
6658633 Devins et al. Dec 2003 B2
6661288 Morgan et al. Dec 2003 B2
6661410 Casebolt et al. Dec 2003 B2
6661724 Snyder et al. Dec 2003 B1
6664978 Kekic et al. Dec 2003 B1
6664991 Chew et al. Dec 2003 B1
6667642 Moyal Dec 2003 B1
6667740 Ely et al. Dec 2003 B2
6670852 Hauck Dec 2003 B1
6671869 Davidson et al. Dec 2003 B2
3378877 Perry et al. Jan 2004 A1
6673308 Hino et al. Jan 2004 B2
6677814 Low et al. Jan 2004 B2
6677932 Westerman Jan 2004 B1
6678645 Rajsuman et al. Jan 2004 B1
6680632 Meyers et al. Jan 2004 B1
6680731 Gerpheide et al. Jan 2004 B2
6681280 Miyake et al. Jan 2004 B1
6681359 Au et al. Jan 2004 B1
6683462 Shimizu Jan 2004 B2
6683930 Dalmia Jan 2004 B1
6686787 Ling Feb 2004 B2
6686860 Gulati et al. Feb 2004 B2
6690224 Moore Feb 2004 B1
6691193 Wang et al. Feb 2004 B1
6691301 Bowen Feb 2004 B2
6697754 Alexander Feb 2004 B1
6701340 Gorecki Mar 2004 B1
6701487 Ogami et al. Mar 2004 B1
6701508 Bartz et al. Mar 2004 B1
6704381 Moyal et al. Mar 2004 B1
6704879 Parrish Mar 2004 B1
6704889 Veenstra et al. Mar 2004 B2
6704893 Bauwens et al. Mar 2004 B1
6705511 Dames et al. Mar 2004 B1
6711226 Williams et al. Mar 2004 B1
6711731 Weiss Mar 2004 B2
6713897 Caldwell Mar 2004 B2
6714066 Gorecki et al. Mar 2004 B2
6714817 Daynes et al. Mar 2004 B2
6715132 Bartz et al. Mar 2004 B1
6717474 Chen et al. Apr 2004 B2
6718294 Bortfeld Apr 2004 B1
6718520 Merryman et al. Apr 2004 B1
6718533 Schneider et al. Apr 2004 B1
6724220 Snyder et al. Apr 2004 B1
6728900 Meli Apr 2004 B1
6728902 Kaiser et al. Apr 2004 B2
6730863 Gerpheide et al. May 2004 B1
6731552 Perner May 2004 B2
6732068 Sample et al. May 2004 B2
6732347 Camilleri et al. May 2004 B1
6738858 Fernald et al. May 2004 B1
6744323 Moyal et al. Jun 2004 B1
6745369 May et al. Jun 2004 B1
6748569 Brooke et al. Jun 2004 B1
6750852 Gillespie et al. Jun 2004 B2
6750889 Livingston Jun 2004 B1
6754101 Terzioglu et al. Jun 2004 B2
6754723 Kato Jun 2004 B2
6754765 Chang et al. Jun 2004 B1
6754849 Tamura Jun 2004 B2
6757882 Chen et al. Jun 2004 B2
6765407 Snyder Jul 2004 B1
6768337 Kohno et al. Jul 2004 B2
6768352 Maher et al. Jul 2004 B1
6769622 Tournemille et al. Aug 2004 B1
6771552 Fujisawa Aug 2004 B2
6774644 Eberlein Aug 2004 B2
6781456 Pradhan Aug 2004 B2
6782068 Wilson et al. Aug 2004 B1
6784821 Lee Aug 2004 B1
6785881 Bartz et al. Aug 2004 B1
6788116 Cook et al. Sep 2004 B1
6788221 Ely et al. Sep 2004 B1
6788521 Nishi Sep 2004 B2
6791377 Ilchmann et al. Sep 2004 B2
6792584 Eneboe et al. Sep 2004 B1
6798218 Kasperkovitz Sep 2004 B2
6798299 Mar et al. Sep 2004 B1
6799198 Huboi et al. Sep 2004 B1
6806771 Hildebrant et al. Oct 2004 B1
6806782 Motoyoshi et al. Oct 2004 B2
6809275 Cheng et al. Oct 2004 B1
6809566 Xin-LeBlanc Oct 2004 B1
6810442 Lin et al. Oct 2004 B1
6815979 Ooshita Nov 2004 B2
6816544 Bailey et al. Nov 2004 B1
6817005 Mason et al. Nov 2004 B2
6819142 Viehmann et al. Nov 2004 B2
6823282 Snyder Nov 2004 B1
6823497 Schubert et al. Nov 2004 B2
6825689 Snyder Nov 2004 B1
6825869 Bang Nov 2004 B2
6828824 Betz et al. Dec 2004 B2
6829727 Pawloski Dec 2004 B1
6834384 Fiorella, II et al. Dec 2004 B2
6836169 Richmond et al. Dec 2004 B2
6839774 Ahn et al. Jan 2005 B1
6842710 Gehring et al. Jan 2005 B1
6847203 Conti et al. Jan 2005 B1
6850117 Weber et al. Feb 2005 B2
6850554 Sha Feb 2005 B1
6853598 Chevallier Feb 2005 B2
6854067 Kutz et al. Feb 2005 B1
6856433 Hatano et al. Feb 2005 B2
6859884 Sullam Feb 2005 B1
6862240 Burgan Mar 2005 B2
6864710 Lacey et al. Mar 2005 B1
6865429 Schneider et al. Mar 2005 B1
6865504 Larson et al. Mar 2005 B2
6868500 Kutz et al. Mar 2005 B1
6871253 Greeff et al. Mar 2005 B2
6871331 Bloom et al. Mar 2005 B1
6873203 Latham, II et al. Mar 2005 B1
6873210 Mulder et al. Mar 2005 B2
6876941 Nightingale Apr 2005 B2
6880086 Kidder et al. Apr 2005 B2
6888453 Lutz et al. May 2005 B2
6888538 Ely et al. May 2005 B2
6892310 Kutz et al. May 2005 B1
6892322 Snyder May 2005 B1
6893724 Lin et al. May 2005 B2
6894928 Owen May 2005 B2
6897390 Caldwell et al. May 2005 B2
6898703 Ogami et al. May 2005 B1
6900663 Roper et al. May 2005 B1
6901014 Son et al. May 2005 B2
6901563 Ogami et al. May 2005 B1
6903402 Miyazawa Jun 2005 B2
6903613 Mitchell et al. Jun 2005 B1
6904570 Foote et al. Jun 2005 B2
6910126 Mar et al. Jun 2005 B1
6911857 Stiff Jun 2005 B1
6917661 Scott et al. Jul 2005 B1
6922821 Nemecek Jul 2005 B1
6924668 Muller et al. Aug 2005 B2
6934674 Douezy et al. Aug 2005 B1
6937075 Lim et al. Aug 2005 B2
6940356 McDonald, II et al. Sep 2005 B2
6941336 Mar Sep 2005 B1
6941538 Hwang et al. Sep 2005 B2
6944018 Caldwell Sep 2005 B2
6949811 Miyazawa Sep 2005 B2
6949984 Siniscalchi Sep 2005 B2
6950954 Sullam et al. Sep 2005 B1
6950990 Rajarajan et al. Sep 2005 B2
6952778 Snyder Oct 2005 B1
6954511 Tachimori Oct 2005 B2
6954904 White Oct 2005 B2
6956419 Mann et al. Oct 2005 B1
6957180 Nemecek Oct 2005 B1
6957242 Snyder Oct 2005 B1
6963233 Puccio et al. Nov 2005 B2
6963908 Lynch et al. Nov 2005 B1
6966039 Bartz et al. Nov 2005 B1
6967511 Sullam Nov 2005 B1
6967960 Bross et al. Nov 2005 B1
6968346 Hekmatpour Nov 2005 B2
6969978 Dening Nov 2005 B2
6970844 Bierenbaum Nov 2005 B1
6971004 Pleis et al. Nov 2005 B1
1132244 Stiff Dec 2005 A1
6973400 Cahill-O'Brien et al. Dec 2005 B2
6975123 Malang et al. Dec 2005 B1
6980060 Boerstler et al. Dec 2005 B2
6981090 Kutz et al. Dec 2005 B1
6988192 Snider Jan 2006 B2
6996799 Cismas et al. Feb 2006 B1
7005933 Shutt Feb 2006 B1
7009444 Scott Mar 2006 B1
7010773 Bartz et al. Mar 2006 B1
7015735 Kimura et al. Mar 2006 B2
7017145 Taylor Mar 2006 B2
7017409 Zielinski et al. Mar 2006 B2
7020854 Killian et al. Mar 2006 B2
7023215 Steenwyk Apr 2006 B2
7023257 Sullam Apr 2006 B1
7024636 Weed Apr 2006 B2
7024654 Bersch et al. Apr 2006 B2
7026861 Steenwyk Apr 2006 B2
7030513 Caldwell Apr 2006 B2
7030656 Lo et al. Apr 2006 B2
7030688 Dosho et al. Apr 2006 B2
7030782 Ely et al. Apr 2006 B2
7034603 Brady et al. Apr 2006 B2
7042301 Sutardja May 2006 B2
7047166 Dancea May 2006 B2
7055035 Allison et al. May 2006 B2
7058921 Hwang et al. Jun 2006 B1
7073158 McCubbrey Jul 2006 B2
7076420 Snyder et al. Jul 2006 B1
7079166 Hong Jul 2006 B1
7086014 Bartz et al. Aug 2006 B1
7088166 Reinschmidt et al. Aug 2006 B1
7089175 Nemecek et al. Aug 2006 B1
7091713 Erdelyi et al. Aug 2006 B2
7092980 Mar et al. Aug 2006 B1
7098414 Caldwell Aug 2006 B2
7099818 Nemecek et al. Aug 2006 B1
7100133 Melyappan et al. Aug 2006 B1
7103108 Beard Sep 2006 B1
7109978 Gillespie et al. Sep 2006 B2
7117485 Wilkinson et al. Oct 2006 B2
7119550 Kitano et al. Oct 2006 B2
7119602 Davis Oct 2006 B2
7124376 Zaidi et al. Oct 2006 B2
7127630 Snyder Oct 2006 B1
7129793 Gramegna Oct 2006 B2
7129873 Kawamura Oct 2006 B2
7132835 Arcus Nov 2006 B1
7133140 Lukacs et al. Nov 2006 B2
7133793 Ely et al. Nov 2006 B2
7138841 Li Nov 2006 B1
7138868 Sanchez et al. Nov 2006 B2
7139530 Kusbel Nov 2006 B2
7141968 Hibbs et al. Nov 2006 B2
7141987 Hibbs et al. Nov 2006 B2
7149316 Kutz et al. Dec 2006 B1
7150002 Anderson et al. Dec 2006 B1
7151528 Taylor et al. Dec 2006 B2
7152027 Andrade et al. Dec 2006 B2
7154294 Liu et al. Dec 2006 B2
7161936 Barrass et al. Jan 2007 B1
7162410 Nemecek et al. Jan 2007 B1
7171455 Gupta et al. Jan 2007 B1
7176701 Wachi et al. Feb 2007 B2
7178096 Rangan et al. Feb 2007 B2
7180342 Shutt et al. Feb 2007 B1
7185162 Snyder Feb 2007 B1
7185321 Roe et al. Feb 2007 B1
7188063 Snyder Mar 2007 B1
7193901 Ruby et al. Mar 2007 B2
7199783 Wenstrand et al. Apr 2007 B2
7200507 Chen et al. Apr 2007 B2
7206733 Nemecek Apr 2007 B1
7212189 Shaw et al May 2007 B2
7221187 Snyder et al. May 2007 B1
7227389 Gong et al. Jun 2007 B2
7236921 Nemecek et al. Jun 2007 B1
7250825 Wilson et al. Jul 2007 B2
7256588 Howard et al. Aug 2007 B2
7265633 Stiff Sep 2007 B1
7266768 Ferlitsch et al. Sep 2007 B2
7281846 McLeod Oct 2007 B2
7282905 Chen et al. Oct 2007 B2
7283151 Nihei et al. Oct 2007 B2
7283410 Hsu et al. Oct 2007 B2
7287112 Pleis et al. Oct 2007 B1
7288977 Stanley Oct 2007 B2
7290244 Peck et al. Oct 2007 B2
7295049 Moyal et al. Nov 2007 B1
7298124 Kan et al. Nov 2007 B2
7301835 Joshi et al. Nov 2007 B2
7305510 Miller Dec 2007 B2
7307485 Snyder et al. Dec 2007 B1
7308608 Pleis et al. Dec 2007 B1
7312616 Snyder Dec 2007 B2
7323879 Kuo et al. Jan 2008 B2
7324380 Negut et al. Jan 2008 B2
7332976 Brennan Feb 2008 B1
7342405 Eldridge et al. Mar 2008 B2
7358714 Watanabe et al. Apr 2008 B2
7367017 Maddocks et al. Apr 2008 B2
7373437 Seigneret et al. May 2008 B2
7376001 Joshi et al. May 2008 B2
7376904 Cifra et al. May 2008 B2
7386740 Kutz et al. Jun 2008 B2
7392011 Jacomb-Hood Jun 2008 B1
7400183 Sivadasan et al. Jul 2008 B1
7406674 Ogami et al. Jul 2008 B1
7421251 Westwick et al. Sep 2008 B2
7461274 Merkin Dec 2008 B2
7466307 Trent, Jr. et al. Dec 2008 B2
7542533 Jasa et al. Jun 2009 B2
7554847 Lee Jun 2009 B2
7616509 Qureshi et al. Nov 2009 B2
20010002129 Zimmerman et al. May 2001 A1
20010010083 Satoh Jul 2001 A1
20010038392 Humpleman et al. Nov 2001 A1
20010043081 Rees Nov 2001 A1
20010044927 Karniewicz Nov 2001 A1
20010045861 Bloodworth et al. Nov 2001 A1
20010047509 Mason et al. Nov 2001 A1
20020010716 McCartney et al. Jan 2002 A1
20020016706 Cooke et al. Feb 2002 A1
20020023110 Fortin et al. Feb 2002 A1
20020042696 Garcia et al. Apr 2002 A1
20020052729 Kyung et al. May 2002 A1
20020059543 Cheng et al. May 2002 A1
20020063688 Shaw et al. May 2002 A1
20020065646 Waldie et al. May 2002 A1
20020068989 Ebisawa et al. Jun 2002 A1
20020073119 Richard Jun 2002 A1
20020073380 Cooke Jun 2002 A1
20020080186 Frederiksen Jun 2002 A1
20020085020 Carroll, Jr. Jul 2002 A1
20020099863 Comeau et al. Jul 2002 A1
20020109722 Rogers et al. Aug 2002 A1
20020116168 Kim Aug 2002 A1
20020121679 Bazarjani et al. Sep 2002 A1
20020122060 Markel Sep 2002 A1
20020129334 Dane et al. Sep 2002 A1
20020133771 Barnett Sep 2002 A1
20020133794 Kanapathippillai et al. Sep 2002 A1
20020138516 Igra Sep 2002 A1
20020144099 Muro, Jr. et al. Oct 2002 A1
20020145433 Morrise et al. Oct 2002 A1
20020152234 Estrada et al. Oct 2002 A1
20020152449 Lin Oct 2002 A1
20020156885 Thakkar Oct 2002 A1
20020156998 Casselman Oct 2002 A1
20020161802 Gabrick et al. Oct 2002 A1
20020166100 Meding Nov 2002 A1
20020174134 Goykhman Nov 2002 A1
20020174411 Feng et al. Nov 2002 A1
20020191029 Gillespie et al. Dec 2002 A1
20030011639 Webb Jan 2003 A1
20030014447 White Jan 2003 A1
20030025734 Boose et al. Feb 2003 A1
20030033588 Alexander Feb 2003 A1
20030041235 Meyer Feb 2003 A1
20030056071 Triece et al. Mar 2003 A1
20030058469 Buis et al. Mar 2003 A1
20030061572 McClannahan et al. Mar 2003 A1
20030062889 Ely et al. Apr 2003 A1
20030066057 RuDusky Apr 2003 A1
20030080755 Kobayashi May 2003 A1
20030097640 Abrams et al. May 2003 A1
20030105620 Bowen Jun 2003 A1
20030126947 Moore et al. Jul 2003 A1
20030135842 Frey et al. Jul 2003 A1
20030149961 Kawai et al. Aug 2003 A1
20030229482 Cook et al. Dec 2003 A1
20040018711 Madurawe Jan 2004 A1
20040054821 Warren et al. Mar 2004 A1
20040153802 Kudo et al. Aug 2004 A1
20040205553 Hall et al. Oct 2004 A1
20040205617 Light Oct 2004 A1
20050024341 Gillespie et al. Feb 2005 A1
20050066152 Garey Mar 2005 A1
20050143968 Odom et al. Jun 2005 A9
20050240917 Wu Oct 2005 A1
20050248534 Kehlstadt Nov 2005 A1
20050280453 Hsieh Dec 2005 A1
20060015862 Odom et al. Jan 2006 A1
20060031768 Shah et al. Feb 2006 A1
20060032680 Elias et al. Feb 2006 A1
20060097991 Hotelling et al. May 2006 A1
20060273804 Delorme et al. Dec 2006 A1
20070139074 Reblewski Jun 2007 A1
20070258458 Kapoor Nov 2007 A1
20080095213 Lin et al. Apr 2008 A1
20080186052 Needham et al. Aug 2008 A1
20080259998 Venkataraman et al. Oct 2008 A1
20080294806 Swindle et al. Nov 2008 A1
20090066427 Brennan Mar 2009 A1
20090322305 De Cremoux Dec 2009 A1
Foreign Referenced Citations (25)
Number Date Country
19710829 Sep 1998 DE
0 308 583 Mar 1989 EP
0308583 Mar 1989 EP
368398 May 1990 EP
0 450 863 Oct 1991 EP
0450863 Oct 1991 EP
0 499 383 Aug 1992 EP
0499383 Aug 1992 EP
0 639 816 Feb 1995 EP
069816 Feb 1995 EP
1 170 671 Jan 2002 EP
1170671 Jan 2002 EP
1205848 May 2002 EP
1191423A2 Feb 2003 EP
404083405 Mar 1992 JP
405055842 Mar 1993 JP
06021732 Jan 1994 JP
404095408 Mar 2002 JP
9532478 Nov 1995 WO
9532478 Nov 1995 WO
9532481 Nov 1995 WO
WO 9532478 Nov 1995 WO
PCTUS9617305 Jun 1996 WO
PCTUS9834376 Aug 1998 WO
PCTUS9909712 Feb 1999 WO
Related Publications (1)
Number Date Country
20020108006 A1 Aug 2002 US
Provisional Applications (1)
Number Date Country
60243708 Oct 2000 US