1
MỤC LỤC
MỤC LỤC 1
Chƣơng 1 GIỚI THIỆU CHUNG 4
1.1. Các hệ đếm 4
1.1.1. Hệ đếm thập phân (R = 10 hay hệ đếm Decimal) 4
1.1.2. Hệ đếm nhị phân (R = 2 hay hệ đếm Binary) 4
1.1.3. Hệ đếm 16 (R = 16 hay hệ đếm Hexa) 9
1.2. Các hệ thống mã hóa 11
1.2.1 Mã ASCII (American Standard Code for Information Interchange) - mã tiêu
chuẩn cho trao đổi thông tin. 11
1.2.2 Mã nhị thập phân BCD (Binary Coded Decimal) 13
1.3. Giới thiệu chung về hệ vi xử lý 14
1.3.1 Sự ra đời và phát triển của các bộ vi xử lý 14
1.3.2 Sơ đồ khối cấu trúc và hoạt động của hệ vi xử lý 16
Chƣơng 2 BỘ NHỚ BÁN DẪN 20
2.1. Thuật ngữ liên quan đến bộ nhớ 20
2.2 Đại cƣơng về vận hành của bộ nhớ 22
2.2.1 Các tác vụ và các nhóm chân của một IC nhớ 22
2.2.2 Giao tiếp giữa IC nhớ và bộ xử lý trung tâm (CPU) 24
2.3 Phân loại bộ nhớ 25
2.3.1 Bộ nhớ cố định 25
2.3.2 Bộ nhớ bán cố định 29
2.3.3 Bộ nhớ đọc/viết 31
2.3.4 Bộ nhớ ngoài 32
2.2 Phân cấp bộ nhớ 32
2.4 Cấu trúc của mạch nhớ tĩnh SRAM 34
2.4.1 Giới thiệu công nghệ 34
2.4.2 Cấu trúc mạch nhớ SRAM 34
2.4 Cấu trúc của mạch nhớ SRAM 42
4.3.1. Sơ đồ khối của bộ lập trình đƣợc 104
3
4.3.2. Các chế độ làm việc của bộ đếm lập trình 104
4.4 Phối ghép vào ra nối tiếp 107
4.4.2 Nguyên lý vào ra nối tiếp 107
4.4.2 Mạch thu phát thông tin nối tiếp USART(8251A) 109
Dị bộ 111
Độ dài ký tự 111
Đồng bộ 111
4.5 Phối ghép với thiết bị vào/ra qua cổng song song 113
4.5.1 Ghép nối song song đơn giản 113
4.5.2 Mạch phối ghép vào/ra song song lập trình đƣợc PPI 113
CHƢƠNG 5. THIẾT KẾ HỆ THỐNG VI XỬ LÝ 117
5.1. Thiết kế phần cứng 117
5.2. Thiết kế phần mềm 119
5.2.1. ROM Mapping 119
5.2.2. RAM Mapping 120
5.3. Thiết kế các chƣơng trình hệ thống 121
TÀI LIỆU THAM KHẢO 121
4
R
= {0, 1, 2, 3, …, R – 1}
l, n là số nguyên
N = a
n
a
n-1
…a
1
a
0
,a
-1
a
-2
…a
-l
Theo công thức trên, các số đƣợc biểu diễn trong các hệ đếm khác nhau sẽ nhƣ sau:
1.1.1. Hệ đếm thập phân (R = 10 hay hệ đếm Decimal)
{ a
k
}
D
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} – gồm 10 trị
123,45
D
= 1 x 10
2
+ 2 x 10
=
= 16 + 8 + 0 + 2 + 1 + 0 + 0,25 = 27,25
D
5
Mỗi ký hiệu 0 hoặc 1 đƣợc gọi là đƣợc gọi là 1 Bit (Binary Digit – chữ số nhị phân).
Kích cỡ của một số nhị phân là số bit của nó. Most significant Bit (MSB): Bit quan trọng
nhất (bit cao nhất), bit ngoài cùng bên trái. Least significant Bit (LSB): Bit ít quan trọng
nhất (bit thấp nhất), bit ngoài cùng bên phải.
Ví dụ: 1 0 1 0 1 0 1 0 là một số nhị phân 8 bit MSB LSB
a) Số nhị phân không dấu
- Chỉ biểu diễn đƣợc các giá trị không âm ( ≥ 0)
- Với n bit có thể biểu diễn đƣợc các giá trị từ 0 đến 2
n
– 1
Ví dụ: Giá trị V của một số nhị phân không dấu 1101 đƣợc tính:
V(1101) = 1×2
3
+ 1×2
2
+ 0×2
1
+ 1×2
0
= 8 + 4 + 0 + 1 = 13
Ví dụ: Chuyển 25
10
sang nhị phân không dấu.
Dùng phƣơng pháp chia 2 liên tiếp, chia tới khi kết quả thƣơng bằng 0 thì dừng và
viết phần dƣ theo chiều ngƣợc lại, kết quả là biểu diễn nhị phân của số thập phân.
6
Ví dụ: Chuyển đổi số 0.8125 thành số nhị phân
Thực hiện phép nhân liên tiếp với 2, phần nguyên của tích bao giờ cũng là các giá trị
hoặc bằng “0” hoặc bằng “1”, thu đƣợc kết quả sau:
0.8125
x 2
= 1.625
= 1 +
0.625
MSB
0.625
x 2
= 1.25
= 1 +
0.25
= 0 +
0.5024
0.5024
x 2
= 1.0048
= 1 +
0.0048
LSB
0.0048
x 2
Quá nhỏ có thể bỏ qua
Chia 2
Thƣơng số
Số dƣ
25/2
=
2
1
LSB
12/2
=
6
0
6/2
=
3
+ 1×2
2
+ 0×2
1
+ 1×2
0
= -8 + 4 + 0 + 1 = -3
Tổng quát: Nếu số nhị phân N có n bit:
N = b
(n-1)
b
(n-2)
…b
1
b
0
thì giá trị V của nó là:
V = -b
(n-1)
×2
(n-1)
+ b
(n-2)
×2
(n-2)
+…+ b
1
Ví dụ: Chuyển -26 sang nhị phân
1. Chuyển đối số: + 26 =
11010
2. Đƣa 0 vào sát bên trái
011010
3. Bù 1:
100101
4. Cộng 1:
+ 1
-26 =
100110
9
Chú ý:
- Trong hệ nhị phân có dấu số âm có bit MSB bằng 1, số dƣơng có bit MSB bằng 0
- Trong hệ nhị phân có dấu số âm là số bù 2 của số dƣơng tƣơng ứng
c) Đơn vị
Bit: Một chữ số nhị phân 0 hoặc 1
Nibble: 4 bit (nửa byte)
Byte: 8 bit (còn gọi là Octet)
Word (từ) : 16 bit
Double Word (từ kép): 32 bit
K = 2
10
= 1024
Kb (kilobit) = 1024 bit = 128 byte
KB (kilobyte) = 1024 byte
Kbps (kilobit per second): kilobit trên giây
M = 2
Hệ nhị phân
Hệ 16
11110000
=
FO
10101010
=
AA
01010101
=
55
Mỗi ký hiệu tương đương với 4 bit
* Chuyển đổi Hexa và nhị phân
Từ dạng Hexa chuyển đổi sang dạng nhị phân thì ta biểu diễn 1 số dạng hexa bằng
4 bit nhị phân
Ngƣợc lại muốn chuyển đổi từ số nhị phân sang số Hexa thì ta nhóm 4 bit nhị phân
từ trái qua phải, nếu cuối cùng không đủ 4 bit thì ta thêm bit 0 ở đầu để đủ. Mỗi nhóm 4
bit nhóm đƣợc sẽ biểu diễn một số dạng Hexa.
Ví dụ: Chuyển số hexa 2F8 và ABBA sang số nhị phân
Thay thế mỗi ký hiệu hexa bằng 4 bit tƣơng ứng với nó
2
F
8
0010
1111
1000
chuẩn cho trao đổi thông tin.
Dùng để biểu diễn các ký tự (characters) gồm ký tự hiển thị đƣợc và ký tự điều khiển.
Bảng mã ASCII tiêu chuẫn có 128 ký tự nên mỗi ký tự cần 7 bit để mã hóa. Bảng mã
ASCII mở rộng có 256 ký tự (ký tự từ 0 - 127 đầu giống ASCII tiêu chuẩn, ký tự từ 128 –
255 là các ký tự đặc biệt ) nên mỗi ký tự cần 8 bit để mã hóa. Khi tra các bảng này ta đọc
mã của ký tự theo thứ tự cột – hàng
Mỗi ký tự đƣợc biểu diễn bằng 8 bit gọi là mã ASCII của ký tự đó.
- Các chữ cái in và thƣờng: A…Z và a…z
- Các chữ số thập phân: 0, 1, …, 9
- Các dấu chấm câu: ; , . : v.v…
- Các ký tự điều khiển: carriage return (CR), line feed (LF), beep, …
Với bảng mã đƣợc sắp xếp theo trật tự tăng dần của mã ASCII
- Các chữ số thập phân: 0, 1, …, 9 nằm liên tiếp nhau, chữ số 0 có mã
ASCII là 30h.
12
- Các chữ cái in: A…Z nằm liên tiếp nhau, chữ A có mã ASCII là 41h.
- Các chữ cái thƣờng: a…z nằm liên tiếp nhau, chữ a có mã ASCII là 61h.
- Mã ASCII của chữ in và chữ thƣờng tƣơng ứng chỉ khác nhau ở bit 6
A: 01000001
B: 01000010
Z: 01011010
a: 01100001
b: 01100010
z: 01111010
- 32 ký tự điều khiển đƣợc xếp đầu bảng mã (00h đến 1Fh) Bảng mã ASCII tiêu chuẩn
| Dec 0 16 32 48 64 80 96 112
|
13 1101 D | CR GS - = M ] m }
|
14 1110 E | SO RS . > N ^ n ~
|
15 1111 F | SI US / ? O _ o DEL
1.2.2 Mã nhị thập phân BCD (Binary Coded Decimal)
Mã BCD dùng để mã hóa các số thập phân bằng các ký hiệu nhị phân. Mỗi chữ số
thập phân đƣợc biểu diễn bằng một tổ hợp 4 bit
Các tổ hợp 4 bit không sử dụng gọi là các tổ hợp cấm
Nhiều linh kiện điện tử sử dụng mã này, ví dụ nhƣ bộ giải mã BCD – LED bảy đoạn
7447.
Bảng mã BCD
Chú ý: Đừng nhầm mã hóa BCD với việc chuyển đổi thập phân sang nhị phân
Ví dụ: Cho số thập phân 15
14
Mã BCD của nó là:
00010101
Số nhị phân không dấu 8 bit tƣơng ứng là:
00001111
1.3. Giới thiệu chung về hệ vi xử lý
1.3.1 Sự ra đời và phát triển của các bộ vi xử lý
a) Thế hệ 1 (1971 -1973)
Năm 1971, Intel đã cho ra bộ vi xử lý đầu tiên là 4004 (4 bit số liệu, 12 bit địa chỉ).
Sau Intel và các nhà sản xuất khác cũng cho ra đời bộ vi xử lý khác: 4040, 8008 của Intel.
PPS – 4, IPM – 16. Đặc điểm chung của các vi xử lý này:
- Độ dài từ thƣờng là 4 bit.
- Cơ chế xử lý xen kẽ liên tục dòng mã lệnh, bộ nhớ cache.
- Có bộ quản lý bộ nhớ và nhiều bộ đồng xử lý toán học bên trong.
- Công nghệ sản xuất HCMOS.
- Tất cả đều có bộ đồng xử lý toán học, bộ quản lý bộ nhớ MMU
Chú ý: Một số thông số của các bộ vi xử lý (xem thêm bảng 2.1 sách vxl).
Ngoài các bộ vi xử lý đƣợc dùng để xây dựng các máy tính với tập lệnh đầy đủ
(Complex Instruction Set Computer – CISC) ở trên, còn các bộ vi xử lý cải tiến dùng để
xây dựng các máy tính với tập lênh rút gọn (reduced RISC) với nhiều tính năng có thể so
sánh với các máy tính thế hệ trƣớc. Các vi xử lý RISC là sự bắt đầu cho một thế hệ khác
trong sự phát triển của các bộ vi xử lý.
16
1.3.2 Sơ đồ khối cấu trúc và hoạt động của hệ vi xử lý Hình 1.1: Sơ đồ khối của hệ vi xử lý với các thanh ghi trong và ngoài
Nhìn vào sơ đồ khối ta thấy rõ các khối chức năng chính của hệ vi xử lý bao gồm:
- Khối xử lý trung tâm
- Bộ nhớ
- Khối phối ghép vào ra (I/O)
- Các bus truyền thông tin
Bộ vi xử lý (Microprocessor) hay còn gọi là CPU (Central Processing Unit – Đơn vị xử
lý trung tâm) đóng vai trò chủ đạo trong hệ vi xử lý. Đây là một vi mạch điện tử có độ
DAC…đều liên hệ với vi xử lý qua bộ phận này. Bộ phận phối ghép giữa bus hệ thống
với thế giới bên ngoài thƣờng gọi là cổng.
Ba chức năng đầu liên hệ với nhau thông qua tập các đƣờng dây để truyền tín hiệu gọi
chung là bus hệ thống. Bus hệ thống bao gồm 3 loại: Bus địa chỉ, bus dữ liệu, bus điều
khiển.
- Bus địa chỉ thƣờng có từ 16, 20, 24 đến 32 đƣờng dây song song mang thông tin về
địa chỉ của ô nhớ hay một thiết bị vào ra mà CPU đang trao đổi thông tin. Thông tin về
địa chỉ là do CPU phát ra chọn một ô nhớ hoặc một thiết bị vào/ra mà nó cần trao đổi
thong tin. Khi đọc/ghi CPU sẽ đƣa ra trên bus này địa chỉ của ô nhớ liên quan. Khả năng
phân biệt địa chỉ của CPU phụ thuộc vào số chân địa chỉ. Giả sử số chân địa chỉ là n thì số
ô nhớ sẽ đƣợc định địa chỉ là: 2
n
. Khi đọc /ghi với các cổng vào/ra CPU cũng đƣa ra trên
bus địa chỉ các bit địa chỉ tƣơng ứng của cổng. Chỉ có CPU mới có khả năng đƣa ra địa
chỉ trên bus địa chỉ (trừ mạch DMA Controller).
- Bus dữ liệu thƣờng có từ 8, 16, 20, 24, 32 đến 64 đƣờng dây tuỳ theo các bộ vi xử lý
cụ thể. Số lƣợng đƣờng dây này quyết định số bit dữ liệu mà CPU có khả năng xử lý đồng
thời. Chiều mũi tên trên hình vẽ chỉ ra rằng dây là bus 2 chiều. Các phần tử có đầu ra nối
thẳng tới bus dữ liệu đều phải trang bị đầu ra 3 trạng thái để có thể ghép vào đƣợc và hoạt
động bình thƣờng với bus này.
- Bus điều khiển thƣờng gồm hàng chục đƣờng dây mang tín hiệu điều khiển khác
nhau, nó dùng để truyền tín hiệu điều khiển để điều khiển hoạt động từ vi xử lý tới các
khối MEMORY, I/O và lấy trạng thái của chúng. Mỗi tín hiệu điều khiển có một chiều
nhất định.
Hoạt động của hệ thống vi xử lý: Trong khi hoạt động và tại một thời điểm nhất định,
về mặt chức năng của mỗi khối trong hệ thống trên giống nhƣ các thanh ghi trong hoặc
18
các thanh ghi ngoài. Hoạt động của toàn hệ thống thực chất là sự phối hợp hoạt động của
các thanh ghi trong và ngoài để thực hiện sự biến đổi dữ liệu hoặc thay đổi dữ liệu theo
20
Chƣơng 2: BỘ NHỚ BÁN DẪN
Bộ nhớ là một trong những thành phần quan trọng nhất của máy tính điện tử, dùng để
lƣu trữ các lệnh sẽ thực hiện cũng nhƣ dữ liệu. Bộ nhớ đƣợc xây dựng từ các phần tử nhớ
cơ bản, mỗi phần tử nhớ cơ bản có thể nhớ đƣợc 1 bit thông tin; Đó là các mạch điện có
hai trạng thái cân bằng ổn định flip-flop (FF), flip-flop sẽ nằm mãi ở một trong hai trạng
thái cân bằng nếu không có tín hiệu điện phù hợp kích thích vào làm cho nó phải thay đổi
trạng thái. Bộ nhớ bán dẫn đƣợc sử dụng làm bộ nhớ chính trong các máy tính nhờ vào
khả năng thỏa mãn tốc độ truy xuất dữ liệu của bộ xử lý trung tâm (CPU).
2.1. Thuật ngữ liên quan đến bộ nhớ
Để tìm hiểu cấu tạo, hoạt động của bộ nhớ chúng ta bắt đầu với một số thuật ngữ liên
quan đến bộ nhớ
- Tế bào nhớ: là linh kiện hay một mạch điện tử dùng để lƣu trữ một bit đơn (0 hay
1). Thí dụ của một tế bào nhớ bao gồm: mạch FF (flip-flop), tụ đƣợc tích điện, một điểm
trên băng từ hay đĩa từ. . . .
- Từ nhớ: là một nhóm các bit (tế bào) trong bộ nhớ dùng biểu diễn các lệnh hay dữ
liệu dƣới dạng một số nhị phân. Thí dụ một thanh ghi 8 FF là một phần tử nhớ lƣu trữ từ 8
bit. Kích thƣớc của từ nhớ trong các máy tính hiện đại có chiều dài từ 4 đến 64 bit.
- Byte: từ 8 bit, đây là kích thƣớc thƣờng dùng của từ nhớ trong các máy vi tính.
- Dung lượng: chỉ số lƣợng bit có thể lƣu trữ trong bộ nhớ. Thí dụ bộ nhớ có khả
năng lƣu trữ 4.096 từ nhớ 20 bit, dung lƣợng của nó là (4096 x 20 = 81920 bit)
nhƣng tác vụ ghi khá phức tạp hơn là tác vụ đọc. ROM thuộc loại bộ nhớ vĩnh cữu và dữ
liệu đƣợc lƣu giữ khi đã cắt nguồn điện.
- Bộ nhớ tĩnh (Static Memory Devices): là bộ nhớ bán dẫn trong đó dữ liệu đã lƣu trữ
đƣợc duy trì cho đến khi nào còn nguồn nuôi.
- Bộ nhớ động (Dynamic Memory Devices): là bộ nhớ bán dẫn trong đó dữ liệu đã lƣu
trữ muốn tồn tại phải đƣợc ghi lại theo chu kỳ. Tác vụ ghi lại đƣợc gọi là làm tƣơi
(refresh).
22
- Bộ nhớ trong (Internal Memory): Chỉ bộ nhớ chính của máy tính. Nó lƣu trữ các
lệnh và dữ liệu mà CPU dùng thƣờng xuyên khi hoạt động.
- Bộ nhớ khối (Mass Memory): Còn gọi là bộ nhớ phụ, nó chứa một lƣợng thông tin
rất lớn ở bên ngoài máy tính. Tốc độ truy xuất trên bộ nhớ này thƣờng chậm và nó thuộc
loại vĩnh cữu.
2.2 Đại cƣơng về vận hành của bộ nhớ
2.2.1 Các tác vụ và các nhóm chân của một IC nhớ
Mặc dù mỗi loại bộ nhớ có hoạt động bên trong khác nhau, nhƣng chúng có chung
một số nguyên tắc vận hành mà chúng ta có thể tìm hiểu sơ lƣợc trƣớc khi đi vào nghiên
cứu từng loại bộ nhớ.
Mỗi hệ thống nhớ luôn có một số yêu cầu ở các ngã vào và ra để hoàn thành một số
tác vụ:
- Chọn địa chỉ trong bộ nhớ để truy xuất (đọc hoặc viết)
- Chọn tác vụ đọc hoặc viết để thực hiện
- Cung cấp dữ liệu để lƣu vào bộ nhớ trong tác vụ viết
- Gửi dữ liệu ra từ bộ nhớ trong tác vụ đọc
- Cho phép (Enable) (hay Không, Disable) bộ nhớ đáp ứng (hay không) đối với lệnh
đọc/ghi ở địa chỉ đã gọi đến.
Từ các tác vụ kể trên, ta có thể hình dung mỗi IC nhớ có một số ngã vào ra nhƣ sau:
- Ngã vào địa chỉ: mỗi vị trí nhớ xác định bởi một địa chỉ duy nhất, khi cần đọc dữ
liệu ra hoặc ghi dữ liệu vào ta phải tác động vào chân địa chỉ của vị trí nhớ đó. Một IC có
: Read/Write - Đọc/Viết - Cho phép đọc dữ liệu ra khi ở mức cao và ghi
dữ liệu vào khi ở mức thấp.
*
CAS
: Column Address Strobe - Chốt địa chỉ cột
*
RAS
: Row Address Strobe - Chốt địa chỉ hàng.
Trong trƣờng hợp chip nhớ có dung lƣợng lớn, để giảm kích thƣớc của mạch giải
mã địa chỉ bên trong IC, ngƣời ta chia số chân ra làm 2: địa chỉ hàng và địa chỉ cột. Nhƣ
vậy phải dùng 2 mạch giải mã địa chỉ nhƣng mỗi mạch nhỏ hơn rất nhiều. Thí dụ với 10
chân địa chỉ, thay vì dùng 1 mạch giải mã 10 đƣờng sang 1024 đƣờng, ngƣời ta dùng 2
mạch giải mã 5 đƣờng sang 32 đƣờng, hai mạch này rất đơn giản so với một mạch kia.
Một vị trí nhớ bây giờ có 2 địa chỉ: hàng và cột, dĩ nhiên muốn truy xuất một vị trí nhớ
phải có đủ 2 địa chỉ nhờ 2 tín hiệu
RAS
và
CAS
.
(Hình 2.1) cho thấy cách vẽ các nhóm chân của IC nhớ (m chân địa chỉ và n chân
dữ liệu). (Hình 2.1b) và (Hình 2.1c) vẽ các chân địa chỉ và dữ liệu dƣới dạng các Bus.
(Hình 2.1b) đƣợc dùng trong các sơ đồ chi tiết và (Hình 2.1c) đƣợc dùng trong các sơ đồ
khối.
24 Hình 2.1: Cách vẽ nhóm chân IC nhớ
2.2.2 Giao tiếp giữa IC nhớ và bộ xử lý trung tâm (CPU)
Trong hệ thống mọi hoạt động có liên quan đến IC nhớ đều do bộ xử lý trung tâm
(Central Processing Unit, CPU) quản lý. Giao tiếp giữa IC nhớ và CPU mô tả ở (Hình