Các bộ vi xử lý đóng vai trò quan trọng trong các hệ thống số và chúng được sử dụng
trong rất nhiều ứng dụng như các hệ thống điều khiển, hệ thống thông tin liên lạc. Tài liệu
này giới thiệu các khái niệm căn bản của hệ vi xử lý và tập trung trình bày vi xử lý Intel 8086
và ghép nối tiêu biểu để tạo nên hệ vi xử lý 8086, tiền than của các hệ vi xử lý x86 sau này.
Các kiến thức thu nhận được từ việc xây dựng hệ vi xử lý 8086 cũng sẽ rất bổ ích cho việc
phát triển các hệ vi xử lý phức tạp hơn cũng như các hệ thống nhúng.
136 trang |
Chia sẻ: longpd | Lượt xem: 4804 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Kĩ thuật vi xử lí, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
-1-
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 06-2010
-2-
Lời nói đầu
Các bộ vi xử lý đóng vai trò quan trọng trong các hệ thống số và chúng được sử dụng
trong rất nhiều ứng dụng như các hệ thống điều khiển, hệ thống thông tin liên lạc. Tài liệu
này giới thiệu các khái niệm căn bản của hệ vi xử lý và tập trung trình bày vi xử lý Intel 8086
và ghép nối tiêu biểu để tạo nên hệ vi xử lý 8086, tiền than của các hệ vi xử lý x86 sau này.
Các kiến thức thu nhận được từ việc xây dựng hệ vi xử lý 8086 cũng sẽ rất bổ ích cho việc
phát triển các hệ vi xử lý phức tạp hơn cũng như các hệ thống nhúng.
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ớ.
-3-
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.
Tài liệu được biên soạn dựa trên tham khảo các tài liệu đặc biệt là cuốn “Kỹ thuật Vi
xử lý” của tác giả Văn Thế Minh 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, 06/2010
Tác giả
-4-
Mục lục
Chương I. Tổng quan về vi xử lý và hệ vi xử lý ................................................................. 6
I.1 Giới thiệu về vi xử lý ................................................................................................................. 6
I.2 Hệ vi xử lý ................................................................................................................................. 7
I.3 Các đặc điểm cấu trúc của vi xử lý ............................................................................................ 9
I.3.1 Cấu trúc căn bản ................................................................................................................... 9
I.3.2 Kiến trúc RISC và CISC ...................................................................................................... 11
I.3.3 Các đặc điểm ....................................................................................................................... 12
I.4 Lịch sử phát triển và phân loại các bộ vi xử lý ........................................................................ 12
I.4.1 Giai đoạn 1971-1973 .......................................................................................................... 12
I.4.2 Giai đoạn 1974-1977 .......................................................................................................... 13
I.4.3 Giai đoạn 1978-1982 .......................................................................................................... 13
I.4.4 Giai đoạn 1983-1999 .......................................................................................................... 13
I.4.5 Giai đoạn 2000-2006 .......................................................................................................... 14
I.4.6 Giai đoạn 2007-nay ............................................................................................................. 15
Chương II. Bộ vi xử lý Intel 8086 ....................................................................................... 16
II.1 Cấu trúc bên trong của 8086/8088 ........................................................................................... 16
II.1.1 Sơ đồ khối ............................................................................................................................ 16
II.1.2 Các đơn vị chức năng: BIU, EU, các thanh ghi và buýt trong ............................................ 17
II.1.3 Phân đoạn bộ nhớ của 8086/8088 ....................................................................................... 20
II.2 Bộ đồng xử lý toán học 8087 ................................................................................................... 21
II.3 Tập lệnh của 8086/8088 ........................................................................................................... 22
II.3.1 Khái niệm lệnh, mã hoá lệnh và quá trình thực hiện lệnh ................................................... 22
II.3.2 Các chế độ địa chỉ của 8086/8088 ...................................................................................... 23
II.3.3 Tập lệnh của 8086/8088 ...................................................................................................... 27
II.4 Ngắt và xử lý ngắt trong 8086/8088 ......................................................................................... 33
II.4.1 Sự cần thiết phải ngắt CPU ................................................................................................. 33
II.4.2 Các loại ngắt trong hệ 8088 ................................................................................................ 33
II.4.3 Đáp ứng của CPU khi có yêu cầu ngắt ............................................................................... 34
II.4.4 Xử lý ưu tiên khi ngắt .......................................................................................................... 36
Chương III. Lập trình hợp ngữ với 8086/8088 .................................................................... 37
III.1 Giới thiệu khung của chương trình hợp ngữ ............................................................................ 37
III.1.1 Cú pháp của chương trình hợp ngữ .................................................................................... 37
III.1.2 Dữ liệu cho chương trình .................................................................................................... 38
III.2 Cách tạo và chạy chương trình hợp ngữ................................................................................... 48
III.3 Các cấu trúc lập trình cơ bản .................................................................................................... 49
III.4 Giới thiệu một số chương trình cụ thể ...................................................................................... 55
III.4.1 Ví dụ 1 ................................................................................................................................. 56
III.4.2 Ví dụ 2 ................................................................................................................................. 56
III.4.3 Ví dụ 3 ................................................................................................................................. 58
III.4.4 Ví dụ 4 ................................................................................................................................. 60
III.4.5 Ví dụ 5 ................................................................................................................................. 61
Chương IV. Phối ghép vi xử lý với bộ nhớ và các thiết bị vào/ra ...................................... 62
IV.1 Các tín hiệu của vi xử lý và các mạch phụ trợ ......................................................................... 62
IV.1.1 Các tín hiệu của 8086/8088................................................................................................. 62
IV.1.2 Phân kênh để tách thông tin và việc đệm cho các buýt ....................................................... 66
IV.1.3 Mạch tạo xung nhịp 8284. ................................................................................................... 67
IV.1.4 Mạch điều khiển buýt 8288 ................................................................................................. 68
-5-
IV.1.5 Biểu đồ thời gian của các lệnh ghi/đọc ............................................................................... 70
IV.2 Phối ghép vi xử lý với bộ nhớ .................................................................................................. 72
IV.2.1 Giới thiệu bộ nhớ ................................................................................................................ 72
IV.2.2 Giải mã địa chỉ cho bộ nhớ ................................................................................................. 74
IV.3 Phối ghép vi xử lý với thiết bị vào ra ....................................................................................... 79
IV.3.1 Giới thiệu về thiết bị vào/ra................................................................................................. 79
IV.3.2 Giải mã địa chỉ thiết bị vào ra ............................................................................................ 80
IV.4 Giới thiệu một số vi mạch hỗ trợ vào ra ................................................................................... 82
IV.4.1 Ghép nối song song dùng 8255A ......................................................................................... 83
IV.4.2 Truyền thông nối tiếp dùng 8251 ........................................................................................ 87
Chương V. Tổng quan về các phương pháp vào ra dữ liệu ............................................. 94
V.1 Giới thiệu ................................................................................................................................. 94
V.2 Vào/ra bằng phương pháp thăm dò .......................................................................................... 95
V.3 Vào/ra bằng ngắt ...................................................................................................................... 96
V.3.1 Giới thiệu............................................................................................................................. 96
V.3.2 Bộ xử lý ngắt ưu tiên 8259 .................................................................................................. 96
V.4 Vào/ra bằng truy nhập trực tiếp bộ nhớ (Direct memory Access) ......................................... 107
V.4.1 Khái niệm về phương pháp truy nhập trực tiếp vào bộ nhớ .............................................. 107
V.4.2 Các phương pháp trao đổi dữ liệu .................................................................................... 109
V.4.3 Bộ điều khiển truy nhập trực tiếp vào bộ nhớ Intel 8237A ................................................ 110
Chương VI. Các bộ vi điều khiển ....................................................................................... 121
VI.1 Giới thiệu về vi điều khiển và các hệ nhúng .......................................................................... 121
VI.1.1 Giới thiệu........................................................................................................................... 121
VI.1.2 Các kiểu vi điều khiển ....................................................................................................... 121
VI.2 Họ vi điều khiển Intel 8051 .................................................................................................... 122
VI.2.1 Sơ đồ khối .......................................................................................................................... 123
VI.2.2 Các thanh ghi .................................................................................................................... 124
VI.2.3 Tập lệnh ............................................................................................................................. 125
VI.3 Giới thiệu một số ứng dụng tiêu biểu của vi điều khiển ......................................................... 125
VI.3.1 Chuyển đổi số tương tự (D/A) ........................................................................................... 126
VI.3.2 Chuyến đổi tương tự số (A/D) ........................................................................................... 127
Chương VII. Giới thiệu một số vi xử lý tiên tiến ................................................................ 129
VII.1 Các vi xử lý tiên tiến dựa trên kiến trúc Intel IA-32 .............................................................. 129
VII.1.1 Giới thiệu IA-32 ................................................................................................................ 129
VII.1.2 Các vi xử lý hỗ trợ IA-32 ................................................................................................... 131
VII.2 Các vi xử lý tiên tiến dựa trên kiến trúc Intel IA-64 .............................................................. 132
VII.3 Các vi xử lý tiên tiến của Sun Microsystems ......................................................................... 134
Tài liệu tham khảo .................................................................................................................. 136
Chương I. Tổng quan về vi xử lý và hệ vi xử lý
I.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. . . Loại máy lớn nhất trong
các máy lớn được gọi là supercomputer (như loại máy Y-MP/832 của Cray).
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ệ. Tiêu biểu cho nhóm này là loại máy VAX 6360 của Digital Equipment
Corporation và MV/8000II của Data genaral.
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.
Chương I .Tổng quan về vi xử lý và hệ vi xử lý
-7-
I.2 Hệ vi xử lý
Bộ vi xử lý là một thành phần rất cơ bản, không thiếu được để tạo nên máy vi tính.
Trong thực tế bộ vi xử lý còn phải có thể kết hợp thêm với các bộ phận điện tử khác như bộ
nhớ và bộ phối ghép vào/ra để tạo nên một hệ vi xử lý hoàn chỉnh. Cần lưu ý rằng, để chỉ một
hệ thống có cấu trúc như trên, thuật ngữ “hệ vi xử lý” mang ý nghĩa tổng quát hơn so với
thuật ngữ “máy vi tính”, vì máy vi tính chỉ là một ứng dụng cụ thể cảu hệ vi xử lý. Hình I-1
giới thiệu sơ đồ khối tổng quát của một hệ vi xử lý.
Hình I-1. Sơ đồ khối của hệ vi xử lý
Trong sơ đồ này ta thấy rõ các khối chức năng chính của hệ vi xử lý gồm:
Khối xử lý trung tâm (Central Processing unit, CPU)
Bộ nhớ bán dẫn (ROM-RAM)
Khối phối ghép với các thiết bị ngoại vi (Input/Output - I/O)
Các buýt truyền thông tin.
Ba khối chức năng đầu liên hệ với nhau thông qua qập các đường day để truyền tín hiệu
gọi chung là Buýt hệ thống. Buýt hệ thống bao gồm 3 buýt thành phần ứng với các tín hiệu
địa chỉ, dữ liệu và điều khiển ta có buýt địa chỉ, buýt dữ liệu và buýt điều khiển.
CPU đóng vai trò chủ đạo trong hệ vi xử lý. Đây là một mạch vi điện tử có độ tích hợp
rất cao. Khi hoạt động, CPU đọc mã lệnh được ghi dưới dạng các bít 0 và bít 1 từ bộ nhớ, sau
đó sẽ giải mã các lệnh này thành các dãy xung điều khiển ứng với các thao tác trong lệnh để
điều khiển các khối khác thực hiện từng bước các thao tác đó. Để làm được việc này bên
trong CPU có thanh ghi dùng để chứa địa chỉ của lệnh sắp thực hiện gọi là thanh ghi con trỏ
lệnh (Instruction Pointer, IP) hoặc bộ đếm chương trình (Program Counter, PC), một số
thanh ghi đa năng khác cùng bộ tính toán số học và lô-gíc (Arithmetic Logic Unit ALU) để
Bộ xử lý trung
tâm
(CPU)
Thanh ghi trong
Bộ nhớ
(ROM-RAM)
Thanh ghi ngoài
Phối ghép vào/ra
(I/O)
Thanh ghi ngoài
Thiết bị vào
Thiết bị ra
Buýt địa chỉ
Buýt điều
khiển
Buýt dữ liệu
Chương I .Tổng quan về vi xử lý và hệ vi xử lý
-8-
thao tác với dữ liệu. Ngoài ra ở đây còn có các hệ thống mạch điện tử rất phức tạp để giải mã
lệnh và từ đó tạo ra các xung điều khiển cho toàn hệ.
Bộ nhớ bán dẫn hay còn gọi là bộ nhớ trong là một bộ phận khác rất quan trọng của hệ
vi xử lý. Tại đây (trong ROM) ta có thể chứa chương trình điều khiển hoạt động của toàn hệ
để khi bật điện thì CPU có thể lấy lệnh từ đây để khởi động hệ thống. Một phần của chương
trình điều khiển hệ thống, các chương trình ứng dụng, dữ liệu cùng các kết quả của chương
trình thường được đặt trong RAM. Các dữ liệu và chương trình muốn lưu trữ lâu dài hoặc có
dung lượng lớn sẽ được đặt trong bộ nhớ ngoài.
Khối phối ghép vào/ra (I/O) tạo ra khả năng giao tiếp giữa hệ vi xử lý với thế giới bên
ngoài. Các thiết bị ngoại vi như bàn phím, chuột, màn hình, máy in, chuyển đổi số/tương t