Zastosowanie logiki w projektowaniu obwodów logicznych

Witam w kolejnej części Iskrowego Kursu Elektroniki. W poprzednim odcinku obiecałem opisanie właśnie tego zagadnienia. Jeśli więc znasz ten dział matematyki – Zapraszam :

Potrzebne rzeczy:

  • Kartka
  • Długopis
  • 8 tranzystorów
  • Po 8 oporników 10kΩ i 360kΩ

Logika jest niesamowicie przydatna, szczególnie w elektronice. W poprzedniej części IKE powiedziałem, że pozwoliła mi ona zaoszczędzić po 1 tranzystorze dla każdej bramki XOR. Wydaje się to niewielką liczbą, ale jeśli chcemy konstruować bardziej złożone układy, to nawet taka oszczędność bardzo pomaga. W moim „dodawaczu” zaoszczędziłem dzięki temu 8 tranzystorów. Ale do rzeczy.

1.Bramka XOR

Jeżeli przyjmiemy wejścia bramki za zdania i nazwiemy je p i q, to możemy zapisać bramkę XOR w ten sposób:

(p ∨ q) ∧ ∼(p ∧ q)

Zobaczmy, że mamy tu bramkę OR (3 tranzystory), AND (3 tranzystory) i NOR (2 tranzystory), co razem daje nam nie za bardzo zadowalającą liczbę ośmiu tranzystorów. Zmniejszmy ją. Po chwili zastanowienia dojdziemy do wniosku, że najlepszym sposobem będzie zastosowanie prawa De Morgana:

(∼x ∧ ∼y) ≡ ∼(x ∨ y)

Zróbmy to więc. ~x to (p ∨ q), a y to (p ∧ q):

∼(∼(p ∧ q) ∨ (p ∧ q))

Wzór jest bardziej skomplikowany, ale spójrzmy. Mamy teraz bramkę AND (3 tranzystory) i dwie bramki NOR (4 tranzystory), czyli razem 7 tranzystorów! Logika pozwoliła nam zaoszczędzić jeden tranzystor! Nieźle, co? Możecie teraz rozpisać tabelki i złożyć układ, żeby zobaczyć, że to naprawdę działa.

2.Potrójny AND

Potrójny AND zaoszczędził w moim przypadku dość znaczną liczbę tranzystorów. Użyłem go w wyjściu Carry II stopnia „dodawacza”. Jak zapewne pamiętacie „dodawacz” funkcjonował w dwójkowym systemie liczbowym. Dodawanie w tym systemie jest identyczne jak w systemie dziesiętnym:

0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 = 10 (2 w systemie dziesiętnym)

Jeśli chcemy dodawać liczby 2-bitowe (00, 01, 10, 11) to musimy pamiętać o tak zwanym Carry – tak, jak w dodawaniu pod kreską:

 11 <—– Carry
01
+ 11
——
100

Dodawanie każdych kolejnych bitów – od najmłodszych, do najstarszych wymaga oddzielnego układu. Pierwszy stopień dodaje pierwsze dwa bity (w tym przypadku 1 i 1) i zwraca ich sumę (tutaj 0) i opcjonalnie Carry. Suma jest od razu wyświetlana (jest przecież częścią wyniku), a Carry jest częścią wejścia drugiego stopnia (który w naszym przypadku dodaje już 3 bity – 1, 0 i 1). Zauważmy, że drugi stopień również zwraca sumę (0) i Carry, które jednak w tym przypadku zostaje od razu wyświetlone na ekranie. Nie będę zagłębiał się w budowę II stopnia „dodawacza” (W przypadku zainteresowania tematem zachęcam do kontaktu w zakładce „Wsparcie”), poruszę tutaj tylko temat zwracania Carry z trzech bitów wejściowych.

Chcemy, żeby nasz układ zwracał wartość 1, kiedy co najmniej dwa bity wejścia są równe 1. Wejścia oznaczę literami x, y i z. A więc:

(x ∧ y) ∨ (x ∧ z) ∨ (y ∧ z)

Zobaczmy. Będę potrzebował trzech bramek AND (O zgrozo! 9 tranzystorów!) i jednej, potrójnej bramki OR (4 tranzystory). Spróbujmy coś z tym zrobić. Zacznę od uznania zdania (x ∧ y) ∨ (x ∧ z) za p, a zdania (x ∧ z) – za q. Później zastosuję prawo De Morgana:

∼(∼((x ∧ y) ∨ (x ∧ z)) ∧ ∼(y ∧ z))

A teraz zastosuje prawo De Morgana na:

∼((x ∧ y) ∨ (x ∧ z))

Wynikiem takiego działania na tym wyrażeniu jest wyrażenie:

∼(∼(x ∧ y) ∧ ∼(x ∧ z) ∧ ∼(y ∧ z))

Hmmm, co my tu mamy. Trzy bramki NAND – 6 tranzystorów i jedna, potrójna bramka NAND – 3 tranzystory. Dzięki zastosowaniu logiki udało nam się odzyskać 6 tranzystorów! Nieźle, prawda?

Jak widać ten, pozornie nieważny dział matematyki jest niezwykle przydatny w elektronice. Byłem kiedyś świadkiem momenty, kiedy student elektroniki rysował tabelkę z jedynkami i zerami, pozaznaczał prostokąty i w chwilę potrafił stwierdzić, czy dany układ jest w stanie łatwo zoptymalizować. Nie umiem tego robić 🙂 W przypadku jakichkolwiek pytań, zapraszam do zakładki „Wsparcie”. Zawsze znajdziemy czas, żeby pomóc 🙂 Powodzenia w tworzeniu własnych układów! Do następnego razu!

Paweł Urbański

←Poprzednia część