Урок 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 — так написано в даташите, и наша микросхема делает так же.
2.2. Идея: внутри — шесть И-НЕ
Классическая 7474 внутри — шесть элементов И-НЕ на три входа: два держат «следующее» значение, два ловят фронт, два — сам выход. Мы собираем её ровно так. А сам И-НЕ на три входа — из шести транзисторов, как в CMOS: три P параллельно и три N цепочкой.
2.3. Идея: делитель — триггер, который переворачивается
Если подать на D свой же Q̄, на каждом фронте триггер переворачивается: 0, 1, 0, 1… Выход меняется вдвое реже генератора — это делитель на 2. Цепочка из четырёх таких — делитель на 16, а все четыре выхода вместе — двоичное число, которое растёт на 1 с каждым фронтом.
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 |
| NAND3 | A B C Y | 1SD 1n4 1n2 1n1 |
| NAND3 | A B C Y | 1n1 1RD 1CP 1n2 |
| NAND3 | A B C Y | 1n2 1CP 1n4 1n3 |
| NAND3 | A B C Y | 1n3 1RD 1D 1n4 |
| NAND3 | A B C Y | 1SD 1n2 1QN 1Q |
| NAND3 | A B C Y | 1Q 1n3 1RD 1QN |
| NAND3 | A B C Y | 2SD 2n4 2n2 2n1 |
| NAND3 | A B C Y | 2n1 2RD 2CP 2n2 |
| NAND3 | A B C Y | 2n2 2CP 2n4 2n3 |
| NAND3 | A B C Y | 2n3 2RD 2D 2n4 |
| NAND3 | A B C Y | 2SD 2n2 2QN 2Q |
| NAND3 | A 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.
| Деталь | Нога | Метка |
|---|---|---|
| 74HC04 | 1A 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.
| Деталь | Нога | Метка |
|---|---|---|
| 74HC74 | 1RD 1D 1CP 1SD 1Q 1QN 2QN 2Q 2SD 2CP 2D 2RD | nCLR Q0N CLK VCC Q0 Q0N Q1N Q1 VCC Q0N Q1N nCLR |
| 74HC74 | 1RD 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. Проверка
Clock—2Hz. Нажми Сброс: все четыре лампыQгаснут, табло — 0.- Смотри на лампы:
Q0мигает вдвое режеCLK,Q1— вдвое режеQ0,Q2иQ3— ещё реже. - Табло считает 0, 1, 2 … 15, 0 — по одному на каждый фронт
CLK: четыре делителя вместе — двоичный счётчик. - Сброс посреди счёта — сразу 0, не дожидаясь фронта:
RDасинхронный.
| Что видно | Что это |
|---|---|
| Q0 | CLK ÷ 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"}()Не получается? Что-то не работает →