CMOS (Complementary metal–oxide–semiconductor) is a technique for constructing digital logic circuits from two complementary MOS transistors - pMOS and nMOS. CMOS is the dominant technology used for VLSI and ULSI circuit chips used for anywhere from SRAM to microcontrollers and microprocessors.
Contents
Overview
- Main article: CMOS Complementary Topology
CMOS primarily makes use of what would otherwise be two separate circuit technologies - pMOS and nMOS. To better understand this, consider an nMOS transistor. Because it can pull no higher than VDD - Vt we get a degraded 1 output. Likewise with pMOS, we can pull no lower than Vt - a degraded 0 output. By combining both types, we can borrow the desired characteristics from both transistors such as a strong 0 and a strong 1.
CMOS circuits are designed with that concept in mind - always consisting of two separate sub-circuits called a PUN (pull-up network) and a PDN (pull-down network). CMOS logic must therefore by in one of two defined stages:
- PUN is open; PDN is conducting
- PUN is conducting; PDN is open
Conceptually they can be thought of as two switches, one controlling the connection between the output and VDD and one controlling the connection between the output and GND. Therefore it's important to note that if both switches are closed or both switches are open, the output will be ambiguous. The concept of a complementary topology ensures this does not happen. It should be noted that as the voltage on the transistor's gate changes, for a very brief moment both switches will be closed thereby creating a momentary spike in power consumption. This does become a problem with high frequency CMOS.
Inverter Example
- Main article: inverter
![](/w/images/thumb/d/d9/cmos_inverter.svg/125px-cmos_inverter.svg.png)
The simplest gate that can be implemented is the NOT gate which simply inverts the input. We can implement an inverter using a single nMOS and pMOS transistors. The pMOS transistor is connected to VDD while the nMOS transistor is connected to GND. When A is 0, the nMOS transistor turns OFF and the pMOS transistor turns ON. This results in Q being pulled up to 1 since the pMOS transistor will conduct VDD. Conversely, when A is 1, the nMOS transistor turns ON and the pMOS transistor turns OFF, thereby pulling Q down to GND.
Logic Types
While static CMOS is the most widely used logic style, many other logic styles exist. Depending on the application and use, different styles might be employed to provide more refined results.
Static CMOS
- Main article: Static CMOS
Also called Full CMOS logic, static CMOS is the most commonly used logic style. Static logic provides high noise immunity, low static power consumption, and has relatively high test coverage. It does pose a number of weaknesses such as high fan-out load, and somewhat high noise generation.
Pseudo-NMOS Logic
- Main article: Pseudo-NMOS Logic
Pseudo-NMOS Logic circuit simply uses a pMOS transistor to satisfy CMOS's complementary topology. This type of logic allow high speed and low transistor count. However because of this very design, the output will experience reduced voltage swings and is thus susceptible to noise. When used sparingly, this circuit can provide substantial performance benefits at a cost of a small increase in static-power consumption. Additionally, when not used, the pMOS transistor can be used turned off shutting down the circuit at no additional cost.
Dynamic CMOS
- Main article: Dynamic CMOS
Dynamic CMOS uses a clocked pMOS PUN. This type of circuit has two phases: precharge and evaluation. When the clock is LOW, the output node is precharged to VDD (note that no current flows because the nMOS transistor is off). Once the clock goes back to HIGH the evaluation phase kicks in and the output will depend on the evaluation of the logic function implemented. Because inputs are hooked up to the nMOS transistors, the load capacitance is also smaller. This also makes it faster than static CMOS. Despite having almost half the number of transistors, this type of circuit still consumes more power than static CMOS due to the constant need to precharge and discharge of the output even if the input does not change.
![]() |
This article is still a stub and needs your attention. You can help improve this article by editing this page and adding the missing information. |