🔙 Quay lại trang tải sách pdf ebook Giáo trình kỹ thuật vi xử lý Ebooks Nhóm Zalo B ộ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC THÁI NGUYÊN N g u y ễ n T ru n g Đ ồ n g - Bùi T h ị M ai H o a Ky th u ật VI x ử LY \O I= 7 / NHÀ XUẤT BẢ N KHOA HỌC V À KỸ THUẬT BỘ GIÁO DỤC VÀO ĐÀO TẠO ĐẠI HỌC THÁI NGUYÊN N g u y ế n T r u n g Đ ồ n g - B ù i T h ị M ai H o a Giáo trinh KỸ THUẬT VI XỬ LÝ NHẢ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT HÀ NÔI - 2010 Chịu trách nhiệm xuất bản TS. Phạm Văn Diễn Biên tập Vũ Thị Việt Hương Trình bày bìa : Thuỳ Dương NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT 70 - Trần Hưng Đạo, Hà Nội In 200 bản khổ 15,5 X 22,5 cm tại Công ty TNHH in Thanh Bình Số ĐKKHXB: 1051-2009/CXB/ 12-132/KHKT ngày 13/11/2009. Quyết định xuất bản số 435/QĐXB-NXBKHKT ngày 30/12/2009. In xong và nộp lưu chiểu 1/2010. LỜI NÓI ĐÀU Công nghệ thông tin đang được ứng dụng rộng rãi trong nhiều lĩnh vực khoa học công nghệ và cuộc song thườĩig nhật. Bên cạnh khối lượng phần mềm hệ thống và ứng dụng đồ sộ, công nghệ phần cứng cũng phát triên vô cùng nhanh chóng. Có thê nói, các hệ thông máy tỉnh được cải thiện trong những khoảng thời gian rắt ngắn, càng ngày càng nhanh hơn, mạnh hơn và hiện đại hơn. Những kiến thức cơ bản về phần cứng cùa các hệ thống máy tính luôn luôn là đòi hỏi cấp thiết cùa những người chọn công nghệ thông tin làm định hướng cho nghề nghiệp và sự nghiệp khoa học trong tương lai. Giáo trình Kỹ thuật Vi xử lý được viết trên cơ sở những bài giáng theo sát để cương môn học đã được thực hiện tại Khoa Công nghệ thông tin trực thuộc trường Đại học Thải Nguyên từ khi thành lập đến nay và luôn luôn được sửa chữa, bo sung đế đáp ứng nhu cầu kiến thức cùa sinh viên học tập tại Khoa Công nghệ thông tin.. Giáo trình được chia thành 5 chương: Chương I giới thiệu những kiến thức tổng quan được sử dụng trong kỹ thuật Vi xứ lý các hệ đếm, cách thức biểu diễn thông tin trong các hệ Vi xừ lý và mảy tính, cũng như nhìn nhận qua về lịch sử phát triến cùa các trung tâm Vi xử lý. Chương II giới thiệu cẩu trúc và hoạt động cùa các đơn vị xứ lý ' trung tâm từ ịiP8085 đến các cấu trúc cùa Vi xử lý họ 80x86, các cẩu trúc RISC và CISC. Do những ứng dụng thực tê rộng lớn trong đời sổng, trong chương II có giới thiệu thêm cẩu trúc và chức năng cùa chip Vi xử lý chuyên dụng ỊXC8051. 3 Chương III cung cấp những kiến thức về lổ chức bộ nhớ cho một hệ Vi xử lý, kỹ thuật và các bước xây dựng vỉ nhớ ROM, RAM cho hệ Vi xử lý. Chương IV đi sâu khảo sát một số mạch chức năng khả lập trình như mạch điều khiển vào/ra dừ liệu song song, mạch điểu khiển vào/ra dữ liệu nổi tiếp, mạch định thời và mạch điều khiến ngắt. Chương V giới thiệu cúc cấu trúc và cách xây dựng, phổi ghép một sổ thiết bị vào/ra cơ bủn cho một hệ Vi xử lý như bàn phím Hexa, hệ thông chỉ thị 7 thanh, bàn phím máy tỉnh và màn hình. Cuốn giáo trình có thế cỏn thiếu sót, rất mong được sự góp ỷ của các độc giả. Mọi ỷ kiến đóng góp xin gửi về theo địa chỉ: Bộ môn Kỹ thuật máy tính - Khoa Công nghệ Thông tin Đại học Thải Nguyên - Thái Nguyên Hoặc theo địa chỉ Email: dongnt@Ịin.vnn.vn. Tel 098 341 0866 Nhóm biên soạn 4 MỤC LỤC CHƯƠNG I . TỔNG QUAN VẺ CÁC HỆ VI xừ LÝ 9 IẾl ẵ Các hệ đếm 9 1.1.1 Hệ đếm thập phân (R = 10 - Decimal) 10 IẼ1.2 Hệ đếm nhị phân (R = 2 - Binary) 10 1.1.3 Hệ đếm bát phân (R = 8 - Octal) 10 I.lể4 Hệ đém 16 (R = 16-Hexa) 10 1.2. Chuyển đồi lẫn nhau giữa các hệ đếm 11 1.2.1 Hệ nhị phân và hệ thập phân 1 r 1.2.2 Hệ nhị phân và hệ Hexa 13 Iẻ3. Biểu diễn thông tin trong các hệ Vi xử lý 14 1.3.1 Mã hoá các thông tin không số 15 1.3.2 Mã hoá các thông tin số 15 1.3.3 Biểu diễn dữ liệu số trong máy tính 15 1.3.4 Bản chất vật lý của thông tin trong các hệ Vi xử lý 17 1.4 Vài nét về thực hiện các phcp tính trong hệ đếm nhị phân 18 1.4.1 Phép cộng và phép trừ 19 1.4.2 Phép nhân và phép chia 20 I.5. Cấu trúc của hệ Vi xử lý và máy vỉ tính 21 1.5.1 Vài nét về lịch sử phát triển các trung tâm Vi xử lý 21 1.5.2 Cấu trúc cơ bản của hệ Vi xử lý 22 CHƯƠNG II. CÁC ĐƠN VỊ VI xử LÝ TRUNG TÂM (CPU - CENTRAL PROCESSING UNIT) II.l. Trung tâm Vi xử lý |iP8085 29 IIễl.l Các nhóm tín hiệu trong |iP8085 32 II. 1.2 Khái niệm và bản chất vật lý của các BUS trong hệ Vi IIệ 1.3 Các mạch 3 trạng thái, mạch chốt và mạch khuyếch đại BUS 2 chiều 37 II. 1.4 Biểu đồ Timing thực hiện lệnh của CPU HP8085 41 IIỖ1.5 Khái niệm chu kỳ BUS 43 II. 1.6 Ngắt (Interrupt) 45 II. 1.7 Truy nhập trực tiếp bộ nhớ (Direct Memory Access - DMA) 46 II. 1.8 Vi chương trình (Microprogram) và tập lệnh của ịiP8085 48 II. 1.9 Vài nét về lập trình cho 8085 54 II. 1.10 Hệ lệnh cua |iP8085 56 II.2. Các trung tâm Vi xử lý họ 80x86 61 II. 1.1 Mô tả chân của fiP8086 và các tín hiệu 61 II. 1.2 Cấu trúc Trung tâm Vi xử lý họ 80x86 64 II. 1.3 Hệ thống thanh ghi trong các |j.P80x86 66 II. 1.4 Các chế độ làm việc MIN/MAX 72 II. 1.5 Phương thức quản lý bộ nhớ, các mode địa chi 72 II. 1.6 Phương thức đánh địa chỉ thiết bị ngoại vi 78 II. 1.7 Các mạch Multiplexer, mạch Decoder, mạch PLA 79 II. 1.8 Vài nét về lập trình hợp ngữ 81 II.3ẽ Cấu trúc và tính năng của một số chip Vi xử lý hiện đại 82 IIỂ3.1 Cấu trúc chip Vi xử lý Pentium 85 11.3.2 Cấu trúc RISC, CISC 90 11.3.3 Quản lý bộ nhớ 90 11.3.4 Bộ nhớ cache 95 II.4. Single-Chip Microcomputer JIC8051 96 11.4.1 Tổng quan 96 11.4.2 Mô tả cấu trúc và chức năng 99 11.4.3 Lập trình cho |iC8051 112 11.4.4 Các khả năng ứng dụng của ỊiC8051 113 CHƯƠNG III. Bộ NHỚ TRONG CỦA HỆ VI xử LÝ III.l. Bộ nhớ trong hệ Vi xử lý ỉ 1 4 III. 1.1 Phần tử nhớ, vi mạch nhớ, từ nhớ và dung lượng bộ nhớ 114 6 IIIễ 1.2 Vài nét về bộ nhớ trong của hệ Vi xừ lý và máy tính PC 116 III. 1.3 Phân loại các chip nhớ ROM, RAM 121 III.3. Tổ chức bộ nhớ cho hệ Vi xử lý 123 111.3.1 Tổ chức bộ nhớ vật lý 123 111.3.2 Thiết kế vỉ nhớ cho hệ Vi xử lý 124 CHƯƠNG IV. CÁC CHIP KHẢ LẬP TRÌNH (PROGRAMMABLE) rv ềl. Tổng quan 128 IV.2. Một sổ mạch chức năng tiêu biểu 128 IV.2.1 Mạch vào/ra dữ liệu song song PPI-8255 (Progranmiable Peripheral Interface). 128 rv.2.2 Mạch điều khiển ngất PIC-8259 135 IV.2.3 Mạch đếm định thời đa năng PIT-8253 (Programmable Interval Timer) 147 IV.2.4Mạch điều khiển vào/ra nối tiếp đồng bộ/dị bộ ƯSART-8251 155 CHƯƠNG V. THIẾT BỊ VÀO RA CỦA HỆ VI xử LÝ v .l. Bàn phím Hex Keyboard 172 V.2. Ghép nối bàn phím với hệ Vi xử lý 177 V.2.1 Hệ thống bàn phím của máy vi tính 177 v .2.2 Quá trình truyen dữ liệu từ bàn phím cho CPU 179 v ẻ3ẳ Mạch điều khiển và lập trình chỉ thị 7-segments 180 V.4. Màn hình (Monitor) 182 V.4.1 Màn hình ống tia âm cực CRT (Cathode Ray Tube) 182 v.4.2 Ghép nối mận hình với hệ Vi xử lý 183 v.4.3 Bộ điều khiển màn hình CRTC 185 PHỤ LỤC PHỤ LỤC A 139 7 PHỤ LỤC B 194 PHỤ LỤC c 196 PHỤ LỤC D 197 TÀI LIỆU THAM KHẢO 153 8 CHƯƠNG ; TỎNG QUAN VÈ CÁC HỆ VI x ử LÝ 1.1 ẵ Các hệ đếm Hệ đếm thông dụng nhất trong đời sống là hệ đếm cơ số 10 (thập phân - Decimal), sử dụng 10 ký tự số từ 0 đến 9. Ngoài ra, trong sản xuất, kinh doanh còn có khi sử dụng hệ đếm cơ số 12 (tá - dozen). Trong các hệ thống máy tính, để xử lý, tính toán, do cách biểu diễn dữ liệu thông qua các trạng thái “0” (không có điện áp) và “ 1” (có điện áp), nên phải sử dụng các hệ đếm cơ số 2 (nhị phân - Binary), hệ cơ số 8 (bát phân - Octal), hệ cơ số 16 (Hexa). Tuy nhiên, việc nhập dữ liệu hay đưa kết quả xử lý, ta lại dùng hệ đếm cơ số 10 do tính trực giác và thói quen của người dùng. Một số N trong một hệ đếm bất kỳ có n+l chữ số , trong đó gồm n chữ số thuộc phần nguyên và / chữ số thuộc phần thập phân, được triển khai theo công thức tổng quát: k=-l trong đó: R là cơ sổ của hệ đếm ũk là trọng của chừ số ở vị trí thứ k (0 < dk 9) không được sử dụng. 1.3.3. Biểu diễn dữ liệu số trong máy tính - Biểu diễn dữ liệu là số nguyên có dấu: Giả sử dùng 2 bytes (16 bits) để biểu diễn một số nguyên có dấu, bit cao nhất (MSB - Most Significant Bit) được dùng để đánh dấu. số dương có bit dấu s = “0”, sổ âm có bit dấu s = “ 1”. D,5 D,4 D,3 D,2 Di ế Dio D, d 8 d 7 d 5 d 5 d 4 d 3 d 2 D, Do s X X X X X X X X X X X X X X X 15 - Biểu diễn dữ liệu là số thực có dấu: về nguyên tắc, dấu cùa số vẫn là giá trị của MSB như đã quy ước ờ trên. Có hai dạng số có dấu phẩy được sử dụng trong máy tính: số dấu phẩy tĩnh (fixed point) và số dấu phẩy động (floatting point). • Dấu phẩy tĩnh sẽ phân chia chuỗi chữ số thành phần nguyên và phần phân số. Ví dụ ta có thể viết: ±001 1101.0110 1101 Nhưng nói chung, trong các máy chuyên dụng, thường phải tìm một phương pháp thích họp để có thể biểu diễn số có dấu phẩy cổ định mà dấu phẩy được đặt ngay sau ô dấu, nghĩa là số dấu phẩy tĩnh có dạng: ±0.knkn-ikn-2-. .k|ko • Dấu phẩy động được dùng rất phổ biến, dạng chuẩn tẩc như sau: N = ±F X 2æ trong đó F là phần định trị (Mantissa) và E là phần đặc tính (Exponent - số mũ). Theo nguyên tắc này, một số thực được biểu diễn trong các máy 32 bit như sau: 31 30 23 22 0 Số được biểu diễn có giá trị thực tính theo biểu thức: N = (-l)s x 2e' 127 X F Với cách biểu diễn này, có thể thấy độ lớn của các số như sau: Sổ dương: +3.4 X 1038 < N <+3.4 X 10'38 Số âm: - 3.4 X 1038 < N < - 3.4 X 1CT38 Liru ỷ: KJii kèt quả phép tính vượt quá các giới hạn trên, nếu sổ mù (exponent) là dương, sẽ được coi là -00 hoặc +OC. Trone trường hợp số mù là âm và vượt qua số mù cực đại cho phép, kết qua được coi là băng 0. 16 Dạng số chính xác gấp đôi (Double precision) được biểu diễn như sau (64 bits): 63 62 52 51 0 Và giá trị thực được tính theo biểu thức: N = (-l)s X 2e'1023 X F. Đối với các dữ liệu số có dấu, để thuận tiện cho xử lý và tính toán, trong máy thường được biểu diễn dưới các dạng mã thuận, mã ngược (complement) hoặc mã bù 2 (two-complement). Giả sử ta có số A=+0.10010, các mã trên đều biểu diễn như nhau, nhưng với số B = -0.10010 thì sẽ được biểu diễn như sau: Bình thường A = -0.10010 Mã ngược A = 1.00110 (bù 1, tức là đảo các chữ số trong số đó) Mã bù 2 A = 1.00111 (tương ứng với bù 1 cộng thêm 1). Cũng cần lưu ý, trong các máy tính ngày nay, số thực được biểu diễn theo chuẩn IEEE 754 ra đời năm 1985. 1.3.4. Bản chất vật lý của thông tín trong các hệ Vi xử lý Trong các hệ Vi xử lý, thông tin về các giá trị “0” hay “1” được biểu diễn thông qua một mức điện áp so với mức chuẩn chung, thường là đất (GND - Ground). Độ lớn của điện áp biểu diễn các giá trị này phụ thuộc vào công nghệ được sử dụng để tạo nên phần tử mang thông tinễ Đối với các mạch tổ hợp TTL (Transistor-Transistor-Logic), các mức điện áp được mô tả trong hình 1.1. Ta thường dùng ký hiệu Vh để chỉ mức cao, Vl để chỉ mức thấp. Trong mạch TTL, ta dùng mức cao, mức thấp để chi điện áp cao, điện áp thấp so với điện áp chuẩn chung. Các mức cao, thấp không phải là một giá trị cố định, mà là một vùng giới hạn cho phép. Ngoài phạm vi đã nêu, vùng không thuộc hai mức trên là vùng không chắc chắn, không xác định. 5V VH giới hạn frên ^ ro > VH định mức r ứ n g vái giá trị “ 1* IV } 0.2V ov VH giới hạn dưới Vùng không chắc chắn ,8V)^ VL giới hạn trên(0. VL giới hạn dưới ứng với giá tri “(r Hình 1.1. Phạm vi mức cao ‘ãl ”, thấp "0 ” của mạch TTL. Input►Output Hình 1.2. Một phần từ mang thông tin. Vật mang thông tin về các giá trị “0” hoặc “ 1” là một mạch điện tử đặc biệt mà đầu ra của nó sẽ tương ứng với một trong hai mức trên, được gọi chung là Flip-Flop. Tuỳ theo yêu cầu sừ dụng, các Flip-Flop có các khả năng thu nhận các tín hiệu vào và đưa túi hiệu ra theo những quy luật nhất định (hình 1.2). 1.4. Vài nét về thực hiện các phép tính trong hệ đếm nhị phân Phép cộng và phép trừ hai số nhị phân 1 bit được thực hiện theo quy tắc nêu trong bảng sau: 18 A B zV/Ul 1J (Nhơ) 0 + 0 = 0 0 0 + 1 = 1 0 1 + 0 = 1 0 1 + 1 = 0 1 A B HiệuBorrow (Mượn) 0 - 0 = 0 0 0 - 1 = 1 1 1 - 0 = 1 0 1 _ 1 = 0 0 1.4.1. Phép cộng và phép trừ a) Phép cộng đại số các sổ hạng dấu phẩy cổ định Đối với phép cộng đại số: Thực hiện bình thường. Trong trường hợp có một toán hạng là một số âm, ta sử dụng mã ngược hoặc mã bù 2 của nó, hiệu chỉnh kết quả theo các quy tắc thông qua các ví dụ minh hoạ sau: A = 0 ẻ10010 A = 0.10010 A = 0.10010 B = -0.11001 (B)„g = 1.00110 (B)b= 1.00111 z = -0.00111 I = lẽ11000 I = l ế11001 (I)ng = -0.00111 (S )b = -0.00111 Thấy rằng: ■ Số biểu thị kết quả sẽ là mã thuận nếu là một số dương. 19 ■ số biểu thị kết quả là mã ngược nếu ta dùng mã ngược đối với số hạng âm và cho kết quả là một số âm. ■ Số biểu thị kết quả là một số bù 2 nếu dùng mã bù 2 đối với số hạng âm và kết quả là một số âm. b) Phép cộng đại sổ các sổ hạng dấu phẩy động Đối với phép cộng đại số các số hạng dấu phẩy động, cần tiến hành các bước sau: ■ Cân bàng phần đặc tính (số mũ) bằng cách dịch chuyển phần định trị. ■ Đặc tính của tổng bằng đặc tính chung. ■ Định trị của tổng bằng tổng các định trị. ■ Chuẩn hoá kết quả nếu cầnỂ 1.4.2. Phép nhân và phép chia a) Phép nhân Đối vói phép nhân các toán hạng dấu phẩy tĩnh, việc quan trọng là phải xác định dấu của kết quả, theo đó dấu của kết quả bằng tổng modul 2 của các bit dấu. Trị số của tích là kết quả của phép tịnh tiến (dịch phải) và phép cộng. Với các toán hạng có dấu phẩy động, dấu của tích được xác định như ở phép nhân với dấu phẩy tình, sau đó tiến hành tìm tích số như sau; ■ Cộng phần đặc tính (số mũ), kết quả là đặc tính của tích. ■ Nhân phần định trị, không để ý đến dấu của các toán hạng. ■ Chuẩn hoá kết quả nếu cần. b) Phép chia Đối với phép chia các toán hạng dấu phẩy tĩnh, việc quan trọng là phải xác định dấu của kết quả, theo đó dấu của kết quả bằng tổng 20 modul 2 của các bit dấu. Trị số của thương số là kết quả của phép dịch trái và phép trừ. Với các toán hạng có dấu phẩy động, dấu cùa thương số được xác định như ở phép chia với dấu phẩy tĩnh, sau đó tiến hành tìm thương số như sau: ■ Trừ phần đặc tính (số mũ), kết quả là đặc tính cùa thương số. ■ Chia phần định trị, không để ý đến dấu của các toán hạng. ■ Chuẩn hoá kết quả nếu cần. Nhận xét: Dễ dàng nhận thấy rằng các phép tính số học nêu ừên chung quy lại vẫn chủ yếu là thực hiện phép cộng và phép dịch (shift)ệ 1.5. Cấu trúc của hệ Vi xử lý và máy vi tính 1.5.1. Vài nét về lịch sử phát triển các trung tâm Vi xử lý Sự xuất hiện của máy tính điện tử (MTĐT) vào khoảng năm 1948 đã mở ra một trang mới trong nghiên cứu khoa học nói chung và khoa học tính toán nói riêng. Nhưng phải mãi đến năm 1971, các hệ Vi xử lý mới bắt đầu xuất hiện. Sự ra đời của Single chip 4-bit Microprocessor Intel®4004 (ịiP4004) vào năm đó thực sự là một cuộc cách mạng trong ngành công nghiệp máy tính. Có thể nói ịiP4004, với độ dài từ xử lý 4 bits, đã làm thay đổi toàn bộ cách nhìn nhận về các thiết bị đầu cuối của MTĐT, hay các cơ cấu chấp hành ừong điều khiển quá trình. nP4004 có thể quản lý trực tiếp 4K từ lệnh 8bit của bộ nhớ chương trình và 5120 bits bộ nhớ dữ liệu RAM. CPU còn có 16 thanh ghi chỉ số được sử dụng làm bộ nhớ tạm cho dữ liệu. Với tập lệnh gồm 46 lệnh, |iP4004 đã chiếm được nhiều ưu thế trong các ứng dụng thực tế lúc bấy giờ. Tiếp tục của dòng ịiP 4bit này là HP4040, có nhiều cải tiến mạnh mẽ so với ỊiP4004 và một loạt các chip chức năng, chip nhớ ra đờiễ Trong giai đoạn tiếp theo từ năm 1974 đến 1977, Intel® đã đi đầu trong việc chế tạo các CPU 8bit, |iP8008, |iP8080 và đặc biệt là 21 ịiP8085, những CPU có BUS dữ liệu 8 bits và BUS địa chi 16 bitsế Các loại CPU này đã có khả năng quản lý được 64K từ nhớ của bộ nhớ và 256 thiết bị ngoại vi. Điều đáng chú ý ở ịiP8085 là công nghệ dồn kênh và chia sẻ thời gian hợp lý trên BUS đã cho phép đưa ra thêm những tín hiệu điều khiển rất mạnh, cho phép xây dựng những máy vi tính đầu tiên. Khoảng thời gian năm 1978 đến năm 1982 là giai đoạn ra đời và phát triển manh mẽ của các trung tâm Vi xử lý 16 bits. Đặc biệt ở cuối giai đoạn này là sự xuất hiện các trung tâm Vi xừ lý HP8088, nP8086, với khả năng xử lý dữ liệu 16 bits và BUS địa chỉ 20 bits, được sử dụng để tạo ra các máy vi tính XT, có ổ đĩa mềm để lưu giữ chương trình ứng dụng và dữ liệu. Tiếp theo của giai đoạn này là sự phát triển vũ bào của các loại JJ.P80186, |iP80286, 80386SX, 80486-SX và 80486-DX, với nhịp đồng hồ lên đến 100MHz. Máy vi tính AT và các máy tính PC ra đời trong giai đoạn này dù giá thành còn rất cao, nhưng đã trờ thảnh rất thông dụng trong đời sống con người. Từ khoảng giữa những năm 1993 ữở lại đây, các trung tâm vi xử lý Pentium ra đời, tốc độ ngày càng cao, với nhịp đồng hồ lên đến hàng GHz và sự xuất hiện của các trung tâm xừ lý đa phân luồng. 1.5.2. Cấu trúc cơ bản của hệ Vi xử lý Các khối chức năng cơ bản của một hệ Vi xử lý (hình 1.3) gồm: - Đơn vị xử lý trung tâm (CPU) - Bộ nhớ ROM, RAM - Thiết bị vào (nhập dừ liệu - Input device) - Thiết bị ra (đưa dữ liệu ra - Output device) - Ngoài ra còn phải kể đến khối tạo xung nhịp (Clock Generator) và khối nguồn (Power Supply). 22 Bộ NHỚ CHỈNH RAM ROM BUS HỆ THỐNGX2: > T T n POWER GHÉP Nul VÀO GHÉP N --------- ---------------- — ÔI RA SUPPLY THIÉT BỊ VÀO THIÉTBỊ RA Hình 1.3. Sơ đổ khối cấu trúc cơ bàn hệ Vi xứ lý. Các khối chức năng cơ bán được nối với nhau qua một tập đường dây truyền dẫn tín hiệu điện gọi là BUS hệ thống. BUS hệ thống bao gồm 3 BUS thành phần: BUS địa chỉ, BUS dừ liệu và BUS điều khiển (chiều mũi tên trên sơ đồ khối hình 1.3 chỉ thể hiện hướng đi của dừ liệu). Thiết bị vào/ra thường được ghép nối với BUS hệ thống thông qua giao diện ghép nối (I/o Interface). Đơn vị xử lý trung tăm (Central Processing Unit - CPU) là khối chức nãng cơ bàn nhất để tạo nên một hệ Vi xử lý hay máy tính cá nhân (Personal Computer - PC). Máy vi tính là một trong những ứng dụng cụ thể của một hệ thống gọi là Hệ Vi xử lý. Cl) CPU thực hiện chức năng xữ lý dừ liệu thông qua các hoạt động chinh sau: ■ Đọc mã lệnh - đọc tập các bit thông tin “0” và “ 1” từ bộ nhớ chính. ■ Giải mã lệnh - tạo các xung điều khiển tương úng với mã lệnh đê điều khiển hoạt động của các khối chức năng khác. Ệ Thực hiện từng bước các thao tác xử lý dữ liệu theo yêu cầu của lệnh. Bên trong CPU có các thanh ghi (Registers): ễ Thanh ghi con trỏ lệnh IP (Instruction Pointer), trong các trung tâm vi xử lý trước đây còn gọi là thanh đếm chương 23 trình PC (Program Counter) chứa địa chỉ của lệnh kế tiếp cần được thực hiện trong tuần tự thực hiện chương trình. ■ Các thanh ghi đa dụng khác GPRs (General Purpose Registers) để lưu trữ tạm thời dữ liệu, kết quả trung gian hay trạng thái của hệ thống cùng với đơn vị sổ học và logic ALU (Arithmetic and Logic Unit) thực hiện các thao tác xử lý dữ liệu. ■ Đom vị điều khiển CƯ (Control Unit) là thành phần phức tạp nhất, có chức năng giải mã lệnh và tạo các tín hiệu điều khiển hoạt động của toàn hệ thống. b) Bộ nhớ chính được tổ chức từ các từ nhớ, trong IBM/PC từ nhớ có độ dài 1 byte (8 bits). Bộ nhớ này gồm các chip nhớ chi đọc ROM (Read Only Memory) và các chip nhớ truy xuất ngẫu nhiên RAM (Random Access Memory) có tốc độ truy cập nhanh. Bộ nhớ được sử dụng để chứa các chương trình và các dữ liệu điều khiển hoạt động của hệ thống. Các chương trình ứng dụng và dữ liệu có thể được chứa ở ROM hoặc RAM, các kết quả trung gian hay kết quả cuối cùng của các thao tác xử lý có thể được chứa trong các thanh ghi đa dụng hoặc trong khối nhớ RAM. c) Các mạch ghép nối vào/ra là các mạch điện tử cho phép CPU trao đổi dữ liệu với các thiết bị ngoại vi như bàn phím, màn hình, máy in... làm giao diện với người dùng hoặc các bộ chuyển đổi số-tương tự DAC (Digital/Analog Converter), chuyển đổi tương tự-số ADC (Analog/Digital Converter), các mạch vào/ra sổ DO (.Digital Outputs), DI {Digital Inputs)... d) Hệ Vi xử lý còn có một mạch tạo xung nhịp gọi là đồng hồ hệ thống {Clock Generator), điều khiển và duy trì hoạt động đồng bộ của tất cả các khối chức năng. Bộ tạo xung này được điều khiển bàng một mạch thạch anh có tần số thích hợp và đảm bảo tần số làm việc ổn định cho toàn bộ hệ thống. e) Một khối nguồn nuôi {Power Supply) cung cấp n ă n g lượng cho hệ thống tò mạng điện lưới. 24 Di$n âp mOt chièu s a câpPower Switching T ransistor Hinh 1.4. Sa âô khoi bç nguon nuôi mày tinh. to Di$n âp mOt chièu thir câp: ±5V, ±12V Chînh lu>u s a câp Û 0 220VAC Bộ nguồn của các hệ Vi xử lý thông thường là bộ nguồn xung với kỹ thuật đóng-ngắt dùng bán dẫn công suất (Switching Power Supply), vừa gọn nhẹ, công suất lớn lại vừa đảm bảo độ gợn sóng nhỏ nhất và khả năng chống nhiễu cao. Hình 1.4 là sơ đồ khối của bộ nguồn đóng-ngắt. Điện áp lưới (220VAC) được chỉnh lưu trực tiếp, lọc bằng tụ hoá để cung cấp cho một bộ dao động tần số cao (từ 20KHz đến 40KHz). Các xung điện áp tần số cao được chuyển sang biến áp xung công suất hạ áp. Điện áp ở lối ra của biến áp xung được chỉnh lưu và lọc thành điện áp nguồn một chiều cung cấp cho hệ thống. Nguyên lý ổn áp ở đây là thay đổi độ rộng của các xung có tần số ổn định, do vậy sự dao động của điện áp đầu ra khi có tải được chuyển qua bộ cảm biến để điều chỉnh độ rộng này, đảm bảo sự ổn định của điện áp ra. I.5.3ễ Từ hệ Vi xử lý đến máy vi tính PC Trong thực tế, các hệ Vi xử lý hiện đại được trang bị thêm nhiều thiết bị ngoại vi tiện dụng tuỳ theo yêu cầu, mục đích sử dụng và có giao diện thân thiện với con người. Đó là các máy vi tính PC. Cũng có thể là những hệ Vi xử lý chuyên dụng cho những mục đích tính toán hay điều khiển. a) Máy tính xử lỷ dữ liệu: Là các máy tính được dùng để tính toán, xử lý các dữ liệu như quản lý nhân viên trong cơ quan, tính toán tiền lương, tính toán kết cấu công trình, phân tích dữ liệu ữong kinh doanh, v.v... Quan điểm đúng cho rằng máy tính chỉ gồm CPU và bộ nhớ chính, còn các thiết bị phụ trợ khác như bàn phím, máy in, các ổ đĩa cứng, đĩa mềm, ổ CD, chuột, màn hình, máy in..., là những thiết bị ngoại vi. Các chương trình để xử lý dữ liệu được lưu giừ trong bộ nhớ chính hoặc trong các ổ đĩa, có nhiệm vụ xử lý những dữ liệu được người dùng nhập vào và đưa kết quả xừ lý ra màn hình, in ra giấy hoặc lưu giữ trong các ổ đĩa. Để đánh giá tính năng và chất lượng của 26 các máy này, ta thường căn cứ vào tốc độ xử lý dữ liệu, dung lượng bộ nhớ, ổ đĩa, chất lượng màn hình, máy in v.v.. ễ Hình 1.4. Máy Vi tỉnh PC. b) Máy tính là bộ xử lý số: Các máy tính loại này có khả năng xừ lý các dữ liệu số với khối lượng tính toán vô cùng lớn. Chúng được sử dụng chủ yếu trong các cơ quan dự báo, như dự báo khí tượng, thuỷ văn, trong tính toán quỹ đạo bay của tên lửa, máy bay, tàu thuỷ, v.v... hay trong các phòng nghiên cứu khoa học. Những máy tính loại này thông thường thực hiện những chương trình tính toán khổng lồ, nên chúng được trang bị các CPU rất mạnh và các thiết bị ngoại vi, bộ nhớ ngoài rất lớn. Đó là những siêu máy tính {Supercomputer). c) Máy tính đo lường và điểu khiển: Sự phát triển nhanh chóng của các hệ thống máy tính đã tạo ra những ứng dụng lớn lao trong các hệ thống đo lường và điều khiển tự động. Đối với các ứng dụng thông thường như trong các dụng cụ gia dụng, từ tivi, điều hoà nhiệt độ, máy giặt v.v... Đó là những máy tính nhỏ được chế tạo dưới dạng một vi mạch (Single-Chip Microcomputer). Tuy nhiên, cũng cần phải tính đến những máy tính này trong các thiết bị hiện đại và phức tạp như trong các hệ thống tự động lái máy bay (Autopilot), tàu thuỷ, tên lửa... d) Căn cứ vào tỉnh nũng kỹ thuật và các chỉ tiêu về kích thước: Các máy tính còn được chia ra thành máy tỉnh lớn để giải các bài toán cực lớn với tốc độ rất nhanh, máy tỉnh nhỏ sử dụng trong gia đình, 27 trong trường học hay các tính toán thông dung, điều khiển các quá trình công nghệ vừa và nhò. Cũng cần nhắc đến ở đây một sự khác biệt giữa hai khái niệm hệ Vi xử lý và máy vi tính là: các máy vi tính luôn luôn được trang bị một phần mềm cơ bản là Hệ điều hành, ví dụ: MS-DOS hay các phiên bản điều hành đa nhiệm (MS-WINDOWS cùa hăng phần mềm Microsoft, hoặc các hệ điều hành của các hãng khác...) và các chương trình hay phần mềm ứng dụng,- trong khi các hệ Vi xử lý chi cần trang bị một chương trình Monitor (chương trình giám sát) đơn giản được ghi trong bộ nhớ ROM. 28 CHƯƠNG II CÁC ĐƠN VỊ VI XỬ LÝ TRUNG TÂM (CPU - Central Processing Unit) Vì hầu hết các máy vi tính đang được sử dụng ở Việt Nam đều được xây dựng trên cơ sở của các chip xử lý của hãng Intel®, nên tài liệu này cũng giới hạn sự trình bày ứong khuôn khổ các trung tâm vi xử lý của hãng này. Các độc giả có thể tìm hiểu thêm về các trung tâm vi xử lý của các hãng khác như Motorola, AMD,... ở một số tài liệu tham khảo liệt kê ở phần cuối giáo trình. Trong quá trình phát triển, hãng Intel® đã cho ra đời nhiều thế hệ CPU, thường gọi là ịiP (MicroProccesor) tò đom giản đến phức tạp, từ thông dụng đến chuyên dụng. Tính phát huy và kế thừa luôn được coi trọng ữong quá trình này. Vì vậy, các chương trình ứng dụng chuẩn phần lớn có thể thực hiện được ưên bất kỳ máy vi tính được xây dựng từ thế hệ ỊiP nào. 11.1. Trung tâm Vi xử lý ụP8085 Hình II.la là sơ đồ khối cấu trúc của |iP8085, hình II.lb là sơ đồ nối chân của |iP8085. Khác với các loại |iP xuất hiện trước đó như fiP8008 hay |iP8080, |iP8085 có những bước phát triển có tính đột phá như sau: 29 OINTA RST6.5 TRAP SID SOD RST7.5 INTR I RST5.5 »T7.5 * Interrupt Control I ♦ 8-BIT Internal data BUS Inst. Reg (8) Instruction Decoder And Machine Cycle Serial I/O Control --------------- B Reg. (8) D Reg. (8) H Reg. (8) c Reg. (8) E Reg. (8) L - Reg. (8) Encoding ~ U ~ X, Timing and Control Program Counter (16) Increment/Decrement Address Latch(16) x2CLK GEN T JRESET READY CONTROL STATUS DMA 1 I î Tt I HOLD 1 RESET IN v 7 Address Data/Addr Buffer (8) Buffer (8) CLK OUT E D W R ALE S0 Si IO/M HLDA RSOUT Hinh II. la. Sa dô khoi cau true nP8085. a Ats - A* Address BUS n AD7 — ADo Address/ Data BUS XiC , V 40 □ Vcc □ HOLD RESET OUTC □ HLDA sodC □ CLK OUT sidQ □ RESET IN trapQ □ READY RST7.5E □ IO/M RST6.5Q □ Si RST5.5Q □ RD INTRQ 8085 □ WR I ntãQ CPU □ ALE ADol □ So ADịỊ 1 Ais AD2£ 1 Au AD3Q 1 Au ad4q I A12 ADsQ I An ADbQ I A10 ad7q □ A„ VssQ 20 21 Hình II. lb. Sơ đồ nối chân cùa /jP8085. 1. Cơ cấu ngắt theo nhiều mức khác nhau được hình thành qua một khối điều khiển ngắt, tạo ra một vector ngắt tránh được sự chèn nhau do lệnh RETN ữên BUS dữ liệu. Tín hiệu nhận biết yêu cầu ngắt INTA được tạo bời khối điều khiển ngắt, chứ không phải từ mạch phụ 8228 như ờ |_iP8080. 2. Các tín hiệu điều khiển ghi/đọc WR và RD được tạo ra từ khối định thời và điều khiển chức năng. Các tín hiệu INTA, WR và RD được tạo ngay ừong CPU, chứ không do mạch phụ trợ bên ngoài. 3. P-P8085 có mạch tạo xung đồng hồ được tích hợp ngay trong CPU. 31 4. Khối chức năng điều khiển vào/ra nối tiếp được tích hợp cùng cho phép JJ.P8085 thực hiện các lệnh vào/ra dữ liệu nối tiếp mà nhiều khi không cần đến sự hỗ trợ của vi mạch chuyên dụng. 5. Đặc biệt hơn, HP8085 có hai thanh ghi đệm địa chỉ, đó là thanh ghi đệm Ai5 - Ag và thanh ghi đệm AD7 - ADo cho cả dữ liệu và địa chỉ. Việc dồn kênh như trên tạo điều kiện cho những chân chức năng khác được tạo thêm, làm tăng thêm sức mạnh cho CPU. IIềl.l. Các nhóm tín hiệu trong |iP8085 A s - A15. Nhóm tín hiệu ra: 8 bit cao của địa chỉ, các chân này là các chân được nối với bên ngoài qua mạch 3 trạng thái. Các phần tử 3 trạng thái sẽ được đặt ở trạng thái high-Z trong các trường hợp một trong các túi hiệu HOLD hay HALT là tích cựcế ADo - AD7. Nhóm tín hiệu dồn kênh 3 trạng thái. Ở giai đoạn đầu của chu kỳ máy, T1 của Mi sẽ là byte thấp cùa 16 bit địa chi. ALE (Address Latch Enable)ề Tín hiệu ra qua mạch 3 trạng thái. Được sử dụng đ ể chốt byte thấp của tín hiệu địa chỉ (Ao - A 7). Tín hiệu này được tạo ra trong giai đoạn đầu tiên của chu kỳ máy, Ti của Mi và cũng được dùng để chốt các tín hiệu trạng thái So và Si khi cần thiết. So, Si (Data BUS Status). Là các tín hiệu chỉ trạng thái của các chân thuộc BUS dữ liệu trong mỗi chu kỳ máy. Tổ hợp của hai tín hiệu này cũng cho biết trạng thái của CPU. Si So Hoạt động của BUS dữ liệu 0 0 Trạng thái HALT 0 1 CPU đang thực hiện thao tác WRITE 1 0 CPU đang thực hiện thao tác READ 1 1 CPU đang thực hiện thao tác nhận lệnh Instruction Fetch. 32 RD (Read)ề Chân ra 3 trạng thái. Nằm trong nhóm tín hiệu điều khiển. Tín hiệu tích cực khi CPU tiến hành đọc dữ liệu từ bộ nhớ hoặc từ thiết bị ngoại vi. Trong chế độ HALT hoặc DMA, chân ra này ở trạng thái high-Z. WR (Write). Chân ra 3 trạng Ihái. Nằm trong nhóm tín hiệu điều khiển. Tín hiệu tích cực khi CPU tiến hành ghi dữ liệu vào bộ nhớ hoặc đưa dữ liệu ra thiết bị ngoại vi. Trong các chế độ HALT hoặc DMA, chân ra này ở trạng thái high-Z. IO/M. Trạng thái logic của đầu ra này cho biết CPU đang làm việc vói thiết bị ngọại vi hay với bộ nhớ. Nếu là logic “ 1”, CPU đang truy cập thiết bị vào/ra, còn nếu là “0”, CPU đang truy cập bộ nhớ. Kết hợp với hai đầu ra RD và WR để tạo ra các tín hiệu I/OR, I/OW, MEMR, MEMW trong trường hợp sử dụng địa chi tách biệt đối vói thiết bị vào/ra. Nằm trong nhóm tín hiệu điều khiển nên IO/M cũng là đầu ra 3 trạng thái. Interrupts. ịiP8085 có ngắt đa mức. Có 5 chân ngắt tất cả: (INTR, RST5.5, RST6.5, RST7.5 và TRAP). Ngoài chân ngắt không che được là TRAP, các chân khác đều có thể che hoặc không che nhờ lập trình phần mềm. - INTRĩ Chân nhận yêu cầu ngắt từ bên ngoài, được đáp ứng theo nguyên tắc polling hoặc vectoring thông qua lệnh RST. Các yêu cầu ngắt RST: Có 3 đầu vào yêu cầu ngắt với các mức ưu tiên khác nhau là RST7.5, RST6.5 và RST5.5. Khi yêu cầu ngắt xuất hiện tại các chân này, CPU tự động chuyển đến các vector ngắt tương ứng. Cụ thể như sau: • RSTSjJ là mức ưu tiên thấp nhất, phản ứng theo mức điện áp trên chân yêu cầu ngắt, địa chỉ vector ngắt này nằm ở ô nhớ có địa chi 2Ch. 33 • RST6.5: Ngắt ưu tiên thấp thứ 2, phản ứng theo mức điện áp trên chân yêu cầu ngắt, địa chỉ vector ngắt này nằm ở ô nhớ 34h. • RST7.5: Mức ưu tiên cao nhất. Phản ứng theo sườn lên của xung yêu cầu ngắt. Sườn lên của xung này tác động lên một flip-flop, mạch này giữ lại yêu cầu ngắt cho đến khi được xoá nhờ tín hiệu nhận biết yêu cầu ngắt Acknowledge. Địa chỉ của vector ngắt này nằm ở ô nhớ 3Ch. TRAP: Là chân nhận yêu cầu ngắt không che được (dĩ nhiên là nó có mức ưu tiên cao nhất). Địa chỉ của vector ngắt này ở ô nhớ 24H. INTA. TÚI hiệu ra nhận biết yêu cầu ngắt tại chân INTR. Các yêu cầu ngắt RST5.5, RST6.5, RST7.5 và TRAP không tác động đến INTA. HOLDể Trạng thái logic “ 1” ở chân này là yêu cầu của thao tác DMA. Các đầu ra RD, WR, IO/M và ALE sẽ được đưa về trạng thái high-Z. HLDAẳ TÚI hiệu nhận biết yêu cầu HOLD. RESET IN. Logic thấp “0” ở đầu vào của chân này yêu cầu tái khởi động hệ Vi xử lý. Do tác động của tín hiệu RESET IN tích cực, giá trị của thanh đếm chương trình PC sẽ được nạp lại là OOOOh. Các mặt nạ ngắt và tín hiệu HLDA cũng được tái thiết lập về giá trị mặc định. RESET OUT. Đầu ra nhận biết hệ Vi xử lý được tái khởi động. Dùng tín hiệu này để tái khởi động toàn bộ hệ thống. READY. Logic “1” ở đầu vào này thông báo trạng thái sẵn sàng cung cấp dữ liệu cho CPU hoặc nhận dữ liệu từ CPU của các thiết bị ngoại vi. 34 SID (Serial Input Data). Là cổng vào của dữ liệu nối tiếp của hệ Vi xử lý. Bit hiện diện tại cổng này được đọc vào CPU nhờ lệnh RIM, bit sẽ được đưa vào bit cao của Acc (MSB). SOD (Serial Output Data). Bit cao (MSB) của Acc được truyền ra ngoài chân này khi sử dụng lệnh SIM. Xi X2. Lối nối thạch anh hoặc một mạch dao động để tạo xung nhịp cho CPU. Có thể sử dụng thạch anh có tần số dao động trong khoảng từ 0.5 đến 3MHz. CLK. Đầu ra của xung nhịp, có thể làm xung nhịp cho các thành phần chức năng khác trong hệ Vi xử lý. Vcc, Vss. Lối nối nguồn +5V và GND cho JJ.P8085. Cũng cần nhắc lại ràng, |aP8085 chi cần một nguồn nuôi duy nhất là +5V, khả năng cung cấp dòng của nguồn cần được thiết kế tuỳ theo nhu cầu của toàn hệ Vi xử lý. II.1.2. Khái niệm và bản chất vật lý của các BUS trong hệ Vỉ xử lý Hoạt động của một hệ Vi xử lý thực chất là việc trao đổi và xử lý các giá trị nhị phân giữa các thành phần, các khối và các mạch vi điện tử trong toàn bộ hệ thống. Như đã biết, các giá trị nhị phân (hoặc “0” hoặc “1”) được thể hiện qua mức điện áp so với một chuẩn nhất định. Giá trị “0” tương ứng với mức điện áp thấp (từ o v đến +0,8V) và giá trị “ 1” tương ứng với mức điện áp từ khoảng +3V đến +5V. Để biểu diễn một số liệu nhị phân, các phần tử mang thông tin được liên kết kề nhau theo nhóm (ví dụ lbyte là 8 bits). Để đảm nhận công việc di chuyển các dữ liệu này trong toàn bộ hệ thống, có các đường dây truyền dẫn điện chuyên dụng được ghép song song thành hệ thống, mỗi dây truyền dẫn dành riêng cho 1 bit. Tập các đường truyền dẫn dành riêng cho các tí« hiệu GÓ cùng chức danh (dữ liệu, địa chi, điều khiển) được gọi là BUS. Như vậy, trong một hệ Vi xử lý, có ba loại 35 BUS: BUS dữ liệu, BUS địa chỉ và BUS điều khiển. Các BUS này hợp lại thành BUS hệ thống. Từ khái niệm trên, dễ dàng suy ra bản chất vật lý của các BUS trong một hệ Vi xử lý: Đó là các đường truyền dẫn điện, có thể dưới các dạng cáp nhiều sợi, đường dẫn trong các bảng mạch in v.v... Khả năng và chất lượng dẫn điện của các đường truyền dẫn này đóng vai trò quan trọng và quyết định đối với hoạt động của một hệ Vi xử lý. Đường truyền dẫn kém, trở kháng cao có thể gây ra sự suy giảm của tín hiệu điện dẫn đến các hiện tượng mất mát hoặc sai dữ liệu, rất nguy hiểm. BUS là đường dẫn điện nội bộ mà theo đó các tín hiệu được truyền từ bộ phận này đến các bộ phận khác trong hệ Vi xử lý. Có 3 loại BUS trong một hệ Vi xừ lý cũng như trong máy tính PC: • BUS dữ liệu: truyền dữ liệu theo hai chiều giữa bộ nhớ và trung tâm Vi xừ lý, giữa các thiết bị ngoại vi và trung tâm Vi xừ lýễ • BUS địa chỉ: xác định các vị trí nhớ trong bộ nhớ, các thiết bị ngoại vi. • BUS điều khiển: truyền các tín hiệu điều khiển đến các bộ phận cần được điều khiển. Các BUS được xây dựng bằng cách sử dụng các khe cắm theo một quy ước chặt chẽ đối với từng tiếp điểm. Đối với các khe cẳm, các tiếp điểm tương ứng sẽ được nối với nhau bàng các dây dẫn hoặc đường dẫn song song trên mạch in. Nhờ vậy, khi dữ liệu được truyền đi, tất cả các bit (8, 16, 32, hay 64) đều được truyền đi đồng thời, cùng một hướng (truyền dẫn song song). Cũng cần nói thêm rằng, trong máy PC, có 3 loại cấu trúc BUS thường gặp là ISA (Industrial Standard Architecture) EISA (Enhanced ISA) và PCI (Peripheral Component Interconnect). II. 1.3. Các mạch 3 trạng thái, mạch chốt và mạch khuếch đại BUS 2 chiều Trước tiên, cũng cần nhắc lại một số linh kiện điện tử số cơ bản sử dụng trong máy vi tínhể Nhờ công nghệ cao, các linh kiện có độ tích hợp lớn và rất lớn đã ra đời, nhưng không thể không nhìn lại một số mạch tổ hợp thực hiện những hàm logic cơ bản nhất. a) Các cổng logic Ký hiệu các mạch được chỉ ra trên hình II.2, cùng biểu thức hàm logic gồm: mạch đệm (bufer), mạch đảo (NOT), mạch và (AND), mạch NAND, mạch hoặc (OR), mạch NOR và mạch XOR. Y=A Y=A Y=A+B Y=A.B Y=A. Y=A+B Hình II. 2. Một sổ cổng Logic thông dụng. Các loại mạch này thường được sử dụng để tạo nên các mạch tổ hợp logic thực hiện các chức năng lập mã, giải mã, dồn kênh và phân kênh. Cũng cần lưu ý ràng, một số mạch chức năng như giải mã dồn kênh và phân kênh đã được các hãng tích hợp dưới dạng các mạch MSI. Một số mạch là: mạch giải mã 3/8 SN74138, mạch dồn kênh 74151, mạch cộng và mạch nhân v.v... b) Mạch 3 trạng thái (Tìristate Component) Trong hệ Vi xử lý, có nhiều khối chức năng cần thông tin, nhưng tại một thời điểm, bao giờ cũng chỉ có một khối đưa tín hiệu ra (dữ 37 liệu) và một số hạn chế các khối thu nhận tín hiệu. Thay vì nối dây dẫn liên kết các khối qua từng đôi phần tử một, các tín hiệu này được đưa lên BUS. Với các cổng logic thông thường, không thể nối trực tiếp chúng lên cùng một đường dây vì sẽ xẩy ra tranh chấp BUS vì đoản mạch. Ví dụ đầu ra của phần tử A là “1” trong lúc đầu ra của phần tử B là “0” (hình II.3). Các đầu ra của loại mạch này đều theo cấu trúc pull-up, nghĩa là có hai transistor được nối nối tiếp với nhau (xem hình vẽ), emitter của transistor này qua một diode rồi đến đầu ra, đến collector của transistor kia. Với hai trạng thái logic “ 1” và “0”, tương ứng sẽ là Ti mở, T2 đóng và ngược lại T2 mở, Ti đóng. Trên hình vẽ IIể2 hiện tượng nguy hiểm xẩy ra khi lối ra của phần tử logic A là “1”, các khoá mở hay đóng tương đương việc transistor thông bão hoà hay ngắt, lối ra của phần tử logic B là “0” và hiện tượng đoản mạch xẩy ra. Vcc Out put Đầu ra Pull-up của phần từ logic Hình II. 3a. Hiện tượng đoán mạch xáy ra khi nối hai đầu ra của hai phần từ lên cùng một đường dây cùa BUS. 38 Để tránh hiện tượng này, một loại cổng logic gọi là cổng 3 trạng thái (tri-state gate) được sử dụng cho lối ra của các khối nối chung vào BUS. Hình II.3a là một phần tử đảo đầu ra 3 trạng thái. Hình II.3b là sơ đồ tương đương của trạng thái high-Z, tương ứng với trường hợp đầu ra bị tách khỏi BUSệ Như vậy, để tránh xung đột trên BUS, các phần tử có đầu ra nối với BUS cần phải đưa qua cổng 3 trạng thái. +5V Enable Input [> . Output Hình II. 3b. Phần tử đảo 3 trạng thái và sơ đồ tương đưomg đầu ra cùa phần tử ở trạng thái high-Z. c) Mạch chốt, thanh ghi Mạch chốt là một mạch gồm các phần tử có khả năng lưu giữ các giá trị “0” hoặc “ 1” ở lối ra. Có thể dùng D flip-flop làm một mạch chốt với tín hiệu để chốt dữ liệu tại đầu ra Q theo bảng giá trị chân lý sau: D Q CK Q D CK Q Q X 0 Q Qn 0 1 0 1 1 1 1 0 Hình II. 4. Mạch chốt (hay phần từ nhớ) D Flip-Flop. 39 Biết rằng Qn+1 = D với tín hiệu điều khiển là sự xuất hiện sườn dương của xung nhịp CK. Như vậy, giá trị logic (0 hoặc 1) tại D đã được chuyển sang đầu ra Q (chốt). Nếu CK giữ nguyên trạng thái bằng “1”, thì trạng thái đầu ra Q được giữ nguyên. Như vậy, giá trị logic của D đã được lưu giữ ở Q (nhớ). D3 D2 D1 Do Q3 Q2 Q i Qo Hình II. 5. Thanh ghi 4 bits. Thanh ghi (Register) là một nhóm các mạch flip-flop được nối song song với nhau, có thể lưu giữ được các số liệu nhị phân. Hình II.5 là sơ đồ một thanh ghi lưu giữ số liệu nhị phân 4 bits được tạo từ 4 phàn tử D flip-flop. Một số liệu nhị phân bất kỳ từ D3 đến Do sẽ được chốt sang các lôi ra từ Q3 đến Qo mỗi khi có một sườn lên của xung nhip CK được đưa tới lối vào xung nhịp. Từ nhị phân này được lưu giữ ở lối ra cho đến khi có dữ liệu mới được đưa vào lối D và có xuất hiện sườn lên của xung nhịp CK. d) Mạch khuếch đại BUS 2 chiều Trên cơ sở của các mạch 3 trạng thái, các mạch khuếch đại BUS hai chiều được xây dựng theo nguyên lý sau: 40 Hai phần tử 3 trạng thái sẽ được ghép ngược với nhau (hình IIẵ6), chần điều khiển sẽ dùng tín hiệu đảo của tín hiệu đọc RD. Khi xuất hiện tín hiệu RD, dữ liệu được phép đi từ Qo sang Do, ngược lại, tín hiệu chỉ được phép đi từ Do sang Qo và cho phép CPU đưa tín hiệu ghi dữ liệu ra ngoài. Ghép nối đủ số phần tử cho tất cả các dây dữ liệu, ta có mạch khuếch đại BUS hai chiềuễ Trong thực tế, mạch có chức năng trên đã được tích họp theo chuẩn của TTL, được ký hiệu là 8228 hoặc 8288 (Octal BUS Transceiver). n c d I 1 X ............. 1............) k L - C+1)l A ■\____r 10 port X 10 port -<* )U X D ata to m em ory or peripheral n / \ "\____ r I 0/m' Status ị So S i (F etch) Memory Read Ml ị 1 0 (R e a d ) Memory Read M, r ị 01 (W rite) Memory Or Peripheral Write M3 I I I Hình II. 7. Định thời cơ sờ cua ụP8085 (Theo tài liệu cua hãng Intel). CPU cùng đồng thời gửi 16 bit địa chỉ ra ở chu kỳ máy đầu tiên, ngay từ nhịp đầu tiên (Ti) để xác định ô nhớ hay thiết bị I/o. Nội dung PC] chí tồn tại trong thời gian 1 nhịp nên cần phải được chốt lại nhờ tín hiệu ALE ơ mức cao. Khi D7 - Do đã ốn định trên các dây dừ liệu, CPU gìri tín hiệu RD. Khi đà nhận được dừ liệu, RD chuyển lên mức cao để cấm vị trí ô nhớ hay thiết bị I/o. Sổ lượng chu kỳ máy và trạng thái cần cho thực hiện một lệnh là cô định, song số lượng này khác nhau đối với các lệnh khác nhau, tuv theo độ dài cua từ lệnh (1 byte, 2 bytes, 3 bytes), số lượng chu kỳ máy 42 phụ thuộc vào số lần CPU phải liên lạc với các phần tử khác trong hệ thống, chủ yếu là với các chip khác. Ml (Opcode Fetch) CLK----- ioTm Tj / T, / t 4 / Ts / Ts / So,Si X t A 15 — As X pc" V Unspecified Instruction Code > 1 D > ooĩ pCt y - Ẩ D’ - D" * 11111 X ALE 1 / \ RD 11 1ĩ 1ì Hình II. 8. Biểu đồ thời gian cùa các tín hiệu trong chu kỳ mảy nhận lệnh (Opcode Fetch). IIếỈ.S. Khái niệm chu kỳ BUS Khoảng thời gian (tính theo số lượng chu kỳ xung nhịp) để CPU (hoặc đơn vị làm chủ BUS) thực hiện hoàn thiện một thao tác di chuyển dữ liệu từ CPU đến bộ nhớ, đến thiết bị ngoại vi hoặc theo chiều ngược lại được gọi là chu kỳ Bưs. Một chu kỳ BUS được CPU hoặc đơn vị làm chủ BƯS thực hiện trong hai giai đoạn: - Giai đoạn một: CPU gửi địa chỉ vị trí cần truy xuất (ô nhớ hoặc thiết bị ngoại vi) lên Bưs địa chỉ, khoảng thời gian này được gọi là thời gian địa chỉ (address time). Địa chỉ đích (destination - địa chỉ của một ô nhớ hay địa chỉ thanh ghi dữ liệu của thiết bị ngoại vi cần 43 truy xuất) được CPU (hoặc đom vị làm chủ BUS) gửi lên BUS địa chi cùng các tín hiệu xác định loại chu kỳ BUS. - Giai đoạn hai: CPU kiểm ưa tín hiệu sẵn sàng (READY) của đơn vị cần truy xuất (bộ nhớ hoặc thiết bị ngoại vi) để thực hiện việc di chuyển và chốt dữ liệu. Khoảng thời gian này được gọi là thời gian dữ liệu. Tồn tại 4 loại chu kỳ BUS cơ bản: a. Chu kỳ BUS đọc dữ liệu từ bộ nhớ (Memory Read). b. Chu kỳ BUS ghi dữ liệu vào bộ nhớ (Memory Write). c. Chu kỳ BUS đọc dữ liệu từ thiết bị ngoại vi (I/o Read). d. Chu kỳ BUS ghi dữ liệu vào thiết bị ngoại vi (I/o Write). Ngoài ra, do sự khác nhau về vận tốc, khả năng xừ lý và chuẩn bị, hoàn thiện dữ liệu, tín hiệu READY chưa ở mức tích cực, các thao tác di chuyển dữ liệu của CPU phải tạo thêm các trạng thái đợi (Wait State) nên các loại chu kỳ BUS có độ dài khác nhau. CLK T, / li . / T, / T« I T. / T« 1 Aïs - A» l PC. V Unspecified Data ADt - ADo V p * Y-J D.-0. Y % 1 ALE 1 / \ ĩ1 RD V r Hình 11.9. Biểu đồ thời gian cùa các tín hiệu trong chu kỳ BUS đọc dữ liệu từ ô nhớ (Memory Read). IIệl Ệ6. Ngắt (Interrupt) Trong thực tế, tốc độ xử lý dữ liệu của CPU cao hom rất nhiều so với “sự chế biến dữ liệu” của các thiết bị I/O. Vì vậy cần tạo ra một cơ chế vào/ra hợp lý để tăng hiệu suất làm việc của CPU. Ngắt trong hệ thống Vi xử lý nhằm mục đích giải quyết sự bất hợp lý do CPU phải chờ đợi thiết bị ngoại vi. Thiết bị ngoại vi chỉ ỵêu cầu CPU phục vụ việc nhận hay chuyển giao dữ liệu Jdii bản thân nủ đã sẵn sàng. Đê thực hiện tốt yêu cầu này, cơ chế phục vụ ngắt là hợp lý nhất. Ngắt nghĩa là yêu cầu CPU tạm thời dừng công việc hiện tại để trao đổi hay xử lý dữ liệu không thuộc tuần tự của chương trình đang được thực hiện. Ngắt là một hiện tượng xuất hiện ngẫu nhiên về phương diện thời điểm nhưng được dự đoán trước. Ngắt là hiện tượng một tín hiệu xuất hiện báo với CPU rằng có một sự kiện đã xẩy ra, yêu cầu CPU phải xừ lý. Quá trình xử lý của CPU sẽ bị tạm thời dừng lại để thực hiện một thao tác khác phục vụ sự kiện có yêu cầu. Khi thao tác này kết thúc, quá trình xử lý vừa bị tạm dừng sẽ được tiếp tục. Bản thân sự kiện thông thường là yêu cầu phục vụ của thiết bị ngoại vi đối với CPU. Trong thực tế, ngắt được sử dụng chủ yếu khi các thiết bị ngoại vi (thường rất chậm so với tốc độ xử lý của CPU) cần trao đổi thông tin với CPU. Khi cần trao đổi thông tin, thiết bị ngoại vi gửi tín hiệu yêu cầu ngắt (Interrupt Request) tới CPU. CPU sẽ thực hiện nốt lệnh hiện tại và trả lời bàng tín hiệu nhận biết yêu cầu ngắt (INTA). Chương trình chính lúc này bị tạm dừng (ngắt) và CPU chuyển sang thực hiện chương trình con phục vụ ngắt, tức là chương trình con trao đổi thông tin với thiết bị ngoại vi yêu cầu ngắt. Sau khi xong công việc phục vụ ngắt, CPU quay về thực hiện tiếp chương trình chính kể từ lệnh tiếp theo sau khi bị neắt. 45 Chương trình chính C hương trinh con phục vụ ngắt : 'T i Thời điểm bị n g ắ t_____ ► ' . * .................. i ........ĩ Hình II. 9. Quá trình phục vụ ngắt. Các tín hiệu yêu cầu phục vụ ngắt từ một thiết bị ngoại vi bất kỳ được gửi tới chân nhận yêu cầu ngắt của CPU, có thể thông qua một khối điều khiển ngắt. Tuỳ theo người lập trình mà yêu cầu ngắt đó có được chuyển tới CPU hay không. Trong trường hợp yêu cầu ngắt được gửi tới CPU, xừ lý của CPU gồm các bước sau: 1. Thực hiện nốt lệnh đang được xử lý. 2. Phát tín hiệu nhận biết yêu cầu ngẳt gửi cho thiết bị yêu cầu phục vụ ngắt qua chân INTA. 3. Cất các cờ trạng thái hiện tại vào ngăn xếp. 4. Xoá các cờ IF (Interrupt Flag) và cờ TF (Trap Flag). 5. Cất địa chỉ lệnh tiếp theo trong tuần tự chương trình đang thực hiện vào ngăn xếp. 6. Lây địa chỉ của chương trình con phục vụ ngắt trong bảng vector ngắt. 7. Thực hiện chương trình con phục vụ ngắt. IIỂl ế7. Truy nhập trực tiếp bộ nhớ (Direct Memory Access - DMA) Trong nhiều Irường họp, xẩy ra hiện tượng phải chuyển một khối dữ liệu từ thiết bị ngoại vi vào một vùng nhớ hoặc ngược lại. Với phương pháp vào/ra bằng chương trình, dữ liệu nào cũng phải đi qua CPU, nên làm chậm tốc độ trao đổi dữ liệu. Để khắc phục tình trạng này, ta dùng phương pháp trao đổi dữ liệu giữa một vùng nhớ với thiêt bị ngoại vi một cách trực tiếp không thông qua CPU, đó là phương pháp truy nhập trực tiếp bộ nhớ {DMA). Trong phương pháp này, CPU giao quyền điều khiển BƯS dữ liệu cho một chip điện tử chuyên dụng gọi là chip DMAC (DMA Controller). Chip DMAC tự tạo ra địa chỉ, tạo các tín hiệu điều khiển việc ghi/đọc bộ nhớ, đếm số từ dữ liệu đã được ghi vào hoặc đọc từ bộ nhớ và sẽ thông báo cho CPU khi đã thực hiện xong việc trao đổi dữ liệu với bộ nhớ. Quá trình được thực hiện hoàn toàn bằng phần cứng, trực tiếp giữa thiết bị vào/ra và bộ nhớ liên tốc độ trao đổi thông tin tương đối nhanh. CPU không cần nhận lệnh, giải mã lệnh và thực hiện các lệnh di chuyển dữ liệu. Hình II. 10. Mô tả các tín hiệu điều khiển trong quá trình DMA. Khi có yêu cầu trao đổi dữ liệu theo DMA, thiết bị ngoại vi gửi tín hiệu yêu cầu DRQ tới chip DMAC, chip này gửi tín hiệu yêu cầu treo HRQ tới chân HOLD của CPU. Nếu yêu cầu được chấp nhận, CPU sẽ gửi xung ghi nhận HLDA tới chân HACK của chip DMAC và 47 tự treo các BUS, cho phép DMAC sử dụng BUS. DM AC gừi tín hiệu DACK tới thiết bị ngoại vi cho phép thiết bị này thực hiện việc trao đổi dữ liệu. Kết thúc quá trình trao đổi dữ liệu, chip DMAC chuyển trạng thái của tín hiệu HRQ về mức thấp để thông báo cho CPU. II.1.8. Vi chương trình (M icroprogram) và tập lệnh của nP8085 a) Đơn vị điều khiến cu - Control Unit CU - Control Unit là đơn vị điều khiển, điều phối mọi hoạt động của các bộ phận chức năng trong CPU thông qua Control BUS. Có thể coi CU là khối dịch lệnh của CPU, để tạo ra các tín hiệu tương ứng điều khiển hoạt động của các khối chức năng. Các tín hiệu do c u tạo ra có thể phân thành 2 loại: Tín hiệu định thời và tín hiệu điều hành hoạt động của CPU. Các tín hiệu định thòi do c u tạo ra xác định trạng thái của CPU làm việc: - Đang ở chế độ đọc dữ liệu vào (Input mode). - Đang đưa dữ liệu ra (Output mode). - Đang bắt đầu một hoạt tác khác (Beginning another operation). Các tín hiệu trạng thái của CPU xác định CPU đang: - Đọc dữ liệu từ bộ nhớ (Memory Read). - Ghi dữ liệu vào bộ nhớ (Memory Write). - Nhận lệnh (Instruction Fetch). - Đọc dữ liệu từ thiết bị ngoại vi (I/o Read). - Đưa dữ liệu ra thiết bị ngoại vi (I/o Write). Cũng có thể có những thao tác không được nêu ở đây, nhưng chi các thao tác trên là quan trọng nhất. Cần hiểu ràng mạch Controller Logic tạo các tín hiệu điều khiển dựa vào các tín hiệu trạng thái của CPU và tín hiệu định thời, có nghĩa là tạo tín hiệu gì và vào thời điểm nào. 48 To Data BUS Intruction Register D Q CK Q D Q CK ■q D Q CK Q c = D Q CK o' t D Q CK Q 1 X D Q CK Q D Q CK Q 0 Q CK Q Clock IR7 IRe IRs IR, IR3 IR2 IRl IP ----------lKo Decode 1 Ị~|~' ' ~ - Ị Enable ' ,S l 9 .n a l I — 1 U ..J.X.U .JJ — ; (Logic L W r i 1 i to HÌ11I1 II. 11. Mạch phát hiện lệnh MOVE B INTOA (0 1 0 0 0 1 1 1). Detects Enable) Instruction MOVE from B INTO A cu Đe hiếu được kiến trúc khối CƯ, hãy tìm lời giải đáp cho câu hoi: Sau khi nhận lệnh, CPU làm sao “biết" phải thực hiện những thao tác nào đê thực hiện lệnh? Tất cả các lệnh đều được biểu diễn dưới dạng mà nhị phân. Giả sử lệnh được biểu diễn bàng một mã 8 bits 0100011 IB (chuyển nội dung thanh ghi B sang thanh ghi A, ký hiệu là [A] <= [B]). Trước hết, lệnh phải được giải mã. Một mạch AND có thể sử dụng đế tạo ra tín hiệu nhận biết lệnh (Hình II. 11). Đầu vào của mạch AND này được nối với đầu ra của thanh ghi lệnh. Đầu ra của các phần tư trong thanh ghi lệnh xác nhận sự hiện diện của lệnh MOVE B TO A theo công thức (MOVE B TO A) = IR7.IR6.ĨR5.ĨR4.IR3.IR2.IR1.IR0. Trong đó IRn là đầu ra của các flip-flop tương ứng với các giá trị nhị phân của mà lệnh MOVE B TO A. Mạch AND nhận biết mã lệnh được gọi là mạch giải mã lệnh. Như vậy, nếu CPU sử dụng 8 bit đề mã hoá các lệnh, có thể có 256 lệnh và mạch giải mã lệnh cũng sẽ cần đến 256 mạch AND tương tự. Tuy nhiên, đầu vào của mỗi mạch là một tổ hợp duy nhất trong 256 tổ hợp có thể. Để thực hiện lệnh, khối điều khiển cu xúc tiến mọi thao tác ngay bên trong CPU bàng cách tạo ra các tín hiệu điều khiển và các xung nhịp để định thời cho các khối chức năng thực hiện các thao tácễ Thanh ghi lệnh IR mã Nhận biẽt lệnh N Hình II. 12. Nhận biết các lệnh từ tổ hợp mã nhị phán. Sau khi nhận tín hiệu tò khối giải mã lệnh (Instruction Decoder), CƯ sẽ tạo ra các tín hiệu điều khiển và các xung nhịp. Tín hiệu điều khiển sẽ cho phép (Enable) khối chọn thanh ghi (Reg Select) chọn thanh ghi B và thiết lập hệ thống đường truyền thông suốt giữa hai thanh ghi B và A. Sau đó, cu sẽ tạo các tín hiệu tương ứng để việc truyền dữ liệu giữa hai thanh ghi được thực hiện. Tiếp theo, CU điều khiển thanh đếm chương trình PC tảng lên 1 để nhận tiếp lệnh từ bộ nhớ. Vì cu có nhiệm vụ giám sát và điều khiên mọi thao tác của các thành phần chức năng trong CPU, nên các dây điều khiển phải được nối trực tiếp từ cu tới mọi khối chức năng trong CPU như trên hình II. 13a. Cũng cần nhận thức ràng, lệnh được CPU lấy từ bộ nhớ. Trong thực tế, dữ liệu để xử lý cũng có thể xuất phát từ bộ nhớ và các thanh ghi cũng có thể được chọn bất kỳ ngoại trừ thanh ghi lệnh IR, thanh đếm chương trình PC. Như vậy, lại cần thêm một thanh ghi liên lạc vói BUS dữ liệu có nhiệm vụ truy nhập được vào bộ nhớ. Thanh ghi này làm 1111112 eian 50 giữa Bưs dữ liệu bên ngoài và các thanh ghi đa năng khác, nó được liên lạc với nhau thông qua BUS dữ liệu nội bộ (Intemal Data BUS) - một BƯS mà các thanh ghi được truy xuất trực tiếp, cu phải làm nhiệm vụ xác định thanh ghi nào được truy xuất qua BƯS dữ liệu nội bộ tại thời điểm đó. Cũng vì BUS dữ liệu nội bộ của CPU truy xuất đến Bưs dữ liệu hệ thống, nên cần phải có một cách thức để hoặc cách ly chúng khi cần thiết, hoặc cho phép ghép nối, nên cần thiết phải có thêm thanh ghi đệm dữ liệu hai chiều. Như vậy, cu phải làm nhiệm vụ điều khiển hướng di chuyển của dữ liệu khi đi qua thanh ghi đệm (xem hình II.13Ồ). INTERNAL DATA BUS Hình U. lìa) Mô tà kiến trúc của cu. b) Vi chương trình Giả thiết lối ra của khối giải mã lệnh và tạo các tín hiệu điều khiển phải tạo ra 12 tín hiệu tại các cửa Gi - G12, 2 tín hiệu điều khiển bộ nhớ và 5 tín hiệu xung nhịp kích hoạt các thanh ghi: PC (thanh đếm chương trình), MAR (thanh ghi đệm địa chi), MSR (thanh ghi đệm bộ nhớ), DO (thanh ghi dữ liệu), IR (thanh ghi lệnh) để điều khiển quá trình nhận và thực hiện lệnh ADD. Các tín hiệu này được gửi tới để 51 điều khiển hoạt động của các thành phần khác nhau trong CPU. Một chu trình thực hiện lệnh trên sẽ được thi hành. Thực tế trong CPU của máy tính có từ 64 đến hơn 200 các tín hiệu điều khiển như thế. Sự khác nhau quan trọng giữa các lệnh và vi lệnh là: vi lệnh có nhiều trường hơn. Tám bước trong bảng trên là một vi chương trình dịch một giai đoạn nhận lệnh (OPCODE FETCH) được thực thi sau lệnh cộng ADD. Như vậy một lệnh được dịch thành một chuỗi các vi lệnh, hay nói cách khác, mỗi mã lệnh có một vi chương trình. SYSTEM DATA BUS Ạr.:. Üif 1 ậ r Tín hiệu điêu khiển từ khốícu ADDRESS BUS Hình II. 13b) Mô tả kiến trúc cùa cu. 52 Số bước Các tín hiệu điều khiến cửa Điêu khiển bộ nhớ Các xung nhịp kích hoạt thanh ghi G, g 2 g 3 G« g 5 g 6 g 7 G , G„ Gio G „ G,2 EN E/W PC MAR MBR DO IR 1 1 0 0 0 0 0 0 0 0 0 0 0 0 X 0 1 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 X 1 0 0 0 0 3 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 4 0 0 0 0 0 0 1 0 0 0 0 0 0 X 0 0 0 0 1 5 0 0 1 0 0 0 0 0 0 0 0 0 0 X 0 1 0 0 0 6 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 7 0 0 0 0 0 0 1 0 0 1 0 0 0 X 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 1 0 X 0 0 0 1 0 Có thế thấy, khối giải mã lệnh và tạo các tín hiệu điều khiển: • “Biết” phải thực hiện lệnh “như thế nào”, một khi lệnh từ IR (Instruction Register) được chuyển tới. • Giải quyết việc thực hiện một lệnh bằng cách điều khiển các khối chức năng liên quan thực hiện các phần việc. Từ cách nhìn nhận trên, dễ dàng nhận ra khối giải mã lệnh và tạo các tín hiệu điều khiến là bộ não thực thụ của CPU. Có thể coi khối này là một máy tính đặc dụng (Special-purpose Computer)(t) bên trong CPU. Nó là hạt nhân cơ bản nhất dành riêng cho việc thực hiện một lệnh. Đe thiết kế và xây dựng được khối này, cần phải có một “chương trình” (progra>ný*) thật chi tiết. Chương trình dùng để xây dựng nên khối này cần phải có những thủ tục tuyệt đối chính xác nhằm mục đích thực hiện các lệnh. Chương trình đó được gọi là Vi chương trình (Microprogram) và được chế tạo như là một phần tích họp cứng bên trong CPU, người lập trình không thề thay thế cũng như không thể truy nhập vào được. Đôi với các loại |.tP dạng bit-slice microprocessor, Vi chương trình hoàn toàn do người sử dụng xây dựng. r) Thuật ngữ do hàng Intel sử dụng trong tài liệu gốc 53 a) Tập lệnh của /jP8085 Tập lệnh của |iP8085 có thể chia thành nhiều nhóm lệnh nhò tuỳ theo từng cách tiếp cận. Theo phương thức xử lý và kết quả của việc xử lý dữ liệu, các lệnh trong tập lệnh được chia thành 4 nhóm chính: 1. Nhóm lệnh chuyển dữ liệu: các lệnh trong nhóm này thực hiện việc sao chép dữ liệu giữa các thanh ghi với nhau, giữa thanh ghi với bộ nhớ và ngược lại, các lệnh vào/ra dừ liệu v.v... 2. Nhóm lệnh số học và logic: các lệnh trong nhóm này thực hiện các phép tính số học cơ bản là cộng và trừ 2 toán hạng, các lệnh tăng giảm, hay so sánh nội dung thanh ehi, các phép tính logic trong số học nhị phân, các phép dịch trái, phải dữ liệu trong thanh ghi, lệnh quay vòng trái phải v.v... 3. Nhóm lệnh điều khiển: bao gồm các nhóm lệnh rẽ nhánh có điều kiện và không điều kiện, các lệnh gọi chương trình con 4. Nhóm lệnh đặc biệt: bao gồm các lệnh lấy bù 1 của số liệu trong nội dung thanh ghi, lệnh thiết lập và xoá các cờ, lệnh hiệu chỉnh thập phân một số liệu Hexa và lệnh vào/ra dữ liệu nối tiếp. II.1.9Ệ Vài nét về lập trình cho 8085 Phát triển phần mềm (lập trình) và các kỹ thuật liên quan đóne vai trò quan trọng bậc nhất trong các ứng dụng từ đơn giản đến phức tạp của các hệ Vi xử lý và máy vi tính. Đối với các hệ Vi xừ lý, mọi ứng dụng đều được phát triển nhờ vào một “công cụ” phát triển phần mềm hoàn chỉnh: lập trình hợp ngữ. Quá trình phát triển một chương trình (phần mềm ứng dụne) cho một hệ Vi xử lý, kể tà khi xác định nhiệm vụ cần thực hiện cho đến khi chương trình được cài đặt hoàn chỉnh vào hệ thống có thể chia ra năm bước cơ bản sau đây: a) Đặt vấn đề (xác nhận vấn đề): Trước khi giải quyết vấn đề, người lập trình cần xác định xem, liệu vấn đề có thể được giải quyết nhờ một chương trình trong một hệ Vi xử lý hay không. Phải thấy rằng khône phải hệ Vi xử lý “vạn năng” đến mức có thể giải quyết tất cả mọi vấn đề nảy sinh trong thực tiễn, thậm chí đôi khi còn làm cho sự việc càng thêm phức tạp. b) Xác định phương pháp giải quyết vấn đề: Đây chính là bước tìm thuật giải (Algorithm) tối ưu cho vấn đề được đặt ra. Người lập trình phải tìm và lựa chọn được từ nhiều giải pháp một giải pháp tốt nhất, nhưng kinh tế nhất để thực hiện. Không chỉ tìm giải thuật tốt nhất mà còn phải tìm ngôn ngữ lập trình phù hợp nhất để giải quyết vấn đề. c) Thực hiện giải pháp: Phương pháp giải quyết vấn đề thường được xác nhận qua từng bước theo một lưu đồ. Lưu đồ là cách thể hiện tường minh các bước thực hiện chương trình trong hệ thống, đồng thời nó giúp người lập trình định hướng tốt khi viết chương trình. d) Viết chương trình: Bản thân lưu đồ đã cho thấy rõ giải pháp giải quyết vấn đề theo quan điểm lập trình. Việc chuyển từ lưu đồ sang ngôn ngữ chương trình là bước dễ dàng hơn rất nhiều so với cách viết chương trình không có lưu đồ. Đây chỉ là bước cụ thể hóa lưu đồ nhờ tuân tự thực hiện các lệnh và là bước thực tế hóa giải pháp thực hiện vấn đềẻ e) Kiểm tra và gỡ rối: Sau khi cài đặt, việc kiểm tra tính chính xác là vô cùng quan trọng. Những sai sót phải được phát hiện và hiệu chỉnh, đôi khi là từ chính thuật giải. Việc gỡ rối chương trình tức là thực hiện từng bước chương trình, phát hiện các sai sót ẩn, hiệu chỉnh các sai sót này. 55 Để thực hiện được tất cá bước trên, người lập trình phải có kỹ thuật lập trình hoàn thiện để thiểt kế chương trình, phải có các công cụ lập trình tốt. II.1.10. Hệ lệnh của H-P8085 Các lệnh của JJ.P8085 được thống kê trong bảng II. 1 Mnemonic Instruction Code D 7 D6 D s D 4 D 3 D 2 D , D oMô tả nhiệm vụ MOVE, LOAD AND STORE MOV r1,r2 0 1 D D D s s s Move R egister To Register MOVM.r 0 1 1 1 0 s s s Move R egister To Memory MOV rtM 0 1 D D D 1 1 0 Move Memory To Register MVI r 0 0 D D D 1 1 0 Move Immediate Register MVI M 0 0 1 1 0 1 1 0 Move Immediate Memory LXI B 0 0 0 0 0 0 0 1Load Immediate R egister Pair B & C LXI D 0 0 0 1 0 0 0 1Load Immediate R egister Pair D & E LXI H 0 0 1 0 0 0 0 1Load Immediate R egister Pair H & L STAX B 0 0 0 1 0 0 1 0 Store A indirect STAX D 0 0 0 0 1 0 1 0 Store A indirect LDAX B 0 0 0 1 0 0 1 0 Load A indirect LDAXD 0 0 0 1 1 0 1 0 Load A indirect STA 0 0 1 1 0 0 1 0 Store A direct LDA 0 0 1 1 1 0 1 0 Load A direct SHLD 0 0 1 0 0 0 1 0 Store H & L direct LHLD 0 0 1 0 1 0 1 0 Load H & L direct XCHG 1 1 1 0 1 0 1 1 Exchange D & E, H & L registers 56 STACK OPS PUSH B1 1 1 0 0 0 1 0 Push Register Pair B & C on stack PUSH D 1 1 0 1 0 1 0 1 Push Register Pair D & E on stack PUSH H 1 1 1 0 0 1 0 1 Push Register Pair H & L on stack PUSH PSW 1 1 1 1 0 10 1 Push A ang Flags on stack POP B 1 1 0 0 0 0 0 1 Pop Register Pair B & C off stack POP D 1 1 0 1 0 0 0 1 Pop Register Pair D & E off stack POP H 1 1 1 0 0 0 0 1 Pop Register Pair H & L off stack POP PSW 1 1 1 1 0 0 0 1 Pop A ang Flags off stack XTHL 1 1 1 0 0 0 1 1 Exchange register pair H & L, top of stack SPHL 1 1 1 1 1 0 0 1 H & L to stack pointer LXI SP 0 0 1 1 0 0 0 1 Load immediate stack pointer INX SP 0 0 1 1 0 0 1 1 Increment stack pointer DCX SP 0 0 1 1 1 0 11 Decrem ent stack pointer JUMP JMP 1 1 0 0 0 0 1 1 Jump uncoditional JC 1 1 0 1 1 0 1 0 Jump on carry JNC 1 1 0 1 0 0 1 0 Jump on no carry JZ 1 1 0 0 1 0 1 0 Jump on zero JNZ 1 1 0 0 0 0 1 0 Jump on no zero JP 1 1 1 1 0 0 1 0 Jump on positive JM 1 1 1 1 1 0 10 Jump on minus JPE 1 1 1 0 10 10 Jump on parity even JPO 1 1 1 0 0 0 1 0 Jump on parity odd PCHL 1 1 1 0 1 0 0 1 H & L to program counter 57 CALL t- tf. CALL 1 1 0 0 1 1 01Call unconditional CC 1 1 0 1 1 1 0 0 Call on carry CNC 1 1 0 1 0 1 0 0 Call on no carry c z 1 1 0 0 1 1 0 0 Call on zero jc N Z 1 1 0 0 0 1 0 0 Call on no zero CP 1 1 1 1 0 1 0 0 Call on positive CM 1 1 1 1 1 1 0 0 Call on minus CPE 1 1 1 0 1 1 0 0 Call on parity even CPO 1 1 1 0 0 1 0 0 Call on patity odd RETURN • RET 1 1 0 0 1 0 0 1 Return RC 1 1 0 1 1 0 0 0 Return on carry RNC 1 1 0 1 0 0 0 0 Return on no carry RZ 1 1 0 0 1 0 0 0 Return on zero RNZ 1 1 0 0 0 0 0 0 Return on no zero RP 1 1 1 1 0 0 0 0 Return on positive RM 1 1 1 1 1 0 0 0 Return on minus RPE 1 1 1 0 1 0 0 0 Return on parity even RPO 1 1 1 0 0 0 0 0 Return on patity odd RESTART I RST 1 1 A A A 1 1 1 Restart INPUT/OUTPUT 1 IN 1 1 0 1 1 0 1 1 Input ¡OUT 1 1 0 1 0 0 1 1 Output RIM 0 0 1 0 0 0 0 0 Read interrupt mask SIM 0 0 1 1 0 0 0 0 Set interrupt mask 58 INCREMENT AND DECREMENT INR r 0 0 D D D 1 0 1 Increment register DCR r 0 0 D D D 1 0 1 D ecrem ent register INR M 0 0 1 1 0 1 0 0 Increment memory DCR M 0 0 1 1 0 1 0 1 D ecrem ent memory INX B 0 0 0 0 0 0 1 1 Increment B&C registers INXD 0 0 0 1 0 0 1 1 Increment D&E registers INX H 0 0 1 0 0 0 1 1 Increment H&L registers DCX B 0 0 0 0 1 0 1 1 Decrem ent B&C registers DCX D 0 0 0 1 1 0 1 1 IDerement D&E registers DCX H 0 0 1 0 1 0 1 1 Decrem ent H&L registers ADD ADD r 1 0 0 0 0 s s s Add register to A ADC r 1 0 0 0 1 s s s Add register to A with carry ADD M 1 0 0 0 0 1 1 0 Add memory to A ADC M 1 0 0 0 1 1 1 0 Add memory to A with carry ADI 1 1 0 0 0 1 1 0 Add immediate to A ACI 1 1 0 0 1 1 1 0 Add immediate to A with carry DAD B 0 0 0 0 1 0 0 1 Add B&C to H&L DAD D 0 0 0 1 1 0 0 1 Add D&E to H&L DAD H 0 0 1 0 1 0 0 1 Add H&L to H&L DAD SP 0 0 1 1 1 0 0 1 Add S P to H&L SUBTRACT SUB r 1 0 0 1 0 s s s Subtract register from A SBB r 1 û 0 1 1 s s s Subtract register from A with borrow SUB M 1 0 0 1 0 1 1 0 Subtract memory from A SBB M 1 0 0 1 1 1 1 0Subtract memory from A with borrow SUI 1 1 0 1 0 1 1 0 Subtract immediate from A SBI 1 1 0 1 1 1 1 0 Subtract immediate from A with borrow 59 LOGICAL ANAr 1 0 1 0 0 s s s And register with A XRAr 1 0 1 0 1 s s s Exclusive OR register with A ORAr 1 0 1 1 0 s s s OR register with A CMP r 1 0 1 1 1 s s s Compare register with A ANAM 1 0 1 0 0 1 1 0 And memory with A XRAM 1 0 1 0 1 1 1 0 Exclusive memory with A ORAM 1 0 1 1 0 1 1 0 OR memory with A CMP M 1 0 1 1 1 1 1 0 Compare memory with A ANI 1 1 1 0 0 1 1 0 And immediate with A XRI 1 1 1 0 1 1 1 0 Exclusive OR immediate with A ORI 1 1 1 1 0 1 1 0 OR immediate with A CPI 1 1 1 1 1 1 1 0 Compare immediate with A ROTATE RLC 0 0 0 0 0 1 1 1 Rotate A left RRC 0 0 0 0 1 1 1 1 Rotate A right RAL 0 0 0 1 0 1 1 1 Rotate A left through carry RAR 0 0 0 1 1 1 1 1 Rotate A right through carry SPECIALS CMA 0 0 1 0 1 1 1 1 Com plem ent A STC 0 0 1 1 0 1 1 1 S et carry CMC 0 0 1 1 1 1 1 1 Com plem ent carry DAA 0 0 1 0 0 1 1 1 Decimal adjust A CONTROL El 1 1 1 1 1 0 1 1 Enable interrupt Dl 1 1 1 1 0 0 1 1 Disable interrupt NOP 0 0 0 0 0 0 0 0 No-operation HLT 0 1 1 1 1 1 1 0 Halt 60 11.2. Các trung tâm Vi xử lý họ 80x86 II.2.1. Mô tả chân của JIP8086 và các tín hiệu g n d C 1 V 40 □ Vcc A D 1 4 C □ AD15 AD131Z □ A16/S3 A D I2 C □ A17/S4 ADI 1 d □ A18/S5 ADloC □ A19/S6 A D 9 C □ BHE/S7 A D 8 d □ MN/MX A D 7 C □ RD A D ó C 8086 □ RQ/GTo (HOLD) A D 5 CCPU□ RQ/GT, (HLDA) AD4CI □ LOCK (WR) A D 3 C (O/M) A D 2 C □ i r (DT/R) A D l C □ So (DEN) A D o C □ QSo (ALE) N M i d □ q s , (INTA) i n t r C □ TEST clkỊZ □ READY g n d C 20 21 □ RESET Hình II. 14. Sơ đồ nối chân trung tâm Vi xử lý 8086. ỊiP8086 đươc chế tao theo công nghê HMOS. đóng vỏ CerDIP 40 chân là loại Vi xử lý có khả năng xử lý trực tiếp dữ liệu 8 hoặc 16 bit. về tập lệnh, |iP8086 hoàn toàn tương thích với tập lệnh của ĨAPX86/10 và về phần cứng, hoàn toàn tương thích với các mạch ngoại vi của các trung tâm 8080/8085 của Intelề |iP8086 có thể hoạt động ở một trong hai chế độ: - Chế độ MIN: CPU tự tạo ra các tín hiệu điều khiển hoạt động của BUS (các chân từ 24 đến 34). - Chế độ MAX: CPU chỉ đưa ra các tín hiệu trạng thái, cần thêm một chip điều khiển BUS (BUS controller 8288) và chip này sẽ thông dịch các tín hiệu trạng thái thành các tín hiệu điều khiển BUS tương thích với cấu trúc MULTIBUS™. Cách này đảm bảo hoạt động đọc số liệu ổn định hom. Hình II. 14 là sơ đồ nối chân của ỊiP8086 + AD15 - ADO: BƯS dồn kênh dữ liệu và địa chỉ 16 bits + A19 - A16 / S6 - S3: 4 bits địa chỉ cao hoặc 4 tín hiệu trạng thái hoạt động hiện tại của CPU S4 S3 Thanh ghi được truy xuẩt 0 0 ES 0 1 ss 1 0 cs 1 1 DSr * S5 chỉ trạng thái cờ ngăt; S6 luôn luôn băng 0 + BHE/S7: Tín hiệu này kết hợp với chân địa chỉ AO cho chi thị các trạng thái sau: BHE AO 0 0 Một từ đã được truyền qua DI 5 - DO 0 1 Một Byte trên D I5 - D8 được truy xuất tới một địa chỉ Byte lẻ 1 0 Một Byte trên D7 - DO được truy xuất tới một địa chi Byte chẵn 1 1 Chưa xác định + RD: Nếu bằng “ 1” đang đọc bộ nhớ (hoặc thiết bị vào/ra). Nếu bàng “0” đang ghi ra bộ nhớ (hoặc thiết bị vào/ra). + READY: Neu bộ nhớ (hoặc thiết bị vào/ra) cần truy nhập hoàn tất việc chuyển dữ liệu đến (hoặc đi), chúng cần phát ra túi hiệu READY ở mức “1” tới chân CPU, chỉ khi ấy CPU mới đọc số liệu vào hoặc đưa dữ liệu ra. + INTR: Nếu trạng thái ở chân này là mức logic “ 1”, CPU thực hiện nôt lệnh đang thực thi và chuyển sang phục vụ ngắt. Trạng thái này có thể bị “che” nhờ dùng mặt nạ che ngắt. 62 + TEST: Lối vào này của CPU luôn luôn được kiểm tra trong lệnh WAIT. Nếu bằng “0” CPU tiếp tục thực hiện chương trình, nếu bàng “1”, CPU chạy các chu trình giả cho tới khi TEST = “0”. + NMI: Chân ngắt theo sườn lên của xung, không che được. + RESET: Chân nhận tín hiệu tái khởi động hệ thống. Nếu có sự thay đổi từ “0” lên “ 1” và tồn tại tối thiểu trong bốn nhịp đồng hồ thì hệ thống sẽ tự khởi động lại tương tự như khi bật nguồn cho hệ thống. + CLK: Lối vào của xung nhịp đồng hồ. + Vcc: Nguồn nuôi +5V. + GND: Chân nối đất (0V). + MN/MX: Khi được nối với Vcc, |iP8086 hoạt động ở chế độ MIN, nếu nối với GND, hoạt động ở chế độ MAX. + S2, Si, So: Ở chế độ MAX, chip điều khiển BUS sử dụng ba tín hiệu trạng thái này để phát ra các tín hiệu điều khiển truy xuất bộ nhớ và thiết bị vào/ra. Tổ hợp có ý nghĩa như sau: S2 s, So 0 0 0 Yêu cầu ngắt cứng qua chân INTR được chấp nhận 0 0 1 Đọc thiết bị vào/ra 0 1 0 Ghi thiết bị vào/ra 0 1 1 CPU bị treo 1 0 0 Nạp mã chương trình vào hàng nhận lệnh 1 0 1 Đọc bộ nhớ 1 1 0 Ghi vào bộ nhớ 1 1 1 Trạng thái thụ động • RQ/GTo’, RQ/GTi: Tín hiệu phục vụ việc chuyển mạch BUS cục bộ (Local BUS) giữa các đơn vị làm chủ BUS (BUS master). BUS cục bộ là BUS giữa các đơn vị xử lý (không phải là BUS nối với các thiết bị ngoại vi). Đơn vị làm chủ BUS là nP8086 hoặc một chip điều khiển nào đó (ví dụ DMAC) hiện đang nắm quyền điều khiển BUS cục bộ. • LOCK: Nếu bằng “0”, đơn vị làni chủ BUS không nhượng quyền làm chủ BUS cục bộ. • QSi, QSo chỉ thị trạng thái của hàng nhận lệnh trước PQ. 0 0 Không hoạt động 0 1 Byte 1 của mã toán trong PQ được xử lý 1 0 Hàng đợi lệnh được xoá 1 1 Byte 2 của mã toán trong PQ được xử lý. II.2.2. Cấu trúc trung tâm Vi xử lý họ 80x86 Các |iP họ 80x86 được phát triển trên cơ sở công nghệ VLSI với các phần tử cơ bản là các transistor trường MOS có độ tiêu hao công suất rất nhỏ. Sơ đồ khối chức năng của fiP8086 được thể hiện trên hình 11.15, gồm hai thành phần chủ yếu là đơn vị ghép nổi BUS (BÌU), đơn vị thực hiện lệnh (EƯ). Tất cả các thanh ghi và đường truyền dữ liệu trong EU đều có độ dài 16 bits. BIU thực hiện tất cả các nhiệm vụ về BUS cho EU: thiết lập khâu liên kết với BUS dữ liệu, BUS địa chỉ và BUS điều khiển. Dữ liệu được trao đổi giữa CPU với bộ nhớ khi EU có yêu cầu, song không được truyền trực tiếp tới EU mà thông qua một vùng nhớ RAM dung lượng nhỏ (6 bytes) được gọi là hàng nhận lệnh trước (Instruction Stream Byte Quere PQ - Prefetch Quere) rồi truyền cho hệ thống điều khiển EU (Execution Unit Control System). Khi EU đang thực hiện một lệnh thì BIU đã tìm và lấy lệnh sau đặt sẵn vào PQ. Đây là cơ chế đường ổng (pipeline), một kỹ thuật tăng tốc độ cho CPU. Kỹ thuật đường ống sừ dụng một vùng nhớ RAM cực nhanh, làm tăng đáng kể tốc độ của bộ Vi xử lý thông qua việc truy tìm lệnh từ bộ nhớ chương trình thay cho sự liên hộ giữa CPU với bộ nhớ chương trình. Riêng với bộ xử lý Pentium, có hai đường ống, một cho các lệnh và một cho các dữ liệu. Bảng sau cho ta vài thông số kỹ thuật cơ bản của các trung tâm Vi xử lý họ 80x86. 64 Loại fiP Đ ộ dài thanh ghi Đ ô rông BUS đĩa ch ỉ Đ ô rông BUS d ữ liệu K hông gian địa ch ì Tần s ố c ự c đại 8088 16 bits 20 bits 8 bits 1MByte 10 MHz 8086 16 bits 20 bits 16 bits 1Mbyte 10 MHz 80188 16 bits 20 bits 8 bits 1Mbyte 10 MHz 80186 16 bits 20 bits 16 bits 1Mbyte 10 MHz 80286 16 bits 24 bits 16 bits 16Mbytes 16 MHz 80386SX 32 bits 24 bits 16 bits 16Mbytes 20MHz 80386DX 32 bits 32 bits 32 bits 4G bytes 40 MHz ¡486 32 bits 32 bits 32 bits 4G bytes 66 MHz Ĩ486SX 32 bits 32 bits 32 bits 4G bytes 25 MHz Pentium (phiên bản đầu) 32 bits 32 bits 64 bits 4G bytes 66 MHz 65 IIẳ2.3. Hệ thống thanh ghi trong các (iP80x86 Có thể coi các thanh ghi của các trung tâm Vi xử lý như một bộ nhớ được đặt ngay bên trong CPU, có tốc độ truy cập cực kỳ nhanh, được dùng để lưu giữ các dữ liệu và các kết quả tạm thời của các quá trình tính toán, xử lý. Các thanh ghi trong họ |aP80x86 có độ dài khác nhau, 16 bits với các trung tâm 8088/86, 80188/86, 80286, 32 bits với các trung tâm 80386/486 trở đi và được mô tả trên hình 11.16. EƯ của |iP8086 có 8 thanh ghi đa năng với tên gọi là AH, AL, BH, BL, CH, CL, DH, DL. Những thanh ghi này có thể sừ dụng riêng rẽ cho việc lưu giữ các dữ liệu nhị phân 8 bits. Cũng có thể sừ dụng chúng thành từng cặp thanh ghi có tên gọi là AX (AH-AL), BX (BH BL), cx (CH-CL), và DX (DH-DL) để lưu giữ các dữ liệu nhị phân 16 bits. 3086 -> 80286 Ĩ386, i486, Pentium 15 7 0 31 16 7 0 AH AL AX EAX AH AL BH BL BX EBX BH BL CH CL cx ỂC CH CL DH DL DX EDX DH DL BP EBP BP SI ESI SI DI EDI DI SP ESP SP ''l Các thanh > ghi đa I năng Thanh ghi con KÃrỗ và chì số cs DS ss ES IP FLAG EIP EFIAG cs DS ss ES FS GS IP FLAG Các thanh ghi >- đoạn Con trò lệnh Thanh ghi cò Hình II. 16. Các thanh ghi trong các tr u n g tám Vi xử lý họ 80x86 66 1. Các thanh ghi đa năng ư u điểm của việc sử dụng các thanh ghi này để lưu giữ tạm thời các dữ liệu là tốc độ truy cập của CPU với chúng nhanh hơn rất nhiều so với việc sử dụng các ô nhớ. 2. Các thanh ghi đoạn CPU đưa ra BUS địa chỉ 20 bits để quản lý một không gian nhớ 1Mbyte (1.048.576 Bytes) bộ nhớ vật lýỗ Tuy nhiên, các thanh ghi trong CPU lại chi có độ dài 16 bits, do vậy, không gian nhớ được chia thành từng đoạn (segment), mỗi đoạn dài 64Kbytes, địa chỉ của Byte đầu tiên được lấy làm địa chỉ đoạn. Hai đoạn nhớ kề cận cách nhau tối thiểu là 16 Bytes. Mỗi Byte nhớ trong đoạn sẽ được xác định bởi độ lệch (offset), tức là khoảng cách tính từ Byte nhớ đó đến đầu đoạn. r Một đoạn J nhớ \ 64K V. rr n Bộ nhớ ô đầu đoạn -Offset Một vị trí nhớ trong đoạn ổ Cuối đoạn Hình 11. 17. về khái niệm địa chi đoạn và địa chi offset. Như vậy, mỗi một cặp thông số bao gồm địa chỉ đoạn và độ lệch {segment: offset) sẽ xác định đia chỉ logic của một Byte nhớ vật lý trong bộ nhớ. Thanh ghì đoạn (Segment Register) chứa 16 bits cao, thanh ghi độ lệch (dùng thanh ghi đa năng hoặc các thanh ghi chỉ số, 67 con trỏ) chứa 16 bits thấp của 20 bits địa chỉ. Địa chỉ vật lý cùa một vị trí nhớ do vậy sẽ được BIU tính theo công thức: Địa chỉ vật lý = (Segment) X 10H + (offset) ^P8086 sử dụng 4 thanh ghi đoạn riêng biệt là: thanh ghi đoạn mã lệnh c s (Code Segment), thanh ghi đoạn ngăn xếp s s (Stack Segment), thanh ghi đoạn mở rộng ES (Extra Segment) và thanh ghi đoạn dữ liệu DS (Data Segment). - Thanh ghi đoạn mã lệnh cs là thanh ghi chứa địa chỉ bắt đầu của đoạn chương trình hiện hành trong bộ nhớ. - Thanh ghi đoạn dữ liệu DS là thanh ghi chứa địa chỉ bắt đầu của đoạn chứa số liệu hiện hành trong bộ nhớ, hay còn gọi là nơi chứa các biến của chương trình. - Thanh ghi đoạn ngăn xếp ss là thanh ghi chứa địa chỉ bắt đầu của đoạn ngăn xếp (Stack) trong bộ nhớ (ô nhớ do thanh ghi này chỉ đến còn được gọi là đáy ngăn xếp), nơi lưu giữ địa chỉ và dữ liệu khi thực hiện các chương trình con, lệnh gọi chương trình con hoặc thủ tục. - Thanh ghi đoạn mở rộng ES là thanh ghi chứa địa chỉ bắt đầu của đoạn chứa các dữ liệu chuỗi, xâu ký tự - Ngoài ra, trong các trung tâm Ì386/Ĩ486 còn có hai thanh ghi đoạn FS và GS. Các đoạn trong bộ nhớ có thể tách biệt nhau, nhưng cũng có thể gối chồng lên nhau, nhưng bao giờ cũng cách nhau tối thiểu 16 Bytes. Độ lệch lóBytes này thực chất do 4 bits, thấp nhất của địa chỉ từ A3 đến Ao chưa được xác định. Khi bộ cộng trong đơn vị địa chi tính địa chỉ vật lý để đưa ra BUS địa chỉ, nó lấy nội dung thanh ghi đoạn chèn thêm 4 số OOOOb cho 4 bits thấp nhất của 2 0 bits địa chỉ rồi mới cộng với 16 bits của phần địa chỉ offset. Điều này lý giải công thức tượng 68 trưng đã nêu trên. Phần địa chỉ bắt đầu của đoạn được lưu giữ trong thanh ghi đoạn, thường được gọi là địa chỉ cơ sở hay địa chi nền. 4 bit A 3 A 2 A i Ao chưa đư ợ c xác định 16 bits cao: Địa c h ỉ đ o ạ n A 19 + A4 A19 A16 A15 A12 As A7 A4 0 0 0 Ị 0 Địa chỉ đoạn + Địa chỉ lệch (offset) A15 A12 As A7 I A4 A3 Ao 16 b its thấp: Đia c h ỉ lêch Am^A n í A19 I I I a 16 A15 A12 As I A7 A4 A3 /Ao Địa chỉ vật lý 2 0 b its Địa c h ỉ v ậ t lý cù a ô n h ớ /4,9 - Ao Hình II. 18. Mô tả cách tính địa chi vật lý của một vị trí nhớ. 3. Thanh ghi cờ FLAG Chỉ có 9 trong số 16 bits của thanh ghi cờ (trong các bộ vi xử lý |iP8086 - ^P80286) và 11 trong số 32 bits của thanh ghi cờ (trong các bộ xử lý Ĩ386/Ĩ486) được sừ dụng. Mỗi cờ có thể được lập (= “ 1”) hay xoá (“ “0”) để biểu thị trạng thái kết quả của một phép xử lý trước đó hoặc trạng thái hiện tại của CPU. Các cờ IOP, N, R và V liên quan đến chế độ bào vệ trong các bộ xử lý 80286 và Ĩ386/Ĩ486. Chín cờ còn lại gồm 6 cờ chi trạng thái và 3 cờ điều khiển. 1 5 8 7 1 0 0 D I T s z A I p c ụP8086 N IOP 0 D I T s z A p c 31 16 ụP80286 | P V R N IOP 0 D I T s z A c Í386/Ĩ486 Hĩnh II. 19. Vị trí các cờ trong thanh ghi cờ cùa họ Vì xử lý 80x86. Các cờ trạng thái gồm: - Cờ nhớ CF (carry flag) được lập nếu một thao tác xẩy ra hiện tượng carry hoặc borrow đối với toán hạng đích. CF có thể lập bởi lệnh STC và xoá bởi lệnh CLC. 69 - Cờ chẵn lẻ PF (parity flag) được lập nếu kết quả của một phép xử lý có số bit bằng “ 1” là số chẵn. - Cờ mang phụ AF (auxiliary flag) được dùng cho xử lý các mã BCD và được lập nếu thao tác xử lý gây hiện tượng carry hoặc borrow cho 4 bits thấp của toán hạng. - Cờ zero ZF (zero flag) được lập nếu kết quả xừ lý số liệu cỏ kết quả bằng 0. - Cờ dấu SF (Sign flag) dấu tương ứng với MSB của kết quả phép toán, được lập với kết quả dương và xoá với kết quả âm. - Cờ tràn OF (Overflow flag) nếu kết quả phép toán là quả lớn cho toán hạng đích. Các cờ điều khiển gồm: - Cờ hướng DF (direction flag) xác định hướng của phép toán xử lý xâu, chuỗi ký tự, nếu được lập, xâu, chuỗi sẽ được xử lý từ địa chỉ cao tới địa chỉ thấp và ngược lại. Cờ được lập bởi lệnh STD và xoá bằng lệnh CLD. - Cờ ngắt IF (Interrupt enable flag) nếu được lập, CPU sẽ chấp nhận yêu cầu ngắt cứng và phục vụ ngắt. Được lập bởi lệnh STI và xoá bàng lệnh CLI. - Cờ bẫy TF (Trap flag) Dùng trong gỡ rối chương trình (Debuger) Không thể lập hay xoá trực tiếp bởi lệnh của máy. 4. Thanh ghi con trỏ lệnh IP Thanh ghi con trỏ lệnh IP (Instruction Pointer) - thanh ghi 16 bits dùng để lưu giữ phần offset của địa chỉ lệnh kế tiếp sẽ được thực hiện trong tuần tự thực hiện chương trình. Kết hợp với c s , IP giống như thanh đếm chương trình PC trong |iP8085, mỗi lần từ lệnh được đọc ra từ bộ nhớ, BIU sẽ thay đổi giá trị IP tuỳ theo độ dài của từ lệnh 70 (số bytes của từ lệnh) sao cho nó chỉ đến từ lệnh kê tiêp trong bộ nhớ chương trình. Cũng cần nói thêm, khi gặp các lệnh rẽ nhánh hoặc lệnh gọi chương trình con, gọi thủ tục Ế.., các giá trị của CS:IP sẽ thay đổi đột ngột không theo quy luật trên. Các giá trị mới của CS:IP do người lập trình cung cấp thông qua địa chỉ của các nhãn (Label) trong chương trình hoặc giá trị cụ thể. 5. Các thanh ghi dữ liệu Có 4 thanh ghi dữ liệu: - Thanh ghi tích ỉuỹ AX (Accummulator register) thường dùng để lưu giữ các kết quả xử lý. - Thanh ghi cơ sở BX (Base register) thường dùng chỉ địa chỉ cơ sở (đáy) của một vùng nhớ trong bộ nhớ. - Thanh ghi đếm c x (Counter register) thường dùng để khai báo số lần một thao tác nào đó phải được thực hiện trong các vòng lặp, phép dịch, phép quay... Giá trị của nội dung thanh ghi c x sẽ giảm đi một sau mỗi thao tác. - Thanh ghi sổ liệu DX (Data register) thường dùng để lưu giữ số liệu dùng làm thông số chuyển giao cho một chương trình. DX là thanh ghi duy nhất được dùng để chứa địa chỉ của các thiết bị vào/ra. 6. Các thanh ghi con trỏ và chỉ số Có 2 thanh ghi con trỏ và 2 thanh ghi chi số: - Thanh ghi con trỏ ngăn xếp SP (Stack Pointer) chứa địa chi đỉnh ngăn xếp (vùng nhớ đặc biệt, hoạt động theo nguyên tắc LIFO - Last In First Out - vào sau ra trước), sử dụng cho việc lưu giữ tạm thời các dữ liệu hay địa chỉ khi gọi chương trình con, khi phục vụ ngắt v.v... Giá trị nội dung của SP luôn luôn là phần offset của địa chi ngăn xếp kế tiếp. 71 - Thanh ghi con trỏ cơ sở BP (Base Pointer) có chức năng chứa giá trị offset tính từ địa chỉ ss nhưng còn được sử dụng để truy cập dữ liệu bên trong ngăn xếp. - Các thanh ghi chỉ sổ nguồn DI và thanh ghi chỉ số đích SI (Destination Index và Source Index) được dùng để lưu giữ các thành phần offset đối với những vùng dữ liệu được cất trong đoạn dữ liệu. Hai nội dung của hai thanh ghi này liên kết với nội dung thanh ghi đoạn DS để tạo ra địa chi nguồn và địa chỉ đích của vùng nhớ. II.2.4. Các chế độ làm việc MIN/MAX HP8086 có hai chế độ làm việc: chế độ MIN và chế độ MAX. Chân số 33 của |iP8086 được coi như là chân bay (trap pin) cho |iP8086 trong việc định nghĩa chế độ làm việc. Những mạch phụ trợ cần thiết cho hai chế độ làm việc không thể thoả mãn với hệ thống 40 chân của CPU loại này, vì vậy một số chân sẽ đảm nhiệm những chức năng khác khi được xác định cho một chế độ, phụ thuộc vào cách nối chân MN/MX. Khi được nối với GND (mức điện áp 0V), |iP8086 chuyển đổi các chân tà 24 đến 31 sang chế độ MAX. Một mạch phụ điều khiển BUS 8288 sẽ giải mã các tín hiệu trạng thái So, Si, S2 để tạo ra các tín hiệu định thời và các tín hiệu điều khiển tương thích với cấu trúc MULTIBUS™ trong các hệ thống máy tính. Khi được nối lên mức điện áp nguồn nuôi (mức Vcc +5V), tự fiP8086 tạo các tín hiệu điều khiển BUS trên các chân từ 24 đến 31 như được ghi trong ngoặc ở hình II. 14. II.2ệ5. Phương thức quản lý bộ nhớ, các mode địa chỉ a. Phương thức quản lý bộ nhớ BUS địa chỉ của |iP8086 có độ dài 20 bits, do vậy có thể quản lý được 220 = IM ô nhớ (Mỗi tổ hợp “0” hoặc “ 1” của các bit ữong 20 72 bits địa chỉ xác định vị trí của một ô nhớ). Vì một ô nhớ trong hệ Vi xử lý là 1 Byte, nên nói cách khác, không gian nhớ mà ịaP8086 quản lý được là 1Mbyte. Các thanh ghi của |aP8086 chỉ có độ dài 16 bits, nên nẻụ dùng một thanh ghi để đánh địa chỉ thì chỉ quản lý được 216 ô nhớ, tức là 64KB. Để giải quyết vấn đề quản lý 1MByte, tức là 1.048.576 Bytes, |iP8086 sử dụng BUS địa chỉ có độ rộng 20 bits thông qua nội idling của hai thanh ghi 16 bits để đánh địa chi của bộ nhớ theo phương thức sau: 32 Bytes ^ 16 Bytes ^ Hình 11.20. Cách chia đoạn nhớ trong ụP8086. Bằng cách lập chương trình, không gian địa chi được chia thành các đoạn (segment) nhớ với kích thước cố định là 64Kbytes gọi là một đơn vị logic của bộ nhớ. Mỗi đoạn gồm các ô nhớ liên tiếp, độc lập và được định vị tách rời nhau. Mỗi đoạn được người lập trình gán cho một địa chỉ đoạn, là địa chỉ ô nhớ đầu tiên của đoạn đó, còn được gọi là địa chỉ nền. Giá trị của các địa chỉ đoạn liền kề cách nhau tối thiểu là 16 Bytes. Các đoạn có thể kể cận, tách rời, phủ lấp nhau. Bên trong đoạn sẽ sử dụng các giá trị lệch (offset), tức là khoảng cách từ địa chỉ 73 đoạn đến ô nhớ nằm trong đoạn. Một cặp giá trị địa chi đoạn và giá ưị lệch, [segment]: [offset], được gọi là địa chỉ logic. Địa chi logic cho phép định vị chính xác một Byte nhớ trong không gian địa chi. Địa chi đoạn được chứa trong các thanh ghi đoạn, giá trị dịch chuyển được chứa trong các thanh ghi đa năng, con trỏ hoặc chỉ số. về bản chất, thanh ghi đoạn chứa 16 bits cao của 20 bits địa chi, giá trị dịch chuyển là 16 bits thấp và sự lệch nhau 4 bits đã được đơn vị địa chỉ của BIU giải quyết như trình bày trong hình II. 18: Dịch trái thanh ghi đoạn 4 bits (tương đương phép nhân với 16, cộng với giá trị dịch chuyển offset trong thanh ghi đa năng để tính địa chỉ vật lý của ô nhớ). Công thức tương ứng phép “dịch trái và cộng” có thể trình bày như sau: Địa chỉ vật lý = 10H X (segment) + (offset) Thanh ghi đoạn là một thanh ghi 16 bits, có nhiệm vụ xác định đoạn cùa ô nhớ, còn thanh ghi đa năng cũng là một thanh ghi 16 bits. Vậy thanh ghi đoạn có thể định được 216 = 65.536 đơn vị (64K) đoạn nhớ và mồi đoạn có 64Kbytes. Vậy Vi xử lý |iP8086 có thể đinh địa chỉ tối đa tới 64K X 64Kbytes = 4Gbytes Ìihớ. Thanh ghi đoạn mã cs xác định đoạn nhớ chương trình mà lệnh kế tiếp sẽ được lấy để thực hiện, thanh ghi con trỏ IP chứa địa chi offset của lệnh kế tiếp. Cặp CS:IP tạo nên địa chỉ logic của lệnh kế tiếp trong tuần tự thực hiện chương trình. Các từ lệnh của họ 80x86 có thể có độ dài lừ 1 byte đến tối đa là 15 bytes. Khi lệnh được thực hiện, giá trị của con trò IP do vậy sẽ tăng lên đúng bàng số Bytes của từ lệnh. Cần nhớ rằng nội dung của thanh ghi con trỏ lệnh IP cùng với nội dung ihanh ghi đoạn cs xác định địa chỉ của ô nhớ lệnh tiếp theo trong tuần tự thực hiện chương trình. 74 b. Các mode đánh địa chỉ 1. Định vị thanh ghi (register addressing): Toán hạng được truy xuất nằm ngay trong thanh ghi của CPU. Thí dụ MOV AX,BX; chuyển nội dung của toán hạng nguồn (nội dung của thanh ghi) BX vào toán hạng đích AX. Nội dung thanh ghi BX vẫn được giữ nguyên. 2. Định vị tức thời (immediate addressing): Toán hạng tức thời là dữ liệu 8 hay 16 bits nằm ngay trong lệnh, có thể dùng làm toán hạng nguồn hay hằng số. Toán hạng tức thời được lưu giữ ngay trong đoạn mã của bộ nhớ, ngay sau mã lệnh, nó được lấy ra cùng với lệnh và ghi vào hàng đợi lệnh PQ, do vậy được truy xuất nhanh hcm so với truy xuất toán hạng từ bộ nhớ. Thí dụ MOV AL, 12H ; nạp số 12H vào thanh ghi AL 3. Các kiểu định vị ô nhớ Khác với hai kiểu định vị trên, toán hạng trong đoạn nhớ dữ liệu được CPU truy xuất qua BUS dữ liệu. Biết rằng, địa chỉ vật lý của ô nhớ được tính từ nội dung thanh ghi đoạn và offset theo cách trình bày trong hình II. 18. Giá trị offset mà đơn vị thực hiện lệnh EƯ tính cho một toán hạng trong đoạn nhớ được gọi là địa chỉ hiệu dụng EA (effective address) của toán hạng. Đơn vị thực hiện lệnh có thể tính EA dựa vào cách mô tả địa chỉ trong phần toán hạng nguồn của lệnh. Ngoài giá trị trực tiếp, hoặc nội dung thanh ghi cơ sở hay thanh ghi chỉ số, khi cần còn có thể có một giá trị số có độ dài 8 bits hay 16 bits được cộng thêm vào gọi là giá trị dịch chuyển dp (displacement). Xem hình 11.21. Nội dung thanh ghi đoạn sau khi đã dịch trái 4 bít sẽ lạ địa chỉ của ô nhớ đầu đoạn: địa chỉ nền ô nhớ có địa chì được xác định bời nội dung thanh ghi đoạn và thanh ghi offset ---------► ô nhớ có địa chỉ được xác định bởi nội dung thanh ghi đoạn, thanh ghi offset và giá trị dịch chuyền dp ô nhớ đầu tiên trong đoạn, địa chi được - xác định bời nội dung thanh ghi đoạn Offset hay độ lệch của địa chi õ > nhớ kể từ địa chì nền E Vị trí của ô nhớ được xác định bởi nội dung thanh ghi đoạn và nội dung thanh I Ị I I Ị I I J ghi offset Displacemant, giá trị dịch chuyển, y tính tù ô nhớ được chỉ ra bời offset Vị tri của ó nhớ cần được truy xuàt. Địa chì được xác định bời nội dung thanh ghi đoạn, nội dung thanh ghi offset và giá trị dịch chuyển Hình II. 21. Mô tà cách xác định địa chi vật ¡ý cùa ô nhớ cản truy xuất. Cụ thể như sau: - Định vị trực tiếp (direct addressing): Toán hạng chứa địa chi là một số nằm ngay trong lệnh. Địa chỉ đoạn hiện tại nằm trong thanh ghi đoạn DS. Thí dụ MOV CX,[1435H]; chuyển nội dung ô nhớ có địa chi offset bang 1435H trong đoạn số liệu hiện tại vào thanh ghi c x . - Định vị giản tiếp thanh ghi (register indirect): Địa chi hiệu dụng EA là nội dung của một trong các thanh ghi BX, BP, SI hoặc -DI. Thí dụ MOV AX, [SI]; chuyển nội dung của ô nhớ trong đoạn số liệu hiện tại có địa chỉ offset là nội dung thanh ghi SI. - Định vị cơ sở (based addressing): EA là tổng của nội dung thanh ghi BX hoặc BP và giá trị dịch chuyển dp nếu có. 76 Thí dụ MOV [BX] + dp, AL; chuyển nội dung thanh ghi AL và ô nhớ có địa chỉ offset bằng tổng của nội dung thanh ghi BX và giá trị dịch chuyển dp. - Định vị chỉ số (indexed addressing): EA là íổng của nội dung thanh ghi SI hoặc DI và giá trị dịch chuyển dp nếu cóỗ Thí dụ MOV AL,[SI] + dp ; chuyển nội dung ô nhớ có địa chỉ offset bằng tổng của nội dung thanh ghi SI và giá trị dịch chuyển dp vào thanh ghi AL. - Định v/ệ chỉ sổ và cơ sở (indexed addressing): EA là tổng của nội dung các thanh ghi cơ sở, thanh ghi chỉ số và giá trị dịch chuyển dp nếu có. Thí dụ MOV AH,[BX][SI] + dp ; chuyển nội dung ô nhớ có địa chỉ offset bàng tổng của nội dung thanh ghi BX, thanh ghi SI và giá trị dịch chuyển dp vào thanh ghi AH. - Định Vử/ chuỗi (string addressing): Dùng riêng cho xử lý chuỗi. CPU sẽ tự động sử dụng các thanh ghi chỉ số nguồn SI và thanh ghi chỉ số đích DI để chỉ đến các byte kế tiếp. Thí dụ MOVS; di chuyển chuỗi, nguồn tại vùng nhớ có địa chỉ đầu là DS: SI, đích là vùng nhớ có địa chi đầu DS: DI. 15 cs DS E3 ss cs IP offset -c DS ES ss SP Nền đoạn mă >-Đoạn mã lệnh -| Nền đoạn dữ liệu rĐoạn dữ liệu 64K }Nền đoạn mờ rộng Đoạn mở rộng }Nền đoạn ngăn xếp Đoạn ngăn xếp Địa chỉ cao Hình II. 22. Quản lý bộ nhớ theo đoạn (segment). 77 II.2.6. Phương thức đánh địa chỉ thiết bị ngoại vi Có hai phương thức cơ bản đánh địa chỉ thiết bị ngoại vi: - Định địa chỉ tách biệt (isolated I/O address): Các tín hiệu điều khiển phải được phân biệt đối với các thao tác ghi/đọc bộ nhớ và ghi/đọc thiết bị ngoại vi. Trong hệ Vi xử lý |iP8085, tổ hợp các tín hiệu RD, WR và IO/M sẽ được giải mã để tạo ra các tín hiệu đọc/ghi riêng cho bộ nhớ (MEMR và MEMW) và riêng cho thiết bị ngoại vi (IOR và IOW). Đối với họ 80x86, đó là việc sừ dụng chip điều khiển BUS (BUS Controller 8288) để giải mã tổ hợp các tín hiệu nhịp đồng hồ CLK, các tín hiệu trạng thái S2, Si và So trong chế độ MAX thành các tín hiệu MRDC, MWTC, IORC và IOWC. Các mạch logic phụ trợ điều khiển truy nhập thiết bị ngoại vi trong hệ Vi xừ lý có nhiệm vụ phát hiện các tín hiệu IORC và IOWC để thực hiện các thao tác vào/ra dữ liệu. Mạch logic này có nhiệm vụ giải mã địa chỉ thiết bị ngoại vi để tạo ra các tín hiệu cho phép truy nhập tới thiết bị cụ thể (thường được gọi là mạch giải mã địa chỉ thiết bị ngoại vi). Cũng cần nói thêm rằng địa chỉ thiết bị ngoại vi thực tế là địa chỉ của một thanh ghi trong thiết bị ngoại vi. Như vậy, việc trao đổi dữ liệu giữa CPU và thiết bị ngoại vi thực chất là trao đổi dữ liệu giữa CPU và thanh ghi trong không gian thiết bị ngoại vi. Các ỊiP80x86 dành 16 dây địa chỉ thấp (A I5 - AO) để quản lý một không gian 64K thiết bị ngoại vi. - Định địa chỉ tuyến tính (Linear Addresing I/O), cũng còn gọi là định địa chỉ thiết bị ngoại vi theo bản đồ nhớ (Memory-Mapped I/O). Thanh ghi trong thiêt bị ngoại vi được coi như một vị trí nhớ trong không gian nhớ, do vậy không sử dụng đến các tín hiệu điều khiển riêng cho việc trao đổi dữ liệu giữa CPU với thiết bị ngoại vi, mà sử dụng hoàn toàn chung cho bộ nhớ cũng như cho thiết bị ngoại vi. Đối với ỊiP8085, tín hiệu phân biệt IO/M không cần thiết nữa, cũng như không cần giải mã các tổ hợp tín hiệu $2, s7 và So đổi với các trung 78 tâm 80x86. Mọi thao tác trao đổi dữ liệu giữa CPU và các thanh ghi thiết bị ngoại vi đều được tiến hành như với một ô nhớ trong bộ nhớ. IIề2.7. Các mạch Multiplexer, mạch Decoder, mạch PLA Các mạch Multiplexer, mạch Decoder hay mạch PLA là những mạch phụ trợ không thể thiếu của một hệ Vi xử lý. Thông thường, các mạch Decoder và mạch PLA (Programmable Logic Array) được thiết kế sẵn trên một chip, được sử dụng nhiều trong các mạch giải mã các tin hiệu điều khiển, giải mã địa chỉ của vừng nhớ hay địa chỉ thiết bị ngoại vi. - Các mạch Multiplexer (hoặc Coder) Mạch Multiplexer (còn gọi là mạch Coder) thường được xây dựng theo mục đích sử dụng, có khi rất phức tạp. Một trong những thí dụ là mạch thu nhận và mã hoá bàn phím (keyboard), được xây dựng trên cơ sở một chip Vi xử lý chuyên dụng, bao gồm cả phần cứng lẫn chương trình. Sơ đồ khối chức năng của một mạch Multiplexer được thể hiện trên hình 11.23. Các tín hiệu vào riêng rẽ X i, X2, X 3 X n, qua xử lý sẽ tạo ra một tổ hợp nhị phân đầu ra {ymym-i---yo}- Phần chuyển đổi từ một tín hiệu vào Xj thành tổ hợp ra {ymym-i--.yo} được thực hiện nhờ mạch tổ họp logic hoặc kết hợp với phần mềm chuyên dụng. Xo X1 x2 x3 Xn Mạch tó hợp logic + .ịchương trình nhận tín hiệu và tạo mả -> yo yi y2 ys Hĩnh II. 23. Sơ đồ khối một mạch Multiplexer (Coder). 79