Chúng ta đã biết về 2 loại CMOS là NMOS và PMOS, hôm nay chúng ta sẽ tìm hiểu cách kết hợp các transistor CMOS này để thực hiện chức năng của cổng logic cơ bản dùng trong vi mạch số.
Chúng ta có thể coi các transistor như là một công tắc được điều khiển đóng mở bởi điện áp như hình dưới:
- Với NMOS, khi cực G được cấp mức điện áp thấp (logic 0), NMOS sẽ như công tắc bị ngắt và không có dòng điện từ D xuống S. Còn khi cấp điện áp cao (logic 1) cho cực G, NMOS sẽ giống công tắc đóng và có dòng điện đi từ D xuống S.
- PMOS sẽ hoạt động ngược lại với NMOS là khi cấp điện áp thấp (logic 0) sẽ bật và dẫn dòng điện còn bị ngắt khi cấp điện áp cao (logic 1)
Ta có mạch của cổng đảo (Inverter) được tạo thành từ CMOS như hình dưới. Nguyên lý hoạt động của mạch này đơn giản như sau:
- Khi đầu vào A có mức logic 1, tương ứng với việc cấp điện áp cao được cấp vào cực G của pmos và nmos, lúc đó pmos sẽ ngắt và nmos sẽ dẫn (trường hợp ở giữa), lúc đó đầu ra Y sẽ được nối xuống GND và do đó sẽ có mức logic 0.
- Tương tự, khi đầu vào A có mức logic 0 thì pmos sẽ dẫn và nmos sẽ ngắt (trường hợp bên phải), đầu ra Y sẽ được nối lên VDD và do đó sẽ có mức logic 1.
Như vậy ta tạo được một mạch CMOS hoạt động đúng nguyên lý của cổng Inverter
Ta có thể dùng nguyên lý tương tự để thiết kế các cổng logic cơ bản khác. Các cổng logic và phần tử cơ bản được thiết kế trực tiếp từ transistor như này để sử dụng ở mức thiết kế cao hơn thường được gọi là Standard Cell.
Standard Cell
Có 2 phương pháp thiết kế chính được sử dụng trong thiết kế vi mạch là full-custom design và standard-cell based design.
- Full-custom design là phương pháp được sử dụng từ những ngày đầu tiên, các mạch điện được thiết kế trực tiếp từ các phần tử như transistor, điện trở, tụ điện,… và được đi dây, layout bằng tay cho từng phần tử của mạch. Phần lớn mạch tương tự vẫn được thiết kế theo phương pháp này.
Phương pháp này cho phép tùy chỉnh thiết kế sâu hơn và đem lại hiệu năng tốt hơn cho mạch. Tuy nhiên phương pháp này tốn rất nhiều thời gian cho việc thiết kế và layout bằng tay, và khó áp dụng với các thiết kế lớn, đặc biệt với các thiết kế ngày càng phức tạp hiện nay như CPU, GPU,…
- Phương pháp thiết kế dùng standard cell giúp giải quyết các vấn đề trên. Các thiết kế sẽ dựa trên các khối logic đã được thiết kế sẵn như các cổng logic cơ bản AND, OR, NOT, NAND, NOR,… hoặc phần tử lưu trữ như Latch, Flipflop hay các chức năng đơn giản như bộ cộng, mux,… Standard cell được thiết kế tuân theo các quy chuẩn về kích thước, hình dạng, vị trí chân kết nối để đảm bảo có thể sắp xếp dễ dàng khi layout tự động bằng các công cụ EDA.
Mặc dù mang lại những lợi ích đáng kể về năng suất và thời gian thiết kế, phương pháp thiết kế dựa trên standard cell này cũng có những hạn chế nhất định về tính linh hoạt, tăng diện tích và công suất tiêu thụ lớn hơn, khó tối ưu thiết kế và phụ thuộc vào các thư viện và công cụ thiết kế EDA,…