NMOS - технология логики на n-типа транзисторах. [N-type Metal-Oxide-Semiconductor]
NOT
![]()
[Идея]
![]()
[NMOS]
![]()
Делать резисторы в микросхемах неудобно, стараются что бы элементы были однотипные (так легче изготовлять). Поэтому в реальности в NMOS используют не резистор, а N-MOSFET (при этом лучше обогащенный - как и основные элементы):
![]()
[NMOS как это в реальности и происходит]
![]()
когда Vin имеет низкий уровень (т.е. 0), транзистор закрыт и на выход приходит ток из Vcc (+5V,т.е. 1), [резистор обеспечивает только очень небольшое падение напряжения в этом случае ~ 0.3V т.е до +4.7V] если же Vin высокий (1), транзистор открыт и Vout получается соединенным с землей (т.е. 0). ------------- ---------- Vin | Vout Vin | Vout = NOT -----+------- ----+----- 0 V | +5V 0 | 1 +5V | 0V 1 | 0 -----+------- ----+----- Это реальная имплементация NMOS инвертора (используются полевые транзисторы, верхний как резистор).
![]()
NMOS и PMOS инверторы:
![]()
Пример аналогового электрического моделирования инвертора: (используем N-JFET)
![]()
![]()
Существует время прохождения сигнала через логический элемент: (в реальном мире все происходит за конкретное время).
![]()
Пример моделирования NMOS инвертора на транзисторном уровне на Verilog: module nmos_not(out,in); output out; input in; wand pull; supply1 pwr; supply0 gnd; assign pull = pwr; nmos(pull,gnd,in); assign out = pull; endmodule
![]()
NAND
![]()
![]()
[Идея]
![]()
[NMOS идея]
![]()
[NMOS]
![]()
NAND очень похож на NOT, но Vout имеет низкий уровень только тогда, когда открыты оба транзистора: -------------- ------------- V1 V2 | Vout V1 V2 | Vout = NAND -------+------ -------+----- 0V 0V | +5V 0 0 | 1 0V +5V | +5V 0 1 | 1 +5V 0V | +5V 1 0 | 1 +5V +5V| 0V 1 1 | 0 -------------- ------------- Пример моделирования NMOS NAND2 на Verilog: module nmos_nand2(out,a,b); output out; input a,b; supply1 pwr; supply0 gnd; wand pull; wire x; assign pull = pwr; nmos(pull, x, a); nmos(x, gnd, b); assign out = pull; endmodule
![]()
![]()
![]()
[Идея]
![]()
одно из замечательных свойств это каскадность, трехвходовый NAND легко делается из двухвходового NAND, простым добавлением транзистора. Идея все таже: Vout будет подключен к земле (0) только тогда, когда все 3 транзистора будут открыты. Но бесконечно усиливать число каскадов нельзя. Современные технологии ограничивают число входов в NAND шести. Если надо больше то идут уже не электрические схемы, а логические. Это пример того, что знание соседнего уровня (электрического) позволяет оптимизировать текущий (фуекционально-логический) Т.е. мы вместо того чтобы городить каскад логики для NAND3, NAND4, NAND5, NAND6 просто реализуем это на более нижнем уровне и выиграем в размере кристалла. Пример моделирования NMOS NAND3 на Verilog: module nmos_nand3(out,a,b,c); output out; input a,b,c; supply1 pwr; supply0 gnd; wire x,y; wand pull; assign pull = pwr; nmos(pull, x, a); nmos(x, y, b); nmos(y, gnd, c); assign out = pull; endmodule
![]()
NOR
![]()
![]()
[Идея]
![]()
[NMOS идея]
![]()
[NMOS]
![]()
Идея NOR тоже пришла из инвертора: если хотя бы один транзистор будет открыт то Vout будет соединен с землей (т.е. 0) -------------- ------------- V1 V2 | Vout V1 V2 | Vout = NOR --------+----- -------+----- 0V 0V | +5V 0 0 | 1 0V +5V | 0V 0 1 | 0 +5V 0V | 0V 1 0 | 0 +5V +5V | 0V 1 1 | 0 -------------- ------------- Пример моделирования NMOS NOR2 на Verilog: module nmos_nor2(out,a,b); output out; input a,b; supply1 pwr; supply0 gnd; wand pull; assign pull = pwr; nmos(pull, gnd, a); nmos(pull, gnd, b); assign out = pull; endmodule
![]()
![]()
![]()
[Идея]
![]()
Таже идея что и в NAND используется для наращивания каскадов. Современные технологии ограничивают число входов в NAND четырем. Пример моделирования NMOS NOR3 на Verilog: module nmos_nor3(out,a,b,c); output out; input a,b,c; supply1 pwr; supply0 gnd; wand pull; assign pull = pwr; nmos(pull, gnd, a); nmos(pull, gnd, b); nmos(pull, gnd, c); assign out = pull; endmodule
![]()
Buffer
![]()
[Идея - в NMOS невоплотима]
![]()
повторитель (усилитель) (buffer). Если Vin имеет низкий уровень (0), то транзистор закрыт и Vout имеет уровень земли (0). Если Vin высокий (1), транзистор открыт и Vout имеет +5V (1). ----------- -----+------ Vin | Vout Vin | Vout = Buffer ----+------ -----+------ 0V | 0V 0 | 0 +5V | +5V 1 | 1 ----------- ------------- А для NMOS - только через каскад инверторов:
![]()
Недостатки NMOS технологии