W oknie drukowania wybierz „Zapisz jako PDF”, aby zachować kopię na swoim urządzeniu.
1Wzory i metody
Systemy liczbowe
Wagi pozycji
dwójkowy 2k, ósemkowy 8k, szesnastkowy 16k
Na dziesiętny
Σ dk·bk
Z dziesiętnego
dziel przez podstawę, czytaj reszty od dołu do góry
Szesnastkowy ↔ dwójkowy
jedna cyfra szesnastkowa = 4 bity
Kod uzupełnień do dwóch (U2)
odwróć bity i dodaj 1
Logika cyfrowa: bramki, mapy Karnaugha i przerzutniki
Podstawowe bramki
A·B, A + B, A′, (A·B)′, (A + B)′, A ⊕ B
Reguły algebry Boole’a
X + X′ = 1, X·X′ = 0, X + XY = X, XY + XY′ = X
Prawa de Morgana
(X·Y)′ = X′ + Y′, (X + Y)′ = X′·Y′
Kolejność na mapie Karnaugha
00, 01, 11, 10 (Gray code)
Grupa 2ᵏ komórek
traci k zmiennych
Multiplekser 4-do-1
F = A′B′I0 + A′BI1 + AB′I2 + ABI3
Przerzutniki
D: Q⁺ = D, T: Q⁺ = T ⊕ Q, JK: Q⁺ = JQ′ + K′Q
Liczniki
n-bitowy: 2ⁿ stanów; mod-N: najmniejsze n z 2ⁿ ≥ N; fout = fclk/N
Licznik asynchroniczny (ripple)
fmax = 1/(n·tpd)
Liczniki pierścieniowy i Johnsona
n i 2n stanów
Metoda
Dla układu przechodź od wejść do wyjścia bramka po bramce i zapisuj wartość na każdym przewodzie albo zapisz jego wyrażenie i wypełnij tablicę prawdy.
Przy upraszczaniu wpisz jedynki (a stany nieokreślone jako X) na mapę Karnaugha z wierszami i kolumnami w kodzie Graya: 00, 01, 11, 10.
Pokryj jedynki jak najmniejszą liczbą jak największych grup po 1, 2, 4, 8 lub 16 komórek, zawijając przez brzegi; każda grupa to jeden iloczyn ze zmiennych, które pozostają stałe. Dla postaci POS grupuj zera.
Przy przerzutnikach i licznikach odczytuj wejścia przy każdym aktywnym zboczu zegara, zapisuj stan po każdym zboczu i pamiętaj, że n-bitowy licznik zawija się po 2ⁿ stanach.
Akwizycja danych i próbkowanie
Kryterium Nyquista
fs > 2·fmax, fN = fs/2
Częstotliwość aliasu
fa = |f − k·fs|, k = round(f/fs)
Wielkość kroku
1 LSB = VFSR/2ᴺ
Błąd kwantyzacji (zaokrąglanie)
±½ LSB
Kod ADC przy obcinaniu
D = ⌊Vin/LSB⌋
Liczba bitów dla rozdzielczości r
2ᴺ ≥ span/r
Idealny SQNR, sinusoida o pełnej skali
SQNR = 6,02·N + 1,76 dB
Szybkość transmisji danych
kanały × fs × N bit/s
Multipleksowany przetwornik ADC
fs = 1/(n·(tc + tset))
UART
Tb = 1/baud; 8N1 = 10 bitów na bajt; bajty/s = baud/bity w ramce
Dzielnik szybkości transmisji
baud = fclk/(16·D)
Metoda
Zapisz, co jest dane: częstotliwość próbkowania, częstotliwości sygnałów, liczbę bitów, zakres wejściowy, szybkość transmisji w bodach.
W zadaniach o próbkowaniu porównaj każdą częstotliwość z fs/2; wyższa częstotliwość pojawia się jako fa = |f − k·fs| dla najbliższej wielokrotności fs.
W zadaniach o rozdzielczości wyznacz 1 LSB = VFSR/2ᴺ albo najmniejsze N, dla którego 2ᴺ ≥ zakres/rozdzielczość.
W zadaniach o szybkości danych i łączach UART policz wszystko, co jest wysyłane: kanały, próbki na sekundę, bity lub całe bajty na próbkę oraz bity startu, parzystości i stopu każdej ramki.
2Zadania do ćwiczenia
1.Systemy liczboweŚredni
Ustaw bity tak, aby zapisywały −23 w 8-bitowym kodzie uzupełnień do dwóch. Jaka jest wartość wzorca U odczytanego jako liczba bez znaku?
N = −238 bit
U =
2.Systemy liczboweTrudny
Nieskompresowany obraz ma 1280 × 720 pikseli i 16 bitów na piksel. Ile pamięci M zajmuje, w KiB (1 KiB = 1024 bajty)?
1280 × 720 px16 bit/px1 KiB = 1024 B
M = KiB
3.Logika cyfrowa: bramki, mapy Karnaugha i przerzutnikiŚredni
Użyj mapy Karnaugha, aby znaleźć minimalną postać sumy iloczynów (SOP) funkcji F(A, B, C, D) = Σm(1, 4, 5, 7, 9, 10, 12, 13). Ile literałów L zawiera łącznie (zmienna z negacją liczy się jako jeden literał)?
F(A, B, C, D) = Σm(1, 4, 5, 7, 9, 10, 12, 13)
L =
4.Logika cyfrowa: bramki, mapy Karnaugha i przerzutnikiTrudny
Przerzutnik JK wyzwalany zboczem narastającym startuje z Q = 0 i dostaje pokazane wejścia przy 8 zboczach narastających zegara. Ile razy N Q zmienia stan?
Q₀ = 0JK
N =
5.Akwizycja danych i próbkowanieŚredni
8-bitowy ADC o zakresie wejściowym od 0 do 5 V obcina: jego kod wyjściowy to ⌊Vin/LSB⌋, gdzie 1 LSB = VFSR/2ᴺ. Wyznacz dziesiętny kod wyjściowy D dla napięcia wejściowego 3,369 V.
N = 8VFSR = 5 VVin = 3,369 V
D =
6.Akwizycja danych i próbkowanieTrudny
16-bitowy ADC przesyła każdą próbkę przez UART z prędkością 38400 bodów w formacie 8E1 (bit startu, 8 bitów danych, parzystość even, 1 bit stopu). Każda próbka jest wysyłana w pełnych bajtach, ich liczba to 2, a łącze jest zajęte przez cały czas. Wyznacz najwyższą częstotliwość sygnału fmax, którą można próbkować bez aliasingu, w Hz.
baud = 38400 BdN = 168E1
fmax = Hz
3Roztwory
1.Systemy liczbowe
Odpowiedź: U = 233
Ustawianie bitów: każdy bit ma wartość będącą potęgą dwójki (128, 64, …, 1). Jedna cyfra szesnastkowa to dokładnie cztery bity, a w 8-bitowym kodzie uzupełnień do dwóch skrajny lewy bit ma wartość −128. Operacje bitowe działają osobno na każdej pozycji bitu.
Odwróć i dodaj jeden
23 = 0001 0111
odwrócone: 1110 1000
+1 → 1110 1001
Odczytaj bez znaku
1110 1001₂ = 256 − 23 = 233
Odpowiedź
U = 233
2.Systemy liczbowe
Odpowiedź: M = 1800 KiB
Pozycyjne systemy liczbowe: każda cyfra jest warta swoją wartość razy potęgę podstawy. W systemie dwójkowym pozycje są warte 1, 2, 4, 8, 16, …, w szesnastkowym 1, 16, 256, …, a A–F oznaczają 10–15. W 8-bitowym kodzie uzupełnień do dwóch skrajny lewy bit jest wart −128 zamiast +128; tak zapisuje się liczby ujemne.
Bity i bajty
1280·720·16 = 14745600 bit = 1843200 B
Zamień na KiB
1843200/1024 = 1800 KiB
Odpowiedź
M = 1800 KiB
3.Logika cyfrowa: bramki, mapy Karnaugha i przerzutniki
Odpowiedź: L = 11
Mapy Karnaugha: komórki są ułożone w kodzie Graya (00, 01, 11, 10), więc sąsiednie komórki, także te przez brzegi, różnią się dokładnie jedną zmienną. Grupuj jedynki w prostokąty po 1, 2, 4, 8 lub 16 komórek, jak największe i jak najmniej, aż każda jedynka będzie pokryta. Każda grupa to jeden iloczyn: zmienne, które wewnątrz niej pozostają stałe. Grupa 2ᵏ komórek traci k zmiennych. Stany nieokreślone (X) można wykorzystać, by powiększyć grupy, ale nigdy nie trzeba ich pokrywać. Grupowanie zer daje minimalną postać POS.
Zgrupuj jedynki
Każda grupa to prostokąt z 2ᵏ komórek; komórki na brzegu sąsiadują z komórkami na przeciwległym brzegu.
C′D
BC′
A′BD
AB′CD′
Minimalna postać SOP
F = C′D + BC′ + A′BD + AB′CD′
L = 11
Odpowiedź
L = 11
4.Logika cyfrowa: bramki, mapy Karnaugha i przerzutniki
Odpowiedź: N = 4
Przerzutniki i liczniki: przerzutnik zmienia stan tylko przy aktywnym zboczu zegara. D kopiuje swoje wejście (Q⁺ = D); T zmienia stan na przeciwny, gdy T = 1; JK utrzymuje stan dla 00, zeruje dla 01, ustawia dla 10 i zmienia stan na przeciwny dla 11. N-bitowy licznik binarny ma 2ⁿ stanów i liczy modulo 2ⁿ; licznik mod-N liczy 0, 1, …, N − 1 i wraca do 0, a potrzebuje tylu przerzutników, ile wynosi najmniejsze n z 2ⁿ ≥ N. Każdy stopień licznika asynchronicznego dzieli częstotliwość przez dwa, więc ostatnie wyjście licznika mod-N pracuje z częstotliwością fclk/N. Licznik Johnsona z n przerzutników ma 2n stanów, licznik pierścieniowy n.
Q po każdym zboczu
Przerzutnik JK: 00 utrzymuje, 01 zeruje (Q = 0), 10 ustawia (Q = 1), 11 zmienia stan na przeciwny.
1: J = 1, K = 1 → Q = 1
2: J = 0, K = 0 → Q = 1
3: J = 1, K = 0 → Q = 1
4: J = 0, K = 1 → Q = 0
5: J = 0, K = 0 → Q = 0
6: J = 1, K = 1 → Q = 1
7: J = 0, K = 1 → Q = 0
8: J = 0, K = 1 → Q = 0
Policz zmiany
0 → 1 → 1 → 1 → 0 → 0 → 1 → 0 → 0
N = 4
Odpowiedź
N = 4
5.Akwizycja danych i próbkowanie
Odpowiedź: D = 172
Rozdzielczość ADC: N-bitowy przetwornik dzieli swój zakres pełnej skali VFSR na 2ᴺ kodów, od 0 do 2ᴺ − 1. Jeden krok to 1 LSB = VFSR/2ᴺ: najmniejsza zmiana, jaką przetwornik potrafi pokazać. ADC z obcinaniem podaje kod ⌊Vin/LSB⌋; ADC z zaokrąglaniem nigdy nie odbiega od prawdziwej wartości o więcej niż ½ LSB, co jest jego błędem kwantyzacji. Każdy dodatkowy bit zmniejsza LSB o połowę i dodaje około 6 dB do idealnego stosunku sygnału do szumu kwantyzacji SQNR = 6,02·N + 1,76 dB dla sinusoidy o pełnej skali. Aby osiągnąć rozdzielczość r na danym zakresie, wybierz najmniejsze N, dla którego 2ᴺ ≥ zakres/r.
Wielkość kroku
1 LSB = 5/28 = 19,53 mV
Kod
Vin/LSB = 3369/19,53 = 172,5
kod = ⌊172,5⌋ = 172
Odpowiedź
D = 172
Zapisany dwójkowo to 10101100.
6.Akwizycja danych i próbkowanie
Odpowiedź: fmax = 872,7 Hz
UART: asynchroniczne łącze szeregowe wysyła każdy bajt w ramce: jeden bit startu (niski), bity danych, opcjonalny bit parzystości i jeden lub dwa bity stopu (wysokie). Szybkość transmisji w bodach to liczba bitów na sekundę, więc jeden bit trwa Tb = 1/baud, a ramka n bitów trwa n/baud. Popularny format 8N1 ma 10 bitów na bajt. Generator szybkości transmisji dzieli zegar: baud = fclk/(16·D) dla liczby całkowitej D, więc rzeczywista szybkość nieco różni się od zamierzonej; błąd poniżej około 2 % zwykle jest akceptowalny.