Kỹ thuật vi xử lý

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

 

doc113 trang | Chia sẻ: luyenbuizn | Lượt xem: 1606 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung 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
ĐỀ CƯƠNG CHI TIẾT MÔN HỌC Tên môn học: Kỹ thuật vi xử lý. Phân bố thời gian: 45 tiết ( 3 trình ). 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. Đố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. 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. 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. Nội dung giảng dậy Chương 1 Hệ vi xử lý Vi xử lý là gì? Các thế hệ của bộ vi xử lý Thế hệ 1 (1971 đến 1973) Thế hệ 2 (1974 đến 1977) Thế hệ 3 (1978 đến 1982) Thế hệ 4 (1983 đến nay) Giới thiệu cấu trúc của hệ vi xử lý CPU - Bộ xử lý trung tâm Bộ nhớ bán dẫn (ROM, RAM) Hệ thống vào ra (I/O) Liên hệ giữa các khối Chương 2 Bộ vi xử lý 8088 của Intel Giới thiệu hoạt động của bộ vi xử lý 8088 Giới thiệu chung Cấu trúc và hoạt động của bộ VXL 8088 Chế độ địa chỉ của 8088 Chế độ địa chỉ thanh ghi Chế độ địa chỉ tức thì Chế độ địa chỉ tực tiếp Chế độ địa chỉ gián tiếp qua thanh ghi Chế độ địa chỉ tương đối cơ sở Chế độ địa chỉ tương đối chỉ số Chế độ địa chỉ tương đối chỉ số cơ sở Mô tả tập lệnh của 8088 Nhóm lệnh chuyển dữ liệu Nhóm lệnh số học Nhóm lệnh logic, dịch và quay Nhóm lệnh so sánh Nhóm lệnh rẽ nhánh (nhảy), lặp 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 Giới thiệu chung Giới thiệu khung chương trình Cấu trúc của một lệnh hợp ngữ Dữ liệu cho chương trình hợp ngữ Biến và hằng Khung của một chương trình hợp ngữ Cách tạo và cho chạy một chương trình hợp ngữ Các cấu trúc lập trình cơ bản trong assembly Cấu trúc tuần tự Cấu trúc lựa chọn Cấu trúc lặp Truyền tham số 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 Giới thiệu tín hiệu chân của 8088 và các mạch phụ trợ Bảy nhóm tín hiệu Phân kênh để tách thông tin và đệm bus Mạch tạo xung nhịp 8284 Mạch điều khiển bus 8288 Biều đồ thời gian của các lệnh đọc/ghi Phối ghép 8088 với bộ nhớ Bộ nhớ bán dẫn Giải mã địa chỉ cho bộ nhớ Phối ghép 8088 với bộ nhớ Phối ghép 8088 với thiết bị ngoại vi Các kiểu phối ghép vào ra Giải mã địa chỉ cho thiết vị vào/ra Các mạch cổng đơn giản 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ò Giới thiệu chung về các phương pháp điều khiển vào/ra dữ liệu 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 Sự cần thiết phải ngắt CPU Ngắt trong vi xử lý 8088 Các loại ngắt trong hệ 8088 Đáp ứng của CPU khi có yêu cầu ngắt Xử lý ưu tiên ngắt 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 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) DMAC 8237-5 trong hệ vi xử lý 8088 Tín hiệu HOLD và HLDA trong CPU 8088 Mạch DMAC 8237-5 của Intel 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: 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. Tài liệu tham khảo: Văn Thế Minh, Kỹ thuật vi xử lý, NXB Giáo Dục, 1997. Đỗ Xuân Thụ & Hồ Khánh Lâm, Kỹ thuật vi xử lý và máy vi tính, ... Đỗ Xuân Tiến, Kỹ thuật lập trình điều khiển hệ thống, ... Lê Văn Doanh & Phạm Khắc Chương, Kỹ thuật vi điều khiển, ... Biên Dịch: Nguyễn Minh San - Hoàng Đức Hải, Cẩm nang lập trình hệ thống, ... Nguyễn Đình Việt, Kiến trúc máy tính, ... Trần Quang Vinh, Cấu trúc máy vi tính, NXB Giáo Dục, 1998. 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. PTS. Nguyễn Quang Tấn, Vũ Thanh Hiền, Lập trình với Hợp Ngữ, NXB Thống Kê, 1997. 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. Computer Organization and Assembly Language Programming For IBM PC and Compatibles Michael Thorne - The Benjamin-Cummings Publishing Company, Inc. 1991. Microprocessors and microcomputer-based system design Mohamed Rafiquzzaman - CRC Press, 1995. NỘI DUNG CHI TIẾT Chương 1 HỆ VI XỬ LÝ 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. Các thế hệ của bộ vi xử lý 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à: Tốc độ thực hiện: 10 ¸ 60 (ms/lệnh). Tần số đồng hồ: fCLK = 0,1 ¸ 0,8 MHz. Cần nhiều mạch phụ trợ để tạo nên một hệ vi xử lý hoàn chỉnh. Thế hệ 2 (1974 đến 1977) 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à: Tập lệnh phong phú hơn. Là các bộ vi xử lý 8 bit dữ liệu. Khả năng phân biệt địa chỉ bộ nhớ lên tới 64 KB (16 bit địa chỉ). 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). Tốc độ 1 ¸ 8 (ms/lệnh). Tần số đồng hồ: fCLK = 1 ¸ 5 MHz. Ứng dụng: Điều khiển các hệ thống trong công nghiệp. Chế tạo các máy tính 8 bit như Apple II. 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à: Là các bộ vi xử lý 16 bit dữ liệu. Tập lệnh đầy đủ hơn. Khả năng phân biệt địa chỉ bộ nhớ từ 1 MB đến 16 MB. 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). Tốc độ 0,1 ¸ 1 (ms/lệnh). 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. 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à: 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). Cơ chế xử lý xen kẽ dòng mã lệnh (Pipline). Bộ nhớ ẩn (Cache). Có bộ quản lý bộ nhớ (MMU), bộ đồng xử lý toán học được tích hợp bên trong. Tốc độ 6 ¸ 112 (triệu lệnh/ms). Tần số đồng hồ: fCLK = 10 ¸ 100 MHz và cao hơn nữa. Ứng dụng: 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ự ... Các máy tính hiện nay. Giới thiệu cấu trúc của hệ vi xử lý CPU Memory ROM RAM I/O Interfacing Thiết bị vào Thiết bị ra Address bus Control bus Data bus Hình vẽ: 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ý. 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. 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: Điều khiển mọi hoạt động của hệ vi xử lý (hoạt động tính toán). 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ý: Đơ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. Đơ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 ... 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. 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. 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. 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 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. 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. Liên hệ giữa các khối 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. Khả năng phân biệt địa chỉ của CPU phụ thuộc độ rộng bus địa chỉ. Bus địa chỉ gồm An-1 ¸ A0 (n bit) Æ có thể quản lý được 2n địa chỉ. Độ 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. 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). Tín hiệu điều khiển ngắt: INTR. Tín hiệu điều khiển chuyển nhượng bus (HOLD, HLDA). 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ộ. Chương 2 BỘ VI XỬ LÝ 8088 CỦA INTEL Giới thiệu hoạt động của bộ vi xử lý 8088 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: Số thanh ghi: 14 thanhg ghi 16 bit. Bus địa chỉ: 20 bit. Bus dữ liệu: 16 (8086) và 8 (8088). Tập lệnh: 115 (là số lệnh được công bố trong nhiều tài liệu). Tốc độ chuẩn: 4.77 MHz. 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ì: Tập lệnh chung cho các bộ vi xử lý nói trên. 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. 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. 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. các thanh ghi tạm thanh ghi cờ Logic điều khiển BUS AX BX CX DX SP BP SI DI Khối điều khiển của EU Đệm lệnh (hàng đợi lệnh) (6 byte cho 8086) BUS ngoài Bus địa chỉ (20 bit) các thanh ghi đa năng các thanh ghi đoạn và con trỏ lệnh các thanh ghi con trỏ và chỉ số Bus dữ liệu ALU(16bit) Bus dữ liệu (8 bit) Bus trong 8 bit dữ liệu 20 bit địa chỉ EU BIU CS DS SS ES IP 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 (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). AX: Accumulator BX: Base CX: Count DX: Data  Stack Pointer Base Pointer Source Index Destination Index Instruction Pointer Status flags Code Segment Data Segment Stack Segment Extra Segment General Registers Segment Registers AH AL BH BL CH CL DH DL SP BP SI DI IP FLAGS CS DS SS ES Hình vẽ: Bộ vi xử lý 8088 và tập thanh ghi Các thanh ghi con trỏ, chỉ số Các thanh ghi SP, BP là các thanh ghi con trỏ không tách rời. SP (Stack Pointer): Thanh ghi con trỏ ngăn xếp, trỏ vào đỉnh hiện thời của ngăn xếp 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), 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 7 6 5 4 3 2 1 0 x x X x O D I T S Z 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. 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

Các file đính kèm theo tài liệu này:

  • docbaigiangvxl_8436_4516.doc
Tài liệu liên quan