Урок 1. D-триггер CD4013

В картинках

После этого урока в библиотеке микросхема CD4013 — два D-триггера, а на холсте — первая деталь парктроника: делитель, от которого шагает весь прибор. Триггер пробуем тумблерами и кнопкой.


1.1. Идея: запомнить в момент

Парктроник опрашивает датчики по очереди, шаг за шагом. Шагам нужен такт, а такту — элемент, который запоминает значение в момент, когда такт меняется с 0 на 1 (фронт), и держит его до следующего фронта, что бы ни делал вход. Это D-триггер: вход D (data), такт CL, выход Q.

  • фронт CL — Q становится равным D;
  • в остальное время Q держит, D можно менять как угодно;
  • S = 1 — сразу 1, R = 1 — сразу 0, без такта.
CLDQQ берёт D только в момент фронта CL (пунктир); в остальное время держит, что бы ни делал D
D-триггер на времянке: на каждом фронте CL (0 → 1) выход Q становится равным D в этот миг. Между фронтами D может прыгать — Q стоит.

1.2. Идея: мастер и слейв

Внутри — две защёлки подряд. Первая (мастер) пропускает D, пока CL = 0, и закрывается, когда CL = 1. Вторая (слейв) — наоборот: открывается, когда CL = 1, и берёт то, что мастер запер. Вместе они ни в какой момент не открыты насквозь, поэтому Q меняется только на фронте.

Каждая защёлка — два И-НЕ и два ключа TG: ключ данных и ключ обратной связи. Ключ — пара транзисторов nmos + pmos, он замыкает провод, когда N = 1 и P = 0. Ключами управляют cln = НЕ CL и clp = НЕ cln — всегда противоположные: когда один ключ защёлки замкнут, другой разомкнут.

RSDCLQQNNOTNOTNOTNOTTGABNPNANDNANDTGABNPresistorcapTGABNPNANDNANDTGABNPresistorcapNOTNOTNOTNOTQQNnrnsclnclpam1m2m2wbs1s2s2wq1qn1МАСТЕР — пропускает D, пока CL = 0СЛЕЙВ — берёт мастер, пока CL = 1
FF4013 — D-триггер CD4013 одной схемой, для сборки проводами; схема прокручивается вбок. Мастер слева пропускает D, пока CL = 0; слейв справа — пока CL = 1. TG — ключ из пары транзисторов: ноги A, B по бокам, N сверху, P снизу. Резисторы делают обратную связь слабой, cap держит узел.

1.3. Идея: слабая обратная связь

На миг переключения такта cln и clp оба «на полпути», и замкнуты оба ключа защёлки: вход встречается с выходом обратной связи. В настоящей микросхеме транзисторы обратной связи маленькие — побеждает вход. У нас это Resistor (weak) перед ключом обратной связи: «слабый провод», который уступает настоящему выходу.

Capacitor (hold) на узлах a и b — их ёмкость: держит значение, когда на миг разомкнуты оба ключа.

1.4. Идея: делитель на 2

Если завести QN обратно на D, на каждом фронте триггер записывает своё перевёрнутое значение: Q меняется через такт. Генератор 60 Гц превращается в 30 Гц — это шаг опроса датчиков парктроника.

CK60C30C30 меняется на каждом фронте CK60 — вдвое медленнее: 60 Гц → 30 Гц
Делитель на 2 на времянке: QN заведён на D, и каждый фронт CK60 переворачивает C30.
Clock 60HzСбросCD4013первый триггерCLOCK13RESET14SET16D15Q11QN12LEDC30NC30
Делитель на 2: выход QN1 заведён обратно на D1, и каждый фронт CK60 записывает перевёрнутое — C30 меняется через такт. Числа у ног — номера по даташиту TI.

1.5. Сборка

Новый проект. Нужны вентили NOT и NAND — из урока 0 или любого набора серии.

Шаг 1. Чип TG — ключ на паре транзисторов

Если TG уже есть в библиотеке (из набора «Счётчик посетителей» — внутри CD4511) — шаг пропусти.

Ключ, как на схемах TI: nmos и pmos рядом, оба соединяют A с B. nmos открыт при N = 1, pmos — при P = 0. Управляют ими всегда парой противоположных сигналов: N = 1 и P = 0 — ключ замкнут, N = 0 и P = 1 — разомкнут. Транзистор: затвор, сток, исток.

ДетальНогаМетка
Порт входавыходA
Порт входавыходN
Порт входавыходP
Порт выходавходB
nmosзатвор
сток
исток
N
A
B
pmosзатвор
сток
исток
P
A
B

Ctrl+G → имя TG. Ноги: входы A, N, P; выходы B.

Шаг 2. Чип FF4013 — D-триггер CD4013 (мастер и слейв)

Вся схема одним рисунком — выше, в «Идее» (и в файле ff4013-schema.html). Порядок сборки: инверторы R, S, CL; мастер — ключ данных, два И-НЕ, ключ обратной связи с резистором, cap на узле a; слейв — то же; четыре инвертора на выходы. Resistor (weak) и Capacitor (hold) — из палитры. У ключей смотри, куда идут N и P: у ключа данных мастера N = cln, у ключа мастер → слейв — наоборот, N = clp.

ДетальНогаМетка
Порт входавыходD
Порт входавыходCL
Порт входавыходS
Порт входавыходR
Порт выходавходQ
Порт выходавходQN
NOTI0
O0
R
nr
NOTI0
O0
S
ns
NOTI0
O0
CL
cln
NOTI0
O0
cln
clp
TGA
N
P
B
D
cln
clp
a
NANDI0
I1
O0
nr
a
m1
NANDI0
I1
O0
m1
ns
m2
TGA
N
P
B
a
clp
cln
m2w
Resistor (weak)конец 1
конец 2
m2w
m2
Capacitor (hold)выводa
TGA
N
P
B
m1
clp
cln
b
NANDI0
I1
O0
b
ns
s1
NANDI0
I1
O0
nr
s1
s2
TGA
N
P
B
b
cln
clp
s2w
Resistor (weak)конец 1
конец 2
s2w
s2
Capacitor (hold)выводb
NOTI0
O0
s1
q1
NOTI0
O0
q1
Q
NOTI0
O0
b
qn1
NOTI0
O0
qn1
QN

Ctrl+G → имя FF4013. Ноги: входы D, CL, S, R; выходы Q, QN.

Шаг 3. Чип CD4013 — 2 × D-триггер

Ноги корпуса по даташиту TI: 1 Q1, 2 QN1, 3 CLOCK1, 4 RESET1, 5 D1, 6 SET1, 8 SET2, 9 D2, 10 RESET2, 11 CLOCK2, 12 QN2, 13 Q2; 7 — VSS (земля), 14 — VDD (питание) — у нас питание общее, этих ног нет. Внутри — два FF4013: первый на ногах с цифрой 1, второй — с цифрой 2.

ДетальНогаМетка
Порт входавыходD1
Порт входавыходCLOCK1
Порт входавыходSET1
Порт входавыходRESET1
Порт входавыходD2
Порт входавыходCLOCK2
Порт входавыходSET2
Порт входавыходRESET2
Порт выходавходQ1
Порт выходавходQN1
Порт выходавходQ2
Порт выходавходQN2
FF4013D
CL
S
R
Q
QN
D1
CLOCK1
SET1
RESET1
Q1
QN1
FF4013D
CL
S
R
Q
QN
D2
CLOCK2
SET2
RESET2
Q2
QN2

Ctrl+G → имя CD4013. Ноги: входы D1, CLOCK1, SET1, RESET1, D2, CLOCK2, SET2, RESET2; выходы Q1, QN1, Q2, QN2.

Шаг 4. Проба: тумблеры, кнопка «Такт», лампы

Button (momentary) — подпись «Такт» (двойной клик по кнопке). Второй триггер корпуса в пробе не нужен — его входы на GND.

ДетальНогаМетка
PowerвыходVCC
GroundвыходGND
Input (тумблер)выходD
Input (тумблер)выходS
Input (тумблер)выходR
Button «Такт»выходCL
CD4013D1
CLOCK1
SET1
RESET1
D2
CLOCK2
SET2
RESET2
Q1
QN1
D
CL
S
R
GND
GND
GND
GND
Q
QN

Шаг 5. Лампы пробы

ДетальНогаМетка
LEDвходCL
LEDвходQ
LEDвходQN

Шаг 6. Парктроник: генератор, «Сброс», делитель на 2

Это первая деталь парктроника — она остаётся до конца набора. Clock — клик по корпусу до 60Hz. Кнопка — подпись «Сброс». Выход QN1 (C30N) заведён обратно на D1: на каждом фронте CK60 триггер записывает своё перевёрнутое значение, и C30 меняется через такт — 30 раз в секунду.

ДетальНогаМетка
ClockвыходCK60
Button «Сброс»выходRESET
CD4013D1
CLOCK1
RESET1
SET1
D2
CLOCK2
SET2
RESET2
Q1
QN1
C30N
CK60
RESET
GND
GND
GND
GND
GND
C30
C30N

Шаг 7. Лампы делителя

ДетальНогаМетка
LEDвходCK60
LEDвходC30

1.6. Проверка

Проба D-триггера (тумблеры D, S, R — в 0):

  1. Сначала R = 1 и обратно 0 — Q гаснет, QN горит. При включении триггер помнит что попало; R ставит его в 0.
  2. Поставь D = 1 — Q не меняется: D-триггер слушает вход только на фронте такта.
  3. Нажми «Такт» — Q загорается, QN гаснет: на фронте записалось D.
  4. Держи «Такт» нажатой и переключай D — Q стоит. Пишет только момент нажатия (фронт CL 0 → 1), а не нажатое состояние.
  5. D = 0, отпусти и снова нажми «Такт» — Q гаснет.
  6. S = 1 — Q загорается сразу, без такта; верни S = 0 — Q держит. R = 1 — Q сразу гаснет; верни R = 0.
Что сделалQQN
D = 1, такта нет○●
нажал «Такт»●○
держу «Такт», D = 0●○
отпустил, снова «Такт»○●
S = 1●○
S = 0, R = 1○●

Делитель:

  1. На 60Hz лампы CK60 и C30 мигают быстрее, чем видит глаз, — кажутся горящими вполсилы.
  2. Клик по корпусу генератора до 1Hz (через 4kHz … MAX): CK60 мигает раз в секунду, а C30 меняется на каждом загорании CK60 — горит секунду, не горит секунду. Частота вдвое ниже.
  3. Держи «Сброс» — C30 гаснет и стоит, такты не действуют.
  4. Верни генератор на 60Hz (1Hz → 2Hz → 10Hz → 60Hz) — для парктроника нужен он.
Генератор на 1HzCK60C30
1-я секунда●●
2-я секунда○●
3-я секунда●○
4-я секунда○○
держу «Сброс»●/○○

Пробу оставь до урока 2 — там её можно будет удалить. Делитель не трогай: на нём шагает весь парктроник.


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

Нужны вентили NOT, NAND (урок 0). Если TG уже есть в библиотеке — удали его блок из вставки.

# Урок 1 — CD4013B: D-триггер на ключах TG (мастер и слейв), микросхема 2 × D-триггер; делитель 60 → 30 Гц парктроника.# Вставка: Cmd+I в новый проект, где есть вентили NOT, NAND (урок 0). # TG — ключ на паре транзисторов (как на схемах TI): N = 1 и P = 0 — A соединён с B; N = 0 и P = 1 — разомкнутchip TG {  portIn(A)  portIn(N)  portIn(P)  portOut(B)  nmos(N, A, B)  pmos(P, A, B)} # FF4013 — D-триггер CD4013B (Logic Diagram TI, SCHS023E): мастер и слейв на ключах TG и И-НЕ.#   D пишется по фронту CL (0 → 1); S = 1 — сразу 1, R = 1 — сразу 0. TG(A, N, P, B): N = 1 и P = 0 — ключ замкнут.#   До Q — два инвертора (у TI нарисовано три, но по таблице функций TI Q = D).#   resistor — обратная связь слабая, как в чипе: на миг переключения такта открыты оба TG, и вход должен победить.#   cap — ёмкость узла: держит a и b, пока один TG уже закрылся, а другой ещё не открылся.chip FF4013 {  portIn(D)  portIn(CL)  portIn(S)  portIn(R)  portOut(Q)  portOut(QN)  NOT(R, nr)  NOT(S, ns)  NOT(CL, cln)  NOT(cln, clp)  # мастер: TG данных (открыт при CL = 0), И-НЕ, обратная связь через TG (открыт при CL = 1)  TG(A=D, N=cln, P=clp, B=a)  NAND(nr, a, m1)  NAND(m1, ns, m2)  TG(A=a, N=clp, P=cln, B=m2w)  resistor(m2w, m2)  cap(a)  # слейв: TG (открыт при CL = 1), И-НЕ, обратная связь через TG (открыт при CL = 0)  TG(A=m1, N=clp, P=cln, B=b)  NAND(b, ns, s1)  NAND(nr, s1, s2)  TG(A=b, N=cln, P=clp, B=s2w)  resistor(s2w, s2)  cap(b)  # буферы выходов  NOT(s1, q1)  NOT(q1, Q)  NOT(b, qn1)  NOT(qn1, QN)} # CD4013 — два D-триггера с установкой и сбросом (Logic Diagram TI). Ноги: 1 Q1, 2 QN1, 3 CLOCK1, 4 RESET1, 5 D1, 6 SET1, 8 SET2, 9 D2, 10 RESET2, 11 CLOCK2, 12 QN2, 13 Q2chip CD4013 {  portIn(D1)  portIn(CLOCK1)  portIn(SET1)  portIn(RESET1)  portIn(D2)  portIn(CLOCK2)  portIn(SET2)  portIn(RESET2)  portOut(Q1)  portOut(QN1)  portOut(Q2)  portOut(QN2)  FF4013(D=D1, CL=CLOCK1, S=SET1, R=RESET1, Q=Q1, QN=QN1)  FF4013(D=D2, CL=CLOCK2, S=SET2, R=RESET2, Q=Q2, QN=QN2)} # ---------- проба D-триггера ----------power(VCC)ground(GND)# D — что запомнить; «Такт» — фронт CLOCK (нажал кнопку); S = 1 — сразу 1, R = 1 — сразу 0input(D)input(S)input(R)button{label="Такт"}(CL)CD4013(D1=D, CLOCK1=CL, SET1=S, RESET1=R, D2=GND, CLOCK2=GND, SET2=GND, RESET2=GND, Q1=Q, QN1=QN)# ---------- лампы пробы ----------led(CL)led(Q)led(QN)# ---------- парктроник: генератор 60 Гц, «Сброс», делитель 60 → 30 Гц (остаётся в устройстве) ----------# D1 = QN1 — на каждом фронте CK60 триггер берёт своё перевёрнутое значение: C30 меняется через такт, вдвое медленнееclock{rt=60}(CK60)button{label="Сброс"}(RESET)CD4013(D1=C30N, CLOCK1=CK60, RESET1=RESET, SET1=GND, D2=GND, CLOCK2=GND, SET2=GND, RESET2=GND, Q1=C30, QN1=C30N)# ---------- лампы делителя ----------led(CK60)led(C30)

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