Tải bản đầy đủ (.doc) (80 trang)

THIẾT KẾ HỆ VI XỬ LÝ ĐA NĂNG 16 BÍT 80X86 INTEL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.21 MB, 80 trang )

MỤC LỤC
CHƯƠNG 1 - KIẾN TRÚC HỆ VI XỬ LÝ ĐA NĂNG 16 BIT 3
LỜI NÓI ĐẦU
Kể từ những thập niên cuối của thế kỷ 20, kỹ thuật điện tử đã liên tục
có những tiến bộ vượt bậc, đặc biệt là trong kỹ thuật chế tạo mạch vi điện
tử. Sự phát triển nhanh chóng của kỹ thuật vi điện tử đã tạo ra bước ngoặt
quan trọng trong sự phát triển của khoa học tính toán và xử lý thông tin.
Ngày nay, các thiết bị điện tử có mặt ở khắp nơi trong cuộc sống và trong
hầu hết các lĩnh vực. Chúng rất đa dạng về mức độ tổ chức, chức năng, giá
cả… tùy thuộc vào yêu cầu của bài toán thiết kế. Tuy nhiên, chúng thường
cùng sử dụng kỹ thuật vi xử lý để giải quyết các vấn đề đặt ra. Có thể thấy,
ngày nay kỹ thuật vi xử lý đóng một vai trò quan trọng trong việc tổng hợp
và thiết kế các hệ thống điện tử - tin học hiện đại.
Xuất phát từ vai trò của kỹ thuật vi xử lý, sự phổ biến của nó trong các
lĩnh vực, ta cần nghiên cứu và nắm vững kiến thức về kỹ thuật này để bắt
kịp nhịp phát triển của thế giới. Đây là một yêu cầu quan trọng và mang
tính chiến lược trong hiện tại và tương lai.
Hiện nay, trên thế giới đã có sẵn rất nhiều bộ công cụ (KIT) đa năng,
đáp ứng được yêu cầu để nghiên cứu và ứng dụng. Các KIT được xây dựng
để có thể thực hiện nhiều chức năng, và việc sử dụng các tài nguyên của
KIT hiệu quả hay không phụ thuộc vào người khai thác. Đây cũng là một
phương pháp giúp cho người học nắm vững kiến thức về kỹ thuật vi xử lý.
Tuy nhiên, tài nguyên của các KIT này thường nhiều hơn nhiều so với nhu
cầu sử dụng của ta. Do đó, vấn đề đặt ra là: nếu ta có thể làm chủ được kỹ
thuật này, ta có thể thực hiện được các thiết kế theo yêu cầu với phần cứng
tối giản và phần mềm tối ưu.
Trước những vấn đề đã đề cập ở trên, tôi nhận thấy việc thiết kế hệ vi
xử lý đa năng 16 bit sẽ cho phép ta nghiên cứu và mô phỏng bán tự nhiên
các quá trình cơ bản là một hướng đi phù hợp.
Vì vậy, tôi đã thực hiện đồ án “Thiết kế hệ vi xử lý đa năng 16 bit
80x86 Intel”. Mục đích của đồ án là thiết kế hệ vi xử lý đa năng 16 bit, có


các cổng giao tiếp cơ bản (nối tiếp, song song, tương tự, số) và có thể lập
trình để thay đổi chức năng.
Nội dung đồ án gồm 3 chương:
Chương 1: Kiến trúc hệ vi xử lý đa năng 16 bit
Chương 2: Thiết kế các cổng ngoại vi cho hệ vi xử lý đa năng 16 bit
Chương 3: Xây dựng phần mềm cho hệ vi xử lý đa năng 16 bit
Đồ án có sản phẩm là hệ vi xử lý đa năng 16 bit. Thông qua hệ này, ta
có thể kiểm chứng lại kiến thức về kỹ thuật vi xử lý đã học, qua đó hiểu và
nắm chắc, tạo cơ sở cho việc thiết kế, tổng hợp các hệ thống phức tạp hơn
sau này.
Trong quá trình thực hiện đồ án, mặc dù có rất nhiều cố gắng trong
việc nghiên cứu, sưu tầm tài liệu và được sự giúp đỡ nhiệt tình của giáo
viên hướng dẫn, nhưng do điều kiện thời gian có hạn, trình độ kiến thức
còn nhiều hạn chế nên tôi không thể tránh được những thiếu sót. Tôi rất
mong nhận được sự đóng góp ý kiến của các thầy cô giáo và những người
quan tâm.
CHƯƠNG 1 - KIẾN TRÚC HỆ VI XỬ LÝ ĐA NĂNG 16 BIT
Trong những năm cuối thế kỷ 20, kỹ thuật điện tử đã liên tục có
những tiến bộ vượt bậc, đặc biệt là trong kỹ thuật chế tạo mạch vi điện tử.
Các hệ thống điều khiển - điện tử, tin học ngày càng trở nên phổ biến. Ta
có thể tìm thấy chúng ở mọi nơi trong cuộc sống, từ những dụng cụ chuyên
dụng, đơn giản cho đến những hệ thống phức tạp, đa năng. Quy mô, mức
độ phức tạp của các thiết bị điện tử phụ thuộc vào nhiệm vụ, yêu cầu của
bài toán thiết kế đề ra. Các hệ thống này, dù phức tạp hay đơn giản vẫn
phải có những thành phần cơ bản nào đó để có thể làm việc chính xác. Hệ
vi xử lý chính là cơ sở để phát triển lên các hệ thống phức tạp hơn. Như
vậy, vai trò của các hệ vi xử lý trong việc tổng hợp và thiết kế các hệ thống
điện tử - tin học - điều khiển ngày nay là rất quan trọng.Vì vậy, ta cần tìm
hiểu về kiến trúc của hệ vi xử lý để có thể thiết kế hệ một cách chính xác.
Trong chương 1, ta sẽ tiến hành:

- Tìm hiểu về kiến trúc hệ vi xử lý
- Tổ chức đơn vị xử lý trung tâm:
+ Lựa chọn bộ vi xử lý
+ Tổ chức kênh hệ thống và bộ nhớ
1.1 TỔNG QUAN VỀ KIẾN TRÚC HỆ VI XỬ LÝ VÀ TỔ CHỨC
PHẦN CỨNG CỦA HỆ VI XỬ LÝ ĐA NĂNG
1.1.1 Tổng quan về kiến trúc hệ vi xử lý
Khi nói về hệ vi xử lý, người ta thường hay dùng từ kiến trúc để nhấn
mạnh tính thống nhất của các thành phần trong hệ.
Một hệ vi xử lý gồm 2 phần không thể thiếu là cấu trúc phần cứng và
tổ chức phần mềm điều khiển được cài đặt trong hệ thống.
Tổ chức (phần cứng) của hệ vi xử lý được thể hiện trên hình 1.1.
Hình 1.1 Kiến trúc chung của hệ Vi xử lý
Tổ chức của hệ vi xử lý bao gồm các thành phần chính như sau:
1. Bộ vi xử lý (BVXL) là thành phần không thể thiếu của hệ vi xử lý.
Đây là một mạch vi điện tử có độ tích hợp cao, nắm quyền kiểm soát toàn
bộ thành phần trong hệ thống, thực hiện mọi thao tác liên quan đến tính
toán, xử lý, gia công, biến đổi các dạng tín hiệu nhị phân trong hệ dưới sự
điều khiển của chương trình cài đặt trong bộ nhớ trung tâm của hệ vi xử lý.
BVXL còn được gọi khối xử lý trung tâm (CPU – central processing unit),
MP (micro processor).
2. Bộ nhớ trung tâm (bộ nhớ trong) gồm bộ nhớ cố định ROM và bộ
nhớ đọc/ghi RAM. Bộ nhớ ROM (Read Only Memory) dùng để chứa
chương trình điều hành hoạt động của hệ vi xử lý, các bảng biểu, tham số
hệ thống cũng như các số liệu cố định của hệ thống. Nội dung của ROM
phải được chuẩn bị trước khi ghép nó vào hệ. Trong quá trình hoạt động
sau này, nội dung của ROM không bị thay đổi. Bộ nhớ RAM (Random
Access Memory) dùng để lưu trữ các kết quả trung gian và kết quả của các
phép tính toán, xử lý thông tin. RAM cũng được dùng để tổ chức các vùng
đệm dữ liệu trong các thao tác thu, phát, chuyển đổi số liệu. RAM là bộ

nhớ dữ liệu động mà nội dung của nó có thể thay đổi trong quá trình hoạt
động của hệ vi xử lý.
3. Các thiết bị ngoại vi
Bộ hiển thị và bàn điều khiển: dùng để thể hiện trạng thái hoạt động
của hệ vi xử lý. Bàn điều khiển dùng để đưa lệnh, dữ liệu cần thiết vào hệ
vi xử lý. Tuỳ vào quy mô và nhiệm vụ của hệ mà cấu trúc của bộ hiển thị
và bàn điều khiển có thể từ đơn giản đến phức tạp.
Khối xuất nhập thông tin số để trao đổi thông tin với các thiết bị ngoại
vi làm việc theo nguyên tắc số.
Các khối ADC và DAC để trao đổi thông tin với các thiết bị ngoại vi
làm việc theo nguyên tắc phi số.
Tuỳ thuộc vào nhiệm vụ và quy mô của hệ mà số lượng các thiết bị
ngoại vi sẽ khác nhau.
4. Kênh hệ thống để trao đổi thông tin giữa các thành phần trong hệ.
Kênh thông tin hệ thống gồm 3 thành phần:
Kênh địa chỉ (Address bus) là kênh một chiều đi từ BVXL ra. BVXL
sử dụng kênh này để quản lý các thành phần có trong hệ bằng cách gán cho
mỗi thành phần một địa chỉ xác định.
Kênh dữ liệu (Data bus) là kênh hai chiều dùng để trao đổi thông tin
giữa BVXL và các thành phần có trong hệ.
Kênh điều khiển (Control bus) là tập hợp các dây tín hiệu điều khiển
để tạo liên lạc giữa BVXL và các thành phần có trong hệ, nhằm đồng bộ
hoá mọi chế độ và thao tác của hệ thống.
1.1.2 Tổ chức chung của phần cứng hệ vi xử lý đa năng 16 bit Intel
Sau khi tìm hiểu về kiến trúc của hệ vi xử lý, ta tiến hành xây dựng
phần cứng của hệ vi xử lý đa năng 16 bit. Để đảm bảo khả năng làm việc
và tính đa năng của hệ, phần cứng của hệ sẽ gồm các thành phần được chia
thành các nhóm như sau:
- Đơn vị xử lý trung tâm: gồm có BVXL 16 bit Intel, bộ nhớ trung tâm
(ROM, RAM)

- Các ngoại vi: nối tiếp, song song, ADC, DAC
- Tổ chức các ngắt
- Các hệ xử lý con (onchip) để xử lý 1 số chức năng đặc thù (lựa chọn
tốc độ baud)
Chức năng tổng quát của các thành phần đã được trình bày ở phần
1.1.1. Các đặc tính kỹ thuật và chức năng cụ thể của các thành phần cũng
như các chương trình phần mềm sẽ được làm rõ hơn ở các chương sau.
1.2 TỔ CHỨC KÊNH HỆ THỐNG
Như đã tìm hiểu ở phần 1.1, ta đã thấy BVXL là thành phần quan
trọng nhất trong hệ vi xử lý. Do đó, trước tiên, ta sẽ tiến hành thiết kế đơn
vị xử lý trung tâm của hệ với BVXL 16 bit 8086 Intel [6].
Việc lựa chọn BVXL 8086 của Intel để xây dựng hệ vi xử lý đa năng
xuất phát từ các ưu điểm của 8086 và yêu cầu của bài toán thiết kế. Trước
đây, người ta thường dùng BVXL 8088. BVXL 8088 ra đời sau 8086 và
gần như giống 8086, nhưng chỉ có 8 bus dữ liệu. Điều này cho phép người
ta sử dụng các chip lôgic rẻ hơn và hỗ trợ ít hơn. BVXL 8086 không nổi
tiếng như bộ xử lý 8088 nhưng với 16 bus địa chỉ, hệ vi xử lý dùng 8086 có
khả năng xử lý song song cả dữ liệu 16 bit và dữ liệu 8 bit, và nó có thể dễ
dàng tương thích với các hệ vi xử lý khác đã có của Intel. Bên cạnh đó,
ngày nay, những đặc điểm của 8086 vẫn còn tiếp tục tồn tại, các tham chiếu
đến nó vẫn có thể thấy trong đa số các máy tính hiện đại dưới dạng nơi
cung cấp mục vào cho tất cả các thiết bị Intel (ID – Intel devices) kiểu
“8086”. Tính kế thừa và tốc độ là một vấn đề quan trọng đối với các hệ vi
xử lý. Vì vậy, ta chọn BVXL 8086 làm bộ xử lý trung tâm cho hệ vi xử lý
cần thiết kế.
Việc thiết kế đơn vị xử lý trung tâm thực chất là thiết kế kênh nội bộ
và kênh hệ thống để BVXL làm việc chính xác. Vì vậy, chúng ta sẽ tìm
hiểu các đặc điểm chung và đặc điểm hoạt động của bộ xử lý 16 bit Intel
8086 và từ đó tiến hành thiết kế các kênh.
1.2.1 BVXL 16 bit Intel 8086

1.2.1.1 Giới thiệu chung
Thao tác tổng quát
Các chức năng bên trong của BVXL 8086 được phân chia về mặt
logic thành 2 đơn vị xử lý: Đơn vị giao tiếp bus BIU (Bus Interface Unit)
và Đơn vị thực hiện lệnh EU (Execution Unit).
BIU cung cấp các chức năng liên quan tới việc nạp và xếp hàng đợi
lệnh, nạp và lưu toán hạng, định lại địa chỉ và cung cấp sự điều khiển bus
cơ sở. EU thực hiện các tính toán số học và logic. Khi BVXL hoạt động,
EU cung cấp thông tin về địa chỉ cho BIU để khối này đọc lệnh và dữ liệu,
còn EU giải mã và thực hiện lệnh.
Sơ đồ khối của BVXL 8086 được thể hiện trên hình 1.2.
TỔ CHỨC BỘ NHỚ
Bộ xử lý cung cấp địa chỉ 20 bit tới bộ nhớ, bộ nhớ xác định byte đang
được tham chiếu. Bộ nhớ được tổ chức thành một mảng tuyến tính các
byte, được định địa chỉ từ 00000(H) tới FFFFF(H). Bộ nhớ được phân chia
logic thành các thanh ghi mảng lệnh, mảng dữ liệu, mảng dữ liệu mở rộng
và mảng ngăn xếp (xem hình 1.3).
Hình 1.2 Sơ đồ khối BVXL 8086
Hình 1.3 Sự tổ chức bộ nhớ của 8086
Tất cả các tham chiếu bộ nhớ được tạo ra tương tứng với các địa chỉ
cơ sở chứa trong các thanh ghi tốc độ cao. Kiểu đoạn (mảng) được chọn
dựa trên nhu cầu định địa chỉ của các chương trình. Thanh ghi đoạn sẽ
được chọn một cách tự động theo quy tắc của bảng 1.1. Bằng cách tổ chức
bộ nhớ thành các vùng có thể tái định vị có các đặc tính giống nhau và
bằng các thanh ghi chọn mảng tự động, các chương trình sẽ ngắn hơn,
nhanh hơn và được kết cấu tốt hơn.
Các toán hạng word (16 bit) có thể được đặt trên các địa chỉ chẵn hay
lẻ. Với các toán hạng địa chỉ và dữ liệu, byte trọng số thấp của từ được lưu
tại vị trí địa chỉ giá trị thấp và byte trọng số cao được lưu trong vị trí địa chỉ
cao kế tiếp.

Bảng 1.1
Cần tham
chiếu bộ nhớ
Thanh ghi đoạn
được sử dụng
Quy tắc chọn thanh ghi
Các câu lệnh CODE (CS) mã Tự động với tất cả các lệnh nạp
trước
Ngăn xếp STACK (SS) ngăn
xếp
Tất cả các ngăn xếp đẩy và kéo. Bộ
nhớ tham chiếu tới thanh ghi cơ sở
BP trừ các tham chiếu dữ liệu
Dữ liệu cục bộ DATA (DS) dữ
liệu
Dữ liệu tham chiếu khi: tương ứng
với ngăn xếp, đích của thao tác xâu
Dữ liệu ngoài
(Toàn cục)
EXTRA (ES) mở
rộng
Đích của các thao tác xâu: được
chọn bằng cách sử dụng một thanh
ghi tràn.
Bộ nhớ được tổ chức thành một miền cao (D15 - D8) và một miền
thấp (D7 – D0) được định địa chỉ song song bởi các đường địa chỉ A19 –
A1 của bộ xử lý. Byte dữ liệu với các địa chỉ chẵn được truyền trên đường
bus D7 – D0 trong khi byte dữ liệu đánh địa chỉ lẻ (A
0
cao) được truyền

trên các đường bus D15 – D8. Bộ xử lý cung cấp các tín hiệu /BHE và A
0
để cho phép lựa chọn đọc từ hay ghi vào cả vị trí byte lẻ, vị trí byte chẵn,
hoặc cả hai vị trí.
Trong việc tham chiếu dữ liệu word, BIU cần một hoặc hai chu kỳ bộ
nhớ tuỳ thuộc vào byte đầu tiên dù nó nằm ở địa chỉ chẵn hay lẻ. BIU tự
chia việc truy nhập một từ thành hai lần truy nhập hai byte tách biệt mà
không cần sự can thiệp của phần mềm. Việc truy nhập một từ ở địa chỉ lẻ
cần hai chu kỳ bus, trong khi từ ở địa chỉ chẵn chỉ cần một chu kỳ bus. Vì
vậy, trong việc tham chiếu word, việc thực hiện các toán hạng có thể được
tối ưu bằng cách xác định vị trí dữ liệu trên đường biên địa chỉ chẵn.
Các vị trí nhất định trong bộ nhớ được dành riêng cho các thao tác
CPU (xem hình 1.4). Các vị trí từ địa chỉ FFFF0H tới FFFFFH được dành
riêng cho những thao tác mà bao gồm một lần nhảy tới thủ tục tải chương
trình khởi tạo. Sau RESET, CPU sẽ luôn bắt đầu làm việc tại vị trí
FFFF0H.
Con trá ng¾t 0
Con trá ng¾t 1
Con trá ng¾t 255
Nh¶y ch ¬ng tr×nh khëi
t¹o
.
.
.
0H
3H
4H
7H
3FCH
3FFH

FFFF0H
FFFFFH
Hình 1.4 Ví trí bộ nhớ dành riêng cho các thao tác CPU
Vị trí 00000H tới 003FFH được dành riêng cho các thao tác ngắt. Mỗi
ngắt trong số 256 ngắt có thủ tục phục vụ ngắt riêng được chỉ tới bởi thành
phần con trỏ 4 byte gồm một địa chỉ đoạn 16 bit và một địa chỉ nhánh 16
bit.
MODE CỰC ĐẠI VÀ CỰC TIỂU
Yêu cầu để hỗ trợ các hệ thống 8086 cực đại và cực tiểu là rất khác
nhau nên chúng không thể được thực hiện một cách hiệu quả chỉ với 40
chân đã định. Vì vậy, 8086 được trang bị thêm một chân strap (MN/MX)
để xác định cấu hình hệ thống. Sự định nghĩa một tập con các chân nào đó
sẽ thay đổi phụ thuộc vào điều kiện của chân strap. Khi chân MN/MX được
đưa về GND, 8086 đưa các chân 24 đến 31 về chế độ cực đại. Một bộ điều
khiển bus 8288 chuyển thông tin trạng thái được mã thành /S
0
, /S
1
, /S
2
để
tạo định thời bus và các tín hiệu điều khiển phù hợp với kiến trúc multi –
bus. Khi chân MN/MX được đưa về V
CC
, 8086 tự tạo ra các tín hiệu điều
khiển bus trên các chân 24 đến 31.
THAO TÁC TRÊN BUS
8086 có một bus dùng chung cho các bit địa chỉ và dữ liệu được gọi là
bus dồn thời gian. Kỹ thuật này cho phép sử dụng các chân trên bộ xử lý
hiệu quả nhất trong khi vẫn cho phép sử dụng gói 40 chân tiêu chuẩn.

Mỗi chu kỳ bus của bộ xử lý gồm ít nhất bốn chu kỳ CLK. Chúng
được gọi là T1, T2, T3 và T4. Địa chỉ được lấy ra từ bộ xử lý trong chu kỳ
T1 và sự truyền dữ liệu xảy ra trong bus trong các chu kỳ T3 và T4. Sự
thay đổi hướng của bus trong quá trình của các thao tác đọc xảy ra trong
chu kỳ T2. Khi có chỉ thị “NOT READY” được đưa ra bởi thiết bị được
định địa chỉ, trạng thái “wait” (Tw) được chèn vào giữa T3 và T4. Mỗi lần
trạng thái “wait” được chèn là một quá trình có độ dài bằng một chu kỳ
CLK. Các khoảng chèn có thể xảy ra giữa các chu kỳ bus 8086. Chúng
được gọi là các trạng thái rỗi hay chu kỳ CLK không tích cực. Các bộ xử lý
sử dụng các chu kỳ này để quản lý bên trong.
Trong chu kỳ T1, tín hiệu ALE được phát ra (bằng cả bộ xử lý hay bộ
điều khiển bus 8288, phụ thuộc vào MN/MX strap). Ở sườn lên của xung
này, một địa chỉ và thông tin trạng thái nào đó có thể được chốt. Các bit
trạng thái /S
0
, /S
1
, và /S
2
được sử dụng bởi bộ điều khiển trong chế độ cực
đại để xác định kiểu giao dịch bus theo bảng 1.2.
Bảng 1.2
/S
2
/S
1
/S
0
Đặc tính
0(thấp) 0 0 Thừa nhận ngắt

0 0 1 Đọc vào/ra
0 1 0 Ghi vào/ra
0 1 1 Dừng (halt)
1(cao) 0 0 Nạp lệnh
1 0 1 Đọc dữ liệu từ bộ nhớ
1 1 0 Ghi dữ liệu từ bộ nhớ
1 1 1 Không tích cực (không có chu kỳ bus)
Bảng 1.3
Các bit trạng thái S
3
tới S
7
được dồn với các bit địa chỉ
bậc cao và tín hiệu /BHE, và
vì vậy chúng có giá trị trong
thời gian từ T2 đến T4. S
3

S
4
chỉ thị thanh ghi đoạn nào được sử dụng cho chu kỳ bus này trong việc
tạo địa chỉ theo bảng 1.3.
S5 là sự phản ánh của bit cho phép ngắt PSW. S6 = 0 và S7 là một bit trạng
thái rỗi.
ĐỊA CHỈ VÀO/RA
Trong 8086, các thao tác vào ra I/O có thể định địa chỉ tới cực đại là
64K thanh ghi byte vào/ra hay 32K thanh ghi từ vào/ra. Địa chỉ vào/ra xuất
hiện theo cùng một kiểu như địa chỉ bộ nhớ trên các đường bus A
15
– A

0
.
Các đường địa chỉ A19 – A16 là zero trong các thao tác vào/ra.
Các cổng vào/ra được đánh địa chỉ theo cùng kiểu với các vị trí của bộ
nhớ. Các byte được đánh địa chỉ chẵn được truyền trên đường bus D7 – D0
và các byte được đánh địa chỉ lẻ trên đường D15-D8.
Giao diện ngoại vi
KHỞI ĐỘNG LẠI VÀ KHỞI TẠO BỘ VI XỬ LÝ
Khi chân RESET được kích hoạt cao – HIGH, BVXL được khởi tạo.
RESET 8086 được yêu cầu là cao (HIGH) trong nhiều hơn bốn chu kỳ
CLK. 8086 sẽ kết thúc các thao tác ở sườn lên của RESET và sẽ giữ tình
trạng không hoạt động chừng nào RESET còn là HIGH. Sự chuyển tiếp
xuống của RESET kích một chuỗi thiết lập lại bên trong trong khoảng 10
chu kỳ CLK. Sau khoảng này 8086 hoạt động bình thường bắt đầu với vị trí
tuyệt đối FFFF0H (xem hình 1.4).
THAO TÁC NGẮT
S4 S3 Đặc tính
0(thấp) 0 Dữ liệu luân phiên (đoạn
mở rộng)
0 1 Ngăn xếp
1(cao) 0 Mã hoặc không
1 1 Dữ liệu
Các thao tác ngắt của BVXL chia thành hai loại: được khởi tạo phần
cứng hay phần mềm. Các ngắt mềm được khởi tạo phần mềm (bằng lệnh).
Các ngắt phần cứng có thể được chia ra thành ngắt che được và không che
được.
Các ngắt truyền việc điều khiển tới một vị trí chương trình mới. Một
bảng 256 thành phần bao gồm các con trỏ địa chỉ đến các vị trí chương
trình phục vụ ngắt cư trú trong các vị trí tuyệt đối 0 đến 3FFH (xem hình
1.4), được dành riêng cho mục đích này. Mỗi thành phần trong bảng có

kích thước 4 byte và tương ứng với một “loại” ngắt.
- Ngắt không che được (NMI - Non – markable Interrupt)
Bộ xử lý cung cấp một chân ngắt không che được (NMI) có mức ưu
tiên cao hơn chân yêu cầu ngắt che được (INTR).
NMI không cần được đồng bộ với đồng hồ và bất cứ sự chuyển lên
cao nào của NMI sẽ được chốt trên chip được phục vụ tại cuối của lệnh
hiện thời.
- Ngắt che được (INTR - Interrupt Request)
8086 cung cấp một đầu vào yêu cầu ngắt (INTR) có thể che được bởi
phần mềm bằng cách khởi động lại cờ trạng thái cho phép ngắt. Tín hiệu
yêu cầu ngắt được điều khiển mức. Nó được đồng bộ trong trong mỗi chu
kỳ đồng hồ trên sườn lên của CLK. Thanh ghi FLAGS được đẩy tự động
vào ngăn xếp.
Trong quá trình chuỗi phản ứng, bộ xử lý thực hiện 2 chu kỳ nhận biết
ngắt liên tiếp. 8086 phát ra tín hiệu LOCK từ T2 của chu kỳ bus đầu tiên
tới T2 của chu kỳ bus thứ 2. Một yêu cầu “hold ” bus nội bộ sẽ không được
ưu tiên cho đến khi kết thúc chu kỳ bus thứ 2. Trong chu kỳ bus thứ 2, một
byte được nạp từ hệ thống ngắt ngoài sẽ xác định số hiệu ngắt. Byte này
được nhân 4 và được sử dụng như con trỏ vào bảng tra vector ngắt. Lệnh
INTERRUPT RETURN bao gồm việc lấy FLAG để trả về trạng thái của
bit cho phép ngắt ban đầu khi nó lưu FLAG.
Trên đây là một số thao tác cơ bản của 8086. Để đảm bảo việc tổ chức
khối xử lý trung tâm được chính xác, ta cần tiếp tục tìm hiểu cách bố trí
chân của 8086.
1.2.1.2 Bố trí chân của MP 8086
Các chân của BVXL có thể phân chia theo các nhóm chức năng sau:
- Các đường nguồn nuôi
- Các đường địa chỉ/dữ liệu/trạng thái
- Các đường điều khiển địa chỉ/dữ liệu
- Các đường điều khiển ngắt

- Các đường điều khiển thao tác
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
Min mode Max mode
1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16
17
18
19
20

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24

23
22
21
VCC
AD15 ]
A16/S3
A17/S4
A18/S5
A19/S6
SSO
MN/MX
RD
HOLD
HLDA
WR
IO/M
DT/R
DEN
ALE
INTA
TEST
READY
RESET
¬
BHE/S7
RQ/GT0
RQ/GT1
LOCK
S2
S1

S0
QS0
QS1
µP
8086
[8086]
Hình 1.5 Cấu hình chân của 8086
Cụ thể ta có bảng các chân và chức năng của chúng như sau:
Tên chân Chân số Kiểu Chức năng
Các đường nguồn nuôi
V
CC
40 Chân cấp nguồn +5V
GND 1,20 Chân đất
Các đường địa chỉ, dữ liệu, trạng thái
AD
15

AD
0
2-16,39 I/O Bus dữ liệu địa chỉ: là các đường tạo nên bus địa chỉ
bộ nhớ/vào ra (T1
*
) và bus địa chỉ (T2, T3, Tw, T4
**
)
được ghép theo thời gian.
A
19
/S

6
, 35-38 O Địa chỉ/Trạng thái: là các đường bus địa chỉ và trạng
A
18
/S
5
,
A
17
/S
4
,
A
16
/S
3
thái được ghép theo thời gian.
- Trong T1: đây là 4 đường địa chỉ quan trọng nhất đối
với các thao tác bộ nhớ.
- Trong T2, T3, Tw và T4: thông tin trên các đường
này là các thông tin trạng thái:
+ S
6
= 0 (LOW)
+ S
5
: trạng thái của bit cờ cho phép ngắt được cập nhật
ở đầu mỗi chu kỳ CLK.
+ A
17

/S
4
và A
16
/S
3
được mã hoá như sau:
A
17
/S
4
A
16
/S
3
Đặc tính
0(LOW)
0
1(HIGH)
1
0
1
0
1
Dữ liệu luân phiên
Ngăn xếp
Mã hoặc không
Dữ liệu
Các đường điều khiển địa chỉ/dữ liệu
ALE 25 O Address Latch Enable - chốt địa chỉ: là chân ra mức

cao trong T1 của chu kỳ bus để xác nhận địa chỉ đang
ổn định trên bus địa chỉ
/DEN 26 O Data Enable: là đầu ra 3 trạng thái. /DEN tích cực ở
mức thấp khi truy nhập bộ nhớ và vào/ra
DT/R 27 O Data Transmit/Receive: dùng để xác định chiều truyền
dữ liệu qua bộ thu phát.
M/IO 28 O Đường trạng thái: được dùng để phân biệt truy nhập là
truy nhập bộ nhớ hay truy nhập vào/ra.
/WR 29 O Dùng để chỉ thị rằng BVXL đang thực hiện chu kỳ ghi
bộ nhớ hay ghi I/O, phụ thuộc vào trạng thái của tín
hiệu M/IO
/RD 32 O Có mức tích cực thấp, xác nhận việc đọc dữ liệu bộ
nhớ hay I/O, phụ thuộc vào trạng thái của chân 29.
/BHE/S
7
34 O Kết hợp với M/IO và DT/R để cho thông tin về chu kỳ
bus
IO/M DT/R SS0 Chức năng
chu kỳ bus
0
0
0
0
1
1
1
1
0
0
1

1
0
0
1
1
0
1
0
1
0
1
0
1
Nhận lệnh
Đọc bộ nhớ
Ghi bộ nhớ
Thụ động (Passive)
Báo nhận lệnh ngắt
Đọc cổng I/O
Ghi cổng I/O
Dừng (Halt)
Các đường điều khiển ngắt
NMI 17 I Non-markable Interrupt - ngắt không che được: là tín
hiệu tích cực ở mức cao (được CPU nhận biết bằng tác
động của sườn lên của xung yêu cầu ngắt), dùng để
ngắt quá trình xử lý của CPU. NMI không che được
(không bỏ qua được) bởi phần mềm.
INTR 18 I Interrupt Request - yêu cầu ngắt (che được): là tín hiệu
tích cực ở mức cao, dùng để ngắt quá trình xử lý của
CPU. Nó có thể bị bỏ qua bằng việc reset bit cho phép

ngắt bằng phần mềm.
/INTA 24 O Là tín hiệu tích cực thấp, dùng để báo cho mạch ngoài
biết CPU đã nhận 1 yêu cầu ngắt.
RESET 21 I Là tín hiệu tích cực mức cao dùng để khởi động lại
8086.
/TEST 23 I Tín hiệu tại chân này được kiểm tra bởi lệnh “Wait”.
Khi CPU thực hiện lệnh WAIT mà đầu vào /TEST là
cao (=1), nó sẽ chờ đến khi tín hiệu TEST về thấp (=
0) thì mới thực hiện lệnh tiếp theo.
Các chân điều khiển thao tác
CLK 19 I Cung cấp đồng hồ chủ cho BVXL và bộ điều khiển
bus. Xung nhịp không đối xứng với độ rỗng 77%.
READY 22 I Là tín hiệu báo cho CPU biết tình trạng sẵn sàng của
I/O hoặc bộ nhớ, tích cực ở mức cao.
HOLD,
HLDA
31,30 I/O Tín hiệu HOLD báo có yêu cầu làm chủ bus từ bên
ngoài. Khi CPU tiếp nhận yêu cầu này thì đưa ra tín
hiệu HLDA( Hold Acknowledge).
MN/MX 33 I Chỉ thị chế độ làm việc của BVXL là mode tối đa (0)
hay tối thiểu (1)
I/O: vào/ra, I: vào, O: ra
*, **: 8086 sử dụng kỹ thuật dồn thời gian đối với bus để có thể sử dụng
các chân trên BVXL hiệu quả. Dữ liệu được truyền trên bus có chức năng
phụ thuộc theo thời gian nó xuất hiện trên bus. Mỗi chu kỳ bus của BVXL
gồm ít nhất bốn chu kỳ CLK, được gọi lần lượt là T1, T2, T3 và T4. Tw là
khoảng thời gian chèn giữa T3, T4 khi một thiết bị được định địa chỉ đưa ra
chỉ thị “NOT READY”.
1.2.2 Tổ chức kênh nội bộ và kênh hệ thống
Sau khi tìm hiểu BVXL 16 bit 8086 Intel, ta cần thực hiện việc tổ

chức kênh thông tin để BVXL có thể làm việc chính xác. Kênh thông tin
của hệ gồm các kênh nội bộ và kênh hệ thống, như được thể hiện trên hình
1.6.
Các kênh trong hệ phải không gây ảnh hưởng lẫn nhau, đảm bảo sự
lưu thông dữ liệu. Bộ xử lý liên lạc với các thiết bị khác thông qua hệ thống
bus gồm: bus địa chỉ, bus dữ liệu và bus điều khiển.
Hình 1.6 Kênh thông tin của hệ vi xử lý
1.2.2.1 Bus địa chỉ
Trong hệ vi xử lý với 8086, ta dùng vi mạch 74HC573 để chốt địa chỉ
do 8086 cung cấp, duy trì địa chỉ ổn định cho toàn hệ. Vì thông tin địa chỉ
có trên bus trong khoảng thời gian ngắn nên mạch chốt được điều khiển bởi
tín hiệu ALE sẽ được dùng để giữ lại thông tin địa chỉ đó.
74HC573 là vi mạch chốt 8 bit có lối ra 3 trạng thái. Vi mạch gồm 8
mạch chốt loại D, có lối ra Q lặp lại lối vào dữ liệu D.
Chân điều khiển lối ra /OC có tác dụng chuyển mạch chốt vào trạng
thái trở kháng cao khi /OC ở mức cao. Ngược lại, khi /OC ở mức thấp, lối
ra của mạch chốt sẽ phụ thuộc vào chân chốt C theo bảng sự thật (hình 1.7).
Với /OC ở mức thấp, lối vào C ở mức cao sẽ có tác dụng mở chốt, tức là
làm lối ra được lặp lại theo lối vào. Còn nếu C thấp thì các lối ra sẽ được
chốt lại ở giá trị đã được thiết lập từ trước (không thay đổi giá trị).
OC
Q1
D1
1
2
3
20
19
18
VCC

Q8
D8
D2
Q2
Q3
D3
D4
Q4
GND
4
5
6
7
8
9
10
74HC573
17
16
15
14
13
12
11
D7
Q7
Q6
D6
D5
Q5

G
OC
Output Control
G
Enable Latch
D
Input
Q
Output
L H H H
L H L L
L L X No Change
H X X Hi Z
Hình 1.7 Vi mạch chốt 74HC573 và bảng sự thật
Với hệ vi xử lý đa năng 16 bit cần thiết kế, ta cần dùng 2 chip
74HC573 và được tổ chức như hình 1.8.
V C C
V C C
C P U _ A D 0
C P U _ A D 1
C P U _ A D 2
C P U _ A D 3
C P U _ A D 4
C P U _ A D 5
C P U _ A D 6
C P U _ A D 7
C P U _ A D 8
C P U _ A D 9
C P U _ A D 1 0
C P U _ A D 1 1

C P U _ A D 1 2
C P U _ A D 1 3
C P U _ A D 1 4
C P U _ A D 1 5
A d d r _ A 0
A d d r _ A 1
A d d r _ A 2
A d d r _ A 3
A d d r _ A 4
A d d r _ A 5
A d d r _ A 6
A d d r _ A 7
A d d r _ A 8
A d d r _ A 9
A d d r _ A 1 0
A d d r _ A 1 1
A d d r _ A 1 2
A d d r _ A 1 3
A d d r _ A 1 4
A d d r _ A 1 5
A L E
A L E
A d d r _ A 2
A d d r _ A 3
A d d r _ A 6
A d d r _ A 4
A d d r _ A 1
A d d r _ A 5
A d d r _ A 0
A d d r _ A 7

A d d r _ A 1 4
A d d r _ A 1 2
A d d r _ A 9
A d d r _ A 1 3
A d d r _ A 8
A d d r _ A 1 5
A d d r _ A 1 0
A d d r _ A 1 1
U 8
7 4 H C 5 7 3
2
3
4
5
6
7
8
9
1 1
1
1 9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
D 1
D 2

D 3
D 4
D 5
D 6
D 7
D 8
C
O C
Q 1
Q 2
Q 3
Q 4
Q 5
Q 6
Q 7
Q 8
R N 1
1
2
3
4
5
6
7
8
9
R N 3
1
2
3

4
5
6
7
8
9
J 1
J u m p e r B I N
1
2
3
4
5
6
7
8
J 3
J u m p e r B I N
1
2
3
4
5
6
7
8
U 1
7 4 H C 5 7 3
2
3

4
5
6
7
8
9
1 1
1
1 9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
D 1
D 2
D 3
D 4
D 5
D 6
D 7
D 8
C
O C
Q 1
Q 2
Q 3
Q 4

Q 5
Q 6
Q 7
Q 8
Hình 1.8 Tổ chức bus địa chỉ
Chân cho phép đầu ra /OC của 74HC573 được nối đất, vì thế, các tín
hiệu ra của 573 luôn được kích hoạt. Tín hiệu chốt địa chỉ ALE từ BVXL
được đấu trực tiếp vào chân C của 74HC573. Việc tách các địa chỉ A0 – A7
được thực hiện bằng cách nối 74HC573 đến chân AD0 – AD7 của BVXL.
Các chân AD8 – AD15 của BVXL được nối đến chip 74HC573 thứ 2. Với
hệ thống ta thiết kế, các đường tín hiệu A16 – A19 luôn là 1 nên ta không
cần đưa vào các bộ giải mã địa chỉ để việc thực hiện mạch điện được đơn
giản.
1.2.2.2 Bus dữ liệu
Bus dữ liệu là bus 2 chiều được cho qua mạch thu phát 74HC245.
74HC245 là vi mạch thu phát bus 2 chiều 8 bit có 3 trạng thái, dùng để đệm
và điều khiển chiều chuyển động của dữ liệu.
Theo bảng sự thật (hình 1.9), khi chân G ở mức cao, vi mạch ở trạng
thái trở kháng cao. Khi G thấp thì chiều chuyển động của dữ liệu sẽ do DIR
quyết định. Khi DIR thấp thì chiều chuyển động từ B sang A. Ngược lại,
dữ liệu từ A sang B.
DIR 1 20 VCC
A1 2 19
G
A2 3 18 B1
A3 4 74HC245 17 B2
A4 5 16 B3
A5 6 15 B4
A6 7 14 B5
A7 8 13 B6

A8 9 12 B7
GND 10 11 B8
G DIR OUT
L L B-A
L H A-B
H X Hi-Z
Hình 1.9 Vi mạch thu phát 74HC245 và bảng sự thật
Với hệ 16 bit cần thiết kế, chip 74HC245 được kích hoạt bằng 2 tín
hiệu DT/R và DEN. Tín hiệu DT/R được đưa vào chân DIR của 74HC245
và xác định cho chip này chuyển dữ liệu từ phía A sang B khi có mức logic
cao. Ngược lại, khi DT/R đưa vào chân DIR mức logic thấp, chip thu phát
sẽ truyền dữ liệu từ B sang A (khi đó là nhận thông tin từ bus dữ liệu hệ
thống và đưa vào bộ xử lý). Chân G được nối với tín hiệu DEN để điều
khiển việc nối lối ra với bus dữ liệu. Khi chân G của 74HC245 chưa ở mức
tích cực, bus dữ liệu hệ thống bị cách ly khỏi bus dữ liệu nội bộ (đầu ra trở
kháng cao).
V C C
V C C
D E N #
D E N #
D T / R #
D T / R #
C P U _ A D 0
C P U _ A D 1
C P U _ A D 2
C P U _ A D 3
C P U _ A D 4
C P U _ A D 5
C P U _ A D 6
C P U _ A D 7

C P U _ A D 8
C P U _ A D 9
C P U _ A D 1 0
C P U _ A D 1 1
C P U _ A D 1 2
C P U _ A D 1 3
C P U _ A D 1 4
C P U _ A D 1 5
D a t a _ D 8
D a t a _ D 1 0
D a t a _ D 1 1
D a t a _ D 1 2
D a t a _ D 1 3
D a t a _ D 1 4
D a t a _ D 1 5
D a t a _ D 9
D a t a _ D 0
D a t a _ D 1
D a t a _ D 2
D a t a _ D 3
D a t a _ D 4
D a t a _ D 5
D a t a _ D 6
D a t a _ D 7
D a t a _ D 1 3
D a t a _ D 1
D a t a _ D 8
D a t a _ D 1 5
D a t a _ D 5
D a t a _ D 1 0

D a t a _ D 1 1
D a t a _ D 0
D a t a _ D 7
D a t a _ D 1 4
D a t a _ D 1 2
D a t a _ D 3
D a t a _ D 2
D a t a _ D 9
D a t a _ D 6
D a t a _ D 4
U 6
7 4 H C 2 4 5
2
3
4
5
6
7
8
9
1 9
1
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1

A 1
A 2
A 3
A 4
A 5
A 6
A 7
A 8
G
D I R
B 1
B 2
B 3
B 4
B 5
B 6
B 7
B 8
R N 2
1
2
3
4
5
6
7
8
9
R N 5
1

2
3
4
5
6
7
8
9
J 4
1
2
3
4
5
6
7
8
U 1 0
7 4 H C 2 4 5
2
3
4
5
6
7
8
9
1 9
1
1 8

1 7
1 6
1 5
1 4
1 3
1 2
1 1
A 1
A 2
A 3
A 4
A 5
A 6
A 7
A 8
G
D I R
B 1
B 2
B 3
B 4
B 5
B 6
B 7
B 8
J 2
1
2
3
4

5
6
7
8
Hình 1.10 Tổ chức bus dữ liệu
1.2.2.3 Bus điều khiển
V C C
A L E
B H E #
D T / R #
D E N #
R D #
M / I O #
W R #
I N T A #
R N 4
1
2
3
4
5
6
7
8
9
Hình 1.11 Tổ chức bus điều khiển
Một số đường bus điều khiển là do 8288 cung cấp (M/IO, /RD, WR,
BHE…), một số đường khác do các mạch logic cung cấp (INTA).
1.2.3 Mạch tạo xung đồng hồ và tín hiệu Ready
Tất cả các BVXL đều yêu cầu tín hiệu thời gian để đồng bộ hoạt động.

Ta sử dụng chip phát xung đồng hồ 8284A để cung cấp xung nhịp thời gian
cơ sở cho BVXL 8086.
Ta xem xét chi tiết hơn về các chân tín hiệu:
- X1, X2: Các chân vào mắc với tinh thể ngoài. Tần số ta sử dụng ở
đây là 14,31818 Mhz.
- OSC: Tín hiệu ra của bộ dao động.
- CLK (clock): Tần số xung nhịp bằng 1/3 tần số tinh thể
14,31818/3=4,77 Mhz.
- PCLK (peripheral clock): Xung nhịp cho thiết bị ngoại vi, bằng 1/2
tần số đồng hồ của BVXL.
- RES (reset input): Lối vào - Chân xoá của hệ thống.
- RESET (reset output): Lối ra, cung cấp tín hiệu ra reset để đồng bộ
tín hiệu vào RES với đồng hồ của hệ máy. Nối với chân RESET của BVXL
được đồng bộ với RES vào.
- F/C (Frequency/Crystal): Lối vào quyết định tần số vào là tinh thể
hay là tần số đồng hồ ngoài. Mức logic 0 qui định tần số tinh thể đưa vào
X1 và X2, còn mức logic 1 là tần số ngoài đưa vào chân EFI.
- EFI (External Frequency Input): Chân lối vào tần số ngoài được
dùng làm lối vào cho tín hiệu đồng hồ lấy từ nguồn khác.

×