NAND và NOR: dựng các phép logic từ một loại cổng
Tiên quyết
- Module A1: Biểu diễn số: Đang tải
- Boolean: từ yêu cầu đến bảng chân trị: Đang tải
Sau bài này bạn sẽ
- Giải thích vì sao NAND hoặc NOR có thể tạo mọi hàm Boolean hữu hạn
- Dựng NOT, AND, OR và XOR bằng mạng cổng cụ thể
- Phân biệt số cổng trong sơ đồ với kết quả mapping thật
Chỉ có một loại cổng thì làm được gì?
Giả sử hộp linh kiện chỉ có NAND hai đầu vào. Bạn vẫn có thể dựng NOT, AND và OR, rồi ghép chúng thành một hàm từ bảng chân trị.
“Universal” ở đây là đủ khả năng biểu diễn chức năng Boolean. Nó không có nghĩa mọi mạch chỉ dùng NAND sẽ nhanh nhất, nhỏ nhất hoặc phù hợp nhất với FPGA.
Vì sao dựng đủ ba phép là đủ?
Một bảng chân trị hữu hạn có thể viết thành canonical SOP: mỗi hàng ra 1 tạo một minterm, OR các minterm lại. Các minterm chỉ cần AND và NOT; ghép chúng cần OR.
Nếu một loại cổng dựng được NOT, AND và OR, nó dựng được các SOP ấy. Đây là lập luận về khả năng biểu diễn, không phải hứa mạch tạo bằng cách đó đã tối ưu.
AND và OR đơn thuần không tạo được NOT: khi tăng một đầu vào từ 0 lên 1, mạng chỉ chứa hai phép ấy không làm đầu ra giảm từ 1 xuống 0. XOR một mình cũng không tạo mọi hàm, dù có thể tạo phép đảo nếu cấp hằng 1.
Dựng ba phép bằng NAND
NAND cho 0 chỉ khi cả hai đầu vào đều 1. Nối cùng một tín hiệu vào hai chân sẽ tạo phép NOT.
| Phép cần có | Cách nối NAND hai đầu vào |
|---|---|
| NOT A | A NAND A |
| A AND B | Lấy T=A NAND B, rồi T NAND T |
| A OR B | (A NAND A) NAND (B NAND B) |
Công thức OR dùng De Morgan: đảo cả hai đầu vào rồi NAND chúng. Ví dụ A bằng 0, B bằng 1: hai phép đảo cho 1 và 0, NAND ra 1, đúng với OR.
Không được bỏ bubble đảo khi lần tín hiệu qua sơ đồ. NAND nối thêm inverter tạo AND; NAND tự nó chưa phải AND.
Dựng ba phép bằng NOR
NOR cho 1 chỉ khi cả hai đầu vào đều 0. Dùng các kết nối đối ngẫu:
| Phép cần có | Cách nối NOR hai đầu vào |
|---|---|
| NOT A | A NOR A |
| A OR B | Lấy T=A NOR B, rồi T NOR T |
| A AND B | (A NOR A) NOR (B NOR B) |
Một NOR nhận đầu vào 1 sẽ cho 0; một NAND nhận đầu vào 0 sẽ cho 1. Hai câu này giúp kiểm nhanh việc nhầm bảng chân trị.
Nếu đầu vào hoặc đầu ra của giao diện active-low, cần theo dõi tên và mức kích hoạt xuyên suốt, không chỉ đếm số dấu đảo ở một đoạn.
Một mạng XOR bằng bốn NAND
Đặt T=A NAND B, U=A NAND T, V=B NAND T, rồi Y=U NAND V. Bốn cổng cùng chia sẻ T.
| A | B | T | U | V | Y |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 |
Thay cả bốn cổng trong mạng ấy bằng NOR sẽ cho XNOR. Muốn XOR từ mạng NOR này, thêm một NOR dùng như inverter ở đầu ra.
Đây là hai cấu trúc cụ thể có bảng đã kiểm, không phải bằng chứng số cổng tối thiểu cho mọi giả thiết về hằng, đầu vào đảo sẵn hoặc cell nhiều chân.
Chọn dạng biểu thức để giảm phép đảo thừa
SOP thường hợp với mạng NAND–NAND; POS thường hợp với mạng NOR–NOR. Ví dụ F=AB+C' viết được thành (A NAND B) NAND C. Hai lần đảo ở đường nối có thể triệt tiêu về chức năng.
Đừng thay mỗi cổng riêng lẻ bằng một mạng tương đương rồi dừng ngay. Lần theo toàn biểu thức để tìm inverter nối tiếp và hạng dùng chung; sau mỗi biến đổi kiểm lại bảng.
RTL synthesis có thể factor hoặc map sang AND, OR, XOR, AOI/OAI, mux hoặc LUT. Sơ đồ universal gate giúp hiểu tương đương; không buộc công cụ giữ nguyên số cổng hay các nút trung gian đã vẽ.
Không lấy tính universal làm kết luận về công nghệ
- Nhầm NOR với NAND vì cả hai có phép đảo ở đầu ra.
- Cho rằng thay NAND bằng NOR giữ nguyên hàm của một sơ đồ.
- Coi AND và OR đã đủ mà không cần khả năng đảo.
- Giả định cổng hai đầu vào có cùng trễ, tải và chi phí với cổng nhiều đầu vào.
- Dùng số cổng trên giấy làm báo cáo area/timing.
FPGA dùng LUT và tài nguyên có sẵn; standard-cell ASIC dùng thư viện khác. Cần mapping và báo cáo đúng công nghệ trước kết luận vật lý.
Dựng rồi thử bốn hàng
- Dùng NAND dựng NOR hai đầu vào. Chỉ rõ từng nút và phép đảo.
- Dùng NOR dựng AND rồi lập bảng bốn hàng.
- Trong mạng XOR bốn NAND, điều gì xảy ra ở hàng A bằng 1, B bằng 1?
- Rút
F=(AB+C')'từ mạng NAND tương đương; cần giữ phép đảo nào ở cuối? - Nếu một sơ đồ có ít cổng hơn nhưng fanout lớn hơn, đã đủ nói nhanh hơn chưa?
Kiểm tra
Bằng chứng kiểm chứng
Expected tính trước chạy: UNIVERSAL CHECK vectors=4 nand_functions=16 nor_functions=16 time_ns=4.
Bốn phép NOT/AND/OR/XOR được thực hiện bằng mạng NAND và NOR. Bảng đầu ra là literal viết trước chạy, kiểm đủ bốn cặp đầu vào cho cả hai họ.
Parsed/linted/simulated/synthesized đạt; synthesis generic không có flip-flop/latch. Không giữ hoặc kiểm số cell sau tối ưu, không claim số transistor hay tối ưu toàn cục. Các bit đều 0/1; chưa kiểm behavior X/Z hoặc cell vật lý.
Nguồn và mức độ đối chiếu
- Universal Gates — bản chụp resources.zip, What Makes a Gate Universal?; Building Basic Gates from NAND; Building Basic Gates from NOR; Converting a Function to NAND-Only Form; XOR from Four NAND Gates. Trích dẫn; nguồn đã đọc các mục liên quan.
- Thí nghiệm nguyên bản A2.universal, Four independent NOT/AND/OR/XOR truth rows for NAND-only and NOR-only networks. Trích dẫn; nguồn đã đọc toàn văn.
- IEEE 1800-2023 SystemVerilog LRM, Scalar bitwise inversion, AND and OR expressions in combinational networks — chưa đối chiếu LRM. Chưa đối chiếu với văn bản nguồn (chưa mở).