Để tiếp thu bài học này tốt nhất, bạn nên ôn lại:
- Bài 12: Cổng logic & Đại số Boolean (Nắm vững các cổng logic cơ bản như AND, OR, NOT, NAND, NOR và bảng chân trị).
Trong bài học trước, chúng ta đã nghiên cứu các mạch tổ hợp (Combinational Logic). Đặc điểm của mạch tổ hợp là trạng thái ngõ ra chỉ phụ thuộc duy nhất vào trạng thái các ngõ vào tại chính thời điểm đó. Mạch tổ hợp hoàn toàn không có khả năng ghi nhớ trạng thái quá khứ.
Để lưu trữ thông tin và xây dựng các hệ điều hành, máy tính số, ta cần các mạch logic có khả năng nhớ. Đó chính là mạch tuần tự (Sequential Logic). Trạng thái ngõ ra của mạch tuần tự phụ thuộc vào cả ngõ vào hiện tại lẫn trạng thái lưu trữ trước đó. Bài học này sẽ dẫn dắt bạn đi từ cấu trúc chốt 1-bit đơn giản nhất cho đến cấu trúc ô nhớ RAM tĩnh (SRAM) trong các chip máy tính hiện đại.
1. Mạch chốt (Latch) và Flip-Flop đồng bộ
1.1 Mạch chốt RS Latch (Reset-Set)
Mạch chốt RS là phần tử lưu trữ 1-bit cơ bản nhất, được tạo ra bằng cách phản hồi chéo ngõ ra của hai cổng NOR (hoặc NAND) về ngõ vào của nhau. Trạng thái phản hồi này tạo ra một vòng lặp kín tự giữ điện áp ổn định:
- Set (S=1, R=0): Ép ngõ ra $Q = 1$ và $\overline{Q} = 0$. (Trạng thái thiết lập).
- Reset (S=0, R=1): Ép ngõ ra $Q = 0$ và $\overline{Q} = 1$. (Trạng thái xóa).
- Hold (S=0, R=0): Mạch giữ nguyên trạng thái $Q$ và $\overline{Q}$ trước đó. (Trạng thái nhớ).
- Cấm (S=1, R=1): Đây là trạng thái cấm đối với chốt dùng cổng NOR vì nó ép cả $Q$ và $\overline{Q}$ về $0$, phá vỡ tính chất đối nghịch của hai ngõ ra. Nếu chuyển đột ngột từ $11$ về $00$, mạch rơi vào trạng thái đua bất định.
IC thực tế: Chốt RS thường được đóng gói hàng loạt trong các IC số như CD4043B (chứa 4 chốt RS độc lập sử dụng cổng NOR và có ngõ ra 3 trạng thái Tri-state). Bạn có thể tra cứu sơ đồ nguyên lý của chốt RS chính thức tại Datasheet CD4043B (Texas Instruments).
Đề bài: Vẽ sơ đồ nguyên lý của mạch chốt RS Latch sử dụng hai cổng NOR ghép chéo và xác định dòng hồi tiếp khi mạch đang lưu trạng thái $Q = 1$.
Khi mạch đang lưu $Q = 1$ (ở ngõ ra cổng NOR phía trên):
1. Điện áp mức cao $1$ từ ngõ ra $Q$ được dẫn phản hồi chéo xuống ngõ vào của cổng NOR phía dưới.
2. Cổng NOR phía dưới nhận ngõ vào phản hồi là $1$ nên lập tức xuất ngõ ra $\overline{Q} = \overline{S + 1} = 0$.
3. Ngõ ra $\overline{Q} = 0$ lại được phản hồi chéo ngược lên ngõ vào thứ hai của cổng NOR phía trên. Lúc này, với $R=0$ và ngõ vào phản hồi bằng $0$, cổng trên xuất ra $Q = \overline{R + 0} = \overline{0} = 1$.
Kết luận: Dòng hồi tiếp duy trì ổn định hai mức điện áp đối nghịch ở hai ngõ ra mà không cần duy trì dòng điện cấp từ các chân điều khiển ngoại vi $S, R$ (chỉ cần $S=R=0$).
1.2 D Flip-Flop nhạy cạnh (Edge-Triggered D-FF)
Mạch chốt RS hoạt động nhạy mức (level-sensitive): chỉ cần tín hiệu $S$ hoặc $R$ đổi mức khi nguồn đang mở là ngõ ra đổi trạng thái ngay. Trong các hệ thống số lớn dùng chung xung nhịp clock, sự nhạy mức này dễ gây ra hiện tượng chạy đua tín hiệu dẫn đến tính toán sai lệch.
Để khắc phục, người ta thiết kế D Flip-Flop nhạy cạnh (Edge-Triggered). Ngõ ra $Q$ của D-FF chỉ bắt chước và lưu lại trạng thái của ngõ vào dữ liệu $D$ tại chính xác thời điểm sườn lên (Rising Edge) hoặc sườn xuống của xung nhịp Clock ($CLK$). Trong tất cả các khoảng thời gian còn lại, mọi sự thay đổi ở ngõ vào $D$ đều bị mạch phớt lờ.
Phương trình trạng thái của D Flip-Flop: $Q_{next} = D$ (tại thời điểm sườn xung nhịp kích hoạt).
IC thực tế: Chip 74HC74 là IC cực kỳ kinh điển chứa 2 bộ D Flip-Flop độc lập nhạy sườn lên của clock. Ngoài ra, nó còn hỗ trợ 2 chân Set (/PRE) và Reset (/CLR) bất đồng bộ (tích cực mức thấp) để ép ngõ ra về trạng thái xác định mà không cần chờ clock. Tra cứu chức năng các chân tại Datasheet 74HC74 (Texas Instruments).
2. Thanh ghi dịch (Shift Register) và Bộ đếm (Counter)
Từ phần tử nhớ D Flip-Flop cơ bản, ta có thể ghép nối tiếp hoặc song song để tạo thành các cấu trúc tuần tự phức tạp hơn:
2.1 Thanh ghi dịch (Shift Register)
Bằng cách mắc nối tiếp các D-FF với nhau sao cho ngõ ra $Q$ của tầng trước nối thẳng vào ngõ vào $D$ của tầng sau ($Q_0 \to D_1$, $Q_1 \to D_2$,...), và tất cả các tầng dùng chung một đường xung nhịp $CLK$.
Sau mỗi chu kỳ xung nhịp (cạnh lên $CLK$), dữ liệu 1-bit sẽ được dịch chuyển tịnh tiến sang phải một tầng. Thanh ghi dịch được dùng rộng rãi để chuyển đổi dữ liệu từ nối tiếp (Serial) sang song song (Parallel) và ngược lại (ví dụ như giao thức SPI, shift register 74HC595).
IC thực tế: Chip 74HC595 là một IC thanh ghi dịch 8-bit vào nối tiếp, ra song song (Serial-In Parallel-Out) vô cùng nổi tiếng trong giới Arduino. Nó cho phép điều khiển 8 bóng LED hoặc thiết bị ngoại vi chỉ bằng 3 chân của vi điều khiển. Đọc hướng dẫn kết nối chân và giản đồ xung nhịp tại Datasheet 74HC595 (Texas Instruments).
Đề bài: Vẽ sơ đồ khối một thanh ghi dịch 3-bit sử dụng 3 D Flip-Flop chung đường clock.
Mỗi khi đường $CLK$ chuyển đổi từ $0$ lên $1$, bit dữ liệu tại đầu vào dịch chuyển tịnh tiến qua từng tầng: $Q_0 \leftarrow \text{Data In}$, $Q_1 \leftarrow Q_0$, $Q_2 \leftarrow Q_1$.
2.2 Bộ đếm nhị phân (Binary Counter)
Nếu ta kết nối ngõ ra đảo $\overline{Q}$ của một D-FF ngược về ngõ vào $D$ của chính nó, sau mỗi chu kỳ clock, trạng thái của ngõ ra sẽ lật ngược lại. Kết cấu này tạo ra một bộ chia đôi tần số xung nhịp (chia tần số cho 2). Bằng cách mắc chuỗi nhiều bộ chia này nối tiếp (ngõ ra của tầng trước kích xung clock cho tầng sau), ta sẽ tạo được một Bộ đếm nhị phân bất đồng bộ (Asynchronous Counter / Ripple Counter).
IC thực tế: IC 74HC393 chứa hai bộ đếm nhị phân 4-bit độc lập. Tín hiệu xung nhịp ngõ vào sau khi đi qua 74HC393 sẽ được đếm tăng dần nhị phân từ $0000$ đến $1111$ ($0$ đến $15$ thập phân) ở các ngõ ra. Chi tiết sơ đồ logic nội bộ có tại Datasheet 74HC393 (Texas Instruments).
3. Thiết kế ô nhớ RAM tĩnh (6T SRAM Cell)
Trong các chíp nhớ máy tính, ta cần hàng tỷ ô nhớ lưu trữ thông tin. Để lưu trữ với tốc độ đọc ghi cực kỳ cao (như bộ nhớ Cache L1/L2/L3 của CPU), người ta sử dụng SRAM (Static Random Access Memory).
Ô nhớ SRAM tiêu chuẩn sử dụng 6 bóng bán dẫn CMOS (6T SRAM). Cấu trúc của nó không cần tụ điện (khác với DRAM lưu điện tích trên tụ điện và phải nạp lại refresh liên tục), do đó tốc độ truy xuất cực nhanh và dòng rò tĩnh rất thấp.
Cơ chế Đọc và Ghi của ô nhớ 6T SRAM:
- Trạng thái Chờ (Standby - WL = 0): Hai bóng truy cập M5 và M6 ngắt hoàn toàn. Chốt inverter kép duy trì tự khóa dữ liệu ($Q$ và $\overline{Q}$ giữ nguyên mức điện áp).
- Chu trình Đọc (Read - WL = 1): Đường dây $BL$ và $BLB$ được nạp trước (precharge) lên mức $1$. Kích hoạt $WL = 1$ để mở M5 và M6. Dòng điện từ một trong hai đường dây $BL$ hoặc $BLB$ sẽ phóng rò qua transistor xuống đất (GND) qua ngõ đang lưu mức $0$ của cell. Bộ khuếch đại cảm biến (Sense Amplifier) đầu đường dây sẽ phát hiện sự chênh lệch điện áp nhỏ giữa $BL$ và $BLB$ để đọc ra giá trị nhanh chóng.
- Chu trình Ghi (Write - WL = 1): Ta chủ động áp đặt dữ liệu muốn ghi lên hai đường dây $BL$ và $BLB$ (ví dụ muốn ghi $1$: đặt $BL=1, BLB=0$). Sau đó kích hoạt $WL = 1$. Dòng nạp cực mạnh từ các driver ngoại vi đẩy trực tiếp qua M5 và M6 vào trong cell, ghi đè hoàn toàn trạng thái cũ của chốt inverter.
Chip nhớ thực tế: Trong thiết kế các máy tính retro hoặc mạch vi điều khiển cổ (như hệ Z80, 8051), chip RAM tĩnh song song 62256 (dung lượng 32KB x 8-bit) là một ví dụ vô cùng kinh điển của công nghệ SRAM. Tìm hiểu sơ đồ chân và giản đồ thời gian (read/write timing diagrams) tại Datasheet AS6C62256 (Alliance Memory).
4. Phân tích Timing - Propagation Delay, Setup Time & Hold Time
Trong các thiết kế số chạy xung clock tần số cao, ta phải tuân thủ nghiêm ngặt các điều kiện ràng buộc về mặt thời gian (Timing Constraints) của D Flip-Flop để tránh rơi vào trạng thái lỗi.
Ba tham số thời gian cốt lõi:
- Thời gian trễ truyền lan (Propagation Delay - $t_{pd}$): Khoảng thời gian trễ từ khi sườn lên của xung $CLK$ xuất hiện cho đến khi dữ liệu ngõ ra $Q$ thay đổi và ổn định ở trạng thái mới.
- Thời gian thiết lập (Setup Time - $t_{setup}$): Khoảng thời gian tối thiểu ngõ vào dữ liệu $D$ bắt buộc phải duy trì ổn định trước khi sườn lên của $CLK$ xuất hiện.
- Thời gian giữ (Hold Time - $t_{hold}$): Khoảng thời gian tối thiểu ngõ vào dữ liệu $D$ bắt buộc phải giữ nguyên mức ổn định sau khi sườn lên của $CLK$ đã xuất hiện.
Hiện tượng Bất ổn định (Metastability):
Nếu ngõ vào $D$ thay đổi trạng thái ngay trong cửa sổ bảo vệ (khoảng thời gian $[t_{setup}, t_{hold}]$ quanh sườn clock), Flip-Flop sẽ không thể quyết định được ngõ ra là $0$ hay $1$. Điện áp ngõ ra $Q$ sẽ dao động lơ lửng ở vùng không xác định trong một khoảng thời gian dài trước khi rơi ngẫu nhiên về $0$ hoặc $1$. Trạng thái này gọi là bất ổn định, có thể làm hỏng toàn bộ dữ liệu điều khiển của hệ thống số.
Đề bài: Một vi mạch sử dụng D Flip-Flop có các thông số timing sau: thời gian trễ truyền lan $t_{pd} = 2.5\text{ ns}$, thời gian thiết lập $t_{setup} = 1.5\text{ ns}$, thời gian giữ $t_{hold} = 1.0\text{ ns}$. Giữa hai D-FF là một mạch logic tổ hợp có thời gian trễ lớn nhất là $t_{comb} = 4.0\text{ ns}$. Hãy tính tần số xung nhịp tối đa $f_{max}$ mà hệ thống có thể chạy ổn định mà không vi phạm điều kiện setup.
Để đảm bảo tín hiệu truyền từ ngõ ra của FF thứ nhất, chạy qua mạch logic tổ hợp và kịp ổn định ở ngõ vào của FF thứ hai trước sườn lên xung clock kế tiếp, chu kỳ xung nhịp $T$ phải thỏa mãn công thức:
$$T \ge t_{pd} + t_{comb} + t_{setup}$$
Thay các thông số đề bài vào:
$$T \ge 2.5\text{ ns} + 4.0\text{ ns} + 1.5\text{ ns} = 8.0\text{ ns}$$
Tần số hoạt động tối đa tương ứng:
$$f_{max} = \frac{1}{T_{min}} = \frac{1}{8.0\text{ ns}} = 125\text{ MHz}$$
Kết luận: Tần số xung clock tối đa hệ thống có thể chạy an toàn là $125\text{ MHz}$. Nếu nâng tần số lên cao hơn (ví dụ $150\text{ MHz}$ ứng với chu kỳ $6.67\text{ ns}$), mạch sẽ vi phạm thời gian setup và xảy ra lỗi bất ổn định.
5. Sequential Logic & SRAM Lab: Bộ thử nghiệm mạch tuần tự & bộ nhớ
Chọn chế độ để thực hành tương tác: mô phỏng nhạy cạnh của D Flip-Flop kèm biểu đồ xung thời gian thực, hoặc điều khiển chi tiết đường dây ghi/đọc ô nhớ RAM tĩnh 6T SRAM.
Điều khiển (Controls)
6. Trắc nghiệm kiểm tra
Câu 1: Điểm khác biệt mấu chốt nhất về mặt nguyên lý điều khiển giữa Mạch chốt (Latch) và Mạch lật (Flip-Flop) là gì?
Câu 2: Trong thiết kế vi mạch kỹ thuật số, hiện tượng "Bất ổn định" (Metastability) xảy ra khi nào và dẫn đến hậu quả gì?