Mạch tuần tự SSI
🔷 Giới thiệu
Khác với mạch tổ hợp (Combinational Circuits), hầu hết các hệ thống số trong thực tế đều cần đến bộ nhớ, và do đó được mô tả dưới dạng mạch tuần tự (Sequential Circuits). Thành phần bộ nhớ là các thiết bị có khả năng lưu trữ thông tin nhị phân.
Thông tin nhị phân được lưu giữ trong phần tử nhớ tại một thời điểm xác định chính là trạng thái của mạch. Do đó, một mạch tuần tự được xác định bởi chuỗi thời gian gồm các đầu vào, đầu ra và trạng thái nội tại.

⚙️ Đặc điểm mạch tuần tự:
- Bao gồm tập hợp các ngõ vào và ngõ ra
- Đầu ra không chỉ phụ thuộc vào tổ hợp đầu vào hiện tại, mà còn phụ thuộc vào trạng thái trước đó
- Trạng thái trước là kết quả đầu ra cũ được lưu lại – tức là bộ nhớ
- Mạch tuần tự = mạch tổ hợp + phần tử nhớ
- Trong một số trường hợp, mạch tuần tự có thể chỉ bao gồm bộ nhớ, không cần mạch tổ hợp
📊 So sánh: Mạch tổ hợp vs. Mạch tuần tự
| Đặc điểm | Mạch tổ hợp | Mạch tuần tự |
|---|---|---|
| Đầu ra phụ thuộc vào… | Chỉ đầu vào hiện tại | Đầu vào hiện tại và trạng thái trước |
| Có đường hồi tiếp (feedback)? | ❌ Không | ✅ Có |
| Cần phần tử nhớ? | ❌ Không | ✅ Có |
| Cần tín hiệu đồng hồ (Clock)? | ❌ Không | ✅ Có (với mạch đồng bộ) |
| Độ phức tạp thiết kế | Dễ thiết kế | Phức tạp hơn |
🧭 Phân loại mạch tuần tự
Có hai loại mạch tuần tự chính:
- Mạch tuần tự bất đồng bộ (Asynchronous Sequential Circuits)
- Mạch tuần tự đồng bộ (Synchronous Sequential Circuits)
🔹 Mạch tuần tự bất đồng bộ
- Là mạch mà một số hoặc toàn bộ đầu ra thay đổi không theo tín hiệu xung clock
- Tức là, các ngõ ra không thay đổi đồng bộ với các cạnh xung clock
- Do đó, các thay đổi trong mạch có thể xảy ra không cùng thời điểm
- Mạch dễ bị nhiễu trạng thái (race conditions) nếu không thiết kế cẩn thận
🔧 Ứng dụng hạn chế, thường trong các mạch đơn giản hoặc tối ưu tốc độ

Giải thích các nhãn
- x₁…xₙ (Biến đầu vào)
Tập hợp nnn biến điều khiển hoặc tín hiệu bên ngoài đưa vào mạch. - Mạch tổ hợp
Là phần xử lý logic không có bộ nhớ. Đầu ra của nó (cả zzz và YYY) chỉ phụ thuộc vào giá trị hiện tại của các biến đầu vào và trạng thái hiện tại. - z₁…zₘ (Biến đầu ra)
Tập hợp mmm tín hiệu kết quả được sinh ra từ mạch tổ hợp, dùng để điều khiển các khối khác hoặc xuất ra bên ngoài. - y₁…yₖ (Trạng thái hiện tại)
Tập hợp kkk biến (secondary variables) lưu giữ giá trị trạng thái của hệ thống tại thời điểm hiện tại. Những biến này được hồi tiếp trở lại mạch tổ hợp để tính toán đầu ra và trạng thái kế tiếp. - Y₁…Yₖ (Trạng thái kế tiếp / Biến kích thích)
Là tập hợp kkk tín hiệu (excitation variables) do mạch tổ hợp sinh ra, biểu diễn giá trị trạng thái mà hệ thống sẽ chuyển sang ở chu kỳ kế tiếp. - Phần tử trễ (Flip-flop)
Mỗi flip-flop lưu giữ một bit trạng thái. Vào cạnh lên (rising edge) của xung Clock, giá trị YiY_iYi được ghi vào để trở thành yiy_iyi ngay trước chu kỳ tiếp theo.
Luồng hoạt động tổng quát:
- Tại mỗi chu kỳ xung Clock, các flip-flop cập nhật trạng thái y1…yky₁…yₖy1…yk từ tín hiệu Y1…YkY₁…YₖY1…Yk do mạch tổ hợp sinh ra ở chu kỳ trước.
- Mạch tổ hợp nhận vào cả x₁…xₙ (đầu vào bên ngoài) và y₁…yₖ (trạng thái hiện tại) để tính ra hai nhóm tín hiệu:
- z₁…zₘ: đầu ra của hệ thống ngay lập tức.
- Y₁…Yₖ: trạng thái kế tiếp, sẽ được lưu vào flip-flop.
- Quá trình này lặp đi lặp lại, cho phép hệ thống “nhớ” quá khứ thông qua chuỗi các trạng thái.
🔹 Mạch tuần tự đồng bộ
- Là mạch mà tất cả các ngõ ra chỉ thay đổi khi có cạnh xung clock (tăng hoặc giảm)
- Các thay đổi xảy ra đồng thời, nhờ đó:
- Dễ kiểm soát
- Ít lỗi logic
- Có thể mô hình hóa chính xác bằng biểu đồ trạng thái
✅ Mạch đồng bộ là loại phổ biến nhất hiện nay trong thiết kế mạch kỹ thuật số hiện đại

Chú giải
- A (Đầu vào ngoài)
Tín hiệu hoặc dữ liệu bên ngoài đưa vào hệ thống. - Mạch tổ hợp sinh Z
- Nhận A và trạng thái hiện tại y
- Tính ngay đầu ra Z (không phụ thuộc vào xung clock).
- Mạch tổ hợp sinh Y
- Cũng nhận A và y
- Tính ra các tín hiệu Y thể hiện trạng thái kế tiếp.
- Y (Trạng thái kế tiếp)
Tín hiệu kết quả từ mạch tổ hợp sinh Y, được ghi vào flip-flop vào mỗi cạnh lên của xung Clock. - Bộ lưu trữ (Flip-flop)
- Lưu giữ mỗi bit trạng thái Y
- Khi có cạnh lên Clock, ghi Y vào thành y mới (trạng thái hiện tại cho chu kỳ kế).
- Z (Đầu ra ngoài)
Tín hiệu kết quả từ mạch tổ hợp sinh Z, sẵn sàng xuất ra mỗi chu kỳ mà không chờ clock.
🧠 Tổng kết lý thuyết nền:
| Loại mạch | Cần clock | Feedback | Ghi nhớ trạng thái |
|---|---|---|---|
| Combinational | ❌ | ❌ | ❌ |
| Sequential – Async | ❌ | ✅ | ✅ |
| Sequential – Sync | ✅ | ✅ | ✅ |
🧩 Thành phần cơ bản của mạch tuần tự SSI
- Chốt (Latches) – bộ nhớ không đồng bộ (cấp mức)
- Chốt lật (Flip-Flops) – bộ nhớ đồng bộ (theo xung)
- Tín hiệu Clock (CLK) – điều khiển thời điểm cập nhật trạng thái
📘 Các phần tiếp theo của chương này sẽ đi sâu vào:
- Phân tích và thiết kế Latches (SR, D)
- Flip-flops (D, T, JK) và ứng dụng
- Tạo bộ nhớ, bộ đếm, thanh ghi, chia xung
- Hướng dẫn thực hành bằng Logisim Evolution / CircuitVerse
🔷 CHỐT (LATCHES)
Trong kỹ thuật số, bộ nhớ (memory) là phần tử không thể thiếu để lưu trữ dữ liệu. Có hai loại phần tử nhớ cơ bản:
- Latches – điều khiển theo mức (level-sensitive)
- Flip-flops – điều khiển theo cạnh xung (edge-triggered)
Chốt (Latch) là phần tử nhớ đơn giản, hoạt động khi tín hiệu điều khiển (Enable) được giữ ở mức cao. Nó không cần xung clock và phù hợp với các mạch tuần tự bất đồng bộ.
🔁 Phân biệt Latches và Flip-flops
| Đặc điểm | Latches | Flip-flops |
|---|---|---|
| Cách kích hoạt | Theo mức (level-triggered) | Theo cạnh (edge-triggered) |
| Thiết bị đồng bộ hay bất đồng bộ | Bất đồng bộ | Đồng bộ |
| Cần tín hiệu xung nhịp? | ❌ Không | ✅ Có |
| Thay đổi trạng thái khi nào? | Khi Enable = 1 | Tại cạnh xung (↑ hoặc ↓) |
| Tốc độ phản ứng | Nhanh hơn | Chậm hơn |
| Tiêu thụ năng lượng | Ít hơn | Nhiều hơn |
| Ví dụ | SR latch, D latch, T latch | D flip-flop, JK flip-flop, T FF |
🔹 SR Latch (Set–Reset)
📌 Khái niệm:
- Có 2 đầu vào: S (Set), R (Reset) và đầu điều khiển Enable (E)
- 2 đầu ra: Q và Q’ (đối ngẫu)
- Khi E = 1, latch hoạt động theo giá trị S và R
📊 Bảng trạng thái:
| S | R | Q(t+1) | Chức năng |
|---|---|---|---|
| 0 | 0 | Q(t) | Giữ nguyên |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | – (không xác định) | Trạng thái cấm ❌ |
👉 Lưu ý: Trạng thái S = 1, R = 1 gây xung đột → không sử dụng
🔹 D Latch (Data / Delay Latch)
📌 Khái niệm:
- D latch là dạng cải tiến của SR latch để tránh trạng thái cấm
- Chỉ có 1 đầu vào D, nội dung sẽ được lưu khi Enable = 1
- Dễ thiết kế, dễ hiểu → được dùng phổ biến
📊 Bảng trạng thái:
| D | Q(t+1) | Ghi chú |
|---|---|---|
| 0 | 0 | Ghi ‘0’ vào chốt |
| 1 | 1 | Ghi ‘1’ vào chốt |
👉 Hoạt động như bộ nhớ 1 bit giữ giá trị D khi được phép
🔹 JK Latch
📌 Khái niệm:
- Giống như SR latch nhưng khắc phục trạng thái cấm
- 2 đầu vào: J (giống S), K (giống R)
- Khi
J = K = 1→ đầu ra đảo trạng thái
📊 Bảng trạng thái:
| J | K | Q(t+1) |
|---|---|---|
| 0 | 0 | Giữ nguyên |
| 0 | 1 | 0 (Reset) |
| 1 | 0 | 1 (Set) |
| 1 | 1 | Đảo trạng thái (Toggle) |
👉 Phù hợp cho các ứng dụng cần bật/tắt theo chu kỳ
🔹 T Latch (Toggle Latch)
📌 Khái niệm:
- Là JK latch với J = K = T
- Chỉ có 1 đầu vào T, khi T = 1 → Q bị đảo
- Rất hữu ích cho bộ đếm nhị phân
📊 Bảng trạng thái:
| T | Q(t) | Q(t+1) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
🧪 Ứng dụng và mô phỏng
Trong Logisim hoặc CircuitVerse:
- Chọn từ thư viện Memory → Latch
- Kết nối D, E (Enable), và xem kết quả trên Q
- Mô phỏng latches trong mạch giữ trạng thái, bộ nhớ, tạo mẫu cho Flip-flop
