LỜI CAM ĐOAN Tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác như đã ghi rõ trong luận văn, các công việc trình bày trong luận văn này là do chính tôi thực hiện
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
X X
NGUYỄN VĂN TÂN
TỐI ƯU HÓA VI MẠCH HAI LỚP
VỚI CÁC PHƯƠNG PHÁP DÀNH CHO
BÀI TOÁN SET COVERING
Chuyên ngành: Khoa học Máy tính
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, THÁNG 11 NĂM 2007
Trang 2ĐẠI HỌC QUỐC GIA TP HCM CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập - Tự Do - Hạnh Phúc
Tp Hồ Chí Minh, ngày 05 tháng 11 năm 2007
NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ và tên học viên : Nguyễn Văn Tân Giới tính : Nam ;/ Nữ Ngày, tháng, năm sinh : 18 - 05 - 1971 Nơi sinh : Khánh Hòa
Chuyên ngành : Khoa học Máy tính
Khoá : 2005 - 2007
1- TÊN ĐỀ TÀI : TỐI ƯU HÓA VI MẠCH HAI LỚP VỚI CÁC PHƯƠNG PHÁP
DÀNH CHO BÀI TOÁN SET COVERING.
2- NHIỆM VỤ LUẬN VĂN : Phân tích bài toán tối ưu vi mạch hai lớp, xây đựng mô hình toán theo dạng SET COVERING, xây dựng giải thuật giải mô hình của bài toán Dựa trên cơ sở lý thuyết đó, hiện thực chương trình tối ưu vi mạch hai lớp Lý thuyết được kiểm chứng bằng chương trình và chương trình được kiểm thử bởi các dữ liệu đầu vào đã phổ biến trên thế giới Kết quả kiểm thử cũng được so sánh với các chương trình hiện thời trên thế giới
3- NGÀY GIAO NHIỆM VỤ : 05/01/2007
4- NGÀY HOÀN THÀNH NHIỆM VỤ : 05/11/2007
5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : TS Trần Văn Hoài
Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua
CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN
(Họ tên và chữ ký)
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học : TS TRẦN VĂN HOÀI
Cán bộ chấm nhận xét 1 : PGS, TS NGUYỄN HỮU PHƯƠNG
Cán bộ chấm nhận xét 2 : GVC, TS ĐINH ĐỨC ANH VŨ
Luận văn thạc sĩ được bảo vệ tại: Trường Đại học Bách Khoa Tp Hồ Chí Minh
HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 05 tháng 11 năm 2007
Trang 4LỜI CAM ĐOAN
Tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác như đã ghi rõ
trong luận văn, các công việc trình bày trong luận văn này là do chính tôi thực hiện và
chưa có phần nội dung nào của luận văn này được nộp để lấy một bằng cấp ở trường này
Trang 5LỜI CÁM ƠN
Tôi rất cám ơn nhà trường, thầy cô, cán bộ quản lý đã xây dựng nền tảng cho trường ngày một vững chắc hơn Xin chân thành cám ơn đến quý thầy cô trong hai năm qua đã truyền tải một lượng tri thức rất thực tế và hữu dụng cho các học viên Cao học khóa 2005-2007 Các môn học này là cơ sở nền tảng để học viên nghiên cứu tiếp theo
Chân thành cám ơn TS Trần Văn Hoài đã dày công nghiên cứu và hướng dẫn tận tình
giúp tôi hoàn thành tốt luận văn
Cám ơn sự góp ý và động viên của các bạn học viên Cao học khóa 2004-2006 và khóa 2005-2007 Đã giúp tôi một phần làm luận văn được hoàn hảo hơn
Một điểm tựa không thể thiếu trong nghiên cứu khoa học đó là gia đình Cám ơn gia đình tôi đã góp sức và chia sẽ bớt công việc gia đình để tôi có đủ thời gian theo học và làm luận văn
Tác giả: Nguyễn Văn Tân
Trang 6MỤC LỤC
TÓM TẮT 8
ABSTRACT 10
CHƯƠNG 1: CHƯƠNG MỞ ĐẦU 12
1.1 QUY TRÌNH THIẾT KẾ VÀ SẢN XUẤT VI MẠCH (CHIP) 12
1.2 VẤN ĐỀ TỐI ƯU VI MẠCH HAI LỚP 14
1.3 GIẢI QUYẾT VẤN ĐỀ 15
CHƯƠNG 2: KHÁI NIỆM CƠ BẢN 18
2.1 HÀM LUẬN LÝ (BOOLEAN HAY LOGIC FUNCTION) 18
2.2 CÁC PHÉP TOÁN TRÊN HÀM LUẬN LÝ 19
2.2.1 PHẦN BÙ (COMPLEMENT) 19
2.2.2 TÍCH (INTERSECTION-PRODUCT) 19
2.2.3 HIỆU (DIFFERENCE-SUBTRACT) 19
2.2.4 TỔNG (UNION-SUM) 19
2.2.5 HẰNG ĐÚNG (TAUTOLOGY) 20
2.3 BIỂU DIỄN ĐẠI SỐ CỦA HÀM LUẬN LÝ 20
2.4 CUBE, COVER VÀ MINTERM 21
2.4.1 CUBE .21
2.4.2 COVER 21
2.4.3 MINTERM 22
2.5 CÁC PHÉP TOÁN TRÊN CUBE 23
2.5.1 CHỨA (CONTAIN) 23
2.5.2 TÍCH (INTERSECTION-AND-PRODUCT) 23
2.5.3 TỔNG (UNION-OR-SUM) 24
2.5.4 HIỆU (DISTANCE-SUBTRACT) 25
2.5.5 PHẦN BÙ (COMPLEMENT) 27
2.5.6 KHOẢNG CÁCH (DISTANCE) 27
2.5.7 SỰ LIÊN KẾT (CONSENSUS) 28
2.6 IMPLICANT, PRIME VÀ ESSENTIAL PRIME 29
2.6.1 IMPLICANT (TOÁN HẠNG HAY TÍCH) 29
2.6.2 PRIME IMPLICANT (TOÁN HẠN HAY TÍCH LỚN NHẤT) 30
2.6.3 ESSENTIAL PRIME (TOÁN HẠN HAY TÍCH LỚN NHẤT CẦN THIẾT) 30
2.6.4 IRREDUNDANT hay MINIMAL (TẬP PHỦ TỐI THIỂU) 30
2.6.5 SINGLE CUBE CONTAINMENT (SỰ CHỨA BỞI MỘT CUBE ĐƠN) 30
CHƯƠNG 3: CÁC CÔNG TRÌNH LIÊN QUAN 31
3.1 PHƯƠNG PHÁP KARNAUGH MAP (K-MAP) 31
3.1.1 GIẢI THUẬT KARNAUGH MAP 31
3.1.2 NHẬN XÉT 32
3.1.3 VÍ DỤ .32
Trang 73.1.4 CÁC LUẬT ĐƠN GIẢN HÓA CỦA KARNAUGH 33
3.1.5 ÁP DỤNG PHƯƠNG PHÁP KARNAUGH VỚI MÔ HÌNH ĐỒ THỊ 34
3.1.6 ÁP DỤNG PHƯƠNG PHÁP KARNAUGH VỚI MÔ HÌNH “CÂY RÚT GỌN” 35
3.2 PHƯƠNG PHÁP QUINE-MCCLUSKEY 37
3.2.1 GIẢI THUẬT 37
3.2.2 NHẬN XÉT 40
3.2.3 VÍ DỤ .40
3.2.4 ÁP DỤNG PHƯƠNG PHÁP QUINE-MCCLUSKEY VỚI MÔ HÌNH ĐỒ THỊ 48
3.2.5 ÁP DỤNG PHƯƠNG PHÁP QUINE-MCCLUSKEY VỚI MÔ HÌNH “CÂY RÚT GỌN”48 3.3 PHƯƠNG PHÁP ESPRESSO 50
3.3.1 GIẢI THUẬT ESPRESSO-I 50
3.3.2 GIẢI THUẬT ESPRESSO-II 50
3.3.3 NHẬN XÉT 51
3.3.4 VÍ DỤ .52
3.3.5 ÁP DỤNG PHƯƠNG PHÁP ESPRESSO VỚI MÔ HÌNH ĐỒ THỊ 54
3.3.6 ÁP DỤNG PHƯƠNG PHÁP ESPRESSO VỚI MÔ HÌNH “CÂY RÚT GỌN” 54
CHƯƠNG 4: PHƯƠNG PHÁP QUY HOẠCH NGUYÊN CHO MẠCH HAI LỚP 56
4.1 NHẬN XÉT CÁC THUẬT TOÁN ĐANG CÓ 56
4.2 MÔ HÌNH SET COVERING CHO MẠCH HAI LỚP 58
4.3 GIẢI THUẬT 59
CHƯƠNG 5: HIỆN THỰC CHƯƠNG TRÌNH 65
5.1 HIỆN THỰC MODULE TẠO PRIME IMPLICANTS 65
5.2 HIỆN THỰC MODULE TẠO ESSENTIAL PRIME IMPLICANTS 67
5.3 HIỆN THƯC MODULE TÌM HIỆU CỦA HAI HÀM ĐẠI SỐ LUẬN LÝ 68
5.4 HIỆN THỰC MODULE TẠO MINTERMS 68
5.5 HIỆN THỰC MODULE TẠO TẬP TIN ĐỊNH DẠNG MPS 70
5.6 HIỆN THỰC MODULE GIẢI MÔ HÌNH SET COVERING 71
5.7 HIỆN THỰC MODULE TỔNG HỢP KẾT QUẢ 73
5.8 HIỆN THỰC MODULE SO SÁNH KẾT QUẢ 73
CHƯƠNG 6: TỔNG KẾT VÀ SO SÁNH KẾT QUẢ 74
6.1 TỔNG KẾT 74
6.2 SO SÁNH KẾT QUẢ 74
CHƯƠNG 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 83
7.1 KẾT LUẬN 83
7.2 HƯỚNG PHÁT TRIỂN CỦA LUẬN VĂN 84
PHỤ LỤC 85
PHỤ LỤC 1: TỐI ƯU VI MẠCH THEO MÔ HÌNH ĐỒ THỊ 85
PHỤ LỤC 2: TỐI ƯU VI MẠCH THEO MÔ HÌNH “CÂY RÚT GỌN” 90
TÀI LIỆU THAM KHẢO 92
Trang 8TÓM TẮT
Luận văn này tập trung vào việc tối ưu hóa vi mạch hai lớp, đây cũng là một dạng hàm đại số luận lý dạng tổng các tích Như chúng ta đã biết bài toán tối ưu hàm luận lý là bài toán khó thuộc dạng NP-Hard Vì vậy việc giải nó là vấn đề nan giải từ trước đến nay Đã
có những công trình liên quan giải vấn đề này như: Karnaugh, Quine-McCluskey và Espresso Đề tài luận văn muốn giải bài toán này bằng một phương pháp khác đó là đưa bài toán tối ưu mạch hai lớp về mô hình set covering và giải mô hình này bằng việc phối hợp một số phương pháp khác nhau như: sử dụng các phép toán biến đổi của hàm luận lý,
sử dụng kỹ thuật dominance columns và dominance rows, sử dụng giải thuật Branch and Bound và dùng kỹ thuật Cutting plane
Để thực hiện việc này tác giả đã tìm hiểu lại lý thuyết và khái niệm cơ bản về đại số luận
lý, các phép toán trên toán hạng và hàm luận lý được thể hiện trong chương 2 Người đọc
có những kiến thức nền tảng về đại số luận lý có thể bỏ qua chương này Tuy nhiên, trong
chương 2, tác giả cũng đóng góp một phần vào việc tính hiệu trực tiếp giữa hai toán hạng
và hai hàm luận lý Trước đây việc tính hiệu hai toán hạng hay hai hàm thì thường nhờ vào phép toán nhân và phép toán lấy phần bù: C = A – B = A ∩ B’
Sau đó tác giả tìm hiểu về các công trình và sản phẩm có liên quan trên thế giới như: Karnaugh, Quine-McCluskey và Espresso được trình bày trong chương 3 Sau khi nghiên cứu giải thuật và sự hiện thực các công trình liên quan đến đề tài, tác giả luận văn đã mô hình hóa các công trình này bằng lý thuyết đồ thị và mô hình cây rút gọn Ngoài ra tác giả còn xây dựng cơ sở lý thuyết đồ thị cho việc tối ưu vi mạch trong phụ lục 1 và xây dựng
mô hình cây rút gọn để tối ưu vi mạch bằng hình ảnh trong phụ lục 2
Giải thuật chính của luận văn được đề cập trong chương 4 Trong chương này tác giả đã trình bày tổng quát vấn đề mà bài toán tối ưu vi mạch cần quan tâm Sau đó tác giả xây dựng mô hình cho bài toán và cuối cùng là trình bày giải thuật phù hợp để giải mô hình này Trong phần này tác giả đã sử dụng các công cụ toán học phù hợp cho từng giai đoạn tối ưu như: các phép toán trên toán hạng và hàm, kỹ thuật dominance columns và
Trang 9dominance rows, kỹ thuật chọn vùng trọng điểm của mô hình set covering, giải thuật brand and bound và cutting plane
Phần hiện thực thể hiện trong chương 5 Trong chương này tác giả cũng có một số đóng góp nho nhỏ cho khoa học về việc cải tiến các giải thuật như: giải thuật tìm essential prime implicants, giải thuật tìm minterms, giải thuật tìm hiệu hai hàm và đặc biệt là kỹ thuật chọn vùng dữ liệu chính của mô hình set covering
Trong chương 6, tác giả đã so sánh kết quả với các công trình khác Ở đây chủ yếu so sánh với chương trình Espresso Vì chương trình Karnaugh và Quine-McCluskey chạy với số biến nhập rất hạn chế và dữ liệu đầu vào là dạng bảng luận lý không phù hợp với
dữ liệu của chương trình luận văn Tác giả đã dùng bộ “test bench” của hệ thống quốc tế
để kiểm tra chương trình Đồng thời tác giả cũng trung thực so sánh kết quả với chương trình espresso
Tổng kết công việc đã làm và hướng phát triển của luận văn được đề cập ở chương 7 Trong chương này tác giả cũng nêu lên những kết quả đạt được và những thiếu sót trong lúc nghiên cứu thực hiện luận văn Hướng phát triển của đề tài cũng được xây dựng theo hai tiêu chí: thứ nhất là nghiên cứu sâu hơn về lý thuyết mô hình set covering và các kỹ thuật ứng dụng cho giải thuật Brand and Bound Và thứ hai là hoàn chỉnh và phát triển phần ứng dụng, cải tiến việc tổ chức cấu trúc dữ liệu cho phù hợp, xây dựng thành module để tích hợp vào hệ thống mô phỏng thiết kế và chế tạo vi mạch
Sau đây là nội dung chi tiết của luận văn
Tác giả: Nguyễn Văn Tân
Trang 10ABSTRACT
The thesis concentrates on two-levels of circuit optimization, which is boolean algebra sum of the products As we know, optimal solution of boolean algebra is NP-Hard problem Therefore, to find its solution is a difficult problem There were a lot of related projects: Karnaugh, Quine-McCluskey and Espresso methods The thesis wants to solve the problem by other methods which is to convert two-levels of circuit optimization problem to set covering model and solve the model by combining a few of the methods as: operations transform logic functions, dominance columns and dominance rows technics, Branch-and-Bound algorithm and Cutting plane technics
To do that, we learned about Boolean Algebra theory and basic concepts, the operations
of operands and function which are showed in chapter 2 If you know about basic boolean algebra you can ignore the chapter However, in this chapter, we contribute a part in Boolean Algebra that is directly subtracted computing between two operands or between two functions Before the subtracted computing between two operands or between two functions are used product operation and complement operation: C = A – B = A ∩ B’
After we find out about related researches and products in the world: Karnaugh, McCluskey and Espresso that are showed in chapter 3 After studying the algorithms and projects that are related to my thesis, I remodeled these projects by graph theory model and reduce tree model Besides, we also built based graph theory for circuit optimization
Quine-in the first appendix and built reduced tree model to optimize circuit by the flowchart Quine-in the second appendix
The main algorithm of the thesis was mentioned in chapter 4 In this chapter, we show general problems which optimization circuit needs care about After, we build computing model for this problem and we show the suitable algorithms for solving this model In this part, we use suitable mathematical tools for optimal steps: operand and function operations, dominance columns and dominance rows technics, choosen technics main data area of set covering model, brand and bound algorithm and cutting plane technics
The implementation was showed in chapter 5 In this chapter, we also contribute a little to science as to improve algorithms: algorithm to find essential prime implicants, find minterms, find subtraction of two functions, choosen technics main data area for set covering model
Trang 11In 6th chapter, we compared the result with different projects, the main comparison is Espresso program Because Karnaugh and Quine-McCluskey programs work with little number variable input and input data is logic table which is not suitable with data of this thesis We used "test bench" of international systems to test the project and we also honestly compared the result with the espresso program
The summary and developing of this thesis was mentioned in chapter 7 In this chapter,
we have talked about good results and mistakes in research The developing of this thesis was built on 2 criterions: The first criteria is careful research about the theory set covering model and the technics that are used for Brand-and-Bound algorithms, the second criteria
is fully and developable applications, improved data organization which were more suitable, built to modules to integrate chip design system and chip production system The details of this thesis are mentioned below
Writer: Nguyen Van Tan
Trang 12CHƯƠNG 1: CHƯƠNG MỞ ĐẦU
1.1 QUY TRÌNH THIẾT KẾ VÀ SẢN XUẤT VI MẠCH (CHIP)
Hình 1.1: Quy trình sản xuất vi mạch
Quy trình sản xuất chip vi mạch chia làm 4 giai đoạn chính: thiết kế, kiểm tra, sản xuất và đóng gói sản phẩm Trong giai đoạn thiết kế gồm có: phát thảo ý tưởng, xây dựng mô hình, tổng hợp vi mạch, tối ưu vi mạch, và kiểm tra tính đúng đắng của mô hình Tối ưu là công đoạn quan trọng trong việc thiết kế hướng đến việc làm cho vi mạch thiết kế tốt hơn theo một hay nhiều tiêu chí nào đó Vì vậy vấn đề tối ưu vi mạch mức luận lý đươc nhiều nhà sản xuất và thiết kế chú trọng vào
Tối ưu vi mạch là một trong những công đoạn quan trọng trong tự động hóa thiết kế vi mạch Các vi mạch được thiết kế dựa trên các ý tưởng có tính trừu tượng hay thể hiện mục đích thỏa mãn nhu cầu một số chức năng của hệ thống Vì vậy chúng có tính khái
Trang 13quát rất cao và có rất nhiều điểm chưa hợp lý Tự động hóa quá trình tối ưu vi mạch sẽ giúp điều chỉnh vi mạch theo những tiêu chí mong muốn của nhà sản xuất Như tối ưu về hàm số biểu diễn vi mạch, tối ưu hóa về tần số đáp ứng, tối ưu về thời gian trễ, tối ưu về công suất tiêu thụ, tối ưu về diện tích vi mạch, tối ưu về công nghệ rút ngắn khoảng cách giữa hai điểm Tối ưu hàm biểu diễn vi mạch là một trong những công đoạn rất cần thiết
để hoàn chỉnh vi mạch Một trong những yếu tố quan trọng nhất ảnh hưởng đến chức năng của chip, mà quá trình tự động hóa thiết kế vi mạch quan tâm, đó là kiểm tra tính chính xác và tối ưu về hàm ở mức luận lý hay sử dụng số cổng thật hợp lý cho một chip vi mạch
Trong sản xuất chip, người ta chia vi mach làm 2 loại chính: mạch tổ hợp (combination circuit) và mạch tuần tự (sequent circuit) Mạch tổ hợp là sự kết hợp các cổng luận lý (NOT, AND, OR) và không dùng hệ thống xung clock để đồng bộ tín hiệu Mạch tổ hợp chia làm hai nhóm chính là: mạch hai lớp (Two-Level Circuits) và mạch nhiều lớp (Multi-Level Circuits), mạch nhiều lớp là sự kết hợp nhiều khối của mạch hai lớp Mạch tuần tự
là mạch được kết hợp từ nhiều khối mạch tổ hợp lại với nhau và có xung clock để đồng
bộ tín hiệu giữa các khối Mạch tuần tự lại được chia làm hai nhóm chính là: mạch đồng
bộ (synchronous circuits – single clock) và mạch bất đồng bộ (asynchronous circuits – multiple clock)
Qua phân tích hệ thống vi mạch ta nhận thấy hệ thống vi mạch hai lớp là cơ sở nền tảng cho các hệ thống khác như: mạch tổ hợp nhiều lớp, mạch tuần tự đồng bộ và mạch tuần tự bất đồng bộ Do vậy việc tối ưu vi mạch hai lớp rất có ý nghĩa và công việc này được dùng lại nhiều lần khi thiết kế tất cả các loại vi mạch
Để biểu diễn hàm chức năng của vi mạch hai lớp chúng ta có nhiều cách đặt tả: bảng chân trị cho hàm luận lý, biểu diễn bằng công thức hàm luận lý tổng các tích (Sum Of Product – SOP), vẽ sơ đồ khối hình học nhiều chiều, tạo bảng Karnaugh, biểu diễn bằng sơ đồ cậy quyết định nhị phân BDD (Binary Decision Diagram) hay mã hóa chúng bằng sự xuất hiện của các toán hạng (các tích: products hay cubes) Trên cơ sở đó ta có thể mã hóa hàm luận lý thành một tập tin dữ liệu đầu vào và tập tin kết quả để xử lý tối ưu (tập tin định
Trang 14dạng BLIF “Berkeley Logic Interchage Format” của Đại học Bekerley, SLIF “Stanford Logic Interchage Format” của Đại học Stanford hay dạng ESPRESSO)
Để hiện thực mạch tổ hợp hai lớp thì ta có thể biểu diễn qua các cổng luận lý cơ bản: NOT, AND và OR Các cổng luận lý này được tạo lập từ đơn vị cơ sở là transistor và transistor được tạo từ chất bán dẫn silicon N hay P mang điện tích âm hay mang điện tích dương (N+, N-, P+, P-)
Trên đây là sơ lược cơ sở nền của nguyên lý thiết kế và sản xuất vi mạch từ chất bán dẫn
và cũng thể hiện vị trí và vai trò của việc tối ưu vi mạch hai lớp trong các tiến trình này
1.2 VẤN ĐỀ TỐI ƯU VI MẠCH HAI LỚP
Ta xem mạch luận lý hai lớp như là một hàm đại số luận lý dạng tổng các tích Để phủ hết hàm này ta dùng các minterms1 Nhưng việc phủ hàm đại số luận lý bằng các minterms thì số cổng biểu diễn hàm hay hiện thực mạch là rất lớn khoảng Do đó ta rút gọn các minterms thành các implicants nhờ phép biến đổi đại số Số lượng các implicants này còn lớn hơn số minterms, và ta lại tìm số lượng implicants nhỏ nhất để bao phủ hết các minterms thể hiện chức năng của hàm luận lý, sự bùng nổ tổ hợp này tăng theo hàm mũ
Vì vậy bài toán rất lớn về khối lượng tính toán và lưu trữ khi số biến nhập đủ lớn Đây là bài toán thuộc họ bài toán NP-Hard (Nondeterministic Polynomial-time Hard)
Vấn đề tối ưu vi mạch hai lớp có thể đưa về mô hình toán set covering Nếu ta chỉ biến đổi bài toán tối ưu vi mạch hai lớp sang mô hình toán set covering để giải mà không có những xử lý cần thiết trước khi giải thì số lượng biến (cột) và ràng buộc (hàng) rất lớn Số lượng biến là số implicants của vi mạch, ta có khoảng 3n – 2n implicants với n là số biến nhập Và số ràng buộc là số minterms, ta có khoảng 2n minterms Một mặt là việc tạo dữ liệu đầu vào không cho phép, mặt khác các các công cụ giải bài toán set covering ngày nay chỉ giới hạn khoảng 10.000 hàng và 10.000 cột là tối đa Vì vậy trước khi giải mô hình set cevering bằng một giải thuật cụ thể, chúng ta cần có những phương pháp làm giảm kích thước của bài toán
Ví dụ: Một hàm đại số luận lý chứa khoảng 2121 minterms (khoảng 2 giga giga giga giga minterms) thì ta không thể liệt kê hết số lượng minterms để đưa vào mô hình toán set
1 Tích đầy đủ
Trang 15covering với công nghệ máy tính ngày nay (khoảng vài giga bytes RAM và vài trăm giga bytes Hard Disk)
1.3 GIẢI QUYẾT VẤN ĐỀ
Sử dụng mô hình set covering để mô hình hóa bài toán tối ưu vi mạch hai lớp:
Tìm min C T x = ? thỏa Ax ≥ 1, với aij ∈{0,1}
Với A là ma trận nhị phân aij ∈ {0, 1} Nếu minterm hàng i được chứa trong implicant cột
Từ hàm đại số luận lý đã cho ta thực hiện các thao tác:
- Dùng các phép toán biến đổi của đại số luận lý tạo ra các prime implicants
- Loại trừ các dominance columns
- Đưa các essential prime implicants vào hàm kết quả
- Loại trừ các dominance rows
- Chọn vùng dữ liệu quan trọng và phù hợp của bài toán để xậy dựng giải thuật lặp
- Chọn công cụ giải vấn đề Integer Programming phù hợp để giải
Ví dụ: Ta có hàm f với 1 biến xuất và 3 biến nhập a, b, c cần tối ưu như sau:
f = a’b’c’ + a’b’c + ab’c + abc + abc’1
Giải:
Bước 1: Xây dựng bảng implicant nhờ phép kết hợp
Minterms Implicants bậc 1 Implicant bậc 2
Trang 161 1 1 Sau khi tạo các implicants, hàm đã cho có thể viết lại như sau:
f = a’b’ + b’c + ac + ab
Tuy nhiên đây cũng chưa là hàm tối ưu
Bước 2: Biểu diễn lại hàm đã cho theo mô hình set covering
Bước 3: Loại bỏ các essential prime implicants
Ta thấy có 2 essential prime implicants là: a’b’ và ab Đưa các essential prime implicants
này vào hàm kết quả
Ta có hàm hết quả là:
fkq = a’b’ + ab
Bước 4: Kiểm tra điều kiện lặp
Ta kiểm tra hàm kết quả có phủ kín các minterms của hàm ban đầu hay không? Nếu phủ kín thì dừng Ngược lại ta chọn thêm vùng dữ liệu chưa bị phủ để giải tiếp Trong trường
hợp này vì hàm kết quả chưa phủ kín (f – fkq = ab’c) nên ta tiếp tục giải
Bước 5: Đưa các essential prime implicants vào hàm kết quả và loại các dominance rows
b’c ac
Ta còn lại mô hình tương đối nhỏ
Bước 6: Chọn một phần dữ liệu của mô hình set covering để giải
Giả sử chọn vùng:
b’c ab’c 1 Bước 7: Giải vấn đề Integer Programming trên
Sau khi giải ta có nghiệm là b’c Đưa b’c vào hàm kết quả
Bước 8: Tổng hợp kết quả
Ta có hàm hết quả là:
fkq = a’b’ + b’c + ab
Trang 17Bước 9: Kiểm tra điều kiện lặp
Ta kiểm tra hàm kết quả có phủ kín các minterms của hàm ban đầu hay không? Nếu phủ kín thì dừng Ngược lại ta chọn thêm vùng dữ liệu chưa bị phủ Trong trường hợp này vì
hàm kết quả phủ kín (f – fkq = ∅) nên ta dừng
Bước 10: Kết luận nghiệm
Hàm đã cho được tối ưu thành hàm sau:
Trang 18CHƯƠNG 2: KHÁI NIỆM CƠ BẢN
2.1 HÀM LUẬN LÝ (BOOLEAN HAY LOGIC FUNCTION)
Cho B={0,1}, Y={0,1,2} Một hàm luận lý ff trong n biến nhập1 x1, x2, …, xn và m biến xuất2 y1, y2, …, ym là một hàm:
ff : Bn Æ Ym
ở đây x = [x1, x2, …, xn ] ∈ Bn là bộ biến nhập của ff, và
y = [ y1, y2, …, ym ] ∈ Ym là bộ biến xuất của ff
Các biến xuất yi thường nhận giá trị là 0 (false) hay 1 (true), đôi khi cũng nhận giá trị không xác định là 2 (don’t-care value)
Hàm luận lý đặc tả không hoàn toàn (incompletely specified) ff là hàm trong đó tồn tại i
mà giá trị của yi là 2
Một hàm luận lý đặc tả hoàn toàn (completely specified) ff là một hàm luận lý với tất cả
biến xuất yi là 0 hay 1
Mỗi thành phần của ff ký hiệu là ffi, i=1, 2, …, m Chúng ta định nghĩa:
• Tập on-set XiON ⊆ Bn, là tập các giá trị nhập x thỏa ffi(x)=1
• Tập off-set XiOFF ⊆ Bn, là tập các giá trị nhập x thỏa ffi(x)=0
• Tập don’t-care-set XiDC ⊆ Bn, là tập các giá trị nhập x thỏa ffi(x)=2
Một hàm luận lý với m=1 được gọi là hàm một giá trị xuất (single-output)
Một hàm luận lý với m>1 được gọi là hàm nhiều giá trị xuất (multiple-output)
Có nhiều cách thể hiện hàm luận lý: dạng đại số (Algebraic form), dạng bảng chân trị (tabular form hay truth table), dạng bìa Karnaugh, dạng đồ thị (Graph), sơ đồ cây quyết định nhị phân BDD (Binary Dicision Diagram), dạng khối hình học nhiều chiều
hay dạng tập tin blif, slif, espresso, …
Một ví dụ về hàm luận lý biểu diễn dạng bảng chân trị Cho ff: B3 Æ Y2 được đặc tả bởi:
Trang 192.2 CÁC PHÉP TOÁN TRÊN HÀM LUẬN LÝ
Trong trường hợp hàm luận lý ff nhiều biến xuất thì các phép toán luận lý được thực hiện trên các thành phần ffi của mỗi biến xuất
với các thành phần của nó ff1, ff2, …, ffm có on-set bằng off-set của thành phần tương ứng
của ff và off-set bằng on-set của thành phần tương ứng của ff
2.2.2 TÍCH (INTERSECTION-PRODUCT)
Tích của hai hàm luận lý đặc tả hoàn toàn f và g là:
h = f ∩ g
là hàm luận lý đặc tả hoàn toàn với các thành phần của nó hi có set bằng tích của
on-set của các thành phần tương ứng của f và g
2.2.4 TỔNG (UNION-SUM)
Tổch của hai hàm luận lý đặc tả hoàn toàn f và g (với f: Bn Æ Bm và g: Bn Æ Bm) là:
h = f + g
Trang 20là hàm luận lý đặc tả hoàn toàn h với on-set của các thành phần của h, h i là tổng on-set
của các thành phần tương ứng f i và g i của f và g
2.2.5 HẰNG ĐÚNG (TAUTOLOGY)
Một hàm đặc tả hoàn toàn f là hằng đúng viết là f ≡ 1, nếu off-set của tất cả các thành phần là rỗng hay nói cách khác tất cả biến xuất của f nhận giá trị là 1 với tất cả biến nhập
Trong trường hợp hàm luận lý đặc tả không hoàn toàn thì ta tách thành ba hàm đặc tả
hoàn toàn: ffON, ffDC và ffOFF, đây là cách thể hiện 1-1 của nguyên bản hàm đặc tả không hoàn toàn Với:
• ffON có on-set của các thành phần của nó bằng on-set của các thành phần tương ứng
của ff và off-set của các thành phần của nó bằng tổng don’t-care-set và off-set của các thành phần tương ứng của ff
• ffDC có on-set của các thành phần của nó bằng don’t-care-set của các thành phần
tương ứng của ff và off-set của các thành phần của nó bằng tổng on-set và off-set của các thành phần tương ứng của ff
• ffOFF có on-set của các thành phần của nó bằng off-set của các thành phần tương
ứng của ff và off-set của các thành phần của nó bằng tổng don’t-care-set và on-set của các thành phần tương ứng của ff
Chúng ta có thể dùng ký hiệu (f,d,r) để thay cho bộ ba (ffON, ffDC, ffOFF) cho bởi ff Để ý rằng f ∪ d ∪ r bao phủ m không gian luận lý kết hợp với ff Cho mỗi thành phần i, 1≤ i ≤
m, tập on-set của fi, di và ri là hằng đúng của thành phần ffi Vì vậy f ∪ d ∪ r là một hằng đúng của hàm ff
2.3 BIỂU DIỄN ĐẠI SỐ CỦA HÀM LUẬN LÝ
Gọi ffi là một thành phần của ff Một biểu diễn đại số của ffi hay fi là một biểu thức luận lý với:
0 cho tất cả các biến nhập trong XiOFF, và
1 cho tất cả các biến nhập trong XiON, và
0 hay 1 cho tất cả các biến nhập trong XiDC
Ví dụ: Cho ff : B3 Æ Y2 như sau :
Trang 21Ta có thể biểu diễn bảng chân trị trên thành dạng đại số như sau:
Nhìn theo góc độ hình học: cube trong không gian luận lý n biến nhập kết hợp với một
hàm nhiều biến xuất ff là tập các đỉnh mà nó được bao phủ bởi các thành phần ffi của hàm
ff hoặc không
Nhìn theo dạng biểu diễn đại số: cho p là một tích kết hợp với biểu thức tổng các tích đại
số của một hàm luận lý với n biến nhập và m biến xuất thì một cube p được đặc tả bởi một vector hàng: c = [c1, c2, …, cn, cn+1, …, cn+m]
với:
0 nếu xi xuất hiện trong p dạng đảo
1 nếu xi xuất hiện trong p dạng không đảo
ci = 2 nếu xi không xuất hiện trong p
3 nếu p không xuất hiện trong fi-n
4 nếu p xuất hiện trong fi-n
Ví dụ: Cho p = x’2 trong ví dụ trên, nó chỉ xuất hiện trong f1 và không xuất hiện trong f 2
Do đó ta có: c = [2 0 2 4 3]
Phần biến nhập của c hay biến nhập của cube c là I(c), là vector con của c chứa n phần tử đầu của c Trong ví dụ trên I(c) là [2 0 2] Với 2 là giá trị không xác định (don’t-care) Phần biến xuất của c hay biến xuất của cube c là O(c), là vector con của c chứa m phần tử
cuối của c Trong ví dụ trên O(c) là [4 3] Với 3 là 0 trong f1 và 4 là 1 trong f2
2.4.2 COVER
Một tập của cubes V = {c1, c2, …, ck} được gọi là một cover cho hàm luận lý ff với n
biến nhập và m biến xuất, nếu, cho j = 1, …, m tập phần biến nhập của cubes có một giá
trị 4 trong vị trí thứ j chứa tất cả các đỉnh tương ứng với on-set của ffj và không chứa đỉnh
Trang 22tương ứng với off-set của ffj, cũng có nghĩa là một cover thể hiện tổng của on-set và vài don’t-care-set Cover và biểu diễn đại số là tương ứng 1-1 vì vậy ta có thề thay việc biểu diễn cover bằng biểu diễn đại số và ngược lại
Một tập cubes V xác định một hàm luận lý đặc tả hoàn toàn được viết là b(V)
Chúng ta sử dụng ma trận để biểu diễn cover hay biểu diễn dạng đại số Ma trận M(V) kết
hợp với cover V = {c1, c2, …, ck} là ma trận đạt được bằng cách xếp chồng các vector hàng biểu diễn cubes V
Ví dụ: Ma trận biểu diễn cubes V tương ứng hàm ff = ff1 + ff2, với:
Nếu một cube c chứa minterm ei, c ⊇ ei, chúng ta nói rằng ei là một phần tử của c, ei ∈ c
o Cube uj biểu diễn tập phổ quát tại không gian luận lý thứ j
o Cube U biểu diễn tổng phổ quát hay ff là hằng đúng
o Cube xj biểu diễn nữa không gian dương của xj
o Cube `xj biểu diễn nữa không gian âm của xj
Trang 23Tập cubes C chứa tập cubes D nếu tất cả cube trong D bị chứa bởi một hoặc nhiều cubes trong C Tập cubes C chứa hoàn toàn tập cubes D nếu tất cả cube trong D bị chứa bởi một hoặc nhiều cubes trong C và tồn tại một cube trong D bị chứa hoàn toàn bởi một hoặc nhiều cubes trong C
Trang 24∩ 3 4
ci 3 3 3 n ≤ i ≤ n+m
4 3 4 Khi có một chỉ số i tại ci và di cho ∅ thì cube e là rỗng (empty cube) Nếu phần biến xuất của e toàn là 3 thì e cũng là cube rỗng Về mặt hình học, cube có được bởi việc giao 2 cubes là cube mà phần biến nhập của nó tương ứng với các đỉnh chung của c và d, và phần biến xuất của nó hiện diện nếu cả hai c và d hiện diện
Do đó, nếu 2 cubes không có đỉnh chung hoặc một trong hai đều không hiện diện trong
cùng hàm thành phần ffi của ff thì tích của nó là rỗng, hai cubes này được gọi là trực giao
(orthogonal cubes), và chúng ta viết c∩d = ∅
Tích của 2 tập cubes là tập của các cubes đạt được bởi thực hiện tích từng cặp cubes trong 2 tập Hai tập cubes là trực giao nếu tích của chúng là rỗng Chú ý rằng cover
f trực giao với cover f’
Trang 25Hiệu của hai cubes c và d, được viết là c – d, là tập đỉnh phủ bởi phần biến nhập của cube
c mà không phủ bởi cube d trong không gian luận lý n chiều mà chúng hiện diện Hiệu của 2 cubes là một tập cubes và cũng có thể là tập rỗng
Dựa vào định nghĩa ta có công thức: c – d = c - c ∩ d
Trang 26Quy tắc tổng quát để tìm hiệu hai cubes e = c – d
¾ Quy tắc 1: Trường hợp phần biến xuất khác nhau, ta thực hiện theo ba bước sau: Bước 1: Tách mỗi cube thành m cube nhỏ theo từng biến xuất
Bước 2: Xét trên mỗi thành phần i của m hàm thành phần ffi:
a Nếu ci không tồn tại mà di tồn tại thì ei = ∅
b Nếu ci và di không tồn tại thì ei = ∅
c Nếu ci tồn tại mà di không tồn tại thì ei = ci
d Nếu ci và di cùng tồn tại thì ei tính theo quy tắc hai cube có biến xuất giống nhau theo quy tắc 2
Bước 3: Cube e tìm được bằng cách lấy tổng các cube ei
¾ Quy tắc 2: Trường hợp phần biến xuất giống nhau:
Bước 1: Ta xét trên n biến nhập, nếu:
a Nếu biến nhập thứ i của c là ci bằng biến nhập thứ i của d là di hay di bằng 2 thì
bỏ qua
b Nếu biến nhập thứ i của c là ci khác biến nhập thứ i của d là di thì:
i Nếu di = 0 thì ei = 1 và ej = ej với mọi j ≠ i, 1≤ j ≤n ta được cube ei
ii Nếu di = 1 thì ei = 0 và ej = ej với mọi j ≠ i, 1≤ j ≤n ta được cube ei Bước 2: Cube e tìm được bằng cách lấy tổng các cube ei từ bước 1
Ví dụ: Cho 2 cubes: c = {2 1 0 4 3} và d = {0 1 1 4 3} thì:
Trang 27Hay cách nói khác: Hiệu của 2 tập cubes C và D là tập cubes H = C – D với:
Phần bù của một tập cubes C là tập cubes C’ tìm được từ việc lấy trừ đi tất cả cube
trong C theo từng thành phần của ff
Hay nói cách khác phần bù của tập cubes C là tập cubes C’ mà có cover của phần bù của nó là hàm tương ứng của tập C
2.5.6 KHOẢNG CÁCH (DISTANCE)
Khoảng cách giữa hai cube c và d, ký hiệu là δ(c,d), bằng tổng khoảng cách của biến nhập
và biến xuất
δ(c, d) = δ(I(c), I(d)) + δ(O(c), O(d))
Khoảng cách phần biến nhập giữa hai cube c và d là tổng số lượng các vị trí mà mà phần biến nhập khác nhau hay nói cách khác tích của hai thành phần biến nhập của hai cube là rỗng, được tính theo công thức sau:
Trang 28Ví dụ: Cho c = [0 1 2 4 3] và d = [1 0 0 3 4] thì
δ(I(c), I(d)) = |{1}, {2}| = 2 và
δ(O(c), O(d)) = 1 Vậy:
δ(c, d) = δ(I(c), I(d)) + δ(O(c), O(d)) = 2 + 1 = 3
đó là, sự khác nhau của phần biến nhập tăng lên 2 và khi chúng giao nhau
Nếu δ(I(c), I(d)) = 0 và δ(O(c), O(d)) = 1 thì:
ci ∩ di với 1 ≤ i ≤n,
4 nếu ci hoặc di =4 với n < i ≤ n+m,
ei =
3 ngược lại
ĐỊNH ĐỀ (PROPOSITION): VỀ SỰ LIÊN KẾT CỦA 02 CUBES
“Sự liên kết của hai cubes a và b, p = a Θ b, được chứa trong a ∪ b Hơn nữa, nếu a Θ b ≠
∅, nó chứa minterms của cả hai a và b”
O(p) = O(a) ∩ O(b)
Tất cả các minterms của p là thuộc trong p1 hay trong p2 Với p1 được định nghĩa bởi:
I(p1) = {a1∩b1, …, ak, …, an∩bn};
O(p1) = O(a) ∩ O(b)
và p2 được định nghĩa bởi:
I(p2) = {a1∩b1, …, bk, …, an∩bn};
Trang 29O(p2) = O(a) ∩ O(b)
và p2 được định nghĩa bởi:
I(p2) = I(a) ∩ I(b);
O(p2) = O(b)
do đó a ⊃ p1 và b ⊃ p2 định đề được chứng minh
¾ Nếu δ(O(a),O(b)) > 1:
Thì p = ∅ ⊂ a và p ⊂ b định đề được chứng minh
Định đề này phát biểu rằng c = a Θ b là một cube với một “chân” trong cube a và một
“chân” trong cube b hay c là cầu nối ngắn giữa cube a và cube b
2.6 IMPLICANT, PRIME VÀ ESSENTIAL PRIME
2.6.1 IMPLICANT (TOÁN HẠNG HAY TÍCH)
Một cube p được gọi là một implicant của hàm ff = (f,d,r) nếu tích của nó với hàm r là
Trang 30Cube c2 = [1 2 0 4 3] của là một inplicant của hàm ff
Trong khi cube d = [0 2 1 3 4] không là implicant của hàm ff vì nó chứa đỉnh (0 0 1) là đỉnh bị phủ bởi tập off-set of ff2
2.6.2 PRIME IMPLICANT (TOÁN HẠN HAY TÍCH LỚN NHẤT)
Một prime implicant hoặc prime cube hoặc gọi tắc là prime của hàm ff, ký hiệu là p~, là
implicant lớn nhất của hàm ff; mà bất kỳ implicant nào chứa p~ phải bằng p~
Ví dụ: Cho p = [0 0 2 4 3] là một implicant nhưng không là một prime implicant của
hàm ff biểu diễn bởi:
vì implicant [2 0 2 4 3] chứa implicant [0 0 2 4 3]
Một prime cover là một cover mà tất cả cubes của nó là prime implicants
2.6.3 ESSENTIAL PRIME (TOÁN HẠN HAY TÍCH LỚN NHẤT CẦN THIẾT)
Một essential prime là một prime của hàm ff mà nó chứa một minterm của hàm ff và
minterm này không bị chứa bởi bất kỳ một prime nào khác của hàm ff
Trong ví dụ trên thì essential prime là [2 0 2 4 3] và [2 1 2 3 4], với essential minterm là [0 0 1 4 3] và [0 0 1 3 4]
ĐỊNH ĐỀ (PROPOSITION): VỀ PRIME ESSENTIAL
“Một prim p không là một essential prime nếu và chỉ nếu tồn tại một tập các primes S không chứa p và phủ tất cả các minterms của p”
2.6.4 IRREDUNDANT hay MINIMAL (TẬP PHỦ TỐI THIỂU)
Một cover C được gọi là tập phủ tối thiểu (irredundant hay minimal) của hàm ff nếu nó không tồn tại tập con thực sự D của C mà D phủ kín hàm ff
Từ định nghĩa trên ta có thể định nghĩa cho tập cubes Một tập cubes C được gọi là tối
thiểu (irredundant hay minimal) nếu không tồn tại cube c nào trong C được phủ bởi
phần còn lại của C (tức tập C – c)
Một cube c ∈ C được gọi là một prime cube nếu không tồn tại một cube thật sự d nào chứa c và d được phủ bởi C
2.6.5 SINGLE CUBE CONTAINMENT (SỰ CHỨA BỞI MỘT CUBE ĐƠN)
Một khái niệm yếu hơn là về sự phủ bởi một cube đơn là: một tập cubes C là một tập cubes không bị phủ bởi cube đơn nếu bất kỳ hai cubes a, b∈C thì a⊄b và b⊄a
Trang 31CHƯƠNG 3: CÁC CÔNG TRÌNH LIÊN
QUAN
3.1 PHƯƠNG PHÁP KARNAUGH MAP (K-MAP)
Phương pháp Karnaugh map được phát minh bởi Edward W Veitch vào năm 1952 và phát triển thêm vào năm 1953 bởi Maurice Karnaugh một kỹ sư viễn thông tại phòng thí nghiệm tính toán Bell Labs của đại học Harvard cho việc tối tiểu biểu thức đại số luận lý Maurice Karnaugh dựa vào tính kết hợp được giữa 2 phần tử (minterm hay implicant) để tìm ra phần tử lớn nhất (phần tử lớn nhất là phần tử chứa nhiều minterms nhất) Từ những phần tử lớn nhất này ông tìm ra tập các phần tử nhỏ nhất phủ kín biểu thức đại số luận lý
Đó chính là biểu thức tối tiểu
Tuy nhiên phương pháp Karnaugh chỉ giải tối đa 6 biến nhập Khi số biến nhập lớn hơn 4 thì biễu diễn biểu thức đại số luận lý rất khó khăn
3.1.1 GIẢI THUẬT KARNAUGH MAP
Bước 1: Chọn một phần tử On-Set (ô hay cell của bảng K-map có giá trị là 1) chưa sẳn
sàng bị phủ bởi một implicant (tế bào)
Bước 2: Tìm tất cả các nhóm lớn nhất của các phần tử có giá trị là 1 và X (giá trị
don’t-care) liền kề với phần tử đó Nên nhớ rằng khái niệm kề có nghĩa rộng hơn là các phần tử thuộc hàng đầu và hàng cuối cùng cột là kề nhau, các phần tử thuộc cột trái và cột phải cùng hàng cũng kề nhau và bốn phần tử nằm ở bốn góc là kề nhau Dạng prime implicants này luôn luôn phủ 2k (k nguyên) phần tử
Lặp lại bước 1 và 2 cho đến khi không còn phần tử On-Set nào chưa bị phủ Kết thúc giai đoạn này ta tìm được tất cả prime implicants
Bước 3: Duyệt lại các phần tử có giá trị 1 trong K-map Nếu nó bị phủ bởi duy nhất một
prime implicant thì prime đó là cần thiết, và nó được đưa vào tập primes lời giải cuối cùng Các phần tử chứa giá trị 1 bị phủ bởi tập primes lời giải không cần thiết phải duyệt lại
Trang 32Bước 4: Nếu những phần tử chứa giá trị 1 còn lại chưa được phủ bởi tập essential prime
implicants thì chọn tập prime implicant có số lượng nhỏ nhất phủ hết tất cảc các phần tử 1 còn lại đưa vào tập lời giải
9 Tuy nhiên Karnaugh đã tối ưu hàm luận lý một cách trực giác rất thuyết phục
9 Với phương pháp này cũng có nhiều tác giả hiện thực thành sản phẩm sử dụng được
và cung cấp mã nguồn với ngôn ngữ lập trình C, C++ hay Java
Trang 33Ví dụ 2: Tối ưu hàm hai biến bằng K-map Cho hàm 2 biến nhập và một biến xuất:
Z = f(A,B) = A’B’+ AB’+ A’B
Ta xây đựng bảng K-map sau:
Bước 1: Chọn ô trên bên phải
Bước 2: Ô trên bên phải bị phủ duy nhất một tế bào B’
Lặp lại lần 1:
Bước 1: Chọn ô dưới bên trái chưa bị phủ
Bước 2: Ô dưới bên trái bị phủ duy nhất một tế bào A’
Kết thúc giai đoạn 1 ta được 2 essential primes
Bước 3: Không còn ô nào chưa bị phủ Æ giải thuật dừng và trả về 2 essential primes là A’ và B’ Vậy sau khi tối tiểu Z = f(A,B) = A’ + B’
3.1.4 CÁC LUẬT ĐƠN GIẢN HÓA CỦA KARNAUGH
9 Các prime implicants không chứa ô có giá trị 0:
9 Các phần tử của prime implicants có thể là hàng hay cột chứ không được là đường chéo
9 Các prime implicants phải có dạng chứa 2k phần tử có giá trị là 1 hay 2
9 Prime implicants không bị chứa bởi prime implicants khác hay nói cách khác prime implicants là tập lớn nhất
9 Mỗi phần tử phải thuộc tối thiểu một prime implicant
9 Mỗi phần tử có thể bị phủ bởi nhiều prime implicants
9 Prime implicant có thể tạo thành từ các ô bìa hay góc của bảng
Trang 343.1.5 ÁP DỤNG PHƯƠNG PHÁP KARNAUGH VỚI MÔ HÌNH ĐỒ THỊ 1
Ta thay khái niệm “phần tử” thành “đỉnh” và “prim implicant” thành “chu trình” và “bảng K-map” thành “đồ thị” Ta có giải thuật tương đương sau:
Bước 1: Tìm đỉnh chưa bị phủ đưa vào đồ thị
Chọn đỉnh chưa bị phủ bởi chu trình nào
Lặp lại bước 1 và 2 cho đến khi không còn đỉnh nào chưa bị phủ Kết thúc giai đoạn này
ta tìm được tất cả các chu trình lớn nhất (tức các prime implicants)
Bước 3: Tìm tất cả các chu trình cần thiết
Duyệt lại các đỉnh chưa bị phủ bởi tập chu trình kết quả Nếu nó bị phủ bởi duy nhất một chu trình thì chu trình đó là cần thiết, và nó được đưa vào tập chu trình lời giải kết quả
Bước 4: Giải đồ thị còn lại
Nếu những đỉnh còn lại chưa được phủ bởi tập chu trình kết quả thì chọn tập chu trình có
số lượng nhỏ nhất phủ hết tất cảc các đỉnh còn lại đưa vào tập kết quả
Ví dụ: Tối ưu hàm hai biến bằng K-map Cho hàm 2 biến nhập và một biến xuất:
Z = f(A,B) = A’B’+ AB’+ A’B
Trang 35Bước 3 lần 1: Chọn đỉnh AB’ Ta nhận thấy đỉnh này bị phủ bởi duy nhất một chu trình AB’ Æ A’B’ Æ AB’ Vậy chu trình này là cần thiết
Bước 3 lần 2: Chọn đỉnh A’B Ta nhận thấy đỉnh này bị phủ bởi duy nhất một chu trình A’B Æ A’B’ Æ A’B Vậy chu trình này là cần thiết
Không còn đỉnh nào chưa bị phủ bởi tập chu trình kết quả Do vậy giải thuật dừng tại đây Vậy Z = f(A,B) = A’ + B’
3.1.6 ÁP DỤNG PHƯƠNG PHÁP KARNAUGH VỚI MÔ HÌNH “CÂY RÚT
GỌN” 1
Ta thay khái niệm “phần tử” thành “nút lá” và “prim implicant” thành “nút gốc” và “bảng K-map” thành “cây đồ thị nhiều gốc” Ta có giải thuật tương đương sau:
Bước 1: Tìm nút lá chưa bị phủ đưa vào đồ thị
Chọn nút lá chưa bị phủ bởi nút gốc nào đã chọn
Bước 2: Tìm tất cả nút gốc
Tìm tất cả các nút gốc chứa nút lá đã chọn ở bước 1 Ta nói nút gốc A chứa nút lá B nếu lấy A làm gốc thì B là nút lá của cây xuất phát từ A Nút gốc là nút phủ đúng 2k (k là số nguyên dương) nút lá và không là nút trung gian của các nút khác, nó chính là prime implicant
Lặp lại bước 1 và 2 cho đến khi không còn nút lá nào chưa bị phủ Kết thúc giai đoạn này
ta tìm được tất cả các nút gốc (tức các prime implicants)
Bước 3: Tìm tất cả các nút gốc cần thiết
Duyệt lại các nút lá chưa bị phủ bởi tập nút gốc kết quả Nếu nó bị phủ bởi duy nhất một nút gốc thì nút gốc đó là cần thiết, và nó được đưa vào tập nút gốc lời giải kết quả
Bước 4: Giải cây đồ thị nhiều gốc còn lại
Nếu những nút lá còn lại chưa được phủ bởi tập nút gốc kết quả thì chọn tập nút gốc có số lượng nhỏ nhất phủ hết tất cảc các nút lá còn lại đưa vào tập kết quả
Ví dụ: Tối ưu hàm hai biến bằng K-map Cho hàm 2 biến nhập và một biến xuất:
Z = f(A,B) = A’B’+ AB’+ A’B
Giải:
1 Mô hình “Cây rút gọn” được trình bày trong phụ lục 2
Trang 36Bước 1 lần 1: Chọn nút lá AB’
Bước 2 lần 1: Nút lá AB’ kết hợp với nút lá A’B’ ta có nút gốc B’
Bước 1 lần 2: Chọn nút lá A’B chưa phủ bởi nút gốc nào
Bước 2 lần 2: Nút lá A’B kết hợp với nút lá A’B’ Ta có nút gốc A’
Không còn nút lá nào chưa phủ, ta sang bước 3
Bước 3 lần 1: Chọn nút lá AB’ Ta nhận thấy nút lá này bị phủ bởi duy nhất một nút gốc B’ Vậy nút gốc B’ là cần thiết
Bước 3 lần 2: Chọn nút lá A’B Ta nhận thấy nút lá này bị phủ bởi duy nhất một nút gốc A’ Vậy nút gốc A’ là cần thiết
Không còn nút lá nào chưa bị phủ bởi tập nút gốc kết quả Do vậy giải thuật dừng tại đây Vậy Z = f(A,B) = A’ + B’
Nhận xét: Về cách mô hình hóa giải thuật Bảng Karnaugh bằng đồ thị và cây nhiều gốc
rút gọn
9 Với cách thể hiện giải thuật bằng đồ thị và cây nhiều gốc rút gọn ta có thể giải bài toán theo cách giải bảng Karnaugh với số biến lớn hơn và cũng tận dụng được nhiều thành quả từ lý thuyết đồ thị
9 Với mô hình này ta không cần thiết xây dựng đầy đủ 2n phần tử (với n là số biến nhập) như bảng Karnaugh Điều này cũng giúp ta giảm độ phức tạp cho bài toán nhỏ
9 Áp dụng lý thuyết tìm chu trình của lý thuyết đồ thị và lý thuyết tìm gốc của cây đồ thị ta có thể giải bài toán trên theo mô hình toán đồ thị hay cây đa gốc
Trang 373.2 PHƯƠNG PHÁP QUINE-MCCLUSKEY
Giải thuật Quine-McCluskey (phương pháp prime implicants) là một phương pháp sử dụng cho việc tối ưu hàm luận lý được phát triển bởi Willard Van Orman Quine và Edward J McCluskey vào năm 1952 Phương pháp Quine-McCluskey là giải thuật chính xác tìm ra tập phủ tối thiểu của hàm đại số luận lý dạng tổng các tích
3.2.1 GIẢI THUẬT
Trong giải thuật Quine-McCluskey có 4 bước chính:
Bước 1: Tạo tất cả các prime implicants
Bước này bao gồm 02 bước sau:
Bước 1.1: Tìm tại cột 1 với ON-Set và DC-Set minterm đã sắp xếp theo thứ tự bởi việc nhóm theo số lượng giá trị 1
Bước 1.2: Áp dụng lý thuyết hợp nhất So sánh cách phần tử của nhóm có N giá trị 1 với nhóm có N+1 giá trị 1 Khác nhau bởi một biến nhập tương ứng thì hợp nhất lại Loại biến hợp nhất này và đạt kết quả vào cột kế tiếp Nếu phần tử bị tổ hợp thì đánh dấu check, nếu phần tử nào không thể tổ hợp lại được thì đánh dấu sao Các phần tử đánh dấu sao là các prime implicants
Lặp lại bước 1.1 và 1.2 cho đến khi không còn tổ hợp nào được tạo ra
Bước 2: Xây dựng bảng các prime implicants phủ tất c các minterms Bảng này là ma
trận hàng cột, với các cột là các prime implicants và các hàng là các minterms Giá trị trong ma trận là 0 hay 1
Bước 3: Giảm kích thước bảng prime implicants
a Loại bỏ Essential Prime implicants
b Thực hiện row dominance
c Thực hiện column dominance
Bước 4: Giải bảng prime implicants còn lại bằng phương pháp Petrick
Trang 38Phương pháp Petrick là liệt kê tất cả các tập phủ và tìm tập phủ nhỏ nhất Đây là bài
Trong bước 3: Việc giảm kích thước của bảng Trong bước này có ba bước nhỏ, ba bước
nhỏ này lặp cho đến khi bảng không thể giảm kích thước được nữa Cuối bước này bảng
có thể là rỗng (i) hay không rỗng (ii)
(i) Nếu bảng được giảm về rỗng thì các essential prime implicants được loại ra là lời giải cho tập phủ tối thiểu của hàm luận lý
(ii) Nếu sau khi bước 3 bảng không rỗng thì bảng sẽ tiếp tục được giải ở bước 4
Trong bước 4: Bảng còn lại có thể được giải theo phương pháp Petrick hay phương
pháp Branch and Bound của bài toán set covering Quine-McCluskey chỉ quan tâm đến
phương pháp Petrick Phương pháp Branch and Bound tạo ra một cấu trúc cây lời giải phân nhánh rất lớn (phương pháp branch and bound có nhiều giải thuật khác nhau như: Branching, Pruning with an independent set, Pruning with the left-hand side lower bound, Pruning with the limit lower bound, Pruning with a log-approximation, Pruning with a LPR) và các kỹ thuật Cutting Plane được đề cập ở đề tài này
Cột trội hơn (Column Dominance)
Định nghĩa: Ta nói cột A là cột trội hơn cột B nếu cột A phủ hết tất cả ON-SET
minterms mà cột B phủ
Ví dụ: Cho hàm luận lý gồm 4 biến nhập: có 5 prime implicants và có 6 ON-SET
minters, mỗi prime phủ 2 ON-SET minterms như bảng sau:
Trang 39A’C’D’ A’BC’ BC’D ABD ACD
Trước tiên ta nhận thấy rằng có 2 primes là essential primes: A’C’D’ phủ minterm 0 và
ACD phủ minterm 11 Những implicant này phải đưa vào tập kết quả Còn lại 3 primes
implicants Chúng ta phải chọn một tập con của chúng các ON-SET minterms còn lại
*A’C’D’ A’BC’ BC’D ABD *ACD
(0,4) (4,5) (5,13) (13,15) (11,15)
5 X X
Chúng ta bỏ hai cột A’C’D’ và ACD đánh dấu hoa thị lên nó để chỉ ra đây là các essential
primes Các hàng giao với các cột này cũng bị loại bỏ bởi vì minterm đã được phủ
Tại thời điểm này, prime implicant BC’D phủ 2 ON-set minterms còn lại ( và ) Tuy
nhiên, prime implicant A’BC’ phủ chỉ một ( ), cũng như ABD phủ một ( ) Do đó
chúng ta có thể dùng prime BC’D thay cho 2 primes A’BC và ABD
Ta có cột BC’D là cột trội hơn cột A’BC và BC’D cũng là cột trội hơn cột ABD Các prime implicants bị dominated có thể bị loại bỏ và chỉ giữ lại cột BC’D
*A’C’D’ BC’D *ACD
(0,4) (5,13) (11,15)
5 X
Hàng trội hơn (Row Dominance)
Định nghĩa: Ta nói hàng A là hàng trội hơn hàng B nếu hàng A bị phủ bởi các primes
implicants mà các prime implicants này là tập con của của tập prime implicants phủ hàng
B
Ví dụ: Cho hàm luận lý 4 biến nhập có 4 prime implicants: A’B’, C’D, A’D và A’C, và 5
ON-SET minterms Không implicant nào trong chúng là essential prime implicant Chúng
ta phải chọn tập con của chúng phủ hết 5 ON-SET minterms
A’B’ C’D A’D A’C
Trang 40Chú ý rằng hàng 3 được chứa bởi 3 cột: A’B’, A’D và A’C Hàng 2 được phủ bởi 2 cột:
A’B’ và A’C, và hàng 7 cũng được phủ bởi 2 cột A’D và A’C Trong trường hợp này, bất
kỳ prime implicant nào chứa hàng 2 thì cũng chứa hàng 3 Tương tự, bất kỳ prime
implicant nào chứa hàng 7 cũng chứa hàng 3 Do đó, chúng ta có thể bỏ qua việc phủ
hàng 3: nó luôn luôn bị khi hàng 2 hoặc hàng 7 bị phủ
Nhìn vào điều này, chú ý rằng hàng 3 là hàng trội hơn hàng 2, và hàng 3 là hàng trội hơn hàng 7 Trạng thái này là ngược với cột trội hơn: chúng ta loại ra hàng trội hơn (hàng bị phủ bởi tập lớn hơn) Trong trường hợp này, hàng 3 có thể bị loại ra, nó không cần thiết
để xem xét nữa
Tương tự, hàng 1 là hàng trội hơn hàng 5 Do đó, hàng 1 có thể bị loại ra Điều này cũng cho thấy: hàng 1 sẽ vẫn bị phủ khi hàng 5 được phủ, vì bất kỳ prime implicant nào phủ hàng 5 sẽ cũng phủ hàng 1
3.2.2 NHẬN XÉT
• Trong giải thuật của Quine-McCluskey yêu cầu phải sinh ra tất cả các minterms của hàm luận lý cần tối ưu Nếu số minterm lên đến 2120 thì điều này sẽ không thực hiện được trên máy tính với công nghệ như hiện nay
• Việc sinh ra các prime implicant dựa vào việc sinh ra tất cả minterms điều này cũng dẫn đến sự bế tắt trong việc tạo ra các prime implicants
• Từ việc sinh ra các minterms và các prime implicants không thành thì bảng prime implicant cũng khó mà thành lập với số biến nhập lớn (khoảng 100)
• Việc giảm kích thước của bảng prime implicant cũng không kém phần phức tạp Xác định được minterm chỉ bị phủ bởi một implicant là bài toán rất lớn theo cách tìm này Việc tìm hàng và cột trội hơn cũng thực hiện trên số phép toán rất lớn
• Chính vì vậy mà Quine-McCluskey không thể giải bài toán với số biến nhập quá lớn (khoảng 10 biến nhập là tối đa)
• Tuy vậy Quine-McCluskey cũng đã đóng góp một phần không nhỏ vào việc xây dựng giải thuật tìm tập phủ nhỏ nhất của hàm luận lý
• Với phương pháp này cũng có nhiều tác giả hiện thực thành sản phẩm sử dụng được và mã nguồn mở với ngôn ngữ lập trình C, C++ hay Java
3.2.3 VÍ DỤ
Ví dụ 1: Về giải thuật Quine-McCluskey Cho hàm F(A, B, C, D) như sau: