Урок 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. Мы оставили эти имена.
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:
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 |
| NOT | I0 O0 | BD nBD |
| NOT | I0 O0 | nBD A |
| NOT | I0 O0 | PE E |
| NOT | I0 O0 | CI nCI |
| NOT | I0 O0 | UD nUD |
| NOT | I0 O0 | nUD U |
| NOT | I0 O0 | CLOCK nCLK |
| NAND | I0 I1 O0 | E nCLK ncl |
| NOT | I0 O0 | ncl CL |
| NOT | I0 O0 | J1 j1 |
| NOT | I0 O0 | J2 j2 |
| NOT | I0 O0 | J3 j3 |
| NOT | I0 O0 | J4 j4 |
| FF4029 | PE J TE CL Q QN | E j1 CI CL q1 q1n |
| FF4029 | PE J TE CL Q QN | E j2 te2 CL D J |
| FF4029 | PE J TE CL Q QN | E j3 G CL B I |
| FF4029 | PE J TE CL Q QN | E j4 te4 CL C q4n |
| NAND3 | A B C Y | nCI nUD q1n nf |
| NOT | I0 O0 | nf F |
| NAND3 | A B C Y | q1 nCI U nl |
| NOT | I0 O0 | nl L |
| NOR4 | A B C D Y | A B C D bout |
| NOT | I0 O0 | bout nbout |
| AND | I0 I1 O0 | nbout F ta |
| NAND | I0 I1 O0 | nBD C md |
| AND | I0 I1 O0 | L md tb |
| NOR | I0 I1 O0 | ta tb te2 |
| NOR | I0 I1 O0 | bout D te_ |
| AND | I0 I1 O0 | F te_ tg |
| AND | I0 I1 O0 | D L tf |
| NOR | I0 I1 O0 | tg tf G |
| NOR | I0 I1 O0 | J I th |
| NOT | I0 O0 | md nmd |
| OR | I0 I1 O0 | th nmd H |
| NOR | I0 I1 O0 | D B tp |
| AND | I0 I1 O0 | F tp tq |
| AND | I0 I1 O0 | H L tr |
| NOR | I0 I1 O0 | tq tr te4 |
| NOR3 | A B C Y | B D C tv |
| AND | I0 I1 O0 | F tv tw |
| NOT | I0 O0 | A an |
| OR | I0 I1 O0 | an th tt |
| AND | I0 I1 O0 | C tt tu |
| AND | I0 I1 O0 | L tu tx |
| NOR | I0 I1 O0 | tw tx co0 |
| NOT | I0 O0 | co0 co1 |
| NOT | I0 O0 | co1 CO |
| NOT | I0 O0 | q1 o1 |
| NOT | I0 O0 | o1 Q1 |
| NOT | I0 O0 | D o2 |
| NOT | I0 O0 | o2 Q2 |
| NOT | I0 O0 | B o3 |
| NOT | I0 O0 | o3 Q3 |
| NOT | I0 O0 | C o4 |
| NOT | I0 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 |
| CD4029 | PE 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).
Clock—1Hz.J4 J3 J2 J1=0101,PE= 1: лампы сразу показывают 0101 (5), такты не идут.PE= 0,CI= 0,BD= 1,UD= 1: счёт вверх 5, 6 … 15, 0 … На 15 гаснетCO.BD= 0 — десятичный: 0 … 9, 0.COгаснет на 9.UD= 0 — вниз: 9, 8 … 0, 9.COгаснет на 0.CI= 1 — счёт стоит,COгорит.
| Тумблеры BD UD CI | Лампы Q4…Q1 | Число | CO гаснет на |
|---|---|---|---|
| 1 1 0 | 0000 → 1111 | 0 → 15 → 0 | 15 (1111) |
| 0 1 0 | 0000 → 1001 | 0 → 9 → 0 | 9 (1001) |
| 0 0 0 | 1001 → 0000 | 9 → 0 → 9 | 0 (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)Не получается? Что-то не работает →