Ø Đơn vị điều khiển Control Unit: nhận lệnh từ bộ nhớ và điều khiển các khối khác để thực hiện lệnh.. Ø Các thanh ghi Registers: lưu trữ dữ liệu và trạng thái của hệ thống trong quá trì
Trang 1Giảng viên: ThS LƯU HOÀNG
KỸ THUẬT VI XỬ LÝ
M ICROPROCESSOR
Trang 21 Giới thiệu chung về hệ vi xử lý
2 Cấu trúc và tập lệnh của vi xử lý
3 Giới thiệu vi điều khiển
4 Khảo sát tập lệnh vi điều khiển
5 Khảo sát timer – counter của vi điều khiển
6 Hoạt động ngắt và xử lý ngắt
7 Truyền dữ liệu nối tiếp
NỘI DUNG MÔN HỌC
Trang 3¡ Họ vi điều khiển 8051-Tống Văn On, Hoàng Đức Hải –
NXB Lao Động Xã Hội.
¡ Kỹ thuật Vi xử lý - Phạm Hữu Lộc, Phạm Quang Trí - NXB
ĐH Quốc gia Tp HCM.
¡ Cấu trúc và lập trình họ vi điều khiển 8051 – Nguyễn
Tăng Cường, Phan Quốc Thắng – NXB KH & KT.
¡ Kỹ thuật vi xử lý và lập trình Assembly cho hệ vi xử lý –
Đỗ Xuân Tiến - NXB KH & KT.
¡ Bài giảng vi xử lý – ĐH Sư phạm Kỹ thuật.
¡ Bài giảng vi xử lý – ĐH Bách khoa HCM.
TÀI LIỆU THAM KHẢO
Trang 4¡ Nắm được cấu trúc, nguyên lý hoạt động của bộ vi xử lý
Trang 5¡ Bài kiểm tra (30% điểm)
§ Kiểm tra 15’ vào giữa học kỳ.
§ Kiểm tra 1 tiết vào cuối học kỳ.
§ Không được thi lần 1, 2 nếu không làm bài kiểm tra.
¡ Điểm chuyên cần (10% điểm)
§ Đi học đầy đủ và nghiêm túc
§ Làm đủ 2 bài kiểm tra và đạt trên trung bình.
§ Không được thi nếu vắng 2 bài kiểm tra hoặc không đạt cả 2 bài kiểm tra.
¡ Thi cuối kỳ (60% điểm)
1 Lý thuyết: Xem mục đích của môn học
2 Bài tập: Lập trình hợp ngữ
ĐÁNH GIÁ KẾT QUẢ HỌC TẬP
Trang 61 Các hệ đếm dùng trong máy tính
2 Cộng, trừ, nhân, chia số nhị phân
3 Biểu diễn số có dấu
4 Biểu diễn số thực
5 Mã BCD và mã ASCII
ÔN TẬP KỸ THUẬT SỐ
Trang 7§ r = cơ số (r = 10), d=digit (0 £ d £ 9), n = số chữ số trước dấu
phẩy, m = số chữ số sau dấu phẩy
i
d D
Trang 8§ r = cơ số (r = 2), d=digit (0 £ d £ 1), n = số chữ số trước dấu
phẩy, m = số chữ số sau dấu phẩy
i i
d B
Trang 9§ r = cơ số (r = 8), d=digit (0 £ d £ 7), n = số chữ số trước dấu
phẩy, m = số chữ số sau dấu phẩy
i i
d O
Trang 10§ r = cơ số (r = 16), d=digit (0 £ d £ F), n = số chữ số trước dấu
phẩy, m = số chữ số sau dấu phẩy
i i
d H
10/Chapt
Trang 11¡ Chuyển từ hệ thập phân sang nhị phân
§ Quy tắc: lấy số cần đổi chia cho 2 và ghi nhớ phần dư, lấy
thương chia tiếp cho 2 và ghi nhớ phần dư Lặp lại khi thương bằng 0 Đảo ngược thứ tự dãy các số dư sẽ được chứ số của
hệ nhị phân cần tìm
§ Ví dụ: Đổi 34 sang hệ nhị phân: 100010
¡ Chyển từ hệ nhị phân sang hệ 16 và ngược lại
§ 1011 0111B = B7H
CHUYỂN ĐỔI GIỮA CÁC HỆ ĐẾM
Trang 127 2
2
Nhớ x y Tổng 8 8
0 1 0
Nhớ x y Tổng
0 1
1
0 0 1 1
1 0 0 1
1 1 1 1
1 1 0 0
1 0 1 0
1 1 1 1
1 1 0
Trang 131.3.2 CÁC PHÉP TOÁN
TRỪ NHỊ PHÂN
x y Mượn Hiệu
1 1 1 0 1
1 1 1 1
1 1 1 0
0 1 1 1 0
Trang 16¡ Một số có dấu bao gồm 2 phần: dấu và độ lớn
Trang 17¡ Số bù 1 (bù logic): đảo bit
Trang 21¡ Số 1234 H được lưu trữ thế nào trong bộ nhớ 8 bit?
LITTLE ENDIAN VÀ BIG ENDIAN
little edian Intel microprocessors Motorola microprocessorsbig edian
Trang 22¡ IEEE-754 format cho single-precision
SỐ THỰC
(REAL NUMBER, FLOATING POINT NUMBER)
0 22
23 30
31
S biased exponent e
1 sign bit: 0 dương, 1 âm
8 bit biased exponent= exponent + 127
24 bit mantissa chuẩn hoá = 1 bit ẩn + 23 bit fraction
Mantissa chuẩn hoá: có giá trị giữa 1 và 2 : 1.f
Ví dụ: biểu diễn 0.1011 dưới dạng IEEE-754
Trang 23¡ IEEE-754 format cho double-precision
SỐ THỰC
(REAL NUMBER, FLOATING POINT NUMBER)
0 51
52 62
63
S biased exponent e fraction f of normalized mantissa
1 sign bit: 0 dương, 1 âm
11 bit biased exponent= exponent + 1023
53 bit mantissa chuẩn hoá = 1 bit ẩn + 52 bit fraction
double precision: (-1)s x 2e-1023 x (1.f)2single precision: (-1)s x 2e-127 x (1.f)2
Trang 24¡ Binary Coded Decimal number
§ BCD chuẩn (BCD gói, packed BCD):
§ 1 byte biểu diễn 2 số BCD
§ Ví dụ: 25: 0010 0101
§ BCD không gói (unpacked BCD) :
§ 1 byte biểu diễn 1 số BCD
Trang 25¡ American Standard Code for Information Interchange bit code)
Trang 261.1 Khái niệm vi xử lý
1.2 Phân loại vi xử lý
1.3 Sơ lược về cấu trúc và hoạt động của hệ vi xử lý
CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ HỆ VI XỬ LÝ
Trang 27Ø Vi xử lý: MicroProcessor (µP) là một linh kiện điện tử được chế tạo từ các transistor tích hợp trên một vi mạch.
Ø Khối xử lý trung tâm (CPU) là một vi xử lý phổ biến Ngoài ra nhiều thiết bị khác cũng chứa VXL như Card màn hình, Card âm thanh, Modem…
Ø Khi chưa có VXL, CPU được xây dựng từ các vi mạch
số Do đó mỗi CPU có thể phải kết hợp hàng ngàn vi mạch với nhau.
Ø Vi xử lý đầu tiên: Intel 4004 là VXL
4 bit được Intel SX năm 1971.
1.1 KHÁI NIỆM VI XỬ LÝ
Trang 281.2 PHÂN LOẠI VI XỬ LÝ
Trang 291 Vi xử lý đa năng (General Purpose Microprocessor):
sử dụng cho các mục đích dân dụng.
2 DSP (Digital Signal Processor): sử dụng cho các ứng
dụng cần xử lý khối lượng dữ liệu lớn với tốc độ cao theo thời gian thực.
3 Vi điều khiển (Microcontroller): sử dụng cho các ứng
dụng nhỏ với chi phí thấp.
4 Vi xử lý chuyên dụng ASIP (Application Specific
Integrated Processor): dùng cho các mục đích chuyên biệt với yêu cầu kỹ thuật cao như trong y tế, quân sự, hàng không …
Trang 301.2.2 PHÂN LOẠI THEO CẤU TRÚC
CPU
Program + Data
Address BusData Bus
Data Bus
Memory
DataAddress Bus
Trang 311 CISC (complex Instruction Set computer): máy tính có tập lệnh phức tạp
§ cấu trúc vi xử lý đơn giản, có nhiều thanh ghi
§ tốc độ xung nhịp lớn và tiêu thụ năng lượng thấp
§ Ví dụ: 8051, ARM, AVR
1.2.3 PHÂN LOẠI THEO TẬP LỆNH
Trang 321.3.1 Hệ vi xử lý
1.3 CẤU TRÚC VÀ HOẠT ĐỘNG CỦA
HỆ VI XỬ LÝ
Trang 33Intel 80X86 Motorola 680X
Phối ghép
(I/O)
Phối ghép vào/ra (I/O)
Thiết bị vào/ra
Màn hình Bàn phím Chuột
Ổ cứng CD-ROM DVD
Máy in
PCI USB VGA COM LPT
Address Bus
Trang 34¡ CPU (Central Processing Unit): là đơn vị xử lý trung tâm bao gồm các thành phần cơ bản sau:
Ø Đơn vị số học và logic (Arithmetic Logical Unit): Thực hiện các phép toán số học (cộng, trừ, nhân chia…) và các
phép toán logic (and, or, compare…).
Ø Đơn vị điều khiển (Control Unit): nhận lệnh từ bộ nhớ
và điều khiển các khối khác để thực hiện lệnh.
Ø Các thanh ghi (Registers): lưu trữ dữ liệu và trạng thái của hệ thống trong quá trình thực hiện lệnh.
1.3.1 HỆ VI XỬ LÝ
Trang 35¡ Memory: bộ nhớ bao gồm RAM và ROM
Ø RAM: chứa dữ liệu trong quá trình hoạt động của hệ thống RAM mất dữ liệu khi mất nguồn.
Ø ROM: chứa chương trình điều khiển hệ thống ROM không bị mất dữ liệu khi mất nguồn.
¡ Data Bus: Bus dữ liệu là Bus hai chiều
Ø Dùng để truyền tải dữ liệu giữa các khối trong hệ thống.
Ø Độ rộng của Bus dữ liệu tùy thuộc vào vi xử lý.
Ø Độ rộng Bus thường là 8, 16, 32, 64 bit.
Ø Độ rộng Bus càng lớn thì khả năng xử lý dữ liệu càng nhanh.
1.3.1 HỆ VI XỬ LÝ
Trang 36¡ Address Bus: Bus địa chỉ là Bus một chiều.
Ø Dùng để định địa chỉ truy xuất bộ nhớ từ VXL.
Ø Số bit địa chỉ thể hiện khả năng quản lý bộ nhớ của VXL.
ØVới VXL có N bit địa chỉ có thể đánh quản lý được 2 N ô nhớ.
ØVí dụ VXL 8088/8086 có 20 đường địa chỉ có thể quản lý được: 2 20 bytes=1Mbytes.
¡ Control Bus: Bus điều khiển là Bus một chiều.
Ø Để VXL gởi tín hiệu điều khiển đến các khối trong hệ thống.
Ø Các khối khác có thể gởi tín hiệu điều khiển đến VXL.
1.3.1 HỆ VI XỬ LÝ
Trang 37Nhà sản xuất Tên vi xử lý Bus
dữ liệu
Bus địa chỉ
Khả năng địa
chỉ
8086 80186 80286 80386SX 80386DX Pentium Pentium Pro
8 16 16 16 16 32 64 64
20 20 20 24 24 32 32 36
68010 68020 68030 68060 PowerPC
16 16 32 32 64 64
24 24 32 32 32 32
Trang 38ØTính toán và g ởi kết quả lên Bus dữ liệu.
v Sau khi thực hiện xong một lệnh,
VXL lại thực hiện chu kỳ lệnh tiếp
theo.
1.3.2 HOẠT ĐỘNG CỦA HỆ VI XỬ LÝ
Đọc mã lệnh Giải mã lệnh Thực hiện lệnh
1 chu kỳ lệnh
Trang 392.1 Cấu trúc bên trong của vi xử lý
2.1.1 Sơ đồ khối của vi xử lý
Ø Cấu trúc của VXL đều có các khối cơ bản như ALU (Athmetic Logical Unit), khối điều khiển (Control Logic)
và các thanh ghi (Register) Ngoài ra còn có các đường truyền tải dữ liệu trong và ngoài hệ thống.
Ø Mỗi VXL khác nhau sẽ có cấu trúc khác nhau Cấu trúc của của VXL được cung cấp bởi nhà chế tạo và được trình bày dưới dạng sơ đồ khối.
Ø Cấu trúc của một VXL 8 bit với 16 bit địa chỉ:
CHƯƠNG 2: CẤU TRÚC BÊN TRONG VÀ
TẬP LỆNH CỦA VI XỬ LÝ
Trang 40Cấu trúc của
một VXL 8 bit:
2.1.1 SƠ ĐỒ KHỐI CỦA VI XỬ LÝ
Control Logic Intruction
Reg Temp Reg 1
16 bit Address Bus
Accumulator Status Reg
B Reg C Reg
D Reg E Reg
Intruction Decoder
8 bit data bus
IN IN
ALU
OUT
8 bit internal data bus
Trang 41ØKhối ALU chứa các mạch điện logic chuyên về tính toán
dữ liệu Nó có 2 ngõ vào “IN” chính là các ngõ vào dữ liệu cho ALU xử lý và một ngõ ra “OUT” là ngõ ra kết quả sau khi ALU xử lý xong.
ØDữ liệu trước khi vào ALU được chứa ở 2 thanh ghi đệm (Temporary Register) là “Temp Reg 1” và “Temp Reg 2” để ALU có thể lấy 2 dữ liệu cùng lúc.
Trang 42ØNgõ ra của ALU sau khi xử lý xong sẽ gởi kết quả lên bus
Ødịch trái (shift left), dịch phải (shift right),
Øtăng (increment), giảm (decrement),
Ølấy bù (complement), and, or, exor …
Trang 43ØKhối giải mã lệnh (Intruction
Decoder) có chức năng nhận lệnh
từ thanh ghi lệnh sau đó giải mã
để gởi tín hiệu đến khối điều
khiển logic.
ØKhối điều khiển (Control Logic)
có chức năng nhận lệnh từ bộ
giải mã lệnh sau đó điều khiển để
thực hiện các yêu cầu của lệnh.
ØNgõ vào quan trọng nhất của
khối điều khiển logic là tín hiệu
clock Nếu không có tín hiệu
clock VXL sẽ không làm việc.
GIẢI MÃ LỆNH
Trang 44ØCác thanh ghi bên trong VXL có chức năng lưu trữ tạm thời các dữ liệu khi xử lý.
ØTrong số đó có các thanh ghi dùng thực hiện các chức năng đặc biệt và luôn có trong một VXL bao gồm:
¡ thanh ghi tích lũy A: Accumulator
¡ thanh ghi bộ đếm chương trình PC: Program Counter
¡ thanh ghi con trỏ ngăn xếp SP: Stack Pointer
¡ thanh ghi trạng thái SR: Status Register
¡ thanh ghi địa chỉ AR: Address Register
¡ thanh ghi lệnh IR: Intruction Register
ØCòn lại là các thanh ghi thông dụng Số lượng các thanh ghi thông dụng thay đổi tùy thuộc vào cấu trúc từng VXL.
Số lượng các thanh ghi này càng nhiều thì càng hữu dụng cho người lập trình.
Trang 45ØThanh ghi A là một thanh ghi quan trọng của VXL Nó thường được kết hợp với ALU để tính toán
ØHầu hết các công việc tính toán đều xảy ra giữa ALU và thanh ghi A.
ØNgoài ra thanh ghi A còn có chức năng trung gian để giao tiếp dữ liệu bên trong VXL và các thiết bị bên ngoài.
2.1.4.1 THANH GHI A
(ACCUMULATOR)
Trang 46ØChức năng của thanh ghi PC là quản lý lệnh đang thực hiện và tự động chỉ đến lệnh sẽ thực hiện tiếp theo.
ØChiều dài của thanh ghi PC bằng với chiều dài số đường địa chỉ mà VXL có thể truy xuất.
46/Ch apter1
2.1.4.2 THANH GHI PC (PROGRAM COUNTER)
Trang 47ØThanh ghi trạng thái chương trình còn được gọi là thanh ghi cờ (Flag register) dùng để lưu trữ kết quả của một
số lệnh kiểm tra hay tính toán.
ØCác bit thường có trong thanh ghi trạng thái:
ØSố lượng các bit có trong thanh ghi trạng thái tùy thuộc vào từng VXL Trong một số VXL có thể xóa hoặc đặt các bit trong thanh ghi trạng thái
(STATUS REGISTER)
Trang 48ØThanh ghi SP dùng để quản lý bộ nhớ ngăn xếp khi muốn lưu trữ dữ liệu tạm thời vào ngăn xếp.
ØSau khi thực hiện cất dữ liệu vào ngăn xếp, SP tự động chỉ đến ô nhớ tiếp theo.
ØSP phải chỉ đến ô nhớ ban đầu do người lập trình thiết lập Quá trình này gọi là khởi tạo con trỏ ngăn xếp.
ØTổ chức của ngăn xếp là dữ liệu vào sau phải được lấy
ra trước (Last In First Out: LIFO).
XẾP SP (STACK POINTER)
Trang 49ØMỗi khi VXL truy xuất bộ nhớ thì thanh ghi địa chỉ phải tạo ra đúng địa chỉ mà VXL mong muốn Ngõ ra của thanh ghi địa chỉ được đặt lên bus địa chỉ 16 bit.
ØNội dung của thanh ghi địa chỉ và thanh ghi PC là giống nhau khi VXL truy xuất bộ nhớ để đón lệnh.
ØTrong tất cả các VXL, chiều dài của thanh ghi địa chỉ bằng với thanh ghi PC.
(MEMORY ADDRESS REGISTER)
Trang 50ØThanh ghi lệnh dùng để chứa lệnh đang thực hiện Một chu kỳ lệnh bao gồm đón lệnh từ bộ nhớ, giải mã và thực hiện lệnh.
ØChiều dài thanh ghi lệnh bằng với chiều dài từ dữ liệu.
ØThanh ghi lệnh do VXL sử dụng, người lập trình không được sử dụng thanh ghi này.
(INTRUCTION REGISTER)
Trang 51ØBus dữ liệu dùng để kết nối các thanh ghi bên trong và ALU với nhau Tất cả các dữ liệu di chuyển bên trong VXL đều thông qua bus dữ liệu này.
ØCác thanh ghi bên trong có thể nhận dữ liệu từ bus hay đặt dữ liệu lên bus nên bus dữ liệu là bus 2 chiều.
ØBus dữ liệu bên trong có thể kết nối ra bus bên ngoài khi VXL cần truy xuất dữ liệu từ bộ nhớ ngoài hay các thiết bị I/O.
(INTERNAL DATA BUS)
Trang 522.2.1 Giới thiệu về tập lệnh của VXL
ØLệnh của VXL là một dữ liệu số nhị phân Mỗi lệnh tương đương với một công việc mà VXL phải làm Hầu hết các lệnh của VXL là lệnh chuyển dữ liệu và xử lý dữ liệu.
ØTập lệnh của VXL là tất cả các lệnh mà VXL có thể hiểu
và thực hiện được.
ØĐộ dài của một lệnh bằng với chiều dài từ dữ liệu của VXL Một VXL 8 bit thì độ dài của một lệnh là 8 bit và số lệnh tối đa có thể có của nó là 2 8 = 256 lệnh.
Trang 53¡ Một lệnh được thực hiện cần phải có 2 yếu tố:
¡ Yếu tố thứ nhất là mã lệnh (Opcode: Operation code): để yêu cầu VXL thực hiện một việc nào đó.
¡ Yếu tố thứ hai là địa chỉ (Address): để chỉ cho VXL biết
vị trí của các dữ liệu mà VXL phải xử lý.
2.2.1 GIỚI THIỆU VỀ TẬP LỆNH CỦA
VI XỬ LÝ
Trang 54¡ Như vậy cấu trúc của một lệnh bao gồm mã lệnh và địa chỉ.
¡ Có nhiều cách chỉ cho VXL biết địa chỉ của dữ liệu được gọi là các kiểu truy xuất bộ nhớ Khi sử dụng một VXL cần phải biết các kiểu truy xuất này.
Trang 55¡ Lệnh của VXL là các chữ số nhị phân, và một tập lệnh bao gồm rất nhiều lệnh Do đó người lập trình rất khó để nhớ hết.
¡ Để giải quyết vấn đề này, lệnh được viết thành các từ gợi nhớ gần với chức năng và ý nghĩa của lệnh.
¡ Trong hầu hết các từ gợi nhớ mã lệnh được rút gọn chỉ còn 3 ký tự.
¡ Khi lập trình người sử dụng dùng các từ gợi nhớ này để viết chương trình Các từ gợi nhớ này tạo thành một ngôn ngữ gọi là Assembly.
¡ Để VXL hiểu và thực hiện được chương trình thì phải chuyển các lệnh viết dưới dạng ngôn ngữ assembly thành các lệnh dạng số nhị phân bằng chương trình biên dịch Assembler.
2.2.2 TỪ GỢI NHỚ (MNEMONIC)
Trang 56¡ Đối với hầu hết VXL tập lệnh được chia ra làm 9 nhóm lệnh cơ bản:
- Nhóm lệnh truyền dữ liệu: Data transfers.
- Nhóm lệnh trao đổi, truyền khối dữ liệu, tìm kiếm: Exchanges, Block transfers, Searches.
- Nhóm lệnh gọi, trở về: Calls, Return.
- Nhóm lệnh xuất nhập: Input, output.
¡ Các từ gợi nhớ và các mã nhị phân của tất cả các lệnh được cung cấp bởi nhà chế tạo đối với từng VXL cụ thể
2.2.3 CÁC KIỂU LỆNH CƠ BẢN CỦA
VI XỬ LÝ
Trang 57ØVXL có thể truy xuất địa chỉ bộ nhớ bằng nhiều cách để lấy dữ liệu Các kiểu truy xuất địa chỉ cơ bản của một VXL bao gồm:
- Kiểu địa chỉ ngầm định.
- Kiểu địa chỉ tức thời.
- Kiểu địa chỉ trực tiếp.
- Kiểu địa chỉ gián tiếp.
- Kiểu địa chỉ chỉ số.
- Kiểu địa chỉ tương đối.
ØĐể biết VXL có bao nhiêu cách truy xuất bộ nhớ cần phải khảo sát từng VXL cụ thể.
2.2.4 CÁC KIỂU TRUY XUẤT ĐỊA CHỈ
CỦA VI XỬ LÝ
Trang 583.1 Giới thiệu vi điều khiển
ØVi điều khiển (Microcontroller: µC) là một thiết bị tích hợp một số các thành phần của hệ vi xử lý lên cùng một chip.
ØVi điều khiển có thể hoạt động độc lập mà không cần kết nối thêm các thiết bị ngoại vi.
ØVi điều khiển thuận lợi cho các ứng dụng nhỏ với chi phí thấp.
ØVĐK bao gồm các thành phần cơ bản như sau:
Trang 59¡ Các phần chính của một vi điều khiển:
3.1 GIỚI THIỆU VI ĐIỀU KHIỂN
Trang 60Các phần chính của một vi điều khiển:
¡ Dung lượng RAM từ khoảng 64 Byte đến 4 KByte.
¡ Dung lượng ROM từ khoảng 512 Byte đến 16 KB Có loại lên đến 64 KB.
¡ Một số loại vi điều khiển có thể sử dụng thêm bộ nhớ ngoài gọi là bộ nhớ mở rộng.
¡ Các cổng I/O của vi điều khiển thường được nhóm thành các cổng (PORT) mỗi cổng gồm 8 bit.
3.1 GIỚI THIỆU VI ĐIỀU KHIỂN
Trang 61¡ Ngoài ra tùy loại VĐK mà còn có các thành phần sau:
§ Timer-counter: định thời, bộ đếm
§ Các cổng giao tiếp: UART, SPI, I2C, USB, …
§ ADC: xử lý các tín hiệu tương tự
3.1 GIỚI THIỆU VI ĐIỀU KHIỂN