PSL-K-02 | Uniwersalne bloki kombinacyjne | |
---|---|---|
A-1 | Starzyk Mateusz Pielka Kamil |
AGH WEAIiE KANiUP |
3 EZ | ||
2011/12 | Lab. Podstaw sterowania logicznego |
Wstęp teoretyczny.
Układy kombinacyjne – rodzaj układów cyfrowych. Charakteryzuje się tym, że stan wyjść zależy tylko i wyłącznie od stanu wejść. W układach nie występuje sprzężenie zwrotne.
Przykłady bloków kombinacyjnych:
- Sumator – cyfrowy układ kombinacyjny, który wykonuje operacje dodawania liczb dwójkowych. Wyróżniamy dwa typy sumatorów z przeniesieniem równoległym i szeregowym. Układy z przeniesieniem równoległym działają szybciej, ale ich budowa jest bardziej skomplikowana.
- Subtraktor – układ wykonujący operację odejmowania.
- Komparator – układ porównujący dwie liczby dwójkowe.
- Transkoder – układ kombinacyjny o n wejściach i k wyjściach, który zmienia dowolny kod cyfrowy (poza kodem 1 z N) na inny, dowolny kod cyfrowy (poza 1 z N). Stosowane przy wyświetlaczach siedmiosegmentowych, gdzie mylnie nazywane są dekoderem.
Realizacja ćwiczenia.
Sumator i subtraktor.
Sumator i subtraktor zostały umieszczone w jednym punkcie ponieważ zastosowaliśmy wejście F, które dla „0” będzie realizowało dodawanie, a dla „1” odejmowanie. Pozostałe wejścia Ai, czyli kolejna cyfra jednej z liczb, Bi, czyli kolejne cyfry drugiej liczby, Ci-1, czyli przeniesienie z sumy młodszych bitów lub pożyczka z różnicy starszych bitów. Wyjścia w obu przypadkach są takie same i nazywają się kolejno Wi, czyli wynik działania na pojedynczych bitach oraz Ci, czyli przeniesienie lub pożyczka do kolejnych kroków. Z tak zdefiniowanymi wyjściami i wejściami stworzyliśmy tablicę prawdy zawartą w tabeli 1.
Tabela 1. Tablica prawdy sumatora i subtraktora.
Ai | Bi | Ci-1 | F | Wi | Ci |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
Następnie z tabeli prawdy zrobiliśmy tablice Karnaugh’a dla wyjścia Wi (tabela 2) oraz Ci (tabela 3) w celu minimalizacji funkcji.
Tabela 2. Tablica Karnaugh’a wyniku sumatora i subtraktora.
Ci±1 F Ai Bi | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 1 | 1 |
01 | 1 | 1 | 0 | 0 |
11 | 0 | 0 | 0 | 1 |
10 | 1 | 1 | 0 | 0 |
Wi = Ci − 1 ⊕ Ai ⊕ Bi (1.1)
Tabela 3. Tablica Karnaugh’a przeniesienia/pożyczki.
Ci±1 F Ai Bi | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 1 | 0 |
01 | 0 | 1 | 1 | 1 |
11 | 1 | 0 | 1 | 1 |
10 | 0 | 0 | 0 | 1 |
$$C_{i} = C_{i - 1}F\overset{\overline{}}{A_{i}} + C_{i - 1}\overset{\overline{}}{F}A_{i} + F\overset{\overline{}}{A_{i}}B_{i} + \overset{\overline{}}{F}A_{i}B_{i} + C_{i - 1}B_{i} = \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $$
=Ci − 1(F⊕Ai) + Bi(F⊕Ai) + Ci − 1Bi = (1.2)
=(F⊕Ai)(Ci − 1+Bi) + Ci − 1Bi
Na podstawie równań 1.1 oraz 1.2 zbudowaliśmy układ dodający lub odejmujący pojedyncze bity. Układ znajduje się w pliki sumator_subtraktor_1_bit.dwm dołączonym do sprawozdania.
W kolejnym kroku zbudowaliśmy układy realizujący jedną z możliwości, a więc dodawania lub odejmowanie i zdefiniowaliśmy taki układ dzięki funkcji makr. Funkcja ta pozwala na budowanie własnych obiektów i zapamiętywanie ich w postaci bloków z odpowiednią liczbą wejść i wyjść. Układy te znajdują się w plikach sumator.dwm i subtraktor.dwm dołączonych do sprawozdania.
Następnie połączyliśmy szeregowo cztery pojedyncze bloki sumatorów, w celu dodawania dwóch liczb 4-bitowych. Analogicznie zbudowaliśmy subtraktor 4-bitowy. Układy znajdują się w plikach sumator_4-bitowy.dwm i subtraktor_4-bitowy.dwm.
Komparator.
Komparator ma porównać dwie liczby 4-bitowe A i B, a następnie wyświetlić wynik porównania na wyświetlaczu siedmiosegmentowym wg wzoru „A”, gdy liczba A jest większe, „B”, gdy liczba B jest większa oraz „=”, gdy A i B są równe. W tym celu należy zaprojektować transkoder, który nazwany został „dekoderem”.
Pierwszy krok to zapisanie tablicy prawdy (tabela 3) i tablic Karnaugh’a (tabela 4, tabela 5).
Tabela 3. Tablica prawdy komparatora.
A | B | Ri+1 | Wi+1 | Ri | Wi |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 0 |
Tabela 4. Tablica Karnaugh’a wyjścia Ri komparatora.
Ri+1 Wi+1 Ai Bi | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 1 | 1 |
01 | 0 | 0 | 0 | 0 |
11 | 0 | 0 | 1 | 1 |
10 | 0 | 0 | 0 | 0 |
$$R_{i} = \overset{\overline{}}{A_{i}}\overset{\overline{}}{B_{i}}R_{i + 1} + R_{i + 1}A_{i}B_{i} = R_{i + 1}\left( \overset{\overline{}}{A_{i}}\overset{\overline{}}{B_{i}} + A_{i}B_{i} \right) = R_{i + 1}\left( A_{i} \odot B_{i} \right)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2.1)$$
Tabela 5. Tablica Karnaugh’a wyjścia Wi komparatora.
Ri+1 Wi+1 Ai Bi | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 1 | 0 | 0 |
01 | 0 | 1 | 0 | 0 |
11 | 0 | 1 | 0 | 0 |
10 | 0 | 1 | 1 | 1 |
$$W_{i} = \overset{\overline{}}{R_{i + 1}}W_{i} + A_{i}\overset{\overline{}}{B_{i}}R_{i + 1}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2.2)$$
Na podstawie wzorów 2.1 i 2.2 zbudowaliśmy testowy komparator 1-bitowy. Układ znajduje się w pliku komparator_1-bit.dwm dołączonym do sprawozdania.
Kolejnym krokiem było zrobienie makra komparator.dwm oraz połączenie czterech bloków w jeden komparator 4-bitowy.
Następnym zadaniem było zaprojektowanie dekodera do wyświetlacza siedmiosegmentowego. W tym celu rozpisaliśmy tablicę prawdy oraz tablicę Karnaugha’a dla każdego segmentu. Segment g świeci się w każdym przypadku, a więc wyświetlając „A”, „B” i „=”, zatem w dekoderze połączyliśmy ten segment ze źródłem napięcia, czyli „1” logiczną. Segmenty a, b, c, e, f świecą się zarówna dla „A” i „B” więc zbudowaliśmy dla nich jedną tablicę prawdy (tabela 6) oraz jedną tablicę Karnaugh’a (tabela 7), gdzie wszystkie te segmenty są prezentowane przez jedno wyjście. Osobne tablice zrobiliśmy dla segmentu d (tabela 8 i tabela 9).
Tabela 6. Tablica prawdy dla segmentów a, b, c, e, f.
Wi | Ri | k |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
Tabela 7. Tablica Karnaugh’a dla segmentów a, b, c, e, f.
Wi Ri | 0 | 1 |
---|---|---|
0 | 1 | 1 |
1 | 0 | 0 |
$$k = \overset{\overline{}}{R_{i}}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2.3)$$
Tabela 8. Tablica prawdy dla segmentu d.
Wi | Ri | d |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
Tabela 9. Tablica Karnaugh’a dla segmentu d.
Wi Ri | 0 | 1 |
---|---|---|
0 | 1 | 0 |
1 | 1 | 0 |
$$d = \overset{\overline{}}{W_{i}}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2.4)$$
Dekoder zbudowany według wzorów 2.3 i 2.4 znajduje się w pliku dekoder.dwm.
Mając wszystkie potrzebne bloki zbudowaliśmy komparator dwóch liczb 4-bitowych. Układ znajduje się pliku dekoder_4-bitowy.dwm.
Podsumowanie.
W ćwiczeniu zapoznaliśmy się z układami kombinacyjnymi wykonującymi działania dodawania, odejmowania oraz porównywania dwóch liczb. Wykonując ćwiczenie nauczyliśmy się sposobu projektowania cyfrowych układów kombinacyjnych.