Xem mẫu

  1. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 2
  2. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP ĐỀ CƯƠNG CHI TIẾT MÔN HỌC 1. Tên môn học: Kỹ thuật vi xử lý. 2. Phân bố thời gian: (Với trình độ cao đẳng) 30 Lý thuyết + 30 Bài tập, thực hành. 3. Môn tiên quyết: Kỹ thuật vi xử lý là môn học quan trọng trong việc nghiên cứu phần cứng máy tính. Các kiến thức môn học cần có để phục vụ cho môn học này bao gồm: • Kỹ thuật điện tử số (2 mức: 0, 1, bộ nhớ). • Kiến trúc máy tính. 4. Đối tượng học: Sinh viên ngành Kỹ thuật máy tính, Điều khiển tự động, Điện tử viễn thông, Kỹ thuật điện tử, Công nghệ thông tin. 5. Mô tả môn học: Trang bị cho sinh viên những kiến thức cơ bản nhất có tính chất hệ thống liên quan đến kỹ thuật VXL. Trang bị cho sinh viên khả năng tư duy trong nghiên cứu, tiếp cận với các hệ VXL tiên tiến, hiện đại hơn. Ngoài ra học phần còn giúp cho sinh viên dễ dàng hơn trong việc xây dựng các chương trình điều khiển thiết bị ghép nối với máy tính. Nội dụng cụ thể bao gồm các phần cơ bản sau: • Khái niệm, cấu trúc và nguyên lý hoạt động của một hệ VXL. • Bộ VXL 8088/8086. • Các ghép nối cơ bản của 8088/8086 với thiết bị ngoại vi. • Các phương thức đièu khiển vào ra dữ liệu trong kỹ thuật VXL. 6. Nhiệm vụ của sinh viên: Sinh viên phải tham gia đủ trên 80% giờ trên lớp. Phải hoàn thành đầy đủ bài tập và các bài thực hành trong chương trình. 7. Nội dung giảng dậy Chương 1 Hệ vi xử lý 1.1. Vi xử lý là gì? 1.2. Các thế hệ của bộ vi xử lý 1.2.1. Thế hệ 1 (1971 đến 1973) 1.2.2. Thế hệ 2 (1974 đến 1977) 1.2.3. Thế hệ 3 (1978 đến 1982) 1.3. Thế hệ 4 (1983 đến nay) 1.4. Giới thiệu cấu trúc của hệ vi xử lý 1.3.1. CPU - Bộ xử lý trung tâm 1.3.2. Bộ nhớ bán dẫn (ROM, RAM) 1.3.3. Hệ thống vào ra (I/O) 1.3.4. Liên hệ giữa các khối Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 3
  3. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Chương 2 Bộ vi xử lý 8088 của Intel 2.1. Giới thiệu hoạt động của bộ vi xử lý 8088 2.1.1. Giới thiệu chung 2.1.2. Cấu trúc và hoạt động của bộ VXL 8088 2.2. Chế độ địa chỉ của 8088 2.2.1. Chế độ địa chỉ thanh ghi 2.2.2. Chế độ địa chỉ tức thì 2.2.3. Chế độ địa chỉ tực tiếp 2.2.4. Chế độ địa chỉ gián tiếp qua thanh ghi 2.2.5. Chế độ địa chỉ tương đối cơ sở 2.2.6. Chế độ địa chỉ tương đối chỉ số 2.2.7. Chế độ địa chỉ tương đối chỉ số cơ sở 2.3. Mô tả tập lệnh của 8088 2.3.1. Nhóm lệnh chuyển dữ liệu 2.3.2. Nhóm lệnh số học 2.3.3. Nhóm lệnh logic, dịch và quay 2.3.4. Nhóm lệnh so sánh 2.3.5. Nhóm lệnh rẽ nhánh (nhảy), lặp 2.3.6. Nhóm các lệnh đặc biệt Chương 3 Lập trình bằng hợp ngữ cho 8088 trên máy tính IBM PC và các máy tương thích IBM PC 3.1. Giới thiệu chung 3.2. Giới thiệu khung chương trình 3.2.1. Cấu trúc của một lệnh hợp ngữ 3.2.2. Dữ liệu cho chương trình hợp ngữ 3.2.3. Biến và hằng 3.2.4. Khung của một chương trình hợp ngữ 3.3. Cách tạo và cho chạy một chương trình hợp ngữ 3.4. Các cấu trúc lập trình cơ bản trong assembly 3.4.1. Cấu trúc tuần tự 3.4.2. Cấu trúc lựa chọn 3.4.3. Cấu trúc lặp 3.5. Truyền tham số 3.6. Một số ngắt của DOS và của BIOS Chương 4 Ghép 8088 với bộ nhớ và tổ chức vào ra dữ liệu 4.1. Giới thiệu tín hiệu chân của 8088 và các mạch phụ trợ 4.1.1. Bảy nhóm tín hiệu 4.1.2. Phân kênh để tách thông tin và đệm bus 4.1.3. Mạch tạo xung nhịp 8284 4.1.4. Mạch điều khiển bus 8288 4.1.5. Biều đồ thời gian của các lệnh đọc/ghi 4.2. Phối ghép 8088 với bộ nhớ 4.2.1. Bộ nhớ bán dẫn 4.2.2. Giải mã địa chỉ cho bộ nhớ 4.2.3. Phối ghép 8088 với bộ nhớ 4.3. Phối ghép 8088 với thiết bị ngoại vi 4.3.1. Các kiểu phối ghép vào ra 4.3.2. Giải mã địa chỉ cho thiết vị vào/ra Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 4
  4. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP 4.3.3. Các mạch cổng đơn giản 4.3.4. Mạch phối ghép vào/ra song song lập trình được PPI 8255 Chương 5 Vào ra dữ liệu bằng cách thăm dò 5.1. Giới thiệu chung về các phương pháp điều khiển vào/ra dữ liệu 5.2. Vào/ra dữ liệu bằng cách thăm dò trạng thái sẵn sàng của thiết bị ngoại vi Chương 6 Ngắt và xử lý ngắt trong hệ vi xử lý 8088 6.1. Sự cần thiết phải ngắt CPU 6.2. Ngắt trong vi xử lý 8088 6.2.1. Các loại ngắt trong hệ 8088 6.2.2. Đáp ứng của CPU khi có yêu cầu ngắt 6.2.3. Xử lý ưu tiên ngắt 6.2.4. Mạch điều khiển ngắt ưu tiên PPI 8259A Chương 7 Vào ra dữ liệu bằng DMA 7.1. Nguyên tắc của việc trao đổi dữ liệu với thiết bị ngoại vi bằng cách thâm nhập trực tiếp vào bộ nhớ (DMA) 7.2. DMAC 8237-5 trong hệ vi xử lý 8088 7.2.1. Tín hiệu HOLD và HLDA trong CPU 8088 7.2.2. Mạch DMAC 8237-5 của Intel 8. Nội dung các bài thực hành ( gồm có 6 bài thực hành - 5tiết/bài) Bài 1: Làm quen với trình dich hợp ngữ ASSEMBLER và cách gọi ngắt trong ASM Mục đích: • Biết cách chuyển một chương trình hợp ngữ (Assembler) ra dạng mã máy, qua đó giúp sinh viên hiểu rõ hơn cơ chế hoạt động của các lệnh, cách trao đổi số liệu. • Biết cách nhập chương trình vào bộ nhớ và chạy chương trình • Hiểu, biết cách gọi và truyền tham số khi gọi ngắt (Chủ yếu là ngát 21h của DOS, với các hàm hiển thị và nhập ký tự. Nhằm phục vụ cho việc kiểm tra kết qua cho những bài thí nghiệm sau) Bài 2: Trao đổi dữ liệu và thực hiện các phép tính số học. Mục đích: • Giúp sinh viên làm quen với việc nạp và trao đổi dữ liệu giữa các thanh ghi, giữa thanh ghi với bộ nhớ và các phép tính số học cơ bản. Qua đó thấy được ý nghĩa và tác dụng của các thanh ghi và bộ nhớ trong quá trình lưu trữ và xử lý số liệu. Bài 3: So sánh và kiểm tra dữ liệu. Mục đích: • Giúp sinh viên làm quen với các cấu trúc lập trình cơ bản bằng hợp ngữ. • Biết cách so sánh và kiểm tra dữ liệu thông qua các cờ. Bài 4: Các thao tác Logic. Mục đích: Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 5
  5. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP • Giúp sinh viên làm quen với các cấu trúc lập trình cơ bản bằng hợp ngữ. • Giúp sinh viên khảo sát các thao tác đại số BOOLEAN theo phương thức mà chúng tác động trên các thanh ghi và dữ liệu trong bộ nhớ. Bài 5: Chương trình con và truyền tham số. Mục đích: • Giúp sinh viên làm quen với các cấu trúc lập trình cơ bản bằng hợp ngữ. • Giúp sinh viên làm quen với cấu trúc lập trình theo chương trình con, truyền tham số cho chương trình con. Bài 6: Vào ra dữ liệu với các cổng. Mục đích: • Giúp sinh viên làm quen với các kiểu giao tiếp giữa vi xử lý với các thiết bị ngoài. • Biết cách lập trình đặt các chế độ làm việc cho các cổng giao tiếp của bộ điều khiển ghép nối. 9. Tài liệu tham khảo: [1] Văn Thế Minh, Kỹ thuật vi xử lý, NXB Giáo Dục, 1997. [2] Đỗ Xuân Thụ & Hồ Khánh Lâm, Kỹ thuật vi xử lý và máy vi tính, ... [3] Đỗ Xuân Tiến, Kỹ thuật lập trình điều khiển hệ thống, ... [4] Lê Văn Doanh & Phạm Khắc Chương, Kỹ thuật vi điều khiển, ... [5] Biên Dịch: Nguyễn Minh San - Hoàng Đức Hải, Cẩm nang lập trình hệ thống, ... [6] Nguyễn Đình Việt, Kiến trúc máy tính, ... [7] Trần Quang Vinh, Cấu trúc máy vi tính, NXB Giáo Dục, 1998. [8] Ytha Yu & Charles Marut, Lập trình hợp ngữ (Assembly) và máy vi tính IBM-PC, NXB Giáo Dục, 1996. [9] PTS. Nguyễn Quang Tấn, Vũ Thanh Hiền, Lập trình với Hợp Ngữ, NXB Thống Kê, 1997. [10] Trần Bá Thái, Điều khiển và ghép nối các thiết bị ngoại vi, NXB thống kê, 1987. [11] Computer Organization and Assembly Language Programming For IBM PC and Compatibles Michael Thorne - The Benjamin-Cummings Publishing Company, Inc. 1991. [12] Microprocessors and microcomputer-based system design Mohamed Rafiquzzaman - CRC Press, 1995. Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 6
  6. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP NỘI DUNG CHI TIẾT Chương 1 HỆ VI XỬ LÝ 1.1. Vi xử lý là gì? Ngày nay xu hướng số hoá mọi dạng tín hiệu càng được khẳng định rõ nét trong nhiều lĩnh vực: Điện tử, tin học, viễn thông, công nghệ thông tin, kỹ thuật điều khiển tự động ... vì tín hiệu số có cấu trúc đơn giản, dễ tính toán, xử lý và gia công ... Việc xử lý, tính toán, điều khiển được thực hiện chủ yếu trên các máy tính PC (Hay hệ vi xử lý nói chung). Các hệ vi xử lý này thường được ghép nối và giao tiếp với nhiều thiết bị ngoại vi khác nhau. Mỗi thiết bị làm việc ở môi trường khác nhau cũng như chức năng, nhiệm vụ khác nhau. Môi trường của thiết bị có thể là: • Điện, điện tử. • Cơ, cơ điện. • Quang điện tử, ... Chức năng, nhiệm vụ của thiết bị như: • Thông tin vô tuyến, hữu tuyến. • Kỹ thuật viễn thông. • Robốt, máy công cụ, dây truyền sản xuất tự động. Các hệ thống làm nhiệm vụ xử lý và điều khiển nói chung luôn có một thành phần làm nhiệm vụ xử lý được chế tạo bằng công nghệ vi điện tử với độ tích hợp cao và rất cao, chúng thường được gọi là các bộ vi xử lý (MicroProcessor). Các bộ vi xử lý hoạt động (làm việc) theo chương trình, dùng để tính toán và điều khiển mọi hoạt động của hệ thống. Việc xây dựng các chương trình điều khiển các thiết bị cho chúng làm việc chính xác, đồng bộ là rất phức tạp. Các hệ thống càng thông minh thì vai trò của bộ vi xử lý càng quan trọng. 1.2. Các thế hệ của bộ vi xử lý 1.2.1. Thế hệ 1 (1971 đến 1973) Năm 1971 Intel cho ra đời bộ vi xử lý (VXL) 4004 (dùng cho các máy tính cầm tay) được chế tạo bằng công nghệ PMOS. Đây là bộ VXL 4 bit dữ liệu, 12 bit địa chỉ và có 2250 Transitor. Tiếp theo, Intel cho ra đời bộ VXL 4040 là bộ VXL được cải tiến từ VXL 4004. Trong thời gian này, Intel tiếp tục cho ra đời bộ VXL 8008 là bộ VXL 8 bit dữ liệu. ệ Đặc điểm của các bộ vi xử lý trong khoảng thời gian này là: o Tốc độ thực hiện: 10 ÷ 60 (µs/lệnh). o Tần số đồng hồ: fCLK = 0,1 ÷ 0,8 MHz. o Cần nhiều mạch phụ trợ để tạo nên một hệ vi xử lý hoàn chỉnh. 1.2.2. Thế hệ 2 (1974 đến 1977) Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 7
  7. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Trong thời gian này Intel lần lượt cho ra đời bộ VXL 8080, 8085. Motorola có các bộ VXL 6800, 6809. Zilog có bộ VXL Z80 và Signetics có bộ VXL 6520. ộ Đặc điểm của các bộ vi xử lý trong khoảng thời gian này là: o Tập lệnh phong phú hơn. o Là các bộ vi xử lý 8 bit dữ liệu. o Khả năng phân biệt địa chỉ bộ nhớ lên tới 64 KB (16 bit địa chỉ). o Khả năng phân biệt địa cổng là 256 cổng cho thiết bị ngoại vi (sử dụng 8 bit để đánh địa chỉ cho các cổng). o Tốc độ 1 ÷ 8 (µs/lệnh). o Tần số đồng hồ: fCLK = 1 ÷ 5 MHz. Ứng dụng: o Điều khiển các hệ thống trong công nghiệp. o Chế tạo các máy tính 8 bit như Apple II. 1.2.3. Thế hệ 3 (1978 đến 1982) Trong khoảng thời gian này Intel lần lượt cho ra đời các bộ VXL 8086, 8088, 80186, 80286. Motorola có các bộ VXL 68000, 68010 ộ Đặc điểm của các bộ vi xử lý trong khoảng thời gian này là: o Là các bộ vi xử lý 16 bit dữ liệu. o Tập lệnh đầy đủ hơn. o Khả năng phân biệt địa chỉ bộ nhớ từ 1 MB đến 16 MB. o Khả năng phân biệt địa chỉ cổng là 64 K cổng cho thiết bị ngoại vi (đối với các bộ VXL của Intel). o Tốc độ 0,1 ÷ 1 (µs/lệnh). o Tần số đồng hồ: fCLK = 5 ÷ 10 MHz. Ứng dụng: Chế tạo các máy tính IBM PC, PC/XT, PC/AT và máy tính Macintosh của Apple. 1.2.4. Thế hệ 4 (1983 đến nay) Trong thời gian này Intel thể hiện sức mạnh vượt trội các hãng khác trong việc chế tạo bộ vi xử lý. Intel liện tục cho ra đời các bộ VXL 80386, 80486 là các bộ VXL 32 bit dữ liệu, có bên trong đơn vị quản lý bộ nhớ (MMU) cho phép chạy trong chế độ bộ nhớ ảo và đa nhiệm. Tiếp theo là các bộ VXL Pentium, Pentium II, Pentium III, Pentium IV là các bộ VXL 64 bit dữ liệu. Motorola có các bộ VXL 68020, 68030, 68040, 68060. ộ Đặc điểm của các bộ vi xử lý trong khoảng thời gian này là: o 32 bit địa chỉ, nên trong chế độ thực thì khả năng phân biệt địa chỉ bộ nhớ là 4 GB. Trong chế độ bộ nhớ ảo thì chúng có khả năng quản lý không gian nhớ lên tới 64 TB (Teta Byte). o Cơ chế xử lý xen kẽ dòng mã lệnh (Pipline). o Bộ nhớ ẩn (Cache). Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 8
  8. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP o Có bộ quản lý bộ nhớ (MMU), bộ đồng xử lý toán học được tích hợp bên trong. o Tốc độ 6 ÷ 112 (triệu lệnh/µs). o Tần số đồng hồ: fCLK = 10 ÷ 100 MHz và cao hơn nữa. ữ Ứng dụng: o Chế tạo các máy tính có tốc độ cao, các máy chủ đáp ứng cho các xử lý lớn như thống kê hàng ngày tại các ngân hàng, khí tượng thuỷ văn, mô phỏng các quá trình, lĩnh vực quân sự ... o Các máy tính hiện nay. 1.3. Giới thiệu cấu trúc của hệ vi xử lý Chúng ta đã được tìm hiểu qua về sự ra đời và vị trí của các bộ vi xử lý. Bộ VXL là thành phần cơ bản (trái tim) của máy tính, nó được kết hợp với các bộ phận mạch điện tử khác như bộ nhớ (bộ nhớ bán dẫn), bộ phối ghép vào ra để tạo nên hệ vi xử lý nói chung mà máy tính là một trường hợp ứng dụng của thể của hệ vi xử lý. Data bus Control bus Thiết bị vào Memory I/O ROM CPU Interfacing RAM Thiết bị ra Address bus Hình vẽ: Hệ vi xử lý • CPU (Central Processing Unit) - Bộ xử lý trung tâm. • Memory: Bộ nhớ bán dẫn. • I/O (Input/Output): Khối phối ghép với thiết bị ngoại vi. • Bus là tập các đường dây truyền thông tin, tín hiệu gồm:  Data bus.  Control bus.  Address bus. 1.3.1. CPU - Bộ xử lý trung tâm Là mạch điện tử có độ tích hợp cao (là trái tim của hệ vi xử lý). Ngày nay thường là các vi mạch có độ tích hợp VLSI. ợ Chức năng: o Điều khiển mọi hoạt động của hệ vi xử lý (hoạt động tính toán). Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 9
  9. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP o Thực hiện lệnh, xử lý dữ liệu. ệ Nguyên tắc hoạt động Hoạt động theo chương trình nằm trong bộ nhớ. Nó nhận lần lượt nhận từng lệnh từ bộ nhớ, các lệnh được ghi dưới dạng các bit 0, 1 sau đó giải mã lệnh thành các xung điều khiển tương ứng các thao tác của lệnh để điều khiển các khối chức năng thực hiện các thao tác đó. Quá trình thực hiện trên bao gồm cả trao đổi dữ liệu với bộ nhớ. Để thực hiện được như trên, bên trong CPU có thanh ghi lưu địa chỉ của lệnh chuẩn bị được thực hiện, gọi là thanh ghi con trỏ lệnh (Instruction Pointer - PC), hay còn được gọi là bộ đếm chương trình (Program Counter - PC).  Các thành phần cơ bản của bộ vi xử lý: o Đơn vị điều khiển (Control Unit - CU): điều khiển hoạt động chính của CPU và các thành phần khác của hệ theo chương trình đã định (dãy các lệnh) bằng các xung điều khiển. o Đơn vị số học và logic (Arithmetic and Logic Unit - ALU): thực hiện chức năng xử lý dữ liệu (tính toán) như cộng, trừ, nhân, chia, NOT, AND, OR ... o Tập thanh ghi (Registers Set): là các ngăn nhớ đặc biệt nằm ngay trong CPU để tăng tốc độ trao đổi dữ liệu. Một số thanh ghi lưu trữ thông tin tạm thời phục vụ cho việc thực hiện chương trình. o Bus bên trong (Internal Bus): Hệ thống bus trong CPU là tập các đường dây làm nhiệm vụ kết nối, vận chuyển thông tin (tín hiệu) giữa các thành phần với nhau. 1.3.2. Bộ nhớ bán dẫn (ROM, RAM) Là bộ phận quan trọng trong hệ vi xử lý. Nó có nhiệm vụ lưu trữ chương trình và dữ liệu. Bộ nhớ trong bao gồm bộ nhớ chính và bộ nhớ ẩn (cache L1, L2). Khi khởi động máy, chương trình điều khiển được chứa trong ROM sẽ điều khiển hoạt động toàn hệ. Các chương trình ứng dụng, một phần chương trình điều khiển, kết quả chạy chương trình được để ở RAM. Ngoài ra còn có bộ nhớ ngoài (ổ đĩa từ, quang ...) lưu trữ lâu dài chương trình và dữ liệu, là các thiết bị ngoại vi. 1.3.3. Hệ thống vào ra (I/O)  Chức năng Giao tiếp, trao đổi thông tin giữa hệ vi xử lý với thế giới bên ngoài.  Các thành phần cơ bản o Thiết bị ngoại vi: Bàn phím, màn hình, chuột, máy in, ổ đĩa từ, ổ đĩa quang ... các bộ chuyển đổi ADC, DAC ..., chuyển đổi thông tin dưới dạng nào đó thành dạng phù hợp với máy tính và ngược lại rồi liên hệ với máy tính thông qua khối phối ghép vào/ra. o Mạch phối ghép vào/ra dùng ghép nối thiết bị ngoại vi với hệ vi xử lý (máy tính). Trong mạch phối ghép vào/ra có bộ phận phối ghép cụ thể giữa hệ thống bus với thế giới bên ngoài gọi là các cổng vào ra (I/O port). Mỗi cổng có địa chỉ xác định. I/O port vào: nhận thông tin từ bên ngoài vào hệ thống, I/O port ra: đưa thông tin từ hệ ra thế giới bên ngoài. 1.3.4. Liên hệ giữa các khối Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 10
  10. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Hệ thống bus là tập các đường dây dùng để kết nối, trao đổi thông tin từ các phần mạch này tới các thành phần khác (các khối) trong phạm vi một máy tính (1 hệ vi xử lý). Độ rộng bus là số bit thông tin được vận chuyển đồng thời trong một chu kỳ bus. ộ Bus địa chỉ Theo sự phát triển các bộ vi xử lý, độ rộng bus địa chỉ tăng từ 16, 20, 24 và 32 bit. Bus địa chỉ dùng để vận chuyển địa chỉ từ CPU đến bộ nhớ hay mạch phối ghép vào/ra để tìm ra ngăn hay nhớ cổng vào/ra cần trao đổi dữ liệu. o Khả năng phân biệt địa chỉ của CPU phụ thuộc độ rộng bus địa chỉ. o Bus địa chỉ gồm An-1 ÷ A0 (n bit)  có thể quản lý được 2n địa chỉ. o Độ rộng bus địa chỉ cho biết khả năng phân biệt và quản lý không gian nhớ. ớ Bus dữ liệu Độ rộng bus dữ liệu thường là 8, 16, 32 và 64 tuỳ theo các bộ vi xử lý. Ngày nay các bộ vi xử lý thường làm việc với bus dữ liệu có độ rộng 64 bit, thậm chí là 128 bit. Độ rộng bus dữ liệu quyết định số bit dữ liệu mà CPU có khả năng nhận hay gửi (đọc/ghi) hay xử lý cùng lúc. Bus dữ liệu là bus 2 chiều, dữ liệu có thể được truyền từ CPU đến bộ nhớ hay cổng vào/ra hoặc ngược lại. ạ Bus điều khiển Độ rộng bus điều khiển thường nhỏ hơn độ rộng bus địa chỉ và bus dữ liệu. Mỗi tín hiệu điều khiển có một chiều nhất định. CPU có thể gửi các tín hiệu điều khiển tới các khối đồng thời nó cũng nhận tín hiệu điều khiển từ các khối gửi đến. Trong chừng mực nào đó có thể coi bus điều khiển là 2 chiều. Tính 2 chiều không phải của một tín hiệu điều khiển cụ thể nào mà là của một nhóm tín hiệu. o Các tín hiệu phát ra từ CPU: MEMR (tín hiệu điều khiển đọc bộ nhớ), MEMW (tín hiệu điều khiển ghi bộ nhớ), IOR (tín hiệu điều khiển đọc cổng vào ra), IOW (tín hiệu điểu khiển ghi cổng vào ra). o Tín hiệu điều khiển ngắt: INTR. o Tín hiệu điều khiển chuyển nhượng bus (HOLD, HLDA). o Clock (CLK): Xung nhịp phát ra từ bộ dao động cấp cho CPU và các thành phần khác để hệ thống hoạt động đồng bộ. Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 11
  11. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Chương 2 BỘ VI XỬ LÝ 8088 CỦA INTEL 2.1. Giới thiệu hoạt động của bộ vi xử lý 8088 2.1.1. Giới thiệu chung Bộ vi xử lý 8088 thuộc họ vi xử lý của Intel. Điển hình: 8085 là bộ vi xử lý 8 bit. 8086 là bộ vi xử lý 16 bit hoàn chỉnh. 8088 là bộ vi xử lý 16 bit trong/ 8 bit ngoài. ử Các đặc tính kỹ thuật chủ yếu: o Số thanh ghi: 14 thanhg ghi 16 bit. o Bus địa chỉ: 20 bit. o Bus dữ liệu: 16 (8086) và 8 (8088). o Tập lệnh: 115 (là số lệnh được công bố trong nhiều tài liệu). o Tốc độ chuẩn: 4.77 MHz. o Số chân của bộ vi xử lý: 40. Bộ vi xử lý 8086 của Intel được phát triển từ năm 1978 vào đưa vào thị trường từ năm 1980. Đây là bộ vi xử lý 16 bit bán hoàn chỉnh, các thanh ghi bên trong là 16 bit và nó xử lý 16 bit dữ liệu cùng một lúc, 8086 liên hệ với kênh số liệu bên ngoài bằng bus dữ liệu 16 bit và bus địa chỉ là 20 bit. Bộ vi xử lý 8088 ra đời sau 8086, nó có cấu trúc bên trong và tập lệnh hoàn toàn giống của 8086, chỉ khác 8086 ở kênh truyền dữ liệu với bên ngoài. 8088 sử dụng kênh dữ liệu 8 bit nên việc truyền dữ liệu giữa các thanh ghi trong nó với bộ nhớ chậm hơn so với 8086. Đây là một bước lùi về kỹ thuật nhưng đem lại nhiều lợi ích về kinh tế. Tại thời điểm lịch sử đó, bus DataMaster 8 bit đang được sử dụng rộng rãi trên thị trường, nhiều loại card mở rộng và các chip hỗ trợ có sẵn trên thị trường là loại 8 bit nên giá thấp hơn loại 16 bit tương ứng. Việc sử dụng bus dữ liệu 8 bit giúp cho người sử dụng khi nâng cấp máy có thể tận dụng được các card 8 bit trong các máy cũ cũng như chỉ phải mua mới với giá thấp. Đồng thời cũng giúp cho các nhà sản xuất các máy tương thích với IBM PC có thêm nhiều cơ hội lựa chọn sản phẩm của các hãng khác nhau. Chiến lược phát triển có tính kế thừa như vậy đã góp phần làm cho khách hàng của IBM ngày một gia tăng. ộ Chọn bộ vi xử lý 8088 để nghiên cứu vì: o Tập lệnh chung cho các bộ vi xử lý nói trên. o Tính phức tạp vừa phải, phù hợp với những người mới tìm hiểu. 2.1.2. Cấu trúc và hoạt động của bộ VXL 8088 Sự hoạt động của bộ vi xử lý 8088/8086 thực sự là việc thực hiện lặp đi lặp lại 3 thao tác chính là lấy lệnh (fetch), giải mã lệnh (decode) và thực hiện (execute). Sơ đồ khối của bộ vi xử lý 8088/8086 như hình vẽ với 2 đơn vị chính: - EU (Execution Unit): Đơn vị (khối) thực hiện lệnh. - BIU (Bus Interface Unit): Đơn vị giao tiếp bus (khối tương thích bus) để điều khiển bus hiệu quả hơn. Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 12
  12. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Ệ EU Đơn vị EU của 8088 và 8086 giống nhau, bao gồm ALU, thanh ghi cờ, các thanh ghi đệm và các thanh ghi đa năng. Các bus dữ liệu bên trong của EU đều là 16 bit. EU không nối trực tiếp với bên ngoài, nó nhận lệnh từ hàng đợi lệnh bên trong BUI. Nếu là lệnh cần truy nhập bộ nhớ hoặc cổng vào/ra (I/O port - thiết bị ngoại vi) thì EU yêu cầu BIU lấy hoặc gửi dữ liệu. Tất cả các địa chỉ mà EU thao tác đều là 16 bit, khi gửi sang BIU thì BIU sẽ thực hiện tính toán để tạo địa chỉ vật lý 20 bit và phát ra các chân địa chỉ của chip. Bus địa chỉ (20 bit) EU BIU AX các thanh ghi BX đa năng CX DX Bus dữ liệu SP CS (8 bit) các thanh ghi BP DS con trỏ các thanh ghi đoạn SS và chỉ số SI Bus trong và con trỏ lệnh ES DI 8 bit dữ liệu IP 20 bit địa chỉ Bus dữ liệu ALU(16bit) Logic điều khiển các thanh ghi tạm BUS BUS ngoài Khối điều khiển của EU Đệm lệnh (hàng đợi lệnh) (6 byte cho 8086) thanh ghi cờ Các thanh ghi trong Có 8 thanh ghi, là thành phần nhớ có tốc độ truy nhập rất cao. Bao gồm các thanh ghi đa năng Ax, Bx, Cx, Dx. Mỗi thanh ghi 16 bit có thể được phân chia thành 2 thanh ghi 8 bit làm việc độc lập nhau. • AX (Accumulator, Acc): Thanh chứa, chứa tạm thời dữ liệu (toán hạng, kết quả phép toán như nhân, chia và được coi là Acc). AX có thể được phân chia thành AH (Phần cao) và AL (Phần thấp). • BX (Base): Thanh ghi cơ sở, thường được dùng để chứa địa chỉ cơ sở cần truy nhập trong lệnh XLAT. BX có thể được phân chia thành BH (Phần cao) và BL (Phần thấp). • CX (Count): Bộ đếm, thường được dùng để đếm số lần lặp của công việc (số lần lặp trong các vòng lặp). CX có thể được phân chia thành CH (Phần cao) và CL Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 13
  13. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP (Phần thấp). CX thường được dùng để chứa số lần lặp trong các lệnh LOOP, còn CL thường chứa số lần dịch hoặc quay trong các lệnh dịch quay thanh ghi. • DX (Data): Thanh ghi đữ liệu, sử dụng để chứa toán hạng, kết quả. DX cùng AX dùng để chứa toán hạng hoặc kết quả của các phép nhân, chia số 16 bit. DX còn chứa địa chỉ cổng trong các lệnh vào ra trực tiếp (IN, OUT). DX có thể được phân chia thành DH (Phần cao) và DL (Phần thấp). AH AL AX: Accumulator BH BL BX: Base CH SP CL CX: Count DH BP DL DX: Data SI General DI Registers Stack Pointer Base Pointer IP Source Index FLAGS Destination Index CS Instruction Pointer DS Status flags SS Hình vẽ: Bộ vi xử lý 8088 và tập thanh ghi ES Các thanh ghi con trỏ, chỉ số Code Segment Các thanh ghi SP, BP là các thanh ghi con trỏ không Segment Data tách rời. Segment Stack Segment Registers • SP (Stack Pointer): Thanh ghi con trỏExtra p, trỏ vào đỉnh hiện thời của ngăn xếp ngăn xế Segment nằm trong đoạn ngăn xếp SS (Nó luôn kết hợp với thanh ghi SS). Ta có địa chỉ logic SS: SP. Sau mỗi thao tác cất một word vào stack (thao tác Push) thì SP tự động giảm 2 đơn vị, còn sau thao tác lấy một word ra khỏi stack (thao tác Pop), SP được tự động tăng 2 đơn vị. • BP (Base stack Pointer): Con trỏ cơ sở, luôn trỏ vào một dữ liệu cụ thể nằm trong đoạn ngăn xếp SS. Ta có địa chỉ logic SS: BP. • SI (Source Index): Thanh ghi chỉ số nguồn (hay nguồn), chỉ vào dữ liệu nằm trong đoạn DS. Ta có địa chỉ logic DS: SI. • DI (Destination Index): Thanh ghi chỉ số đích, chỉ dữ liệu trong đoạn DS. Ta có địa chỉ logic DS: DI. Ta có các cặp SP, BP đi với SS và SI, DI đi với DS. Trong các lệnh thao tác với dữ liệu kiểu chuỗi thì cặp ES:DI luôn ứng với địa chỉ của phần tử thuộc chuỗi đích còn cặp DS:SI ứng với địa chỉ của phần tử thuộc chuỗi nguồn. Khối ALU Làm nhiệm vụ thực hiện các lệnh số học và logic. • Số học: +, -, *, /, so sánh, đảo dấu. • Logic: NOT, AND, OR, XOR. Thanh ghi cờ: Đây là thanh ghi 16 bit, mỗi bit được sử dụng để thể hiện một trạng thái của bộ vi xử lý tại một thời điểm nhất định trong quá trình thực hiện chương trình (dãy các câu lệnh), Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 14
  14. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP nhưng chỉ dùng 9 bit đối với bộ vi xử lý 8088/8086. Mỗi bit đó được gọi là một cờ (flag). Giá trị của mỗi cờ được biểu diễn bằng các ký hiệu gợi nhớ như cách biểu diễn của chương trình Debug của DOS. 15 14 13 12 11 10 9 8 76 5 4 3 2 1 0 x x x x O D I T SZ x A x P x C Các cờ của bộ vi xử lý 8085 (x: Không được định nghĩa (don't care), với 8 bit thấp là các cờ của bộ vi xử lý 8085) Hình vẽ: Sơ đồ thanh ghi cờ của 8088/86 • Cờ trạng thái: Biểu diễn trạng thái phép toán vừa thực hiện.  CF (Carry Flag): Cờ nhớ (cờ tràn). CF = 1 (CY - CarrY) khi kết quả phép toán vượt (tràn) khuôn khổ biểu diễn (có nhớ (mượn) lên trên (từ) MSB), CF = 0 (NC - No Carry) trong trường hợp ngược lại. Cờ này thường được sử dụng khi thực hiện các phép cộng, trừ các số nhiều byte. Ví dụ: 1011 0001 + 0110 1001 10001 1010  PF (Parity Flag): Cờ chẵn lẻ. PF = 1 (PE - Parity Even) khi số bit 1 trong kết quả phép toán (hay các phép vận chuyển dữ liệu) là chẵn, PF = 0 (PO - Parity Old) trong trường hợp ngược lại.  AF (Carry Flag): Cờ nhớ phụ (tràn phụ - cờ bổ trợ). Cờ này có ý nghĩa khi ta làm việc với số BCD. AF = 1 (AC - Auxiliary Carry) khi có nhớ hoặc mượn từ một số BCD thấp (4 bit thấp) sang một số BCD cao (4 bit cao) và AF = 0 (NA - No Auxiliary carry) trong trường hợp ngược lại.  SF (Sign Flag): Cờ dấu. Trong bộ vi xử lý 8088/8086 các số âm được biểu diễn dưới dạng số bù 2, nên phải dùng cờ SF để chỉ thị dấu của kết quả. SF = 1 (NG - NeGative), khi kết quả phép toán là một số âm, SF = 0 (PL- PLus) trong trường hợp ngược lại.  ZF (Zero Flag): Cờ rỗng. ZF = 1 (ZR - ZeRo) khi kết quả phép toán = 0, ZF = 0 (NZ-Non Zero) trong trường hợp ngược lại.  OF (Overflow Flag): Cờ tràn. OF = 1 (OV-OVerflow) khi kết quả là số bù 2 vượt khuôn khổ biểu diễn (tràn số học, hay nói cách khác: khi cộng hai số cùng dấu mà kết quả là một số trái dấu thì OF = 1), OF = 0 (NV-Non oVerflow) trong trường hợp ngược lại (cờ này làm việc với số có dấu).  Cờ điều khiển Cờ trạng thái phụ thuộc kết quả phép toán, còn với cờ điều khiển ta có thể thiết lập nhờ lệnh. Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 15
  15. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP  IF (Interrupt Flag): Cờ ngắt. IF = 1 (EI-Enable Interrup), CPU cho phép ngắt, IF = 0 (DI-Disable Interrup) CPU không cho phép ngắt (cấm) các loại ngắt che được (Maskable)..  TF (Trap Flag): Cờ bẫy. TF = 1 CPU làm việc trong chế độ chạy từng lệnh, thường dùng để gỡ rối chương trình (debug). Sau khi thực hiện xong mỗi lệnh, bộ vi xử lý sẽ phát ra một lệnh ngắt (INT) để có kiểm tra chương trình.  DF (Direction Flag): Cờ hướng. Điều khiển hướng xử lý đối với thao tác chuỗi. DF = 1 (DN-DowN) thì các lệnh vận chuyển dữ liệu hay xử lý chuỗi sẽ thao tác lùi từ phải đến trái (địa chỉ cao đến địa chỉ thấp). DF=0 (UP) trong trường hợp ngược lại (thao tác các phần tử từ địa chỉ thấp đến địa chỉ cao). Cờ này thường được lập bởi chương trình của người sử dụng khi có các lệnh thao tác chuỗi. tiến (thuận – theo chiều tăng địa chỉ) lùi (ngược – theo chiều giảm địa chỉ) ỉ BIU • Hàng đợi: Là tập thanh ghi Với 8086 hàng đợi lệnh là 6 byte, 8088 hàng đợi lệnh là 4 byte nên chứa được tối đa là 4 lệnh. CPU chứa tập thanh ghi theo kiểu LIFO. Cơ chế:  Đọc lệnh (lấy lệnh)  Giải mã lệnh  Thực hiện • Thanh ghi IP: Thanh ghi con trỏ lệnh, trỏ vào lệnh tiếp theo chuẩn bị được thực hiện nằm trong đoạn CS (CS: IP). Sau khi đọc 1 byte, IP tự động tăng thêm 1. Như vậy thực tế thì cặp CS:IP mới là con trỏ lệnh vì nó chứa địa chỉ đầy đủ của một lệnh trong bộ nhớ. • Thanh ghi đoạn:  CS (Code Segment): Thanh ghi đoạn mã, là thanh ghi địa chỉ đoạn mã lệnh, chứa địa chỉ cơ sở (địa chỉ đoạn) của chương trình đang thực hiện.  DS (Data Segment): Thanh ghi đoạn dữ liệu, là thanh ghi địa chỉ đoạn dữ liệu, chứa địa chỉ đoạn của vùng dữ liệu mà chương trình đang thực hiện sử dụng. Vùng này thường chứa các biến của chương trình.  SS (Stack Segment): Thanh ghi đoạn ngăn xếp, là thanh ghi địa chỉ đoạn bộ nhớ ngăn xếp (stack) của chương trình đang chạy.  ES (Extra Segment): Thanh ghi đoạn dữ liệu phụ, là thanh ghi địa chỉ đoạn dữ liệu bổ sung mà chương trình đang thực hiện sử dụng. Vùng này cũng thường chứa các biến của chương trình. Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 16
  16. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP 8088 có 20 bit địa chỉ, trong khi đó các thanh ghi quản lý bộ nhớ là 16 bit. Để xác định một ngăn nhớ có địa chỉ 20 bit, dùng 2 thanh ghi 16 bit để xác định địa chỉ. Địa chỉ luôn nằm trong một thanh ghi gọi là địa chỉ đoạn. Địa chỉ lệch (offset) trong một thanh ghi khác (Ax, Bx, Cx, ...). Địa chỉ logic: DS:SI DS:DI DS:XX Địa vật lý (phải là số 20 bit) được xác định như sau: Địa vật lý = địa chỉ đoạn*16 + địa chỉ lệch Ví dụ: DS = 4000h, SI = 3F4Dh Địa chỉ logic của ngăn nhớ: 4000:3F4D Địa chỉ vật lí của ngăn nhớ: DS * 16 + SI = 40000 + 3F4D = 43F4Dh Tại một thời điểm CPU quản lý được 4 đoạn nhớ (DS, SS, CS, ES) , nó có thể đồng thời truy nhập 4 đoạn đó. Bộ nhớ được chia thành nhiều đoạn. Mỗi đoạn có kích thước tối đa là 64 KB. Vậy ta có 16 đoạn tách rời và địa chỉ lệch thay đổi từ 0000 H đến FFFFh. Nếu địa chỉ đoạn thay đổi từ 0000h đến FFFFh thì có 64 Kđoạn. Khi này các đoạn bao trùm lên nhau. 2 đoạn kề nhau sẽ các nhau 16 Byte (Paragraph). Khi khởi động máy (hoặc Reset) CS được nạp giá trị F000h, IP được nạp giá trị FFF0h. Địa chỉ này thuộc đoạn cuối, nơi đặt ROM khởi động. Địa chỉ vật lý = F000h*16 + FFF0h = F0000h + FFF0h = FFFF0h 2.2. Chế độ địa chỉ của 8088 2.2.1. Chế độ địa chỉ thanh ghi Dùng thanh ghi như là các toán hạng chứa dữ liệu cần thao tác, tốc độ thực hiện lệnh rất nhanh vì CPU không mất thời gian tìm kiếm dữ liệu. Ví dụ: MOV AL, BL ; AL:= BL MOV DS, BX ; DS:= BX ADD AL, DL ; AL:= AL + DL 2.2.2. Chế độ địa chỉ tức thì Toán hạng đích là thanh ghi, hoặc ô nhớ. Toán hạng nguồn là 1 giá trị cụ thể (hằng số). Ví dụ: MOV AL, 0Dh ; AL:=0Dh Lệnh này thường được dùng để nạp dữ liệu cần thao tác vào thanh ghi nào đó. 2.2.3. Chế độ địa chỉ tực tiếp Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 17
  17. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Một toán hạng là địa chỉ offset của ô nhớ chứa giá trị cần thao tác. Toán hạng kia là thanh ghi (không được là ô nhớ). Ví dụ: MOV AL, [04FCh] ; đưa vào thanh ghi AL nội dung ô nhớ có địa chỉ logic ; DS:04FCh. 2.2.4. Chế độ địa chỉ gián tiếp qua thanh ghi Một toán hạng là thanh ghi chứa địa chỉ offset của ngăn nhớ chứa giá trị cần thao tác. Toán hạng kia là thanh ghi (không được là ngăn nhớ). Ví dụ: MOV [BX], AL ; Đưa nội dung thanh ghi AL vào ngăn nhớ có địa chỉ ; offset nằm trong thanh ghi BX. 2.2.5. Chế độ địa chỉ tương đối cơ sở Thanh ghi BX, BP và các hằng số là giá trị dịch chuyển để xác định ngăn nhớ trong DS, SS chứa giá trị cần thao tác. Ví dụ: MOV [BX + N], CL; Đưa nội dung thanh ghi CL vào ngăn nhớ có địa chỉ ; offset BX + N (DS:BX + N) MOV AL, [BP + N] ; Đưa nội ngăn nhớ có địa chỉ offset BP + N vào thanh ; ghi AL (SS:BP + N) 2.2.6. Chế độ địa chỉ tương đối chỉ số Thanh ghi DI, SI và các hằng số là giá trị dịch chuyển để xác định ngăn nhớ chứa giá trị trong DS cần thao tác. Ví dụ: MOV [SI + N], AH ; Đưa nội dung thanh ghi AH vào ngăn nhớ có địa chỉ ; offset tại SI + N (DS:SI + N). MOV CL, [DI + N] ; Đưa nội dung ngăn nhớ có địa chỉ offset tại DI + N ; (DS:DI + N) vào thanh ghi CL. 2.2.7. Chế độ địa chỉ tương đối chỉ số cơ sở Chế độ địa chỉ này là sự kết hợp cả 2 chế độ địa chỉ trên. Dùng cả thanh ghi cơ sở và thanh ghi chỉ số để tính địa chỉ toán hạng. Ví dụ: MOV [BX + SI + N], AX ; Đưa nội dung thanh ghi AX vào ngăn nhớ có địa ; chỉ offset tại BX + SI + N (DS:BX + SI + N). MOV CL, [BP + DI + N] ; Đưa nội dung ngăn nhớ có địa chỉ offset tại ; BP + DI + N (DS:BP + DI + N) vào th.ghi CL. 2.3. Mô tả tập lệnh của 8088 Tập lệnh của bộ vi xử lý 8088 nói chung được chia Mã lệnh đích, nguồn thành 6 nhóm, với 5 nhóm thao tác dữ liệu và 1 nhóm đặc biệt (gồm các chỉ thị để điều khiển). Một lệnh thường có cấu trúc như sau: Nguyễn văn Huy- Bài giảng Kỹ thuật vi xử lý 18
  18. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP 2.3.1. Nhóm lệnh chuyển dữ liệu Nhóm này thực hiện vận chuyển dữ liệu (sao chép - copy) từ nơi này đến nơi khác. MOV đích, nguồn (Move a Word or Byte) Lệnh thực hiện chuyển dữ liệu từ nguồn tới đích (đích
  19. TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP Viết lệnh: IN Acc, DX Lệnh này không tác động đến các cờ. Ví dụ: MOV DX, 07F8h IN AL, DX ; Đọc 1 byte từ cổng có địa chỉ 07F8h OUT Acc, Port (Output a byte or a word to a port) Đưa dữ liệu từ thanh ghi Acc đến cổng vào/ra. Acc => Port. Lệnh này thao tác ngược lại với lệnh IN, tính chất hoàn toàn tương tự. Lệnh này không tác động đến các cờ. STC (Set the Carry fag): Lập cờ nhớ: CF
nguon tai.lieu . vn