Tài liệu lập trình hệ thống - Pdf 21

Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 1

Chương 1
KIẾN TRÚC VÀ HOẠT ĐỘNG CỦA HỆ VI XỬ LÝ /
MÁY TÍNH

1. Cấu trúc luận lý
Máy tính số (Digital computer) là máy giải quyết các vấn đề bằng cách thực hiện
các chỉ thị do con người cung cấp. Chuỗi các chỉ thị này gọi là chương trình (program).
Các mạch điện tử trong một máy tính số sẽ thực hiện một số giới hạn các chỉ thị đơn giản
cho trước. Tập hợp các chỉ thị này gọi là tập lệnh của máy tính. Tất cả các chương trình
muốn thực thi
đều phải được biến đổi sang tập lệnh trước khi được thi hành. Các lệnh cơ
bản là:
- Cộng 2 số.
- So sánh với 0.
- Di chuyển dữ liệu.
Tập lệnh của máy tính tạo thành một ngôn ngữ giúp con người có thể tác động lên
máy tính, ngôn ngữ này gọi là ngôn ngữ máy (machine language). Tuy nhiên, hầu hết các
ngôn ngữ máy đều đơn giản nên để thực hiện một yêu cầu nào đó, người thiết k
ế phải
thực hiện một công việc phức tạp. Đó là chuyển các yêu cầu này thành các chỉ thị có chứa
trong tập lệnh của máy. Vấn đề này có thể giải quyết bằng cách thiết kế một tập lệnh mới
thích hợp cho con người hơn tập lệnh đã cài đặt sẵn trong máy (built-in). Ngôn ngữ máy
sẽ được gọi là ngôn ngữ cấp 1 (L1) và ngôn ngữ vừa được hình thành gọi là ngôn ngữ cấ
p
2 (L2).
Tuy nhiên, trong thực tế, để có thể thực hiện được, các ngôn ngữ L1 và L2 không
được khác nhau nhiều. Như vậy, ngôn ngữ L2 cũng không thật sự giúp ích nhiều cho
người thiết kế. Do đó, một tập lệnh kế tiếp được hình thành sẽ hướng về con người nhiều

Một máy tính số có n cấp có thể xem như có n-1 máy ảo khác nhau, mỗi máy ảo có
một ngôn ngữ máy riêng. Các chương trình viết trên các máy ảo này không thể thực thi
trực tiếp mà phải dịch thành các ngôn ngữ máy cấp thấp hơn. Chỉ có máy thật dùng ngôn
ngữ máy L1 mới có thể thực thi trực tiếp bằng các mạch điện tử. Một lập trình viên sử
dụng máy ảo cấp n không cần biết tấ
t cả các trình dịch này. Chương trình trong máy ảo
cấp n sẽ được thực thi bằng cách dịch thành ngôn ngữ máy cấp thấp hơn và ngôn ngữ máy
này sẽ được dịch thành ngôn ngữ máy thấp hơn nữa hay dịch trực tiếp thành ngôn ngữ
máy L1 và thực thi trực tiếp trên các mạch điện tử.

Cấp n
Cấp 3
Cấp 2
Cấp 1
Máy ảo Mn dùng ngôn
ngữ máy Ln
Chương trình trong Ln được dịch thành
ngôn ngữ của máy cấp thấp hơn
Cấp 0 chính là phần cứng của máy tính. Các mạch điện tử của cấp này sẽ thực thi
các chương trình ngôn ngữ máy của cấp 1. Trong cấp logic số, đối tượng quan tâm là các
cổng logic. Các cổng này được xây dựng từ một nhóm các transistor.
Cấp 1 là cấp ngôn ngữ máy thật sự. Cấp này có một chương trình gọi là vi chương
trình (microprogram), vi chương trình có nhiệm vụ thông dị
ch các chỉ thị của cấp 2. Hầu
hết các lệnh trong cấp này là di chuyển dữ liệu từ phần này đến phần khác của máy hay
thực hiện việc một số kiểm tra đơn giản.
Mỗi máy cấp 1 có một hay nhiều vi chương trình chạy trên chúng. Mỗi vi chương
trình xác định một ngôn ngữ cấp 2. Các máy cấp 2 đều có nhiều điểm chung ngay cả các
máy cấp 2 của các hãng sản xuất khác nhau. Các lệnh trên máy cấ
p 2 được thực thi bằng
cách thông dịch bởi vi chương trình mà không phải thực thi trực tiếp bằng phần cứng.
Cấp thứ 3 thường là cấp hỗn hợp. Hầu hết các lệnh trong ngôn ngữ của cấp máy
này cũng có trong ngôn ngữ cấp 2 và đổng thời có thêm một tập lệnh mới, một tổ chức bộ
Cấp 5
Cấp ngôn ngữ hướng vấn đề
Dịch (chương trình dịch)
Cấp 4
Cấp ngôn ngữ hợp dịch
Dịch (hợp dịch)
Cấp 3

Ta phân biệt tất cả 3 phương pháp xuất / nhập dữ liệu:
- Nhập / xuất bằng cách hỏi trạng thái của thiết bị ngoại vi (polling)
- Nhập / xuất bằng ngắt (interrupt).
- Nhập / xuất bằng cách truy xuất trực tiếp vào bộ nhớ dùng các phần cứng phụ
trợ (DMA).
2.1. Nhập / xuất dữ liệu bằng cách hỏi vòng (polling)
Ta biết rằng vấn đề
điều khiển nhập / xuất dữ liệu sẽ rất đơn giản trong trường hợp
thiết bị ngoại vi lúc nào cũng có thể làm việc với μP. Ta có thể ví dụ như bộ hiển thị Led
7 đoạn lúc nào cũng sẵn sàng hiển thị dữ liệu khi mà μP gởi dữ liệu ra. Tuy nhiên, trong
thực tế, không phải lúc nào μP cũng làm việc với các thiết bị ngoại vi có tính n
ăng như
trên. Ví dụ như khi làm việc với một máy in, μP yêu cầu in nhưng máy in không sẵn sàng
(giả sử như hết giấy, kẹt giấy, …). Khi đó, μP phải kiểm tra xem một thiết bị mà nó cần
giao tiếp có sẵn sàng hay không nếu thiết bị sẵn sàng thì mới thực hiện trao đổi dữ liệu.
Để kiểm tra các thiết bị ngoại vi, μP phải sử dụng các tín hiệu bắt tay (handshake) xác
định tuần tự từng thiết bị, xem thiết bị nào có yêu cầu trao đổi dữ liệu. Các tín hiệu này
lấy từ các mạch giao tiếp do người thiết kế tạo ra.
Giả sử hệ thống có 2 thiết bị ngoại vi, nếu thiết bị 1 có dữ liệu cần truyền đến μP
thì nó sẽ gởi 1 xung để chốt dữ liệu đồng thời tạo tín hiệu sẵn sàng cho thiết b
ị. Khi μP
kiểm tra tín hiệu sẵn sàng của thiết bị 1 thì nó sẽ đọc dữ liệu vào từ mạch chốt và xoá tín
hiệu sẵn sàng.
Trong trường hợp μP muốn gởi dữ liệu ra thiết bị 2, nó sẽ đọc tín hiệu sẵn sàng của
thiết bị 2, nếu thiết bị 2 có thể nhận dữ liệu thì μP sẽ gởi dữ liệu ra mạch chốt và thiết bị
2
sẽ đọc dữ liệu vào.
Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 5


: là các ngắt thực hiện bằng phần mềm tác động do người sử dụng.
2.2.2. Đáp ứng của μP khi có yêu cầu ngắt
Khi có yêu cầu ngắt đến μP và nếu được phép ngắt, μP sẽ thực hiện các công việc
sau:
- [SP] ← SP – 2, [SP] ← FR (Flag Register): cất thanh ghi cờ vào stack.
- IF ← 0, TF ← 0: không cho thực hiện các ngắt khác.
- SP ← SP – 2, [SP] ← CS: cất địa chỉ đoạ
n mã vào stack.
- SP ← SP – 2, [SP] ← IP: cất địa chỉ trở về sau khi phục vụ ngắt
74LS245
2
3
4
5
6
7
8
9
19
1
18
17
16
15
14
13
12
11
A1
A2

11
12
8
INT3
8086
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 21
22
23
24
25
26

NMI
INTR
CLK
GND RESET
READY
TEST
INTA (QS1)
ALE (QS0)
DEN (S0)
DT/R (S1)
IO/M (S2)
WR (LOCK)
HLDA (RQ/GT1)
HOLD (RQ/GT0)
RD
MN/MX
BHE/S7
A19/S6
A18/S5
A17/S4
A16/S3
AD15
VCC
Hình 1.3 – Kết nối ngắt đơn giản

Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 6

- IP ← [Số_hiệu_ngắt*4], CS ← [Số_hiệu_ngắt*4 + 2]: lấy lệnh tại địa chỉ phục
vụ ngắt tương ứng

lý nội của CPU và tận dụng các
chu kỳ này để thực hiện trao đổi dữ liệu.
¾ Treo CPU để trao đổi từng byte:
CPU không bị treo trong khoảng thời gian dài mà chỉ bị treo trong thời gian ngắn
đủ để trao đổi 1 byte dữ liệu giữa bộ nhớ và ngoại vi. Do đó, công việc của CPU không bị
gián đoạn mà chỉ bị chậm đi.
¾ Treo CPU một khoảng thời gian để trao đổi mộ
t khối dữ liệu:
Trong cơ chế này, CPU bị treo trong suốt quá trình trao đổi dữ liệu.
- CPU ghi từ lệnh và từ chế độ làm việc vào DMAC.
- Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó gởi tín hiệu DRQ = 1
(DMA Request) đến DMAC.
Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 7

- DMAC gởi tín hiệu HRQ (Hold Request) đến chân HOLD của CPU để yêu cầu
treo CPU. Tín hiệu này sẽ giữ ở mức cao cho đến hết quá trình trao đổi dữ liệu.
- Sau khi nhận yêu cầu treo, CPU sẽ thực hiện hết chu kỳ bus của m?nh rồi treo
các bus và gởi tín hiệu HLDA (Hold Acknowledge) để báo cho DMAC biết có
thể sử dụng các bus.
- DMAC chuyển dữ liệu từ bộ nhớ đến ngoại vi bằng cách: đưa địa chỉ byte đầ
u
tiên ra bus địa chỉ và đưa tín hiệu
MEMR
để đọc 1 byte từ bộ nhớ, kế tiếp
DMAC đưa tín hiệu
IOW
để ghi dữ liệu ra ngoại vi. Sau đó, DMAC giảm số
byte cần truyền, cập nhật địa chỉ bộ nhớ và lặp lại quá trình cho đến khi hết
byte cần truyền.

I/O
DRQ
DACK
DRQ
DACK
Memory
Address bus
Data bus
Control bus
CLK
HOLD
HLDA
T4 hay T1
Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 8

3. Bus


CPU
Registers

ALU
Đồng xử lý

Memory
board
I/O
board
Bus cục bộ
(local bus)
Bus nội (on-chip bus)
Bus hệ thống (system bus)
Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 9

3.1. Bus Driver và Bus Receiver
Tín hiệu điện trong máy tính phát ra thường không đủ để điều khiển bus, nhất là
khi bus khá dài và có nhiều thiết bị nối với nó. Chính vì thế mà hầu hết các bus master
được nối với bus thông qua 1 chip gọi là bus driver, về cơ bản nó là một bộ khuếch đại tín
hiệu số. Tương tự như vậy, hầu hết các slave được nối với bus thông qua bus receiver.
Đối với các thiết bị khi thì đ
óng vai trò master, khi thì đóng vai trò slave, người ta sử


IOW
.
Các chuỗi sự kiện xảy ra trong một chu kỳ bus đọc bộ nhớ:
T1: μP xuất địa chỉ bộ nhớ 20 bit. Các đường dữ liệu không hoạt động và các
đường điều khiển bị cấm
T2: Đường điều khiển
MEMR
xuống mức thấp. Đơn vị bộ nhớ ghi nhận chu kỳ
bus này là quá trình đọc bộ nhớ và đặt byte hay word có địa chỉ đó lên data bus.
T3: μP đặt cấu hình để các đường data bus là nhập. Trạng thái này chủ yếu để bộ
nhớ có thời gian tìm kiếm byte hay word dữ liệu
T4: μP đợi dữ liệu trên data bus. Do đó, nó thực hiện chốt data bus và giải phóng
các đường điều khiển đọc bộ nhớ
. Quá trình này sẽ kết thúc chu kỳ bus.
Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 10


chu kỳ bus dẫn đến khó khăn về mặt kỹ thuật, các tín hiệu truyền trên các
đường khác
nhau không phải luôn có cùng tốc độ, dẫn đến hiệu ứng bus skew. Điều quan trọng là thời
T1 T2 T3 T4
Địa chỉ
Địa chỉ
Dữ liệu vào
Dữ liệu ra
Clk
Address
bus
Data bus
IOR
hay
MEMR

Address
bus
Data bus
IOW
hay
MEMW
Ghi bộ
nhớ hay
I/O
Đọc bộ
nhớ hay
I/O
Tài liệu Lập trình hệ thống Chương 1
Phạm Hùng Kim Khánh Trang 11

sẽ phát ra tín hiệu
MSYN
(master synchrization) ở mức tích cực để báo cho slave biết
rằng các tín hiệu cần thiết đã sẵn sàng trên bus, slave có thể nhận lấy. Khi slave nhận
được tín hiệu này, nó sẽ thực hiện công việc với tốc độ nhanh nhất có thể được, đưa dữ
liệu của ô nhớ được yêu cầu lên bus dữ liệu. Khi hoàn thành slave sẽ phát tín hiệu
SSYN

(slave synchronization) tích cực.

Hình 1.8 – Định thì chu kỳ bus bất đồng bộ

Address
MEMR

(Control)
MSYN

Data
SSYN


MSYN
. Cuối cùng sự đảo mức của
MSYN
lại gây ra sự đảo mức tín hiệu
SSYN
và kết thúc chu kỳ. Tập các tín hiệu phối
hợp với nhau như vậy được gọi là bắt tay toàn phần (full handshake), chủ yếu gồm 4 tín
hiệu sau:
-
MSYN
tích cực.
-
SSYN
tích cực để đáp lại tín hiệu
MSYN
.
-
MSYN
được đảo để đáp lại tín hiệu
SSYN
(tích cực).
-
SSYN
được đảo để đáp lại tín hiệu
MSYN
không tích cực.
Ta có thể nhận thấy bắt tay toàn phần là độc lập thời gian, mỗi sự kiện được gây ra
bởi 1 sự kiện trước đó chứ không phải bởi xung clock. Nếu 1 cặp master-slave nào đó
hoạt động chậm thì cặp master-slave kế tiếp không hề bị ảnh hưởng.
Tuy ưu điểm của bus bất đồng bộ rất rõ ràng, nhưng trong thực tế phần lớn các bus


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status