Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 1.345 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
1.345
Dung lượng
21,38 MB
Nội dung
Khi đọc qua tài liệu này, phát sai sót nội dung chất lượng xin thông báo để sửa chữa thay tài liệu chủ đề tác giả khác Tài li u bao g m nhi u tài li u nh có ch đ bên Ph n n i dung b n c n có th n m gi a ho c cu i tài li u này, s d ng ch c Search đ tìm chúng Bạn tham khảo nguồn tài liệu dịch từ tiếng Anh đây: http://mientayvn.com/Tai_lieu_da_dich.html Thông tin liên hệ: Yahoo mail: thanhlam1910_2006@yahoo.com Gmail: frbwrthes@gmail.com Khi đọc qua tài liệu này, phát sai sót nội dung chất lượng xin thông báo để sửa chữa thay tài liệu chủ đề tác giả khác Tài li u bao g m nhi u tài li u nh có ch đ bên Ph n n i dung b n c n có th n m gi a ho c cu i tài li u này, s d ng ch c Search đ tìm chúng Bạn tham khảo nguồn tài liệu dịch từ tiếng Anh đây: http://mientayvn.com/Tai_lieu_da_dich.html Thông tin liên hệ: Yahoo mail: thanhlam1910_2006@yahoo.com Gmail: frbwrthes@gmail.com 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 -1- Lời nói đầu Các vi xử lý đóng vai trò quan trọng hệ thống số chúng sử dụng nhiều ứng dụng hệ thống điều khiển, hệ thống thông tin liên lạc Tài liệu giới thiệu khái niệm hệ vi xử lý tập trung trình bày vi xử lý Intel 8086 ghép nối tiêu biểu để tạo nên hệ vi xử lý 8086, tiền than hệ vi xử lý x86 sau Các kiến thức thu nhận từ việc xây dựng hệ vi xử lý 8086 bổ ích cho việc phát triển hệ vi xử lý phức tạp hệ thống nhúng Cấu trúc tài liệu sau Chương giới thiệu khái niệm tổng quan hệ vi xử lý phận cấu thành hệ vi xử lý nói chung Chương tóm tắt trình phát triển phân loại vi xử lý đến Chương trình bày chi tiết vi xử lý Intel 8086 bao gồm sơ đồ khối cách tổ chức nhớ Ngoài ra, chương giới thiệu tập lệnh x86 trình thực lệnh Chương cung cấp kiến thức để lập trình với vi xử lý 8086 cách giới thiệu cấu trúc chương trình cấu trúc rẽ nhánh lặp tiêu biểu kết hợp với ví dụ Chương tập trung giới thiệu cách thức ghép nối vi xử lý 8086 với thiết bị khác để tạo thành hệ vi xử lý Chương trình bày chu trình đọc/ghi vi xử lý 8086 Đây sở để tiến hành ghép nối liệu với thiết bị khác nhớ hay thiết bị vào/ra khác Chương giới thiệu chế truyền thông nối tiếp cách thức ghép nối với vi xử lý 8086 Chương cung cấp kiến thức kỹ thuật trao đổi liệu với 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ào/ra trực tiếp nhớ Trong ba phương pháp, vào/ra trực tiếp nhớ cho phép trao đổi khối lượng liệu lớn với tốc độ cao cần có vi mạch đặc biệt Chương giới thiệu vi mạch trợ giúp cho phương pháp vào vi mạch điều khiển ngắt, vi mạch điều khiển vào trực tiếp nhớ -2- Chương trình bày sơ khái niệm hệ vi điều khiển (hay hệ vi xử lý vi mạch) Chương cung cấp thông tin hệ vi điều khiển Intel 8051 số ứng dụng Chương 7, chương cuối cùng, giới thiệu số vi xử lý tiên tiến Sun Microsystems Intel dựa kiến trúc IA-32 IA-64 Tài liệu biên soạn dựa tham khảo tài liệu đặc biệt “Kỹ thuật Vi xử lý” tác giả Văn Thế Minh dựa trao đổi kinh nghiệm giảng dạy với đồng nghiệp phản hồi sinh viên Học viện Công nghệ Bưu Viễn thông Tài liệu 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 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 góp ý cho thiếu sót ý kiến cập nhật hoàn thiện nội dung tài liệu Hà nội, 06/2010 Tác giả -3- Mục lục Chương I Tổng quan vi xử lý hệ vi xử lý I.1 I.2 I.3 Giới thiệu vi xử lý Hệ vi xử lý Các đặc điểm cấu trúc vi xử lý I.3.1 Cấu trúc I.3.2 Kiến trúc RISC CISC 11 I.3.3 Các đặc điểm 12 I.4 Lịch sử phát triển phân loại 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 8086/8088 16 II.1.1 Sơ đồ khối 16 II.1.2 Các đơn vị chức năng: BIU, EU, ghi buýt 17 II.1.3 Phân đoạn nhớ 8086/8088 20 II.2 Bộ đồng xử lý toán học 8087 21 II.3 Tập lệnh 8086/8088 22 II.3.1 Khái niệm lệnh, mã hoá lệnh trình thực lệnh 22 II.3.2 Các chế độ địa 8086/8088 23 II.3.3 Tập lệnh 8086/8088 27 II.4 Ngắt xử lý ngắt 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 hệ 8088 33 II.4.3 Đáp ứng CPU có yêu cầu ngắt 34 II.4.4 Xử lý ưu tiên 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 chương trình hợp ngữ 37 III.1.1 Cú pháp 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 chạy chương trình hợp ngữ 48 III.3 Các cấu trúc lập trình 49 III.4 Giới thiệu số chương trình cụ thể 55 III.4.1 Ví dụ 56 III.4.2 Ví dụ 56 III.4.3 Ví dụ 58 III.4.4 Ví dụ 60 III.4.5 Ví dụ 61 Chương IV Phối ghép vi xử lý với nhớ thiết bị vào/ra 62 IV.1 Các tín hiệu vi xử lý mạch phụ trợ 62 IV.1.1 Các tín hiệu 8086/8088 62 IV.1.2 Phân kênh để tách thông tin việc đệm cho 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 -4- IV.1.5 Biểu đồ thời gian lệnh ghi/đọc 70 IV.2 Phối ghép vi xử lý với nhớ 72 IV.2.1 Giới thiệu nhớ 72 IV.2.2 Giải mã địa cho nhớ 74 IV.3 Phối ghép vi xử lý với thiết bị vào 79 IV.3.1 Giới thiệu thiết bị vào/ra 79 IV.3.2 Giải mã địa thiết bị vào 80 IV.4 Giới thiệu số vi mạch hỗ trợ vào 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 phương pháp vào liệu 94 V.1 Giới thiệu 94 V.2 Vào/ra phương pháp thăm dò 95 V.3 Vào/ra 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 truy nhập trực tiếp nhớ (Direct memory Access) 107 V.4.1 Khái niệm phương pháp truy nhập trực tiếp vào nhớ 107 V.4.2 Các phương pháp trao đổi liệu 109 V.4.3 Bộ điều khiển truy nhập trực tiếp vào nhớ Intel 8237A 110 Chương VI Các vi điều khiển 121 VI.1 Giới thiệu vi điều khiển 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 ghi 124 VI.2.3 Tập lệnh 125 VI.3 Giới thiệu số ứng dụng tiêu biểu 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 số vi xử lý tiên tiến 129 VII.1 Các vi xử lý tiên tiến dựa 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 kiến trúc Intel IA-64 132 VII.3 Các vi xử lý tiên tiến Sun Microsystems 134 Tài liệu tham khảo 136 -5- Chương I Tổng quan vi xử lý hệ vi xử lý I.1 Giới thiệu vi xử lý Một máy tính thông thường bao gồm khối chức như: khối xử lí trung tâm CPU (Central Processing Unit), nhớ, 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 khối chức kể mà người ta phân máy tính điện tử sử dụng thành loại sau: Máy tính lớn (Mainframe) loại máy tính thiết kế để giải toán lớn với tốc độ nhanh Máy tính thường làm việc với số liệu từ 64 bít lớn trang bị nhiều xử lý tốc độ cao nhớ lớn Chính máy tính lớn kích thước vật lý Chúng thường dùng để tính toán điều khiển hệ thống thiết bị dùng quân hệ thống máy móc chương trình nghiên cứu vũ trụ, để xử lý thông tin ngành ngân hàng, ngành khí tượng, công ty bảo hiểm Loại máy lớn máy lớn gọi supercomputer (như loại máy Y-MP/832 Cray) Máy tính (Minicomputer) dạng thu nhỏ kích thước tính máy tính lớn Nó đời nhằm thoả mãn nhu cầu sử dụng máy tính cho ứng dụng vừa phải mà dùng máy tính lớn vào gây lãng phí Máy tính thường dùng cho tính toán khoa học kỹ thuật, gia công liệu quy mô nhỏ hay để điều khiển quy trình công nghệ Tiêu biểu cho nhóm loại máy VAX 6360 Digital Equipment Corporation MV/8000II Data genaral Máy vi tính (Microcomputer) loại máy tính thông dụng Một máy vi tính vi điều khiển (microcontroller), máy vi tính vi mạch (one-chip microcomputer), hệ vi xử lí có khả làm việc với số liệu có độ dài bít, bít, bít, 16 bít lớn Hiện số máy vi tính có tính so sánh với máy tính con, làm việc với số liệu có độ dài từ 32 bít (thậm chí 64 bít) Ranh giới để phân chia máy vi tính máy tính ngày không rõ nét Các vi xử lý có tên thị trường thường xếp theo họ phụ thuộc vào nhà sản xuất chúng đa dạng chủng loại Các nhà sản xuất vi xử lý tiếng kể tới Intel với sản phẩm x86, Motorola với 680xx, Sun Microsystems với SPARC Tính đến thời điểm chương trình viết cho tập lệnh x86 Intel chiếm tỷ lệ áp đảo môi trường máy vi tính Chương I Tổng quan vi xử lý hệ vi xử lý thao tác với liệu Ngoài có hệ thống mạch điện tử phức tạp để giải mã lệnh từ tạo xung điều khiển cho toàn hệ Bộ nhớ bán dẫn hay gọi nhớ phận khác quan trọng hệ vi xử lý Tại (trong ROM) ta chứa chương trình điều khiển hoạt động toàn hệ để bật điện CPU lấy lệnh từ để khởi động hệ thống Một phần chương trình điều khiển hệ thống, chương trình ứng dụng, liệu kết chương trình thường đặt RAM Các liệu chương trình muốn lưu trữ lâu dài có dung lượng lớn đặt nhớ Khối phối ghép vào/ra (I/O) tạo khả giao tiếp hệ vi xử lý với giới bên Các thiết bị ngoại vi bàn phím, chuột, hình, máy in, chuyển đổi số/tương tự (D/A Converter, DAC) chuyển đổi tương tự/số (A/D Converter, ADC), ổ đĩa từ liên hệ với vi xử lý qua phận Bộ phận phối ghép cụ thể buýt hệ thống với giới bên thường gọi cổng Như ta có cổng vào để lấy thông tin từ vào cổng để đưa thông tin từ Tùy theo nhu cầu cụ thể công việc, mạch cổng xây dựng từ mạch lôgic đơn giản từ vi mạch chuyên dụng lập trình Buýt địa (address bus) thường có từ 16, 20, 24, 32 hay 64 đường dây song song chuyển tải thông tin bít địa Khi đọc/ghi nhớ CPU đưa buýt địa ô nhớ liên quan Khả phân biệt địa (số lượng địa cho ô nhớ mà CPU có quản lý được) phụ thuộc vào số bít buýt địa Ví dụ CPU có số đường dây địa N=16 có khả địa hóa 2N = 65536 =64 kilô ô nhớkhác (1K= 210 =1024) Khi đọc/ghi với cổng vào/ra CPU đưa buýt địa bít địa tương ứng cổng Trên sơ đồ khối ta dễ nhận tính chiều buýt địa qua chiều mũi tên Chỉ có CPU có khả đưa địa buýt địa Buýt liệu (data bus) thường có từ 8, 16, 20, 24, 32, 64 ( hơn) đường dây tùy theo vi xử lý cụ thể Số lượng đường dây định số bít liệu mà CPU có khả xử lý lúc Chiều mũi tên sus số liệu buýt chiều, nghĩa liệu truyền từ CPU (dữ liệu ra) truyền đến CPU (dữ liệu vào) Các phần tử có đầu nối thẳng với buýt liệu phải trang bị đầu tạng thái để ghép vào hoạt động bình thường với buýt Buýt điều khiển (control bus) thường gồm hàng chục đường dây tín hiệu khác Mỗi tín hiệu điều khiển có chiều định hoạt động CPU đưa tín hiệu điều khiển tới khối khác hệ Đồng thời CPU nhận tín hiệu điều khiển từ khối để phối hợp hoạt động toàn hệ Các tín hiệu hình vẽ thể đường có mũi tên chiều, điều để tính hai chiều tín hiệu mà tính hai chiều nhóm tín hiệu Mặt khác, hoạt động hệ thống vi xử lý coi trình trao đổi liệu ghi bên Về mặt chức khối hệ thống tương đương với ghi (nằm CPU) ghi (nằm rải rác nhớ ROM, nhớ RAM khối phối ghép vào/ra) Hoạt động toàn hệ thực chất -8- Chương I Tổng quan vi xử lý hệ vi xử lý ii iii iv Bộ đếm chương trình: chứa địa lệnh hay mã thực thi (op-code) Thông thường, ghi chứa địa câu lệnh kế Thanh ghi có đặc điểm sau: Khi khởi động lại, địa lệnh thực nạp vào ghi Để thực lệnh, vi xử lý nạp nội dung đếm chương trình vào buýt địa đọc ô nhớ địa Giá trị đếm chương trình tự động tăng theo lô-gíc vi xử lý Như vậy, vi xử lý thực lệnh chương trình có lệnh làm thay đổi trật tự tính toán Kích cỡ đếm chương trình phụ thuộc vào kích cỡ buýt địa Nhiều lệnh làm thay đổi nội dung ghi so với trình tự thông thường Khi đó, giá trị ghi xác định thông qua địa chỉ định lệnh Thanh ghi địa nhớ: chứa địa liệu Vi xử lý sử dụng địa trỏ trực tiếp tới nhơ Giá trị địa liệu trao đổi xử lý Thanh ghi dùng chung: gọi ghi gộp (accumulator) Thanh ghi thường ghi bít dùng thể lưu hầu hết kết tính toán đơn vị xử lý sô học lô-gíc ALU Thanh ghi dùng để trao đổi liệu với thiết bị vào/ra I.3.1.2 Đơn vị xử lý số học lô-gíc ALU ALU thực tất thao tác xử lý liệu bên vi xử lý phép toán lô-gíc, số học Kích cỡ ghi ALU tương ứng với kích cỡ từ vi xử lý Vi xử lý 32 bít có ALU 32 bít Một vài chức tiêu biểu ALU: Cộng nhị phân phép lô-gíc Tính số bù liệu Dịch quay trái phải ghi dùng chung I.3.1.3 Đơn vị điều khiển CU Chức đơn vị điều khiển CU đọc giải mã lệnh từ nhớ chương trình Để thực lệnh, CU kích hoạt khối phù hợp ALU vào mã lệnh (op-code) ghi lệnh Mã lệnh xác định thao tác để CU thực thi CU thông dịch nội dung ghi lệnh sau sinh chuỗi tín hiệu kích hoạt tương ứng với lệnh nhận Các tín hiệu kích hoạt khối chức phù hợp bên ALU CU sinh tín hiệu điều khiển dẫn tới thành phần khác vi xử lý qua buýt điều khiển Ngoài ra, CU đáp ứng lại tín hiệu điều khiển buýt điều khiển phận khác gửi tới Các tín hiệu thay đổi theo loại vi xử lý Một số tín hiệu điều khiển tiêu biểu khởi động lại RESET, đọc ghi (R/W), tín hiệu ngắt (INT/IRQ), … I.3.1.4 Thực chương trình Để chạy chương trình, vi xử lý thường lặp lại bước sau để hoàn thành lệnh: Nạp (Fetch) Vi xử lý nạp (đọc) lệnh từ nhớ vào ghi lệnh -10- Ví dụ:Sao chép mảng ; Sao chép 10 byte từ mảng a sang mảng b, giả sử (DS) = (ES) mov mov mov cld rep cx, 10 di, offset b si, offset a ;xoá cờ DF movsb Ví dụ: Tịnh tiến ô nhớ mov mov mov std rep cx, di, offset a+9 si, offset a+6 ;lập cờ DF movsb SI a DI Ví dụ pattern db "!@#*" db 96 dup (?) cx,96 si, offset pattern di, offset pattern+4 mov mov mov cld rep movsb SI ! @ # * a DI Lưu trữ string STOSB, STOSW • Copy AL AX vào mảng byte word – Đích (ES:DI) • Tăng Giảm DI – phụ thuộc DF • Thường sử dụng có tiền tố REP số lần lặp CX Ví dụ: arr dw 200 dup (?) mov ax,50A0h mov di,offset arr mov cx,200 cld AX 50 A0 rep stosw A0 50 A0 50 arr DI Nạp String • LODSB, LODSW – Byte word (DS:SI) copy vào AL AX – SI tăng giảm giá trị phụ thuộc DF • Thường dùng với STOSx vòng lặp để xử lý phần tử mảng Ví dụ: mov di, offset b mov si, offset a mov cx,30 cld lp: lodsb and al,0DFh stosb loop lp Quét String SCASB, SCASW • So sánh AL AX vớI byte word tạI (ES:DI) tự động tăng giảm DI • Lệnh ảnh hưởng đến cờ trạng thái – Tuỳ theo kết so sánh – Dùng vòng lặp REPs • REPZ, REPE, REPNZ, REPNE Ví dụ arr db 'abcdefghijklmnopqrstuvwxyz' mov di, offset arr mov cx,26 cld mov al,target repne scasb jne nomatch So sánh String CMPSB, CMPSW • So sánh byte word (DS:SI) với byte word tạI (ES:DI), tác động đến cờ tăng giảm SI DI • Thường dùng để so sánh hai mảng với Ví dụ mov si, offset str1 mov di, offset str2 cld mov cx, 12 repe cmpsb jl str1smaller jg str2smaller ;the strings are equal - so far ;if sizes different, shorter string is less Nhóm lệnh hỗn hợp - Các lệnh Lập/Xoá trực tiếp cờ: STC, CLC STD, CLD STI, CLI - Lệnh NOP (No Operation): Không làm gì!!! - Lệnh NOP thường dùng vòng lặp tạo trễ (delay)bằng phần mềm - Các lệnh Nhập/Xuất liệu cổng I/O IN OUT Lệnh IN - Nếu Địa cổng Nhỏ FFh: IN Acc, Địa cổng - Trong đó: Acc AL AX - Nhập liệu từ cổng vào Acc - Nếu Địa cổng Lớn FFh: MOV DX, Địa cổng IN Acc, DX - Trong đó: Acc AL AX - Nhập liệu từ cổng vào Acc Lệnh OUT - Nếu Địa cổng Nhỏ FFh: OUT Địa cổng, Acc - Trong đó: Acc AL AX - Xuất liệu từ Acc cổng - Nếu Địa cổng Lớn FFh: MOV DX, Địa cổng OUT DX, Acc - Trong đó: Acc AL AX - Xuất liệu từ Acc cổng Tóm tắt chương - Tính tương thích Cấu trúc ghi vi xử lý họ x86 - Tính tương thích Tập lệnh vi xử lý họ x86