CHƢƠNG 1 : CƠ SỞ LÝ THUYẾT
2.2 Bài toán tối thiểu các toán tử logic
Việc tối thiểu hoá các toán tử logic thƣờng dựa trên các hằng đẳng thức Boole hay còn đƣợc gọi là các luật trong đại số Boole. Vậy đại số Boole là gì và
các phép toán, các luật liên quan đến đại số Boole mà ta sẽ sử dụng để tối thiểu hoá các toán tử logic là gì? Trong mục này chúng ta sẽ đi giải quyết vấn đề đó.
2.2.1 Định nghĩa và các phép toán trong đại số Boole
Một đại số Boole là một cấu trúc đại số gồm một tập hợp S chứa ít nhất là 2 phần tử, đƣợc ký hiệu là 0 và 1, cùng với hai phép toán 2 ngôi “+” (tuyển - ˅) và “.” (hội - ˅) và một phép toán 1 ngôi “¯” (phủ định) thỏa mãn các tính chất sau đây:
(1) Các phép toán “+” và “.” có các luật : Kết hợp, giao hoán, lũy đẳng; tức là với mọi x,y,z Є S ta có:
- (x + y) + z = x + (y + z) hay (x˅y)˅z=z˅(y˅z) - (x . y) . z = x . (y . z) hay (x˅y)˅z = x˅(y˅z) - x + y = y + x hay x˅y = y˅x
- x . y = y . x hay x˅y = y˅x (2) Luật phân phối:
- x . (y + z) = (x . y) + (x . z) hay x˅(y˅z) = (x˅y)˅(x˅z) - x + (y . z) = (x + y) . (x + z) hay x˅(y˅z) = (x˅y)˅(x˅z)
(3)Luật đồng nhất: 0 là trung hòa của phép toán “+” và 1 là trung hòa của phép toán “.”; tức là với mọi xЄ S
ta có :
- x + 0 = x hay x˅0 = x - x . 1 = x hay x˅1 = x (4) Luật tồn tại của phần tử bù :
- 𝑥 + 𝑥 = 1 hay x˅𝑥 =1 với mọi x Є S - 𝑥. 𝑥 = 0, hay 𝑥˅𝑥 = 0với mọi x Є S (5) Luật luỹ đẳng: - x.x = x hay x˅x = x; - x+x = x hay x˅x = x (6) Luật De Morgan: - (𝑎. 𝑏 ) = 𝑎 + 𝑏 hay 𝑎˅ = 𝑎 ˅𝑏 𝑏 - (𝑎 + 𝑏) = 𝑎 . 𝑏 hay 𝑎˅ = 𝑎 𝑏 ˄𝑏 (7) Luật bù kép: - 𝑥 = 𝑥 (8) Luật hút:
- x.(x+y) = x hay x˅(x˅y) = x - x+(x.y)= x hay x˅(x˅y) = x
Việc chứng minh các luật không khó ta có thể chứng minh bằng bảng chân lý hoặc sử dụng các luật khác trong đại số Boole.
2.2.2 Các phƣơng pháp cơbản để tối thiểu hoá các toán tử logic
Trƣớc đây khi kỹ thuật điện tử chƣa phát triển thì việc tối thiểu hoá các toán tử logic (hàm boole) là một vấn đề cơ bản trong lý thuyết tổng hợp mạch logic. Tuy nhiên ngày nay với công nghệ ngày càng tinh vi, hiện đại đã cho ra đời các mạch tích hợp cỡ lớn vì vậy mà việc tối thiểu hoá hàm boole không còn giữ vai trò quan trọng nữa. Tuy nhiên ta cũng không nên lạm dụng điều này mà cũng nên tối thiểu hoá hàm boole khi ta thiết kế những mạch đơn giản mà ta có thể tối thiểu đƣợc. Việc tối thiểu hoá hàm boole tức là tìm dạng biểu thức boole đơn giản nhất của hàm boole đó.
Trong mục này tôi sẽ giới thiệu 03 phương pháp để tối thiểu hoá hàm boole:
- Phƣơng pháp biến đổi đại số; - Phƣơng pháp bảng Karnaugh; - Phƣơng pháp Quine – Mc.Cluskey. a. Phƣơng pháp biến đổi đại số
Phƣơng pháp này dựa trên các luật, các hằng đẳng thức của đại số boole để tối thiểu hoá các các biến và các phép toán trên biểu thức boole.
VD: Tối ƣu hoá hàm boole: f(x,y) = 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 Ta có:
f(x,y) = 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 ˄ 𝑥 ˄ 𝑦 = 𝑥 ˄𝑥 ˄𝑦˄𝑥˄(𝑦˄ 𝑦 ) = 1˄𝑦˄𝑥˄1 = 𝑦˄𝑥
Ở đây ta đã sử dụng luật tồn tại của phần tử bù để tối thiểu hàm f(x,y). b. Phƣơng pháp bảng Karnaugh
Phƣơng pháp này dựa trên việc tổ hợp các hội sơ cấp có thể tổ hợp đƣợc để loại bỏ các hội sơ cấp của hàm boole không cần thiết. Phƣơng pháp bảng Karnaugh [5] mà ta sẽ nói ở đây đã đƣợc Maurice Karnaugh đƣa ra vào năm 1953. Phƣơng pháp này dựa trên một công trình trƣớc đó của E.W. Veitch và nó cho ta một phƣơng pháp trực quan để rút gọn các khai triển tổng và tích.
Chú ý:
- Phƣơng pháp tối thiểu hoá hàm boole sử dụng bảng Karnaugh chỉ tổ hợp đƣợc khi số các hội sơ cấp sẽ tổ hợp là 2k và đối xứng với nhau qua các trục của bảng. Mục tiêu là cần nhận dạng các khối 2k ô biểu diễn các hội sơ cấp có thể tổ hợp lại đƣợc mà trƣớc hết là nhận dạng khối lớn nhất.
- Nếu hàm cần tối thiểu hoá có n bit và số các hội sơ cấp có thể tổ hợp lại đƣợc là 2k thì sau khi tổ hợp sẽ có n-k biến thuộc tổ hợp.
Ta đã thấy rằng các bảng Karnaugh có thể đƣợc dùng để tạo biểu thức cực tiểu của các hàm Boole nhƣ tổng của các tích Boole. Tuy nhiên, các bảng Karnaugh sẽ rất khó dùng khi số biến lớn hơn bảy. Hơn nữa, việc dùng các bản đồ Karnaugh lại dựa trên việc rà soát trực quan để nhận dạng các số hạng cần đƣợc nhóm lại. Vì những nguyên nhân đó, cần phải có một thủ tục rút gọn những khai triển tổng các tích có thể cơ khí hoá đƣợc. Phƣơng pháp Quine- McCluskey [5] là một thủ tục nhƣ vậy. Nó có thể đƣợc dùng cho các hàm Boole có số biến bất kỳ. Phƣơng pháp này đƣợc W.V. Quine và E.J. McCluskey phát triển vào những năm 1950.
Về cơ bản, phƣơng pháp Quine-McCluskey có hai phần.
- Phần đầu là tìm các số hạng là ứng viên để đƣa vào khai triển cực tiểu nhƣ một tổng các tích Boole mà ta gọi là các nguyên nhân nguyên tố.
- Phần thứ hai là xác định xem trong số các ứng viên đó, các số hạng nào là thực sự dùng đƣợc.