Урок 3. Счётчик CD4029B

В картинках

После этого урока в библиотеке настоящий счётчик CD4029B: считает вверх и вниз, в двоичном (0–15) и десятичном (0–9) виде, ставится на любое число и сообщает о переносе. Внутри — логическая схема из даташита TI вентиль в вентиль.


3.1. Идея: какой бит переворачивать

На такте переворачиваются не все триггеры, а только те, кому разрешено:

  • вверх: бит переворачивается, если все младшие — 1 (0111 + 1 = 1000);
  • вниз: бит переворачивается, если все младшие — 0 (1000 − 1 = 0111);
  • в десятичном режиме после 9 идёт 0, а не 10, — для этого есть сигналы bout и md.

Логику вокруг триггеров TI рисует на двух страницах, сквозные провода подписаны буквами A–L. Мы оставили эти имена.

CD4029вверх / вниз1PE16VDD2Q415CLOCK3J414Q34J113J35CI12J26Q111Q27CO10UD8VSS9BD
CD4029: PE — записать J1–J4 сразу; CLOCK — счёт на фронте; UD — вверх (1) или вниз (0); BD — двоичный (1) или десятичный (0); CI — разрешение счёта (активный 0); CO — перенос (активный 0). Q1–Q4 — число, Q1 — младший бит.

3.2. Идея: управление счётчиком

  • PE = 1 — записать J4 J3 J2 J1 сразу (предустановка), такт закрыт;
  • CI = 0 — счёт разрешён, CI = 1 — стоит;
  • BD: 1 — двоичный, 0 — десятичный; UD: 1 — вверх, 0 — вниз;
  • CO = 0 — перенос: вверх — на 15 (или 9), вниз — на 0. CO одного счётчика → CI следующего — так из двух CD4029 получаются две цифры.

3.3. Идея: кружки на схеме TI

На схеме TI много вентилей с кружками на входах. Кружок — это НЕ. «И», у которого кружки на всех входах, — это ИЛИ-НЕ: оно даёт 1, только когда все входы 0. Поэтому в таблице вместо них — NOR, NOR3, NOR4, а там, где кружок на одном входе, — отдельный NOT.

Собираешь проводами — вся схема одним рисунком, расположение как у TI:

NOTNOTNOTNOTNOTNOTNOTNANDNOTNOTNOTNOTNOTF/F1FF4029PEJTECLQQNF/F2FF4029PEJTECLQQNF/F3FF4029PEJTECLQQNF/F4FF4029PEJTECLQQNNAND3NOTNAND3NOTNOR4NOTANDNANDANDNORNORANDANDNORNORNOTORNORANDANDNORNOR3ANDNOTORANDANDNORNOTNOTNOTNOTNOTNOTNOTNOTNOTNOT9BD1PE5CI10UD15CLOCK4J112J213J33J46Q111Q214Q32Q47COnBDAEnCInUDUCLq1q1nte2DJGBIte4CFLboutnbouttamdtbte_tgtfthnmdHtptqtrtvtwantttutx
CD4029 одной схемой — для сборки проводами, расположение как на Fig. 9 TI; схема прокручивается вбок. Цветом вентиля — его тип, зелёным — имя провода (A–L как у TI); точка — провода соединены, пересечение без точки — нет. F/F1–F/F4 — чип FF4029 из урока 2.

3.4. Сборка

Тот же проект. В библиотеке нужны вентили урока 0 и FF4029 (урок 2).

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

Наоборот к NAND3: три pmos цепочкой от VCC к выходу, три nmos параллельно от выхода к GND. Выход 1, только когда все входы 0.

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

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

Шаг 2. Чип NOR4 — ИЛИ-НЕ на 4 входа из 8 транзисторов

Как NOR3, на один вход больше.

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

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

Шаг 3. Чип CD4029 — счётчик вверх/вниз, двоичный/десятичный

Ноги корпуса по даташиту TI: 1 PE, 2 Q4, 3 J4, 4 J1, 5 CI, 6 Q1, 7 CO, 9 BD, 10 UD, 11 Q2, 12 J2, 13 J3, 14 Q3, 15 CLOCK; 8 — VSS, 16 — VDD. Внутри — Fig. 9 TI вентиль в вентиль; имена A–L — как у TI. Кружки TI на входах уже пересчитаны в вентили: «И» с кружками на всех входах = NOR, NOR3, NOR4; кружок на одном входе = отдельный NOT. Собираешь проводами — схема одним рисунком в начале урока.

ДетальНогаМетка
Порт входавыходPE
Порт входавыходJ4
Порт входавыходJ1
Порт входавыходCI
Порт входавыходBD
Порт входавыходUD
Порт входавыходJ2
Порт входавыходJ3
Порт входавыходCLOCK
Порт выходавходQ4
Порт выходавходQ1
Порт выходавходCO
Порт выходавходQ2
Порт выходавходQ3
NOTI0
O0
BD
nBD
NOTI0
O0
nBD
A
NOTI0
O0
PE
E
NOTI0
O0
CI
nCI
NOTI0
O0
UD
nUD
NOTI0
O0
nUD
U
NOTI0
O0
CLOCK
nCLK
NANDI0
I1
O0
E
nCLK
ncl
NOTI0
O0
ncl
CL
NOTI0
O0
J1
j1
NOTI0
O0
J2
j2
NOTI0
O0
J3
j3
NOTI0
O0
J4
j4
FF4029PE
J
TE
CL
Q
QN
E
j1
CI
CL
q1
q1n
FF4029PE
J
TE
CL
Q
QN
E
j2
te2
CL
D
J
FF4029PE
J
TE
CL
Q
QN
E
j3
G
CL
B
I
FF4029PE
J
TE
CL
Q
QN
E
j4
te4
CL
C
q4n
NAND3A
B
C
Y
nCI
nUD
q1n
nf
NOTI0
O0
nf
F
NAND3A
B
C
Y
q1
nCI
U
nl
NOTI0
O0
nl
L
NOR4A
B
C
D
Y
A
B
C
D
bout
NOTI0
O0
bout
nbout
ANDI0
I1
O0
nbout
F
ta
NANDI0
I1
O0
nBD
C
md
ANDI0
I1
O0
L
md
tb
NORI0
I1
O0
ta
tb
te2
NORI0
I1
O0
bout
D
te_
ANDI0
I1
O0
F
te_
tg
ANDI0
I1
O0
D
L
tf
NORI0
I1
O0
tg
tf
G
NORI0
I1
O0
J
I
th
NOTI0
O0
md
nmd
ORI0
I1
O0
th
nmd
H
NORI0
I1
O0
D
B
tp
ANDI0
I1
O0
F
tp
tq
ANDI0
I1
O0
H
L
tr
NORI0
I1
O0
tq
tr
te4
NOR3A
B
C
Y
B
D
C
tv
ANDI0
I1
O0
F
tv
tw
NOTI0
O0
A
an
ORI0
I1
O0
an
th
tt
ANDI0
I1
O0
C
tt
tu
ANDI0
I1
O0
L
tu
tx
NORI0
I1
O0
tw
tx
co0
NOTI0
O0
co0
co1
NOTI0
O0
co1
CO
NOTI0
O0
q1
o1
NOTI0
O0
o1
Q1
NOTI0
O0
D
o2
NOTI0
O0
o2
Q2
NOTI0
O0
B
o3
NOTI0
O0
o3
Q3
NOTI0
O0
C
o4
NOTI0
O0
o4
Q4

Ctrl+G → имя CD4029. Ноги: входы PE, J4, J1, CI, BD, UD, J2, J3, CLOCK; выходы Q4, Q1, CO, Q2, Q3.

Шаг 4. Проба: тумблеры и генератор

Clock — 1Hz.

ДетальНогаМетка
PowerвыходVCC
GroundвыходGND

Шаг 5. Счётчик

ДетальНогаМетка
Input (тумблер)выходPE
Input (тумблер)выходJ1
Input (тумблер)выходJ2
Input (тумблер)выходJ3
Input (тумблер)выходJ4
Input (тумблер)выходCI
Input (тумблер)выходBD
Input (тумблер)выходUD
ClockвыходCLOCK
CD4029PE
J1
J2
J3
J4
CI
BD
UD
CLOCK
Q1
Q2
Q3
Q4
CO
PE
J1
J2
J3
J4
CI
BD
UD
CLOCK
Q1
Q2
Q3
Q4
CO

Шаг 6. Лампы

Лампы ставь по порядку Q4 Q3 Q2 Q1 — читаются как двоичное число.

ДетальНогаМетка
LEDвходCLOCK
LEDвходQ4
LEDвходQ3
LEDвходQ2
LEDвходQ1
LEDвходCO

3.5. Проверка

Лампы Q4 Q3 Q2 Q1 — число в двоичном виде; CO — перенос, горит, пока переноса нет (активный 0).

  1. Clock — 1Hz. J4 J3 J2 J1 = 0101, PE = 1: лампы сразу показывают 0101 (5), такты не идут.
  2. PE = 0, CI = 0, BD = 1, UD = 1: счёт вверх 5, 6 … 15, 0 … На 15 гаснет CO.
  3. BD = 0 — десятичный: 0 … 9, 0. CO гаснет на 9.
  4. UD = 0 — вниз: 9, 8 … 0, 9. CO гаснет на 0.
  5. CI = 1 — счёт стоит, CO горит.
Тумблеры BD UD CIЛампы Q4…Q1ЧислоCO гаснет на
1 1 00000 → 11110 → 15 → 015 (1111)
0 1 00000 → 10010 → 9 → 09 (1001)
0 0 01001 → 00009 → 0 → 90 (0000)
x x 1стоят—не гаснет

После проверки удали пробу — NOR3, NOR4, CD4029 остаются в библиотеке.


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

Нужны вентили урока 0 и FF4029 (урок 2).

# Урок 3 — CD4029B: счётчик вверх/вниз, двоичный/десятичный, с предустановкой (Fig. 9 TI вентиль в вентиль).# Вставка: Cmd+I в тот же проект (нужны вентили урока 0 и FF4029 из урока 2). # NOR3 — ИЛИ-НЕ на 3 входа: P цепочкой к VCC, N параллельно к GNDchip NOR3 {  portIn(A)  portIn(B)  portIn(C)  portOut(Y)  pmos(A, VCC, p1)  pmos(B, p1, p2)  pmos(C, p2, Y)  nmos(A, Y, GND)  nmos(B, Y, GND)  nmos(C, Y, GND)} # NOR4 — ИЛИ-НЕ на 4 входа: P цепочкой к VCC, N параллельно к GNDchip NOR4 {  portIn(A)  portIn(B)  portIn(C)  portIn(D)  portOut(Y)  pmos(A, VCC, p1)  pmos(B, p1, p2)  pmos(C, p2, p3)  pmos(D, p3, Y)  nmos(A, Y, GND)  nmos(B, Y, GND)  nmos(C, Y, GND)  nmos(D, Y, GND)} # CD4029 — счётчик вверх/вниз, двоичный/десятичный, с предустановкой (Fig. 9 TI). Ноги: 1 PE, 2 Q4, 3 J4, 4 J1, 5 CI, 6 Q1, 7 CO, 9 BD, 10 UD, 11 Q2, 12 J2, 13 J3, 14 Q3, 15 CLOCKchip CD4029 {  portIn(PE)  portIn(J4)  portIn(J1)  portIn(CI)  portIn(BD)  portIn(UD)  portIn(J2)  portIn(J3)  portIn(CLOCK)  portOut(Q4)  portOut(Q1)  portOut(CO)  portOut(Q2)  portOut(Q3)  # входы  NOT(BD, nBD)  NOT(nBD, A)  NOT(PE, E)  NOT(CI, nCI)  NOT(UD, nUD)  NOT(nUD, U)  NOT(CLOCK, nCLK)  NAND(E, nCLK, ncl)  NOT(ncl, CL)  NOT(J1, j1)  NOT(J2, j2)  NOT(J3, j3)  NOT(J4, j4)  # триггеры  FF4029(PE=E, J=j1, TE=CI, CL=CL, Q=q1, QN=q1n)  FF4029(PE=E, J=j2, TE=te2, CL=CL, Q=D, QN=J)  FF4029(PE=E, J=j3, TE=G, CL=CL, Q=B, QN=I)  FF4029(PE=E, J=j4, TE=te4, CL=CL, Q=C, QN=q4n)  # F — вниз, L — вверх  NAND3(A=nCI, B=nUD, C=q1n, Y=nf)  NOT(nf, F)  NAND3(A=q1, B=nCI, C=U, Y=nl)  NOT(nl, L)  # bout = 1 на 0000; nbout  NOR4(A=A, B=B, C=C, D=D, Y=bout)  NOT(bout, nbout)  # бит 2  AND(nbout, F, ta)  NAND(nBD, C, md)  AND(L, md, tb)  NOR(ta, tb, te2)  # бит 3  NOR(bout, D, te_)  AND(F, te_, tg)  AND(D, L, tf)  NOR(tg, tf, G)  # H  NOR(J, I, th)  NOT(md, nmd)  OR(th, nmd, H)  # бит 4  NOR(D, B, tp)  AND(F, tp, tq)  AND(H, L, tr)  NOR(tq, tr, te4)  # перенос  NOR3(A=B, B=D, C=C, Y=tv)  AND(F, tv, tw)  NOT(A, an)  OR(an, th, tt)  AND(C, tt, tu)  AND(L, tu, tx)  NOR(tw, tx, co0)  NOT(co0, co1)  NOT(co1, CO)  # выходы  NOT(q1, o1)  NOT(o1, Q1)  NOT(D, o2)  NOT(o2, Q2)  NOT(B, o3)  NOT(o3, Q3)  NOT(C, o4)  NOT(o4, Q4)} # ---------- проба счётчика ----------power(VCC)ground(GND)# PE = 1 — записать J1–J4; CI = 0 — счёт разрешён; BD: 1 — двоичный, 0 — десятичный; UD: 1 — вверх, 0 — внизinput(PE)input(J1)input(J2)input(J3)input(J4)input(CI)input(BD)input(UD)clock(CLOCK)CD4029(PE=PE, J1=J1, J2=J2, J3=J3, J4=J4, CI=CI, BD=BD, UD=UD, CLOCK=CLOCK, Q1=Q1, Q2=Q2, Q3=Q3, Q4=Q4, CO=CO)# ---------- лампы ----------led(CLOCK)led(Q4)led(Q3)led(Q2)led(Q1)led(CO)

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