Bài giảng kỹ thuật vi xử lý
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG ***** PHẠM HOÀNG DUY BÀI GIẢNG KỸ THUẬT VI XỬ LÝ HÀ NỘI 2011 3 LỜI NÓI ĐẦU Các bộ vi xử lý được sử dụng phổ biến trong các hệ thống số như hệ thống thông tin liên lạc, hệ thống điều khiển . Tài liệu này tập trung giới thiệu bộ vi xử lý Intel 8086 và các ghép nối tiêu biểu để tạo nên hệ vi xử lý. Hệ vi xử lý dựa trên Intel 8086 tương đối đơn giản và bổ ích cho việc tìm hiểu cũng như phát triển các hệ vi xử lý phức tạp. Cấu trúc của tài liệu như sau. Chương 1 giới thiệu các khái niệm tổng quan của hệ vi xử lý và các bộ phận căn bản cấu thành hệ vi xử lý nói chung. Chương này cũng tóm tắt quá trình phát triển và phân loại các bộ vi xử lý đến nay. Chương 2 trình bày chi tiết về vi xử lý Intel 8086 bao gồm sơ đồ khối và cách tổ chức bộ nhớ. Ngoài ra, chương này giới thiệu tập lệnh x86 và quá trình thực hiện lệnh. Chương 3 cung cấp các kiến thức căn bản để lập trình với vi xử lý 8086 bằng cách giới thiệu các cấu trúc chương trình và các cấu trúc rẽ nhánh và lặp tiêu biểu kết hợp với các ví dụ. Chương 4 tập trung giới thiệu cách thức ghép nối vi xử lý 8086 với các thiết bị khác để tạo thành hệ vi xử lý căn bản. Chương này trình bày chu trình đọc/ghi của vi xử lý 8086. Đây là cơ sở để tiến hành ghép nối dữ liệu với các thiết bị khác như bộ nhớ hay các thiết bị vào/ra khác. Chương này giới thiệu cơ chế truyền thông nối tiếp và cách thức ghép nối với vi xử lý 8086. Chương 5 cung cấp các kiến thức căn bản về các kỹ thuật trao đổi dữ liệu với các thiết bị ghép nối với hệ vi xử lý nói chung bao gồm vào/ra thăm dò (lập trình), vào/ra sử dụng ngắt và vào/ra trực tiếp bộ nhớ. Trong ba phương pháp, vào/ra trực tiếp bộ nhớ cho phép trao đổi khối lượng dữ liệu lớn với tốc độ cao và cần có vi mạch đặc biệt. Chương này cũng giới thiệu vi mạch trợ giúp cho các phương pháp vào ra như vi mạch điều khiển ngắt, vi mạch điều khiển vào ra trực tiếp bộ nhớ. Chương 6 trình bày sơ bộ các khái niệm về các hệ vi điều khiển (hay hệ vi xử lý trên một vi mạch). Chương này còn cung cấp các thông tin căn bản về hệ vi điều khiển Intel 8051 và một số ứng dụng. Chương 7, chương cuối cùng, giới thiệu một số bộ vi xử lý tiên tiến của Sun Microsystems và Intel dựa trên kiến trúc IA-32 và IA-64. 4 Tài liệu được biên soạn dựa trên cuốn “Kỹ thuật Vi xử lý” của tác giả Văn Thế Minh, các tài liệu tham khảo khác, và dựa trên trao đổi kinh nghiệm giảng dạy với các đồng nghiệp và phản hồi của sinh viên tại Học viện Công nghệ Bưu chính Viễn thông. Tài liệu có thể được dùng làm tài liệu học tập cho sinh viên đại học, cao đẳng ngành công nghệ thông tin. Trong quá trình biên soạn, dù đã có nhiều cố gắng song không tránh khỏi thiếu sót, nhóm tác giả mong nhận được các góp ý cho các thiếu sót cũng như ý kiến cập nhật và hoàn thiện nội dung của tài liệu. Hà nội, 2011 Tác giả MỤC LỤC 5 MỤC LỤC LỜI NÓI ĐẦU . 3 Chương 1. TỔNG QUAN VỀ VI XỬ LÝ VÀ HỆ VI XỬ LÝ 10 1. GIỚI THIỆU VỀ VI XỬ LÍ 10 2. HỆ VI XỬ LÍ 11 3. CÁC ĐẶC ĐIỂM CẤU TRÚC CỦA VI XỬ LÍ 13 3.1 Cấu trúc căn bản . 13 3.1.1 Các thanh ghi 13 3.1.2 Đơn vị xử lý số học và lô-gíc ALU 15 3.1.3 Đơn vị điều khiển CU 15 3.1.4 Kiến trúc RISC và CISC 16 4. LỊCH SỬ PHÁT TRIỂN VÀ PHÂN LOẠI CÁC BỘ VI XỬ LÍ . 17 4.1 Giai đoạn 1971-1973 17 4.2 Giai đoạn 1974-1977 17 4.3 Giai đoạn 1978-1982 18 4.4 Giai đoạn 1983-1999 18 4.5 Giai đoạn 2000-2006 19 4.6 Giai đoạn 2007-nay . 20 Chương 2. BỘ XỬ LÝ INTEL 8086 . 21 1. CẤU TRÚC BÊN TRONG CỦA 8086 21 1.1 Sơ đồ khối . 21 1.1.1 Đơn vị giao tiếp buýt và thực thi EU 22 1.1.2 Các thanh ghi 22 1.2 Phân đoạn bộ nhớ của 8086 25 2. BỘ ĐỒNG XỬ LÍ TOÁN HỌC 8087 27 3. TẬP LỆNH CỦA 8086 . 28 3.1 Khái niệm lệnh, mã hoá lệnh và quá trình thực hiện lệnh 28 3.2 Các chế độ địa chỉ của 8086 . 29 MỤC LỤC 6 3.2.1 Chế độ địa chỉ thanh ghi . 30 3.2.2 Chế độ địa chỉ tức thì 30 3.2.3 Chế độ địa chỉ trực tiếp . 30 3.2.4 Chế độ gián tiếp qua thanh ghi . 31 3.2.5 Chế độ địa chỉ tương đối cơ sở . 31 3.2.6 Chế độ địa chỉ tương đối chỉ số cơ sở . 32 3.2.7 Phương pháp bỏ ngầm định thanh ghi đoạn . 32 3.3 Tập lệnh của 8086 . 33 3.3.1 Các lệnh trao đổi dữ liệu. . 33 3.3.2 Các lệnh tính toán số học và lô gíc. 35 3.3.3 Điều khiển, rẽ nhánh và lặp. . 38 3.3.4 Điều khiển vi xử lý. . 39 4. NGẮT VÀ XỬ LÍ NGẮT TRONG 8086 . 40 4.1 Sự cần thiết phải ngắt CPU . 40 4.2 Các loại ngắt trong hệ 8086 40 4.3 Đáp ứng của CPU khi có yêu cầu ngắt . 41 4.4 Xử lý ưu tiên khi ngắt . 43 Chương 3. LẬP TRÌNH HỢP NGỮ VỚI 8086 . 45 1. GIỚI THIỆU KHUNG CỦA CHƯƠNG TRÌNH HỢP NGỮ 45 1.1 Cú pháp của chương trình hợp ngữ . 45 1.2 Dữ liệu cho chương trình 46 1.2.1 Biến và hằng 47 1.2.2 Khung của một chương trình hợp ngữ 50 2. CÁCH TẠO VÀ CHẠY CHƯƠNG TRÌNH HỢP NGỮ . 58 3. CÁC CẤU TRÚC LẬP TRÌNH CƠ BẢN . 59 3.1 Cấu trúc tuần tự . 60 3.1.1 Cấu trúc IF - THEN 60 3.1.2 Cấu trúc IF - THEN - ELSE 61 3.1.3 Cấu trúc CASE 62 3.1.4 Cấu trúc lặp FOR - DO . 63 3.1.5 Cấu trúc lặp WHILE - DO 65 3.1.6 Cấu trúc lặp REPEAT - UNTIL 65 MỤC LỤC 7 4. MỘT SỐ VÍ DỤ . 66 4.1 Ví dụ 1 67 4.2 Ví dụ 2 68 4.3 Ví dụ 3 70 4.4 Ví dụ 4 72 4.5 Ví dụ 5 73 Chương 4. PHỐI GHÉP VI XỬ LÍ VỚI BỘ NHỚ VÀ CÁC THIẾT BỊ VÀO/RA . 75 1. CÁC TÍN HIỆU CỦA VI XỬ LÍ VÀ CÁC MẠCH PHỤ TRỢ . 75 1.1 Các tín hiệu của 8086 75 1.2 Phân kênh để tách thông tin và việc đệm cho các buýt 79 1.3 Mạch tạo xung nhịp 8284. 80 1.4 Mạch điều khiển buýt 8288 82 1.5 Biểu đồ thời gian của các lệnh ghi/đọc . 83 2. PHỐI GHÉP VI XỬ LÍ VỚI BỘ NHỚ 86 2.1 Giới thiệu bộ nhớ 86 2.2 Giải mã địa chỉ cho bộ nhớ . 88 2.2.1 Giới thiệu 88 2.2.2 Thực hiện mạch giải mã bằng các mạch lô-gíc đơn giản . 90 2.2.3 Thực hiện bộ giải mã dùng mạch giải mã tích hợp . 91 2.2.4 Thực hiện bộ giải mã dùng PROM . 93 3. PHỐI GHÉP VI XỬ LÍ VỚI THIẾT BỊ VÀO RA . 94 3.1 Giới thiệu về thiết bị vào/ra 94 3.2 Giải mã địa chỉ thiết bị vào ra . 95 3.2.1 Giới thiệu 95 3.2.2 Các mạch cổng đơn giản . 96 4. GIỚI THIỆU MỘT SỐ VI MẠCH HỖ TRỢ VÀO RA . 98 4.1 Ghép nối song song dùng 8255A 98 4.1.1 Giới thiệu 98 4.1.2 Lập trình 8255A 102 4.2 Truyền thông nối tiếp 104 MỤC LỤC 8 4.2.1 Mạch USART 8251A . 105 Chương 5. TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP VÀO RA DỮ LIỆU . 112 1. GIỚI THIỆU . 112 2. VÀO/RA BẰNG PHƯƠNG PHÁP THĂM DÒ 113 3. VÀO/RA BẰNG NGẮT . 114 3.1 Giới thiệu 114 3.2 Bộ xử lý ngắt ưu tiên 8259 . 114 3.2.1 Các khối chức năng chính của 8259A 115 3.2.2 Các tín hiệu của 8259A . 116 3.2.3 Lập trình cho PIC 8259A 117 4. VÀO/RA BẰNG TRUY NHẬP TRỰC TIẾP BỘ NHỚ . 126 4.1 Khái niệm về phương pháp truy nhập trực tiếp vào bộ nhớ . 126 4.2 Các phương pháp trao đổi dữ liệu . 128 4.2.1 Trao đổi cả một mảng dữ liệu . 128 4.2.2 Treo CPU để trao đổi từng byte. . 129 4.2.3 Tận dụng thời gian CPU không dùng buýt để trao đổi dữ liệu. 129 4.3 Bộ điều khiển truy nhập trực tiếp vào bộ nhớ Intel 8237A 129 4.3.1 Giới thiệu 129 4.3.2 Các tín hiệu của 8237A -5 . 130 4.3.3 Các thanh ghi bên trong của DMAC 8237A . 132 4.3.4 Các lệnh đặc biệt cho DMAC 8237A 137 4.3.5 Lập trình cho các thanh ghi địa chỉ và thanh ghi số đếm: 137 Chương 6. CÁC BỘ VI ĐIỀU KHIỂN 141 1. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN VÀ CÁC HỆ NHÚNG 141 1.1 Giới thiệu 141 1.2 Các kiểu vi điều khiển 141 2. HỌ VI ĐIỀU KHIỂN Intel 8051 142 2.1 Sơ đồ khối . 143 2.2 Các thanh ghi 145 2.3 Tập lệnh 146 3. GIỚI THIỆU MỘT SỐ ỨNG DỤNG TIÊU BIỂU CỦA VI ĐIỀU KHIỂN . 147 MỤC LỤC 9 3.1 Chuyển đổi số tương tự (D/A) 147 3.2 Chuyến đổi tương tự số (A/D) 148 Chương 7. GIỚI THIỆU MỘT SỐ VI XỬ LÍ TIÊN TIẾN . 151 1. CÁC VI XỬ LÍ TIÊN TIẾN DỰA TRÊN KIẾN TRÚC INTEL IA-32 151 1.1 Giới thiệu IA-32 151 1.2 Các vi xử lý hỗ trợ IA-32 154 2. CÁC VI XỬ LÍ TIÊN TIẾN DỰA TRÊN KIẾN TRÚC INTEL IA-64 156 3. CÁC VI XỬ LÍ TIÊN TIẾN CỦA SUN MICROSYSTEMS 158 TÀI LIỆU THAM KHẢO 161 CHƯƠNG 1. TỔNG QUAN VỀ VI XỬ LÍ VÀ HỆ VI XỬ LÍ 10 Chương 1. TỔNG QUAN VỀ VI XỬ LÝ VÀ HỆ VI XỬ LÝ 1. GIỚI THIỆU VỀ VI XỬ LÍ Một máy tính thông thường bao gồm các khối chức năng cơ bản như: khối xử lí trung tâm CPU (Central Processing Unit), bộ nhớ, và khối phối ghép với thiết bị ngoại vi (I/O, input/output). Tuỳ theo quy mô, độ phức tạp hiệu năng của các khối chức năng kể trên mà người ta phân các máy tính điện tử đã và đang sử dụng ra thành các loại sau: Máy tính lớn (Mainframe) là loại máy tính được thiết kế để giải các bài toán lớn với tốc độ nhanh. Máy tính này thường làm việc với số liệu từ 64 bít hoặc lớn hơn nữa và được trang bị nhiều bộ xử lý tốc độ cao và bộ nhớ rất lớn. Chính vì vậy máy tính cũng lớn về kích thước vật lý. Chúng thường được dùng để tính toán điều khiển các hệ thống thiết bị dùng trong quân sự hoặc các hệ thống máy móc của chương trình nghiên cứu vũ trụ, để xử lý các thông tin trong ngành ngân hàng, ngành khí tượng, các công ty bảo hiểm . Máy tính con (Minicomputer) là một dạng thu nhỏ về kích thước cũng như về tính năng của máy tính lớn. Nó ra đời nhằm thoả mãn các nhu cầu sử dụng máy tính cho các ứng dụng vừa phải mà nếu dùng máy tính lớn vào đó thì sẽ gây lãng phí. Máy tính con thường được dùng cho các tính toán khoa học kỹ thuật, gia công dữ liệu quy mô nhỏ hay để điều khiển quy trình công nghệ. Máy vi tính (Microcomputer) là loại máy tính rất thông dụng hiện nay. Một máy vi tính có thể là một bộ vi điều khiển (microcontroller), một máy vi tính trong một vi mạch (one-chip microcomputer), và một hệ vi xử lí có khả năng làm việc với số liệu có độ dài 1 bít, 4 bít, 8 bít, 16 bít hoặc lớn hơn. Hiện nay một số máy vi tính có tính năng có thể so sánh được với máy tính con, làm việc với số liệu có độ dài từ là 32 bít (thậm chí là 64 bít). Ranh giới để phân chia giữa máy vi tính và máy tính con chính vì thế ngày càng không rõ nét. Các bộ vi xử lý hiện có tên thị trường thường được xếp theo các họ phụ thuộc vào các nhà sản xuất và chúng rất đa dạng về chủng loại. Các nhà sản xuất vi xử lý nổi tiếng có thể kể tới Intel với các sản phẩm x86, Motorola với 680xx, Sun Microsystems với SPARC. Tính đến thời điểm hiện nay các chương trình viết cho tập lệnh x86 của Intel chiếm tỷ lệ áp đảo trong môi trường máy vi tính.