Bài Giảng Kỹ Thuật Vi Xử Lý và Ví dụ bài tập cụ thể

176 3 0
Bài Giảng Kỹ Thuật Vi Xử Lý và Ví dụ bài tập cụ thể

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Kỹ thuật vi xử lý (Microprocessor Technology) là một khóa học đại cương về hệ thống vi xử lý và bao gồm các chủ đề như kiến ​​trúc vi xử lý, lập trình vi xử lý, giao tiếp vi xử lý, bộ nhớ, ngắt và các phương pháp thiết kế hệ thống vi xử lý.

Kỹ thuật Vi xử lý MỤC LỤC [Type text] Trang Kỹ thuật Vi xử lý CHƯƠNG I : CÁC HỆ ĐẾM VÀ VIỆC MÃ HĨA THƠNG TIN TRONG MÁY TÍNH Các hệ đếm dùng máy tính 1.1 Hệ mười hệ hai Trong sống hàng ngày dùng hệ số mười nói gọn hệ mười để biểu diễn giá trị số Điều tự nhiên từ xưa người bình thường biết dùng 10 ngón tay “cơng cụ tính tốn sơ đẳng Trong hệ thống dùng tổ hợp chữ số để biểu diễn giá trị số, kèm theo tập hợp dùng thêm chữ D mà ngầm hiểu số hệ mười Trong giới máy tính khác, để biểu diễn giá trị số dùng hệ số hai nói gọn hệ hai, tồn hai chữ số 1để biểu diễn giá trị số (ứng với hai trạng thái có điện khơng có điện mạch điện tử cấu tạo máy) giá trị có chữ số hệ hai Hệ hai hệ dùng máy tính Một số hệ hai thường đánh dấu chữ B kèm cuối để phân biệt với hệ khác ta làm việc lúc với nhiều hệ đếm khác Một cụm bit tạo thành nibble, cụm bit tạo thành byte, cụm 16 bit thông thường trạo thành từ(word), cụm 32 bit tạo thành từ kép Chữ số bên trái dãy số hệ hai gọi bít có ý nghĩa lớn nhất, cịn bit cuối bên phải dãy gọi bit có ý nghĩa bé Ứng với việc đếm thứ tự 1,2,3…ở hệ 10 hệ ta có 1,10,11… Nibble byte word Double Word Hình1.1 Các đơn vị đo độ dài số hệ hai dẫn xuất từ bit Vì người quen tính tốn với hệ mười, phận tính tốn máy tính biết làm việc với hệ hai, nên để đảm bảo giao tiếp thuận tiện người máy (khi đưa số liệu vào lúc lấy kết tính tốn) thường xun phải có việc chuyển đổi qua lại hai hệ đếm Chúng ta xem xét nhanh vấn đề thơng qua ví dụ đơn giản Một số hệ mười viết sau: 12345,67 Sẽ có giá trị số tổng tích hệ số 1,2,3,4,5,6,7 với trọng số 10i sau: 12345,67=1.104 +2.103 +3.102 +4.101 +5.100 +6.10-1 +7.10-2 Tương tự vậy, số hệ hai viết sau: 10111,01 Sẽ có giá trị số tổng tích hệ số 1,0,1,1,1,01,1 với trọng số i tương ứng lần lược sau: =1.24 +0.23 +1.22 +1.21 +1.20 +0.2-1 +1.2-2 Các thuật toán thường dùng để chuyển đổi hai hệ trên:  Đổi số hệ hai sang hệ mười Muốn đổi số từ hệ hai sang hệ mười cần tính giá trị i tương ứng với chữ số khác không thứ i hệ số hai cộng lại nói trên: Ví dụ [Type text] Trang Kỹ thuật Vi xử lý 10111,11B =24 +22 +21 +20 +2-1 +2-2 =25,75 Ngược lại muốn chuyển số từ hệ mười sang hệ hai ta làm theo hai cách: • Cách để đổi số hệ mười sang hệ hai Quy tắc: Lấy số hệ mười cần đổi trừ 2x (x giá trị lớn số mũ chọn cho x nhỏ so với số hệ 10 cần đổi), ghi lại giá trị cho chữ số hệ hai ứng với x Tiếp tục làm số dư phép trừ tạo số i bậc thấp đạt tới 20 ghi lại gia trị (0 1) cho chữ số hệ hai thứ i tùy theo quan hệ số dư lũy thừa tương ứng: 1, số dư lớn 2i 0, số dư nhỏ 2i (và phép trừ khơng thực hiện) ví dụ đổi số 34 sang hệ hai Các giá trị 2i cần tính dến (25 =32 giá trị 2x sát so với số 34) 25 24 23 22 21 20 Các chữ số hệ hai tính được: 0 Như 34=100010B • Cách để đổi số hệ mười sang hệ hai Quy tắc: Lấy số cần đổi chia cho ghi nhớ phần dư, lấy thương phép chia trước chia cho ghi nhớ phần dư Làm thương Đảo ngược thứ tự dãy số dư chữ số số hệ hai cần tìm Ví dụ : Đổi số 34 sang hệ hai (hình 1.1.) Kết 100010B 34 17 2 1 Các số dư khung xếp theo chiều mũi tên Hình 1.1 Một cách đổi số hệ mười sang hệ hai Trong trường hợp số hệ mười cần đổi có thêm phần lẻ sau dấu phẩy ta phải đổi riêng rẽ phần sau cộng kết lại Đối với phần nguyên ta làm theo cách nói Riêng phần sau dấu phẩy ta đổi theo quy tắc trình bày sau • Quy tắc đổi số thập phân hệ mười hệ hai Lấy số cần đổi nhân với 2, tích nhận gồm phần nguyên phần lẻ nhị phân, lấy phần lẻ nhị phân tích thu nhân tiếp với Làm tích chẵn Chọn riêng phần nguyên (phần trước dấu phẩy) tích thu xếp lại chữ số sau dấu phẩy số hệ hai cần tìm Ví dụ: Đôỉ số 0.125 số hệ hai [Type text] Trang Kỹ thuật Vi xử lý Ta thực phép nhân theo bước trên: 0,125 * = ,250 0,250 * = ,500 0,500 * = ,000 thu kết 0,125 = 0,001B (phần đóng khung) Kết hợp ví dụ lại, phải đổi số 34,125 hệ hai ta thu kết cuối 34,125 = 100010,001 B 1.2 Số BCD (số hệ mười mã hóa hệ hai) Giữa hệ mười hệ hai tồn hệ lai: hệ BCD cho số hệ mười mã hóa hệ hai (Binary Coded Decimal number), thích hợp cho thiết bị có thêm phần thị số đầu dùng loại đèn số khác Ở ta dùng số hệ hai để mã hóa số hệ mười có giá trị nằm khoảng Như vậy, ta không dùng hết tổ hợp có bit Vì tầm quan trọng số BCD nên vi xử lý thường có lệnh thao tác với chúng Ví dụ: Số 410 biểu diễn theo kiểu số BCD 0100 0001 0000 Kết gợi ý cho ta cách thức chuyển đổi hai loại số 1.3 Hệ mười sáu (Hexa-decimal, hex, H) Nếu ta dùng hệ hai để biểu diễn số có giá trị lớn ta gặp điều bất tiện số hệ hai thu dài Ví dụ để biểu diễn số 255 ta cần đến bit viết sau: 255 = 1111 1111 B Trong thực tế để viết kết biểu diễn số cho gọn lại người ta tìm cách nhóm số hệ hai (1 nibble) thành số hệ mười sáu Khác với hệ BCD vừa nói hệ 16 dùng hết tổ hợp bit để biểu diễn giá trị số Để làm điều người ta sử dụng chữ số sẵn có hệ mười để biểu diễn giá trị số ứng với dùng thêm chữ A F để biểu diễn giá trị lại ứng với 10 15 để phân biệt số hệ mười sáu với số hệ khác ta kèm thêm chữ H cuối Ta dễ nhận thấy số mười phận hệ mười sáu Các phép toán số học số hệ hai 2.1 Phép cộng Phép cộng số hệ hai thực giống ta làm với số hệ mười Quy tắc phép cộng số hệ hai bảng 1.1 Bảng 1.1 Quy tắc phép cộng y=a+b a 0 1 [Type text] b 1 y 1 C 0 Bảng 1.2 Quy tắc phép trừ y= a-b a 0 1 b 1 y 1 B 0 Trang Kỹ thuật Vi xử lý C: nhớ (Carry) B: mượn (Borrow) Ví dụ: Cộng hệ mười Cộng hệ hai 11 nhớ 1111 1110 099 Số hạng 0110 0011 095 Số hạng 0101 1111 194 Tổng 1100 0010 Các cộng khối tính tốn số học máy tính thực phép cộng theo cách nói 2.2 Phép trừ số bù hai a) Phép trừ Phép trừ số hệ hai thực giống ta làm với số hệ mười Quy tắc phép trừ số hệ hai bảng 1.2 Ví dụ Trừ hệ mười Trừ hệ hai Mượn 110 0000 109 số bị trừ 0110 1101 số trừ 0011 0001 060 Hiệu 0011 1100 b) Số bù hai Trong làm phéo trừ ta nhận thấy thực phép trừ phép cộng: cộng số bị trừ với số đối số trừ Điều ứng dụng khối tính tốn số học máy tính để tận dụng cộng có sẵn Vấn đề đặt số hệ hai ta phải có cách biểu diễn số âm cách thích hợp cho ta ứng dụng tính chất nói Có nhiều cách mã hóa số hệ hai đê biểu diến số âm thực tế hay dùng dùng cách mã hóa kiểu số bù hai Bảng 1.3 cách tạo số hệ hai có dấu số bù hai tương quan với số hệ hai Bảng 1.3 Biểu diễn số theo hệ hai, hệ hai có dấu mã bù hai Số bit hệ hai 0000 0000 0000 0001 0000 0010 0111 1101 0111 1110 0111 1111 1000 0000 1000 0001 1000 0010 1111 1101 [Type text] số hệ mười tương đương 125 126 127 128 129 130 125 số hệ mười theo mã hệ hai có dấu +0 +1 +2 + 125 +126 +127 -0 -1 -2 -125 số hệ mười tính theo mã bù hai +0 +1 +2 + 125 +126 +127 - 128 - 127 - 126 - Trang Kỹ thuật Vi xử lý 1111 1110 1111 1111 126 255 -126 -127 -2 -1 Quan sát kỹ bảng rút nhận xét sau: Nếu ta dùng bit để biểu diễn số ta thu 256 tổ hợp có giá trị từ đến 255 (tương ứng 00 FF H), tức biểu diễn số dương Với tổ hợp ta muốn biểu diễn số có dấu theo kiểu dấu độ lớn (sign and magnitude) ta phải bit để dành cho dấu bit lại để định giá trị Với cách làm ta có khả biểu diễn số âm số dương nằm khoảng -127 -0, +0 +127 (chú ý giá trị khác nhau) Số bù hai tạo theo cách gần giống kiếu dấu độ lớn dùng bit để biểu diễn giá trị số mã hóa Mã bù hai dài bit có khả biểu diễn số âm dương khoảng -128 +127 Một số dương có mã bù hai giống hệ mã hai thông thường Một số biểu diễn theo hệ hai có giá trị khác hiểu mã để biểu diễn số theo kiểu hệ hai có dấu kiểu số bù hai Nói khác đi, cụm số cảm nhận khác biểu diễn giá trị số theo mã khác Cho dù có biểu diễn số hệ hai có dấu hay số bù hai số âm có bit b7 = 1, cịn số dương có bit b7 = Bây ta nói cụ thể cách tính số bù hai số Về mặt tốn học sí bù hai số số đối Như số dương có số bù hai số âm giá trị tuyệt đối ngược lại Quy tắc: Muốn tìm số bù hai (còn gọi bù số học) số A ta làm theo bước sau: • • • biểu diễn số A theo mã bù hai tìm số bù (bù logic) số (bằng cách đảo bit) cộng vào số bù để nhận số bù hai số A Ghi chú: Khi có số âm biểu diễn theo mã bù hai muốn tính giá trị tuyệt đối ta áp dụng quy tắc (áp dụng bước 2.3) Ví dụ: Tìm số bù hai 13 13 = 0000 1101 B (mã bù hai 13) số bù 13: 1111 0010 B (đảo bit số trên) cộng thêm 1: số bù hai 13: 1111 0011 B (tức -13) Có thể lấy ví dụ khác để chứng tỏ kết qua thấy ứng dụng số bù hai làm phép trừ Ví dụ: 15 - 13 = ? Ta viết lại phép trừ thành phép cộng 15 + (-13) sử dụng kết vừa tính cho số (-13): 15 0000 1111 (-13) 1111 0011 tổng 0000 0010 (nhớ 1) Nếu khơng để ý đến nhớ ta có kết Ví dụ: 12 - 13 = ? [Type text] Trang Kỹ thuật Vi xử lý 12 0000 1100 (-13) 1111 0011 tổng 1111 1111 (tức -1) Đây số âm (bit b7=1) với giá trị tuyệt đối (tra theo bảng 1.2) Mặt khác ta tìm giá trị tuyệt đối kết cách tìm số bù hai nó: Mã bù hai kết 1111 1111 Số bù kết 0000 0000 Cộng - để tìm giá trị tuyệt đối 0000 0001 2.3 Phép nhân Phép nhân số hệ hai thực giống ta làm với hệ số mười Quy tắc phép nhân số hệ hai bảng 1.4 Bảng 1.4 Quy tắc phép nhân y=a.b a b y 0 0 1 0 1 Trên sở quy tắc vừa nêu đơn giản ta thực ví dụ phép nhân số hệ hai với độ dài bit để làm sáng tỏ thuật toán nhân 1001 0110 0000 1001 1001 0000 0110110 Số bị nhân (9) Số nhân (6) Thành phần tổng tích luỹ Thành phần tổng tích luỹ Thành phần tổng tích luỹ Thành phần tổng tích luỹ Tổng tích luỹ (54) Độ dài cực đại kết trường hợp bit Nếu ta có tốn hạng (hoặc 16) bit độ dài cực đại kết 16 (hoặc 32) bit Mỗi lần nhân bit khác số nhân với số bị nhân ta thu số bị nhân Nếu dịch trái số lần tương ứng với vị trí bit khác số nhân, ta tạo thành phần tổng tích luỹ Tổng thành phần kết phép nhân Phân tích kỹ q trình ta thấy phép nhân thực theo thuật toán cộng dịch (trên sở cộng dịch) sau: • Thành phần tổng tích luỹ thu tích số LSB số nhân với số bị nhân Nếu LSB = thành phần 0, cịn LSB = thành phần số bị nhân • Mỗi thành phần thứ i tổng tích luỹ tính cách tương tự, phải dịch trái i bit (có thể bỏ qua thành phần 0) • Tổng tổng thành phần tích cần tìm Để minh hoạ cho thuật tốn trên, ta dùng ln để rút gọn ví dụ làm trước sau: 1001 Số bị nhân (9) 0110 Số nhân (6) [Type text] Trang Kỹ thuật Vi xử lý 1001 1001 0110110 Số bị nhân dịch trái lần Số bị nhân dịch trái lần Tổng tích luỹ (54) 2.4 Phép chia Phép chia phép tính ngược phép nhân Từ suy phép chia thực phép trừ phép dịch liên tiếp trừ (do không cịn để trừ số bị trừ nhỏ số chia) Sau thuật toán phép chia thơng qua ví dụ cụ thể Ví dụ: 35/5 = Ta quan sát kỹ bước phải làm chia tay: 100011 101 000 0111 1000 101 111 101 101 101 Trong bước tính liên tục cần phải có dự đốn kiểm tra để tìm kết Cơng việc khó khăn mạch điện tử khối tính tốn số học (vốn phần tử để thực phép cộng dịch máy tính) Sau thuật tốn khắc phục vấn đề nêu trên: 1.Đổi số chia số bù hai (để bước sau làm tính trừ tính cộng) 2.Lấy số bị chia trừ số chia Nếu kết có bit dấu (có nghĩa phần số bị chia chia cho số chia) bit tương ứng thương Nếu kết có bit dấu (có nghĩa phần số bị chia không chia cho số chia) bit tương ứng thương ta buộc phải khôi phục lại giá trị ban đầu số bị chia cách cộng kết với số chia mã hệ hai 3.Dịch trái kết thu làm lại bước nhận kết cuối (chia hết) nhỏ số chia (chia dư) Ví dụ: 36/5 = 7, dư Thực phép chia hệ hai Đầu tiên ta có = 0101B số bù hai 1011B Các bước tính tốn tiếp phép chia theo thuật toán nêu liệt kê sau: Toán hạng Thương Tên toán hạng, thao tác 100100 011000 111100 [Type text] Số bị chia Số chia mã bù hai để cộng Tổng, kết (kq1) Trang Kỹ thuật Vi xử lý 111100 101000 100100 kq1 Số chia ỡ mã hệ hai để cộng Số bị chia 00100 01100 10000 Số bị chia dịch trái lần Số chia mã bù hai để cộng Tổng, kết (kq2) kq2 dịch trái lần Số chia mã bù hai để cộng Tổng, kết (kq3) 0000 0110 0110 110 011 kq3 dịch trái lần Số chia mã bù hai để cộng 001 Tổng, kết (kq4) Bit dấu Từ ta rút 36/5 = dư Mã ASCII - mã tiêu chuẩn cho trao đổi thông tin Hexadecimal 0 1 A B C D [Type text] 16 17 ! 18 “ 19 # 20 $ 21 % 22 & 23 ‘ 24 ( ) Bảng 1.5 Bảng mã ASCII tiêu chuẩn 32 33 + 28 13 29 53 56 57 42 58 ; 43 , 59 < 44 60 = 106 91 76 M 122 { 107 l 92 ] 121 z k \ 120 y 105 90 75 L 104 j [ 119 x i 89 74 K w h Z 118 103 88 73 J v g Y 117 102 87 72 I : f X 116 u 101 86 W H 100 85 71 115 t e V G 99 84 70 55 41 - F 114 s d U 69 54 98 83 68 113 r c T E 97 82 67 112 q b S D 52 40 12 51 81 66 P 96 a R C 39 10 65 50 ` 80 Q B 38 * 49 37 P 64 A 36 25 27 35 26 @ 48 34 11 123 | 108 m 124 } Trang Kỹ thuật Vi xử lý 45 E F 14 30 15 31 61 > 46 / N 62 ? 47 77 ^ 78 O 63 93 n 94 _ 79 109 ~ 110 o 95 125 111 126 127 Trong phần trước ta nói đến cách biểu diễn số hệ đếm Bây ta xem xét việc biểu diễn thơng tin nói chung máy tính Tất thơng tin máy tính biểu diễn dạng số Mỗi tổ hợp số gán ký tự chữ cái, số ký tự khác theo cách thức định Trogn thực tế thông tin truyền đi, lưu giữ nhớ để hiển thị hình dạng ký tự tuân theo loại mã dùng rộng rãi gọi mã ASCII (American Standard Code for Information Interchange, mã chuẩn Mỹ dùng cho trao đổi thông tin) Việc dùng ký tự để mã hố thơng tin theo bảng mã ASCII (bảng 1.5) cho ta khả trao đổi thông tin với hầu hết máy tính khác Trong bảng mã ASCII tiêu chuẩn, người ta dùng bit để mã hóa kỹ tự thơng dụng, bảng mã có 128 ký tự ứng với mã số từ 127 Bit thứ cho liên tục 0, dùng để chứa bit parity (xem ý nghĩa parity chương 3, phần nói cờ) phục vụ cho việc phát lỗi truyền Bên cạnh bảng ASCII tiêu chuẩn người ta dùng bảng ASCII mở rộng cho ký tự đặc biệt (khác ký tự tiêu chuẩn) với mã từ 128 255 Khi tra bảng ta đọc mã ký tự theo thứ tự cột – hàng Ví dụ: Mã ASCII số ký tự thường dùng lập trình: (Bell, chng): (Back space, xố lùi): (Horizont tab, giãn cách ngang): (Line feed, thêm dòng mới): OAH (Carriage return, đầu dòng): ODH (Space, dấu cách): 2OH; ‘$’: 24H; ‘0’: 30H; ‘9’: 39H; ‘A’:41H; ‘a’: 61H Khi xem xét bảng 1.5 ta rút nhận xét sơ sau: cột đầu bảng mã dùng cho ký tự điều khiển Cột dành riêng cho ký tự ngăn cách Các ký tự số nằm cột Mã ký tự ‘0’ 30H ‘9’ 39H Giữa giá trị số mã ASCII số có khoảng cách 30H Các chữ hoa nằm cột 4,5, chữ thường cột 6,7 Khoảng cách chữ thường chữ hoa tên 20H Quan hệ mã ASCII với số BCD Trong làm toán với số BCD ta thường kết hợp số BCD thành byte Dạng số BCD viết theo kiểu gọi dạng BCD chuẩn hay cịn gọi dạng BCD gói (packed BCD) Khi lưu trữ, thị truyền thiết bị giá trị số 9, thực chất ta làm việc với mã ASCII số đó, tức số 30H 39H Như ta thấy byte mã ASCII biểu diễn số có bit thấp ứng với mã BCD số đó, bit cao ứng với mã BCD số (tức 0011B) [Type text] 10 Trang

Ngày đăng: 04/04/2023, 18:16

Tài liệu cùng người dùng

Tài liệu liên quan