Lompat ke konten

Desain Logika Digital

Teknik Elektro Universitas · Topik 3

3.1

Apa kursus ini, dan bagaimana menggunakannya

Ini adalah kursus ketiga dalam Teknik Elektro Universitas: logika digital desain — bagaimana bit direpresentasikan, dikombinasikan, disimpan, dan ditimed di dalam setiap komputer. Kursus ini tidak memerlukan pengetahuan elektronik sebelumnya: primitifnya adalah dua tingkat tegangan dan sejumlah gerbang logika.

  • Unit 3.1 membangun sistem bilangan: biner, heksadesimal, komplemen dua.
  • Unit 3.2–3.3 menggabungkan logika: aljabar Boolean, peta Karnaugh, blok kombinasional blok.
  • Unit 3.4–3.5 menambahkan elemen waktu: latches, flip-flop, dan mesin state yang dikontrol clock.
  • Unit 3.6 mendeskripsikan pola-pola: counter, shift register, memori.
  • Unit 3.7 mendeskripsikannya dalam HDL dan memverifikasinya dengan testbench.

Setiap unit dibuka dengan cerita, menampilkan gambar sebelum ide formal, mendefinisikan istilah secara presisi, mengerjakan dua contoh bertingkat yang aritmatikanya diverifikasi mesin, menyebutkan kesalahan klasik, dan diakhiri dengan ringkasan tiga baris. Kebiasaan pemeriksaan kursus ini: setiap jawaban Boolean diverifikasi oleh ringkasan. Kebiasaan pemeriksaan pada kursus ini: setiap jawaban Boolean diverifikasi oleh evaluasi menyeluruh — fungsi dengan 3 input hanya memiliki 8 baris, jadi periksa semuanya, baik secara manual pada tabel kebenaran atau melalui perulangan di sandbox.

Kosa kata Latih
English Bahasa Indonesia
latch/lætʃ/ latch
register/ˈredʒɪstə/ register
shift register/ʃɪft ˈredʒɪstə/ shift register
testbench/ˈtestbentʃ/ testbench
moore machines mesin Moore
mealy machines mesin Mealy
3.1

Representasi bilangan dan kode

Termostat menampilkan 22.5 °C, tetapi mikrokontroler di baliknya hanya menyimpan bit. Bagaimana 22.5 diubah menjadi pola bit yang dapat ditambahkan, dibandingkan, dan disimpan mesin? Unit 3.1 adalah terjemahan tersebut, dalam kedua arah.

Komputer menyimpan bilangan dalam biner (basis 2). Konversinya bersifat sistematis: bagi dengan 2 untuk bilangan bulat (kumpulkan sisa), kalikan dengan 2 untuk pecahan. Heksadesimal (basis 16) adalah singkatan dari biner — setiap digit hex adalah tepat 4 bit: $0xB = 1011$.

Kotak register 8-bit yang dibagi menjadi posisi bit dengan bobot 128, 64, 32, 16, 8, 4, 2, 1; pola 10011100 ditandai dengan bobot 128+16+8+4 = 156
Bobot pada bit: bacalah pola dengan menjumlahkan bobot di bawah setiap 1

Menurunkan komplemen dua. Kita menginginkan pengkodean di mana pengurangan menggunakan kembali adder: $a - b = a + (b\text{ negated})$ harus berlaku modulo $2^N$. Invers aditif dari $b$ modulo $2^N$ adalah $2^N - b = (2^N - 1 - b) + 1$ — dan $2^N - 1 - b$ tepatnya "setiap bit dari $b$ dibalik" (setiap pembobotan 1 berubah menjadi 0 dan kembali). Jadi negasi = inversi + 1, dan penurunan merupakan pembuktian bahwa penjumlahan berfungsi tidak berubah.

Komplemen dua merepresentasikan bilangan bulat bertanda dalam N bit: balik setiap bit dan tambahkan 1 untuk menegasi. Dalam 8 bit, $-5$ adalah $\overline{00000101}$ ditambah 1, yang merupakan $11111011$. Rentang berkisar dari $-2^{N-1}$ hingga $+2^{N-1}-1$ — yaitu −128 hingga +127 dalam 8 bit. Overflow terjadi ketika hasil melampaui rentang: menjumlahkan dua bilangan positif dan membaca hasil negatif (atau sebaliknya) adalah deteksi berbasis tanda aturan — carry keluar dari MSB bukan overflow; carry keluar berbeda dengan carry menuju ke MSB adalah overflow.

Contoh terpecahkan 1 (konversi dan periksa). Konversi 156 ke biner: $156 = 128 + 16 + 8 + 4 = 10011100$. Verifikasi dengan menjumlahkan kembali bobotnya: $128 + 16 + 8 + 4 = 156$ ✓. Bilangan yang sama dalam heksadesimal: kelompokkan bit empat per empat Contoh dikerjakan $1001\ 1100 = 0x9C$ (angka negatif dan overflow, ditingkatkan). Enkodi −0.625 dalam kalikan dengan 2 → 1.25 (1), 0.25×2 → 0.5 (0), 0.5×2 → 1.0 (1): $0.625 = 0.101_2$ ✓ ($0.5 + 0.125$).

*Contoh terpecahkan 2 (angka negatif dan overflow, ditingkatkan). Encode −100 dalam 8 bit: $100 = 01100100$; inversi $10011011$; tambahkan 1 → $10011100$. Verifikasi dengan dekoding: sebagai tak bertanda itu adalah 156, dan $156 - 256 = -100$ ✓. Sekarang kasus overflow kasus: $100 + 50 = 150 > 127$, sehingga bilangan bulat bersigned 8-bit tidak dapat menampilkannya — bit menghitung $10010110$, yang mendekode menjadi $-106$. Aturan tanda menangkapnya: positif + positif membaca negatif ✓ (dan carry-into-MSB adalah 1 sementara carry-out adalah 0). Mesin tidak gagal; lebarnya yang gagal.

Kesalahan umum. Membaca komplemen dua sebagai tak bertanda (156 dan −100 berbagi bit — penafsir yang menentukan). Melupakan rentang asimetris: −128 ada, +128 tidak. Memperlakukan carry-out sebagai overflow — hanya ketidakcocokan carry yang dihitung.

Ringkasan: biner↔desimal dengan bobot dan penggandaan; heksadesimal mengelompokkan empat; komplemen dua = invers + 1, rentang $-2^{N-1}\ldots 2^{N-1}-1$; overflow dideteksi dengan ketidakcocokan tanda, bukan carry-out.

Kosa kata Latih
English Bahasa Indonesia
overflow/ˌəʊvəˈfləʊ/ overflows
boolean algebra/ˈbuːlɪən ˈældʒɪbrə/ aljabar Boolean
absorption/əbˈsɔːpʃn/ hukum absorpsi
de morgan's theorem/də ˈmɔːɡənz ˈθɪərəm/ Hukum De Morgan
karnaugh map/ˈkɑːnɔː mæp/ Peta Karnaugh
don't-cares don't-cares
combinational logic/ˌkɒmbɪˈneɪʃənl ˈlɒdʒɪk/ Logika kombinatorik
adder/ˈædə/ Penjumlah
half adder/hɑːf ˈædə/ Penjumlah setengah
3.2

Aljabar Boolean dan peta Karnaugh

Lampu lorong harus bisa dinyalakan dari kedua ujung: dua sakelar, satu bohlam — XOR yang dirangkai teknisi adalah fungsi Boolean. Aljabar Boolean memanipulasi ekspresi dengan AND ($\cdot$), OR ($+$), NOT ($'$). The hukum meniru aljabar biasa plus absorpsi: $A + A\cdot B = A$ dan $A\cdot (A+B) = A$. Teorema De Morgan adalah alat utamanya:

$$(A \cdot B)' = A' + B' \qquad (A + B)' = A' \cdot B'$$

— pecah garis atas, ubah tanda.

Peta Karnaugh mengatur tabel kebenaran sehingga sel bersebelahan berbeda dalam satu variabel (urutan kode Gray); kelompok 1, 2, 4, 8 sel (pangkat dua, persegi panjang) dibaca sebagai suku produk.

Peta Karnaugh tiga variabel dengan 1 pada m1, m3, m5 dan m7, dua kolom tengah, dilingkari sebagai satu kelompok empat
F = Σm(1, 3, 5, 7): kelompok empat hanya mempertahankan C, sehingga F = C

Contoh terpecahkan 1 (fungsi ganjil). Fungsi 3-variabel $F = \sum m(1, 3, 5, 7)$ (baris ganjil) dipetakan ke pasangan kolom — setiap sel di mana $C = 1$ — jadi $F = C$ langsung: keempat minterm hanya berbagi $C$. The periksa: evaluasi $C$ terhadap semua baris 8 dari yang asli; cocok tepat bergabung dengan kelompok apa pun — gunakan untuk memperbesar kelompok, jangan untuk membuat yang baru. gabungkan kelompok apa pun — gunakan untuk memperbesar kelompok, jangan untuk membuat yang baru.

Contoh terpecahkan 2 (majoritas variabel 4, diverifikasi mesin, ditingkatkan). Fungsi mayoritas $M(A,B,C,D)$ bernilai 1 ketika tiga atau lebih input adalah 1: faktorisasi minterm-nya adalah $\sum m(7, 11, 13, 14, 15)$. Pengelompokan pada peta variabel 4: empat pasangan tumpang tindih, masing-masing berbagi $m_{15}$, menghasilkan $ABC + ABD + ACD + BCD$, yang difaktorkan menjadi $M = A\cdot B\cdot(C + D) + C\cdot D\cdot(A + B)$. Pengecekan mesin: evaluasi baik definisi (hitung $\geq 3$) maupun ekspresi pada semua baris 16 — mereka konsisten di mana-mana ✓. Perhatikan bentuk jawaban: peta memberikan empat hasil perkalian-input-3 alih-alih jumlah minterm-5 datar, dan memfaktorkannya menjadi dua hasil perkalian menghemat gerbang tambahan.

Kesalahan umum. Pengelompokan diagonal (sel harus berupa persegi panjang dalam pembungkus kode Gray, sehingga tepi saling bersentuhan). Menulis suku kelompok dari variabel yang berubah di dalam kelompok — hanya variabel konstan yang bertahan. Percaya pada penyederhanaan yang belum diverifikasi: pemeriksaan baris 16 dilakukan secara gratis.

Ringkasan: Hukum Boolean plus De Morgan mengubah ekspresi; peta K mengelompokkan persegi panjang berkuasa-dua dalam urutan Gray; kelompok hanya menyimpan variabel konstan; don't-care memperluas namun tidak pernah menciptakan; verifikasi setiap penyederhanaan secara menyeluruh.

3.3

Blok pembangun kombinasional

Mesin penjual otomatis menyajikan salah satu dari empat minuman dengan dua kali tekan tombol: itu selektor, decoder di balik tampilan, penjumlah di dalam logika uang kembalian — blok kombinasional adalah lapisan tengah yang dapat digunakan kembali antara gerbang dan sistem. Gerbang menyusun blok logika kombinasional standar yang perilakunya adalah fungsi murni dari input saat ini:

  • Multiplexer (MUX): pemilih data dari $2^n$ ke-1; n bit seleksi memilih satu input. $Y = \sum (D_i \cdot minterm_i(selects))$.
  • Decoder: n input ke $2^n$ output, tepat satu bernilai tinggi — generator minterm pembentuk.
  • Penjumlah: penjumlah setengah menjumlahkan dua bit ($S = A \oplus B$, carry $C = A\cdot B$); penjumlah penuh menjumlahkan tiga (dua operand ditambah carry-in): $S = A \oplus B \oplus C_{in}$, $C_{out} = A\cdot B + C_{in}\cdot (A \oplus B)$.
Skema gerbang full adder: dua gerbang XOR untuk penjumlahan, dua gerbang AND dan satu OR untuk carry, dengan input A, B, Cin terhubung melalui
Full adder: lima gerbang, salah satu sirkuit yang paling sering digunakan dalam komputasi

Contoh terpecahkan 1 (MUX dan adder, diverifikasi). MUX dari 4-ke-1 dengan pemilih $S_1S_0 = 10$ menghasilkan $D_2$ — bobot desimal dari kode pemilih dinamai input data. Pengecekan full-adder di $A=1, B=1, C_{in}=1$: $S = 1\oplus 1\oplus 1 = 1$, $C_{out} = 1 + 1\cdot 0 = 1$ — tiga ones masuk, binary 11 keluar (penjumlahan 1, carry 1): $3 = 2 + 1$ ✓.

Contoh terpecahkan 2 (ripple adder 2-bit, diverifikasi mesin, ditingkatkan). Rantai dua full adders: yang pertama menjumlahkan bit rendah, carry-nya mengumpan ke yang kedua. Menambahkan $11_2 + 01_2$ ($3 + 1$): bit rendah $1 + 1$ menghasilkan $S_0 = 0$, carry 1; bit tinggi $1 + 0 + 1$ menghasilkan $S_1 = 0$, carry 1 — output $100_2 = 4$ ✓ (diverifikasi mesin melalui semua empat pasangan input per tahap). Pola ini berskala tepat: adder n-bit adalah n full adders dan tidak ada lagi, dan carry berombak melewatiannya — yang juga merupakan batas kecepatannya, diperbaiki nanti oleh carry-lookahead.

Hazard adalah kilatan sesaat pada output ketika perubahan input menempuh jalur jalur; mereka penting karena glitch dapat ditangkap sebagai tepi clock. Solusinya pengelompokan redundan (menjaga penutup hazard) — deteksi melalui enumerasi ketika spesifikasi melarang glitch.

Kesalahan umum. Membaca MUX secara terbalik (pemilih memilih data, bukan nilai output). Melupakan arah rantai carry pada penjumlahan ripple. Memperlakukan hazard sebagai kesalahan logika — nilai akhir benar; transien merupakan bug-nya.

Ringkasan: MUX memilih berdasarkan kode berbobot, decoder menghasilkan minterm, full adder = lima gerbang menjumlahkan tiga bit; ripple berskala dengan pengulangan; hazard bersifat transien, dan penutup redundan menghilangkannya.

Jelajahi

Follow the carry from the low bit upward

$2C_{out}+S=A+B+C_{in}$

The worked 11₂ + 01₂ addition produces low sum bits 00 and a final carry 1, giving the full 100₂ result. Inspect either stage in the full-adder truth table, compare three ones entering one stage, and extend the chain to four bits.

Jelajahi

Same code, a data value or one high line

$i=2S_1+S_0,\quad Y_{MUX}=D_i$

With S₁S₀ = 10, the MUX passes D₂ while the decoder raises Y₂. Set D₂ to 0 or 1 without changing the code, then change an unselected data bit and compare the outputs. The table shows every select code for the current data.

Kosa kata Latih
English Bahasa Indonesia
digital logic design/ˈdɪdʒɪtl ˈlɒdʒɪk dɪˈzaɪn/ Desain logika digital
binary/ˈbaɪnəri/ biner
hexadecimal/ˌheksəˈdesɪml/ heksadesimal
two's complement/tuːz ˈkɒmplɪmənt/ komplemen dua
range/reɪndʒ/ rentang
multiplexer/ˈmʌltɪpleksə/ multiplexer
decoder/dɪˈkəʊdə/ decoder
full adder/fʊl ˈædə/ penjumlah penuh
hazards hazard
sequential logic/siːˈkwenʃl ˈlɒdʒɪk/ Logika sekuensial
3.4

Latch dan flip-flop

Bel pintu mengingat bahwa ia ditekan setelah jari pergi — yang memori paling sederhana adalah umpan balik. Logika sekuensial memiliki keadaan — memori. Latch sensitif terhadap level: SR latch (NOR silang-terpasang) mengingat input mana yang berdenyut; latch D mengikuti D selama ENABLE tinggi, membeku saat rendah. Flip-flop pemicu tepi: flip-flop D menybridik D pada tepi clock dan menyimpannya hingga tepi berikutnya — Q setelah tepi sama dengan D sebelum tepi.

$$Q_{next} = D \quad \text{(D flip-flop, at each rising edge)}$$

J-K flip-flop menghilangkan kondisi terlarang SR: $J=K=1$ beralih ($Q'$ selanjutnya). Tabel eksitasi menjalankan ini secara terbalik — diberikan sebuah transisi yang diinginkan $Q \to Q^+$, tabel tersebut mencantumkan input yang diperlukan (D: $D = Q^+$; J-K: tahan $0{,}0$, set $1{,}0$, reset $0{,}1$, toggle $1{,}1$).

Diagram waktu: CLK, input D yang berfluktuasi antar tepian, dan Q yang hanya berubah pada tepian naik ke 1, 0, 1
Q menyalin D hanya pada tepian naik clock

Contoh terpecahkan 1 (baca diagram waktu). Flip-flop D melihat $D = 1$ pada tepian naik pertama, $D = 0$ pada tepian kedua, $D = 1$ pada tepian ketiga: Q membaca 1, 0, 1. Di antara tepi, D dapat bergerak bebas — tidak ada yang diambil sampelnya. Timing waktu membuat hal ini terlihat: Q berubah hanya pada momen tepian.

Contoh terpecahkan 2 (urutan J-K, dilacak mesin, ditingkatkan). Memulai dari Q = 0, terapkan $J,K$ = (1,0), (1,1), (0,1), (0,0). Langkah demi langkah: (1,0) menetapkan → 1; (1,1) beralih → 0; (0,1) mereset → 0; (0,0) menahan → 0. Q membaca 1, 0, 0, 0 (terlacak mesin ✓). Desain ini menggunakan: tabel eksitasi berjalan ini secara mundur — untuk membangun penghitung yang melintasi 0 → 1 → 0 → 0 → 0, baca setiap transisi dari tabel J-K dan input yang diperlukan muncul (setel, beralih, reset, tahan). Pemilihan flip-flop adalah pencarian tabel, bukan teka-teki.

Kesalahan umum. Pengambilan sampel pada tepi yang salah (turun vs naik — spesifikasi menyebutkan mana yang benar). Membingungkan latch dan flip-flop: latch bersifat transparan selama satu level penuh, flip-flop hanya pada satu momen. Mengharapkan Q untuk berubah saat D berubah — Q menunggu tepi sinyal.

Ringkasan: latch bersifat transparan level, flip-flop dipicu tepi; Q setelah tepi = D sebelum tepi tersebut; J-K menghilangkan keadaan terlarang dengan fungsi beralih; tabel eksitasi membalikkan perilaku menjadi input yang diperlukan.

Jelajahi

Same D and clock, different memory behaviour

$Q_{FF}^{+}=D\;\text{at }\uparrow CLK$

The worked sequence presents D = 1, 0 and 1 at three rising edges, with changes in between. Compare the transparent latch with the edge-triggered flip-flop, or change D and clock separately to see exactly when each output updates.

3.5

Mesin status terbatas

Mesin penjual otomatis menolak urutan koin yang diterima kemarin — bukan karena koinnya berubah, tetapi karena urutan-nya berbeda. Urutan memerlukan mesin dengan memori posisi saat ini: mesin keadaan terbatas (FSM) adalah keadaan + transisi: diagram keadaan (bubuk dan panah berlabel panah), diwujudkan sebagai logika keadaan berikutnya + register keadaan + logika keluaran. Moore mesin menghitung keluaran dari keadaan saja (keluaran berubah setelah clock); mesin Mealy menghitung berdasarkan state dan input (output dapat berubah di tengah siklus, lebih cepat tetapi rentan glitch).

Diagram state dari pendeteksi paritas: dua gelembung EVEN dan ODD; panah input1 melintasi keduanya, panah input0 kembali ke loop; lencana output gelembung ODD bertuliskan 1
Dua state, satu output: seluruh desain pendeteksi paritas

Contoh terpecahkan 1 (pendeteksi paritas, ditelusuri). Angkat output ketika jumlah 1 yang terlihat adalah ganjil. Dua state (EVEN, ODD); setiap bit input berpindah antar karena itu; output = (state == ODD). Urutan 1, 0, 1, 1: EVEN → ODD → ODD → EVEN → ODD, sehingga output setelah bit keempat adalah 1 (tiga 1 terlihat — ganjil ✓ mesin-traced). Prosedur desain: diagram state → tabel state → pengkodean (binary) state → tabel eksitasi untuk setiap flip-flop → minimalkan logika next-state logika. Dengan satu bit state ($0$ = EVEN, $1$ = ODD) logika next-state adalah XOR tunggal: $Q^+ = Q \oplus in$ — mesin adalah bit paritas.

Contoh terpecahkan 2 (pendetektor 1011, ditingkatkan). Deteksi seri urutan 1011 (overlapping). State melacak prefix yang cocok terpanjang: S0 (mulai), S1 (melihat 1), S10 (melihat 10), S101 (melihat 101). Setiap transisi menuju ekor terpanjang dari input sejauh ini yang masih merupakan awalan dari 1011:

State input 0 input 1
S0 S0 S1
S1 S10 S1
S10 S0 S101
S101 S10 S1, deteksi

Dari S101, 1 melengkapi 1011: output mengatakan terdeteksi dan mesin berpindah ke S1, karena ekor "1" sudah memulai pencocokan berikutnya (tumpang tindih). A 0 dari S101 meninggalkan "1010", di mana ekornya "10" adalah awalan, sehingga menuju S10, bukan kembali ke S0. Empat keadaan memerlukan dua flip-flop ($2^2 = 4$ ✓). Jejakkan aliran 1,0,1,1,0,1,1: S0→S1→S10→S101→deteksi (S1), kemudian 0→S10, 1→S101, 1→deteksi lagi. Aliran memegang dua salinan tumpang tindih, pada bit 1–4 dan 4–7, dan mesin menemui kedua-duanya (mesin-jejak ✓). Pengesan yang dimulakan semula pada S0 selepas padanan akan terlepas yang kedua. Peminimuman keadaan menggabungkan keadaan yang setara (sama output, keadaan berikutnya yang sama) — FSM dengan keadaan redundan berfungsi tetapi boros flip-flop dan logika.

Kesalahan umum. Melupakan reset tumpang tindih (sufiks yang cocok adalah awalan kecocokan berikutnya). Mengenkoda keadaan sebelum memeriksa tabel keadaan untuk keadaan ekuivalen. Memilih Moore ketika spesifikasi memerlukan respons siklus yang sama (Mealy), atau Mealy ketika output mengumpankan logika asinkron (glitch).

Ringkasan: keadaan + transisi + output; Moore dari keadaan, Mealy dari keadaan dan input; diagram → tabel → pengkodean → eksitasi → minimalkan; pendeteksian tumpang tindih dan penggabungan keadaan adalah tempat nilai diraih dan hilang.

Jelajahi

Keep the suffix that starts the next match

$Q^{+}=f(Q,x)$

Clock the worked 1011011 stream and find both 1011 matches at bits 1–4 and 4–7. Compare the overlapping Mealy detector with the two-state parity machine, and distinguish a selected input from a clocked state transition.

3.6

Register, counter, dan memori

Skor menunjukkan 7, lalu 8 — satu angka berubah sementara yang lain tetap: pembaruan selektif ini adalah register, dan penghitungan adalah register yang memperbarui dirinya sendiri. Register adalah bank flip-flop yang berbagi clock: muat n bit per tepi. Shift register meneruskan bit sepanjang jalur: serial-in serial-out menunda aliran bit; serial-in parallel-out mengonversi serial ke paralel.

Sebuah ripple counter merangkai T-flip-flops (setiap output mengaktifkan selanjutnya); counter sinkron menggerakkan semua clock dari satu tepi dan menghitung setiap toggle dengan logika — tanpa penundaan kumulatif.

Diagram blok register: 4 flip-flop D yang berbagi CLK, dengan logika toggle counter yang memberi umpan ke setiap input D; di bawah, jejak waktu 000→001→010→011
Satu clock, toggle yang dihitung: register dan jejak counter sinkron

Contoh terpecahkan 1 (counter naik 3-bit, ditelusuri). Counter 3-bit sinkron up-counter mengtoggle bit 0 setiap clock, bit 1 ketika $Q_0 = 1$, bit 2 ketika $Q_1\cdot Q_0 = 11$: setelah RESET, urutan penghitungan berjalan 000, 001, 010, 011 … 111, lalu berbalik ke 000 (8 keadaan = $2^3$ ✓ — pemeriksaan rentang penghitungan; dilacak mesin). Kondisi toggle adalah persis AND dari semua bit yang lebih rendah. — pengiraan binari membawa apabila setiap bit lebih rendah adalah 1, yang merupakan maksud "tambah 1" berarti.

Contoh terpecahkan 2 (counter mod-6, ditingkatkan). Counter mod-6 menghitung 000–101 dan kembali ke 000 — enam keadaan, bukan delapan. Untuk implementasi sinkron, pilih keadaan berikutnya 000 ketika kata saat ini adalah 101, 110 atau 111; selain itu tambahkan 1. Jejak: 000, 001, 010, 011, 100, 101, lalu 000. Dengan demikian 101→000 terjadi pada tepi jam berikutnya; kode tidak terpakai 110 atau 111 juga pulih ke 000 pada tepi berikutnya. Kondisi $Q_2\cdot Q_1$ mendeteksi hanya 110 dan 111. Ia bernilai 0 pada 101, sehingga menggunakan kondisi tersebut saja untuk memilih keadaan berikutnya 000 masih akan mengizinkan 110 tersimpan setelah 101. Penghapusan asinkron merupakan implementasi yang berbeda: dapat sesaat mencapai 110 sebelum dibersihkan, sehingga tidak boleh digambarkan sebagai lompatan sinkron ini. Memori adalah array terorganisir: k bit alamat memilih satu dari $2^k$ kata m bit — sebuah memori 8K×8 memiliki 13 garis alamat dan 8 garis data ($8K = 2^{13} = 8192$ kata ✓).

Kesalahan umum. Counter ripple terlihat baik pada kecepatan rendah dan gagal pada spesifikasi — penundaan kumulatif ada di setiap tahap. Lupa menangani keadaan yang tidak digunakan dalam counter mod-N (harus pulih ke keadaan yang sah). Membingungkan konvensi arah geser (MSB-first vs LSB-first serial).

Ringkasan: register memuat per edge bersama; shift register mengubah antara seri dan paralel; counter sinkron menghitung toggle dengan logika; mod-N memerlukan penanganan keadaan tidak terpakai; memori adalah $2^k$ kata dari m bit, k alamat garis.

Jelajahi

One clock edge moves every stored bit

$Q^{+}=\{sin,Q_3,Q_2,Q_1\}$

Starting from 0000, clock the lesson’s right-shift input stream 1, 1, 0, 1 to get 1000, 1100, 0110, 1011. Follow each old bit to its new position, and distinguish selecting the next input from clocking it into storage.

Jelajahi

Predict the toggles, then clock the new count

$Q^{+}=Q\oplus T$

Trace the 3-bit counter’s eight states and see why each bit toggles when all lower old bits are 1. Compare synchronous mod-6, where 101 goes directly to 000. Load either unused code 110 or 111 and check recovery at the next clock edge.

Kosa kata Latih
English Bahasa Indonesia
flip-flops flip-flop
at the clock edge pada tepian clock
toggles toggle
excitation table/eksɪˈteɪʃn ˈteɪbl/ tabel eksitasi
finite state machine/ˈfaɪnaɪt steɪt məˈʃiːn/ Mesin keadaan hingga
state diagram/steɪt ˈdaɪəɡræm/ Diagram keadaan
ripple counter/ˈrɪpl ˈkaʊntə/ Pencacah riak
synchronous counter/ˈsɪŋkrənəs ˈkaʊntə/ synchronous counter
memory/ˈmeməri/ memori
hardware description language/ˈhɑːdweə dɪˈskrɪpʃn ˈlæŋɡwɪdʒ/ Bahasa deskripsi perangkat keras
synthesizable/ˈsɪnθəsaɪzəbl/ synthesizable
3.7

Dasar HDL dan verifikasi

Menghubungkan gerbang 64 secara manual mengundang 64 kesalahan — dan jawaban industri bukan menggambar lebih hati-hati melainkan deskripsi plus verifikasi. Sebuah bahasa deskripsi perangkat keras (Verilog/VHDL) mendeskripsikan struktur dan perilaku sebagai kode dapat disintesis—apa yang dapat menjadi gerbang—terpisah dari testbench, yang mensimulasikan tetapi tidak pernah menjadi perangkat keras.

module full_adder(input a, b, cin, output sum, cout);
  assign sum  = a ^ b ^ cin;
  assign cout = (a & b) | (cin & (a ^ b));
endmodule
Modul Verilog di sebelah kiri dan gelombang simulasi di sebelah kanan: testbench menggerakkan semua kombinasi input delapan saat sum dan cout melacak a+b+cin
Satu modul, satu testbench komprehensif: deskripsi dan pembuktian bersama

Contoh terpecahkan 1 (testbench komprehensif). Testbench menggerakkan semua 8 kombinasi input dan membandingkannya dengan kebenaran aritmetik ($a + b + cin = 2\cdot cout + sum$)—diverifikasi mesin: semua 8 lulus ✓. Properti ini adalah titik utamanya: model referensi adalah aritmatika, bukan deskripsi gerbang lain, sehingga pemeriksaan tersebut independen terhadap implementasinya.

Contoh terpecahkan 2 (register geser dalam HDL, ditingkatkan). Deskripsikan register geser seri 4-bit: register geser serial-in:

module shift4(input clk, sin, output reg [3:0] q);
  always @(posedge clk) q <= {q[2:0], sin};
endmodule

jatuh dari kiri. Testbench menggerakkan sin = {q[2:0], sin} selama empat siklus clock dan jejak membaca jatuh dari kiri. Testbench memacu sin = 1,0,1,1 selama empat jam clock dan jejak membaca q = 0001, 0010, 0101, 1011 ✓ (mesin-simulasi) — register geser unit 3.6, kini menjadi penerangan empat baris.

Kesalahan umum. Testbench yang mengulang implementasi (salin tidak membuktikan apa-apa). Konstruksi non-sintetisasi dalam modul perangkat keras. Tidak adanya reset di blok always — lagi-lagi jebakan unit 3.6.

Ringkasan: modul sintetisasi vs testbench non-sintetisasi, selalu dipisahkan; model referensi harus independen (aritmatika atau jejak); pemeriksaan menyeluruh untuk ruang input kecil; kirimkan modul bersama buktinya.

Jelajahi

The concatenation becomes a clocked bit transfer

$Q^{+}=\{Q_2,Q_1,Q_0,sin\}$

Follow q <= {q[2:0], sin} at each rising edge. From an explicitly initialized 0000, the lesson’s inputs 1, 0, 1, 1 produce 0001, 0010, 0101, 1011. Each new position takes an old bit; the previous Q₃ shifts out.

Pelajaran interaktif untuk topik ini

Kerjakan langkah demi langkah, dengan latihan pengecekan instan.

Topik lain dalam Teknik Elektro Universitas

Masuk atau buat akun

IGCSE, A-Level & AP