Урок 2. Триггеры в корпусе: 74HC74 и делитель частоты

В картинках

После этого урока в библиотеке 74HC74 — два D-триггера в одном корпусе, как настоящий, — а на холсте делитель: лампы мигают в 2, 4, 8 и 16 раз реже генератора, а табло считает от 0 до 15.


2.1. Идея: триггер с установкой и сбросом

D-триггер запоминает D в момент, когда CP меняется с 0 на 1 (фронт). У 74HC74 есть ещё две ноги, которые работают сразу, без фронта:

  • SD = 0 — установить: Q = 1;
  • RD = 0 — сбросить: Q = 0.

Обе срабатывают от нуля — в даташите над их именами черта. Когда не нужны, их держат в 1. Если дать 0 на обе сразу, оба выхода станут 1 — так написано в даташите, и наша микросхема делает так же.

74HC742 × D-триггер11RD14VCC21D132RD31CP122D41SD112CP51Q102SD61QN92Q7GND82QN
74HC74: два D-триггера. У каждого D — данные, CP — такт (по фронту 0 → 1), Q и QN — выход и его переворот, SD и RD — установить и сбросить сразу, без такта (активный 0: работают, когда на ноге 0). Не нужны — на VCC.

2.2. Идея: внутри — шесть И-НЕ

Классическая 7474 внутри — шесть элементов И-НЕ на три входа: два держат «следующее» значение, два ловят фронт, два — сам выход. Мы собираем её ровно так. А сам И-НЕ на три входа — из шести транзисторов, как в CMOS: три P параллельно и три N цепочкой.

2.3. Идея: делитель — триггер, который переворачивается

Если подать на D свой же Q̄, на каждом фронте триггер переворачивается: 0, 1, 0, 1… Выход меняется вдвое реже генератора — это делитель на 2. Цепочка из четырёх таких — делитель на 16, а все четыре выхода вместе — двоичное число, которое растёт на 1 с каждым фронтом.

CLKQ0Q1Q2Q3табло012345678910111213141501
Делитель на двух 74HC74: Q0 переворачивается на каждом фронте CLK — вдвое реже такта, Q1 — вдвое реже Q0 и так далее. Вместе Q3 Q2 Q1 Q0 — двоичное число: табло считает 0, 1, 2 … 15 и снова 0.

2.4. Сборка

Тот же проект, что в уроке 1: в библиотеке вентили и микросхемы 74HC00–74HC32.

Шаг 1. Чип NAND3 — И-НЕ на 3 входа из 6 транзисторов

Если NAND3 уже есть в библиотеке (из «Часов и игры» — там он из вентилей; этот — из транзисторов, как в настоящей микросхеме) — шаг пропусти.

Как внутри CMOS-микросхемы: три pmos параллельно от VCC к выходу, три nmos цепочкой от выхода к GND. Выход 0, только когда все три входа 1. Транзистор: затвор, сток, исток.

ДетальНогаМетка
Порт входавыходA
Порт входавыходB
Порт входавыходC
Порт выходавходY
pmosзатвор
сток
исток
A
Y
VCC
pmosзатвор
сток
исток
B
Y
VCC
pmosзатвор
сток
исток
C
Y
VCC
nmosзатвор
сток
исток
A
Y
m1
nmosзатвор
сток
исток
B
m1
m2
nmosзатвор
сток
исток
C
m2
GND

Ctrl+G → имя NAND3. Ноги: входы A, B, C; выходы Y.

Шаг 2. Чип 74HC74 — 2 × D-триггер с установкой и сбросом

Ноги корпуса по даташиту: 1 1RD, 2 1D, 3 1CP, 4 1SD, 5 1Q, 6 1QN, 8 2QN, 9 2Q, 10 2SD, 11 2CP, 12 2D, 13 2RD; 7 — GND, 14 — VCC. SD (установка) и RD (сброс) — активный 0 (в даташите над ними черта); QN — инверсный выход Q̄. Внутри — классическая схема 7474: шесть И-НЕ на 3 входа на каждый триггер.

ДетальНогаМетка
Порт входавыход1RD
Порт входавыход1D
Порт входавыход1CP
Порт входавыход1SD
Порт входавыход2SD
Порт входавыход2CP
Порт входавыход2D
Порт входавыход2RD
Порт выходавход1Q
Порт выходавход1QN
Порт выходавход2QN
Порт выходавход2Q
NAND3A
B
C
Y
1SD
1n4
1n2
1n1
NAND3A
B
C
Y
1n1
1RD
1CP
1n2
NAND3A
B
C
Y
1n2
1CP
1n4
1n3
NAND3A
B
C
Y
1n3
1RD
1D
1n4
NAND3A
B
C
Y
1SD
1n2
1QN
1Q
NAND3A
B
C
Y
1Q
1n3
1RD
1QN
NAND3A
B
C
Y
2SD
2n4
2n2
2n1
NAND3A
B
C
Y
2n1
2RD
2CP
2n2
NAND3A
B
C
Y
2n2
2CP
2n4
2n3
NAND3A
B
C
Y
2n3
2RD
2D
2n4
NAND3A
B
C
Y
2SD
2n2
2QN
2Q
NAND3A
B
C
Y
2Q
2n3
2RD
2QN

Ctrl+G → имя 74HC74. Ноги: входы 1RD, 1D, 1CP, 1SD, 2SD, 2CP, 2D, 2RD; выходы 1Q, 1QN, 2QN, 2Q.

Шаг 3. Генератор и кнопка сброса

Clock — клик по корпусу до 2Hz. Кнопка «Сброс» — CLR.

ДетальНогаМетка
ClockвыходCLK
Button «Сброс»выходCLR

Шаг 4. Сброс — через 74HC04

Сброс у 74HC74 срабатывает от нуля, а кнопка даёт единицу — переворачиваем. Это новая 74HC04 из урока 1: один инвертор при деле, входы остальных пяти — на GND.

ДетальНогаМетка
74HC041A
1Y
2A
3A
4A
5A
6A
CLR
nCLR
GND
GND
GND
GND
GND

Шаг 5. Четыре ступени ÷2

Каждый триггер: D = свой QN — на каждом фронте он переворачивается, то есть делит частоту на 2. Следующий тактируется от QN предыдущего: когда предыдущий падает из 1 в 0, QN растёт — фронт. Две 74HC74 — четыре ступени: Q0 ÷2, Q1 ÷4, Q2 ÷8, Q3 ÷16. SD — на VCC (установка не нужна), RD — общий сброс nCLR.

ДетальНогаМетка
74HC741RD
1D
1CP
1SD
1Q
1QN
2QN
2Q
2SD
2CP
2D
2RD
nCLR
Q0N
CLK
VCC
Q0
Q0N
Q1N
Q1
VCC
Q0N
Q1N
nCLR
74HC741RD
1D
1CP
1SD
1Q
1QN
2QN
2Q
2SD
2CP
2D
2RD
nCLR
Q2N
Q1N
VCC
Q2
Q2N
Q3N
Q3
VCC
Q2N
Q3N
nCLR

Шаг 6. Лампы и табло

Пять ламп: CLK и четыре ступени. Display (bus) ⚙: ширина 4, DEC, шина Q — показывает Q3 Q2 Q1 Q0 как число.

ДетальНогаМетка
LEDвходCLK
LEDвходQ0
LEDвходQ1
LEDвходQ2
LEDвходQ3
Display⚙ширина 4, DEC, шина Q

2.5. Проверка

  1. Clock — 2Hz. Нажми Сброс: все четыре лампы Q гаснут, табло — 0.
  2. Смотри на лампы: Q0 мигает вдвое реже CLK, Q1 — вдвое реже Q0, Q2 и Q3 — ещё реже.
  3. Табло считает 0, 1, 2 … 15, 0 — по одному на каждый фронт CLK: четыре делителя вместе — двоичный счётчик.
  4. Сброс посреди счёта — сразу 0, не дожидаясь фронта: RD асинхронный.
Что видноЧто это
Q0CLK ÷ 2 — меняется на каждом фронте CLK
Q1, Q2, Q3÷4, ÷8, ÷16 — каждая вдвое реже предыдущей
таблоQ3 Q2 Q1 Q0 как число: 0 → 15 → 0

Вставка урока 2 (Cmd+I)

Поверх урока 1. Если NAND3 уже есть в библиотеке (из «Часов и игры»), редактор спросит, какой оставить: оба работают одинаково, этот — из транзисторов.

# Урок 2 — 74HC74: два D-триггера в корпусе; делитель частоты ÷2 ÷4 ÷8 ÷16 на двух 74HC74.# Вставка: Cmd+I поверх урока 1 (нужны вентили и 74HC04). # NAND3 — И-НЕ на 3 входа из 6 транзисторов, как внутри CMOS-микросхемы: три P параллельно к VCC, три N цепочкой к GNDchip NAND3 {  portIn(A)  portIn(B)  portIn(C)  portOut(Y)  pmos(A, Y, VCC)  pmos(B, Y, VCC)  pmos(C, Y, VCC)  nmos(A, Y, m1)  nmos(B, m1, m2)  nmos(C, m2, GND)} # 74HC74 — 2 × D-триггер с установкой и сбросом (SD, RD — активный 0). Ноги: 1 1RD, 2 1D, 3 1CP, 4 1SD, 5 1Q, 6 1QN, 8 2QN, 9 2Q, 10 2SD, 11 2CP, 12 2D, 13 2RDchip 74HC74 {  portIn(1RD)  portIn(1D)  portIn(1CP)  portIn(1SD)  portIn(2SD)  portIn(2CP)  portIn(2D)  portIn(2RD)  portOut(1Q)  portOut(1QN)  portOut(2QN)  portOut(2Q)  NAND3(A=1SD, B=1n4, C=1n2, Y=1n1)  NAND3(A=1n1, B=1RD, C=1CP, Y=1n2)  NAND3(A=1n2, B=1CP, C=1n4, Y=1n3)  NAND3(A=1n3, B=1RD, C=1D, Y=1n4)  NAND3(A=1SD, B=1n2, C=1QN, Y=1Q)  NAND3(A=1Q, B=1n3, C=1RD, Y=1QN)  NAND3(A=2SD, B=2n4, C=2n2, Y=2n1)  NAND3(A=2n1, B=2RD, C=2CP, Y=2n2)  NAND3(A=2n2, B=2CP, C=2n4, Y=2n3)  NAND3(A=2n3, B=2RD, C=2D, Y=2n4)  NAND3(A=2SD, B=2n2, C=2QN, Y=2Q)  NAND3(A=2Q, B=2n3, C=2RD, Y=2QN)} # ---------- делитель ----------clock(CLK)button{label="Сброс"}(CLR)# сброс у 74HC74 — активный 0: кнопку переворачиваем свободным инвертором новой 74HC0474HC04(1A=CLR, 1Y=nCLR, 2A=GND, 3A=GND, 4A=GND, 5A=GND, 6A=GND)# каждый триггер: D = свой Q̄ — на каждом фронте переворачивается (÷2); следующий тактируется от Q̄ предыдущего74HC74(1RD=nCLR, 1D=Q0N, 1CP=CLK, 1SD=VCC, 1Q=Q0, 1QN=Q0N, 2QN=Q1N, 2Q=Q1, 2SD=VCC, 2CP=Q0N, 2D=Q1N, 2RD=nCLR)74HC74(1RD=nCLR, 1D=Q2N, 1CP=Q1N, 1SD=VCC, 1Q=Q2, 1QN=Q2N, 2QN=Q3N, 2Q=Q3, 2SD=VCC, 2CP=Q2N, 2D=Q3N, 2RD=nCLR)# лампы и табло: двоичный счёт 0–15led(CLK)led(Q0)led(Q1)led(Q2)led(Q3)display{bits=4, base="DEC", busSource="Q"}()

Не получается? Что-то не работает →