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.
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG 1 - KIẾN TRÚC HỆ VI XỬ LÝ ĐA NĂNG 16 BIT 3
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 3
1.1.1 Tổng quan về kiến trúc hệ vi xử lý 3
1.1.2 Tổ chức chung của phần cứng hệ vi xử lý đa năng 16 bit Intel 5
1.2 TỔ CHỨC KÊNH HỆ THỐNG 6
1.2.1 BVXL 16 bit Intel 8086 7
1.2.2 Tổ chức kênh nội bộ và kênh hệ thống 19
1.2.3 Mạch tạo xung đồng hồ và tín hiệu Ready .24
1.3 THIẾT KẾ KHÔNG GIAN NHỚ 27
CHƯƠNG 2 - THIẾT KẾ CÁC CỔNG NGOẠI VI CHO HỆ VI XỬ LÝ ĐA NĂNG 16 BIT 33
2.1 CÁC MẠCH PHỐI GHÉP VÀO/RA 33
2.1.1 Cổng song song 34
2.1.2 Cổng nối tiếp 40
2.1.3 Cổng DAC 44
2.1.4 Cổng ADC 47
2.2 MẠCH ĐIỀU KHIỂN NGẮT 52
2.2.1 Chế độ ngắt và phân loại ngắt của BVXL 52
2.2.2 Hoạt động của ngắt 54
2.2.3 Tổ chức ngắt cho hệ vi xử lý đa năng 16 bit 56
CHƯƠNG 3 – XÂY DỰNG PHẦN MỀM CHO HỆ VI XỬ LÝ ĐA NĂNG 16 BIT 59
3.1 PHẦN MỀM CHO HỆ VI XỬ LÝ 59
Trang 23.1.1 Kiểm tra RAM 60
3.1.2 Kiểm tra cổng song song 62
3.1.3 Cổng nối tiếp 64
3.1.4 Cổng DAC 66
3.1.5 Cổng ADC 68
3.1.6 Ngắt 68
3.2 PHẦN MỀM CHO MÁY TÍNH PC 71
3.2.1 Tạo giao diện trao đổi dữ liệu với hệ vi xử lý 16 bit 72
3.2.2 Kết quả chạy chương trình 74
KẾT LUẬN ĐỒ ÁN 77
Trang 3LỜ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ặtquan 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à tronghầ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ườngcù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áclĩ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ắtkịp nhịp phát triển của thế giới Đây là một yêu cầu quan trọng và mangtí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ủaKIT hiệu quả hay không phụ thuộc vào người khai thác Đây cũng là mộtphươ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 nhucầ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ứngtố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êncác quá trình cơ bản là một hướng đi phù hợp
Trang 4Vì vậy, tôi đã thực hiện đồ án “Thiết kế hệ vi xử lý đa năng 16 bit80x86 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ậptrì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ơnsau này
Trong quá trình thực hiện đồ án, mặc dù có rất nhiều cố gắng trongviệ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áoviên hướng dẫn, nhưng do điều kiện thời gian có hạn, trình độ kiến thứccò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ấtmong nhận được sự đóng góp ý kiến của các thầy cô giáo và những ngườiquan tâm
Trang 5CHƯƠ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êndụ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ủabài toán thiết kế đề ra Các hệ thống này, dù phức tạp hay đơn giản vẫnphả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ìmhiể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:
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ấnmạ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
Trang 6RAM Bàn điều
khiển
Giao diện nối tiếp
Giao diện song song Kênh địa chỉ (Address bus)
Kênh điều khiển (Control bus)
Thiết bị ngoại vi Kênh dữ liệu
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ớnhtoỏ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ứachươ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 ROMphải được chuẩn bị trước khi ghộp nú vào hệ Trong quỏ trỡnh hoạt độngsau này, nội dung của ROM khụng bị thay đổi Bộ nhớ RAM (RandomAccess Memory) dựng để lưu trữ cỏc kết quả trung gian và kết quả của cỏcphộ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ý
Trang 73 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 độngcủ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 vilà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 chomỗ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 tingiữ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ựngphầ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 chiathà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)
Trang 8- Các ngoại vi: nối tiếp, song song, ADC, DAC
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 quantrọ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ăngxuấ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ổitiế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ơicung 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
Trang 9hiể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
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 đợilệ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ácbyte, được định địa chỉ từ 00000(H) tới FFFFF(H) Bộ nhớ được phân chialogic 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)
Trang 10Con trá d÷ liÖu
vµ c¸c thanh ghi chØ sè (8 word)
C¸c thanh ghi
®o¹n vµ con trá lÖnh (5 word)
16 bit ALU
C¸c cê FLAG
BIU
§¬n vÞ giao diÖn bus
/INTA,/RD, /WR
DT/R, /DEN, ALE AD15 - AD0
§¬n vÞ giao tiÕp bus BIU
Hình 1.2 Sơ đồ khối BVXL 8086
Trang 11SS CS DS ES
TËp thanh ghi ®o¹n
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ọndự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ưutạ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
Trang 12Quy 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ướcNgăn xếp STACK (SS) ngăn
Đích của các thao tác xâu: đượcchọn bằng cách sử dụng một thanhghi tràn
Bộ nhớ được tổ chức thành một miền cao (D15 - D8) và một miềnthấ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 đườngbus D7 – D0 trong khi byte dữ liệu đánh địa chỉ lẻ (A0 cao) được truyềntrên các đường bus D15 – D8 Bộ xử lý cung cấp các tín hiệu /BHE và A0
để 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ể đượctố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ácCPU (xem hình 1.4) Các vị trí từ địa chỉ FFFF0H tới FFFFFH được dành
Trang 13riê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ươngtrì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ỗingắt trong số 256 ngắt có thủ tục phục vụ ngắt riêng được chỉ tới bởi thànhphần con trỏ 4 byte gồm một địa chỉ đoạn 16 bit và một địa chỉ nhánh 16bit
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ácnhau nên chúng không thể được thực hiện một cách hiệu quả chỉ với 40châ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ềukhiển bus 8288 chuyển thông tin trạng thái được mã thành /S0, /S1, /S2 để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ề VCC, 8086 tự tạo ra các tín hiệu điềukhiển bus trên các chân 24 đến 31
THAO TÁC TRÊN BUS
Trang 148086 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 trongchu 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ầntrạ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 xungnày, một địa chỉ và thông tin trạng thái nào đó có thể được chốt Các bittrạng thái /S0, /S1, và /S2 đượ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
Trang 15Các bit trạng thái S3 tới S7
đượ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ị trongthời gian từ T2 đến T4 S3 và
S4 chỉ thị thanh ghi đoạn nào được sử dụng cho chu kỳ bus này trong việctạ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ạngthá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ấthiện theo cùng một kiểu như địa chỉ bộ nhớ trên các đường bus A15 – A0.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ìnhtrạng không hoạt động chừng nào RESET còn là HIGH Sự chuyển tiếpxuống của RESET kích một chuỗi thiết lập lại bên trong trong khoảng 10chu 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)
Trang 16Các thao tác ngắt của BVXL chia thành hai loại: được khởi tạo phầncứ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ộtbảng 256 thành phần bao gồm các con trỏ địa chỉ đến các vị trí chươngtrình phục vụ ngắt cư trú trong các vị trí tuyệt đối 0 đến 3FFH (xem hình1.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 ưutiê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êncao nào của NMI sẽ được chốt trên chip được phục vụ tại cuối của lệnhhiệ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ởiphầ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ệuyê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ự độngvà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ếtngắt liên tiếp 8086 phát ra tín hiệu LOCK từ T2 của chu kỳ bus đầu tiêntớ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ộtbyte đượ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
Trang 17INTERRUPT RETURN bao gồm việc lấy FLAG để trả về trạng thái củabit 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ứckhố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
Trang 18GND 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
P8086 [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:
Các đường nguồn nuôi
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
A19/S6, 35-38 O Địa chỉ/Trạng thái: là các đường bus địa chỉ và trạng
Trang 19A17/S4,
A16/S3
thái được ghép theo thời gian
- Trong T1: đây là 4 đường địa chỉ quan trọng nhất đốivới các thao tác bộ nhớ
- Trong T2, T3, Tw và T4: thông tin trên các đườngnày là các thông tin trạng thái:
+ S6 = 0 (LOW)+ S5: trạng thái của bit cờ cho phép ngắt được cập nhật
ở đầu mỗi chu kỳ CLK
+ A17/S4 và A16/S3 được mã hoá như sau:
A17/S4 A16/S3 Đặc tính0(LOW)
01(HIGH)1
0101
Dữ liệu luân phiênNgă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/raDT/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ínhiệ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/S7 34 O Kết hợp với M/IO và DT/R để cho thông tin về chu kỳ bus
Trang 20IO/M DT/R SS0 Chức năng
chu kỳ bus0
0001111
00110011
01010101
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/OGhi cổng I/ODừ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ủaCPU Nó có thể bị bỏ qua bằng việc reset bit cho phépngắ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
Trang 21bus 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ínhiệ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
Trang 22Bộ tạo dao
động
8086
Bộ điều khiển kênh
Bộ đệm cho kênh địa chỉ
Bộ đệm cho kênh dữ liệu
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ởitớ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 8mạ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ạngthỏ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ỡnh1.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ẽ đượcchố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
Trang 23D2 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
1 1 1
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
Trang 24Chân cho phép đầu ra /OC của 74HC573 được nối đất, vì thế, các tínhiệ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ôngcần đưa vào các bộ giải mã địa chỉ để việc thực hiện mạch điện được đơngiả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ạngthái trở kháng cao Khi G thấp thì chiều chuyển động của dữ liệu sẽ do DIRquyết định Khi DIR thấp thì chiều chuyển động từ B sang A Ngược lại,
Trang 251 9 1
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
Hình 1.10 Tổ chức bus dữ liệu 1.2.2.3 Bus điều khiển
Trang 26Hì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/2tầ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àoX1 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 đượcdùng làm lối vào cho tín hiệu đồng hồ lấy từ nguồn khác
Trang 27- CSYNC (Clock Synchronization): Chân đồng bộ đồng hồ dùng đểđồng bộ nhiều chip 8284A theo 1 tần số đồng hồ.
- READY (tới ready của 8086): Dùng để báo cho BVXL biết có mộtthiết bị I/O hay bộ nhớ đang sẵn sàng nhận hay phát dữ liệu
- AEN2, RDY2 (address enable, bus ready) cùng với AEN1 và RDY1điều khiển đường dây READY
- ASYNC (Ready synchronisation select): Chọn đồng bộ hai tầng hoặcđồng bộ một tầng cho tín hiệu RDY1, RDY2 Trong chế độ đồng bộ mộttầng (ASYNC=1) tín hiệu RDY có ảnh hưởng đến tín hiệu READY tới tậnsườn xuống của xung đồng hồ tiếp theo Còn trong chế độ đồng bộ hai tầng(ASYNC=0) tín hiệu RDY chỉ có ảnh hưởng đến tín hiệu READY khi cósườn xuống của xung đồng hồ tiếp theo
CSYNCPCLKAEN1RDY1READYRDY2AEN2CLKGDN
123456789
181716151413121110
VCCX1X2AYNCEFIF/COSCRESRESET
8284A
Trang 281 0 2
3 5
U 1 6 A 7 4 H C 0 0
1
2 3
ALE
WR
RD IO/M DEN DT/R
Trang 29Để BVXL có thể sử dụng được thông tin lưu trữ trong bộ nhớ cần cóquá trình đọc thông tin đó Trước hết, thông tin ở bộ nhớ được đọc vào BIUqua bus dữ liệu Khi dữ liệu được xử lý xong, kết quả lại được cất trở lạivào bộ nhớ Thao tác này được gọi là ghi vào bộ nhớ, và khi đó, thông tinlại di chuyển ngược lại trên bus dữ liệu Hình 1.13 thể hiện quan hệ giữaBVXL và bộ nhớ
Các tín hiệu điều khiển bộ nhớ hoạt động:
- ALE: Sườn xuống của tín hiệu ALE được dùng để mở chốt địa chỉ bộnhớ Khi địa chỉ này được mở có thể tiến hành việc ghi/đọc cho đến khiALE trở lại mức cao
- WR/RD: Khi địa chỉ được mở, BVXL sẽ tác động hoặc vào tín hiệu WR(ghi) hoặc tín hiệu RD (đọc) để tiến hành quá trình ghi/đọc bộ nhớ Các tínhiệu ba trạng thái đều có mức logic thấp và không thể mở cả hai cùng mộtlúc
- M/IO: Tín hiệu cho phép chọn hoặc cổng vào/ra hoặc là bộ nhớ Tín hiệunày là cần thiết vì cùng một địa chỉ có thể được dùng cho bộ nhớ hoặc chomột cổng I/O
- DEN: Để phân định thời gian cho BUS Hầu hết các hệ thống nối với bus
dữ liệu đều phải qua mạch đệm Tín hiệu DEN là tín hiệu ba trạng thái hiệulực ở mức thấp dùng để mở mạch đệm này
- DT/R: Dùng để xác định chiều chuyền dữ liệu Mức cao khi bộ xử lýchuyền dữ liệu và mức thấp khi nhận dữ liệu
Trang 30Hình 1.14 Tổ chức bộ nhớ ROM/RAM của hệ vi xử lý
BVXL 8086 có thể quản lý được 1MB bộ nhớ Tuy nhiên, do yêu cầu
với hệ, ta chỉ cần chọn dung lượng cho ROM và cho RAM là 16kB cho
mỗi loại Dung lượng như vậy là đủ để chứa chương trình MONITOR và
các vùng đệm dữ liệu cho chức năng hệ thống Mặt khác, có thể dễ dàng
chọn IC nhớ cho ROM và RAM Ta chọn chip EPROM 2764 dung lượng
8kB cho ROM và chip 6264 có dung lượng 8kB cho RAM Do hệ đang
thiết kế là hệ 16 bit nên ta cần dùng 2 chip 2764 và mắc song song để tạo 2
băng nhớ (băng chứa byte cao và băng chứa byte thấp) Tương tự như vậy
2 5
2 4
2 1
2 3 2
2 5
2 4
2 1
2 3 2
1 0 9 8 7 6 5 4 3
2 5
2 4
2 1
2 3 2
1 0 9 8 7 6 5 4 3
2 5
2 4
2 1
2 3 2
Trang 31với RAM, ta dùng 2 chip 6264 và mắc theo phương pháp song song để tạo
2 băng RAM
Trong phần trước, ta đã tìm hiểu về cách tổ chức và bản đồ bộ nhớ bộnhớ của BVXL 8086 Vì khi khởi động, con trỏ chương trình CS:IP có giátrị F000:FFF0, tức là lệnh đầu tiên của chương trình Monitor phải chứa ởngăn nhớ này Chương trình Monitor lại phải nằm trong ROM nên ROMphải chiếm không gian nhớ 16kB của mảng 64kB cuối cùng
Vì hệ điều khiển có sử dụng cơ chế ngắt nên RAM phải chiếm khônggian nhớ của mảng 64kB đầu tiên
Địa chỉ vùng ROM và RAM trong hệ 16 bit ta thiết kế:
ROM : từ FC000h đến FFFFFh (các đường tín hiệu A16 – A19 luôn là
1 nên ta không cần đưa chúng vào bộ giải mã địa chỉ để việc thực hiệnmạch được đơn giản)
RAM : từ 00000h đến 03FFFh
Để quản lý được vùng nhớ vừa tổ chức, ta cần tạo bộ giải mã địa chỉphù hợp Để phân biệt vùng ROM và vùng RAM, ta sử dụng bit A14, A15.Khi A15A14 = 00 sẽ chọn vùng RAM, khi A15A14 = 11 sẽ chọn vùngROM Các tổ hợp khác của A15A14 dùng cho các hướng phát triển tiếptheo dựa trên hệ cơ sở này
Trang 326 4 5
A B C
Hình 1.15 Sơ đồ mạch giải mã địa chỉ bộ nhớ
Để phân biệt băng chứa byte thấp và băng chứa byte cao, ta sử dụngbit địa chỉ A0 và bit /BHE Ta cũng dùng tín hiệu điều khiển M/IO từ CPUtham gia vào bộ giải mã để tạo ra tín hiệu phù hợp
Sơ đồ tổ chức bộ nhớ được thể hiện trên hình 1.14
Với cách tổ chức bộ nhớ theo sơ đồ hình 1.14 và 1.15, ta có bản đồ bộnhớ cụ thể được thể hiện trong bảng 1.4
Kb#8: F801FFFFh
CHIP Eprom 2764 (Byte cao)
Kb#7: F001F7FFh Kb#6: E0801EFFFh Kb#5: E001E7FFh
Kb#4: D801DFFFh Kb#3: D001D7FFh Kb#2: C801CFFFh Kb#1: C001C7FFh
Kb#8: F800FFFEh
CHIP Eprom 2764 (Byte thấp)
Kb#7: F000F7FEh Kb#6: E800EFFEh Kb#5: E000E7FEh
Kb#4: D800DFFEh Kb#3: D000D7FEh Kb#2: C800CFFEh Kb#1: C000C7FEh
Trang 33Kb#8: 38013FFFh
CHIP Ram 6264 (Byte cao)
Kb#7: 300137FFh Kb#6: 208012FFFh Kb#5: 200127FFh
Kb#4: 18011FFFh Kb#3: 100117FFh Kb#2: 08010FFFh Kb#1: 000107FFh
Kb#8: 38003FFEh
CHIP Ram 6264 (Byte thấp)
Kb#7: 300037FEh Kb#6: 28002FFEh Kb#5: 200027FEh
Kb#4: 18001FFEh Kb#3: 100017FEh Kb#2: 08000FFEh Kb#1: 000007FEh
Trang 34Kết luận chương 1
Qua phần tìm hiểu cấu trúc hệ vi xử lý nói chung, ta đã nắm được cácthành phần cơ bản cần có của một hệ vi xử lý Đây chính là những hiểu biết
cơ sở để thiết kế hệ vi xử lý đa năng
Trong kết cấu phần cứng của hệ vi xử lý, có thể thấy bộ vi xử lý làthành phần quan trọng nhất, đóng vai trò bộ não của toàn hệ Do đó, việcthiết kế kênh hệ thống, tổ chức bộ nhớ cho bộ vi xử lý là nhiệm vụ đầu tiêncần phải thực hiện khi xây dựng hệ
Từ yêu cầu thiết kế hệ vi xử lý 16 bit, cùng với các ưu điểm của bộ vi
xử lý 8086 Intel như đã trình bày, ta chọn bộ vi xử lý này làm bộ xử lýtrung tâm của hệ Sau khi tìm hiểu các đặc điểm chung, phương thức hoạtđộng của bộ vi xử lý 16 bit này, ta đã tổ chức các kênh hệ thống và bộ nhớcho hệ
Để thực hiện được yêu cầu “đa năng” đặt ra với hệ, ta còn cần thiết kếcác giao tiếp ngoại vi để hệ có thể thực hiện việc trao đổi dữ liệu với cácngoại vi số, tương tự… Vấn đề này sẽ được giải quyết ở chương 2 Bêncạnh đó, khi tìm hiểu về hệ, ta thấy kiến trúc hệ vi xử lý gồm phần cứng vàphần mềm Ở chương 1 và chương 2, ta mới chỉ dừng lại ở việc thiết kếphần cứng của hệ Chương 3 sẽ trình bày về phần mềm cho hệ
Trang 35CHƯƠNG 2 - THIẾT KẾ CÁC CỔNG NGOẠI VI CHO HỆ VI XỬ
LÝ ĐA NĂNG 16 BIT
Các hệ vi xử lý luôn luôn đòi hỏi sự trao đổi dữ liệu với các ngoại vi.Các thiết bị ngoại vi được nối trực tiếp với cổng, cổng được nối trực tiếpvới mạch điều khiển phối ghép như đã trình bày ở trên Các mạch hỗ trợ
cho vào/ra của BVXL bao gồm: mạch phối ghép vào/ra, mạch điều khiển
ngắt và bộ đếm/định thời gian Ở đây, trong đồ án, ta chỉ tìm hiểu và thực
hiện thiết kế mạch hỗ trợ vào ra kiểu mạch phối ghép vào/ra, mạch điềukhiển ngắt Bộ đếm/định thời gian ngày nay thường được tích hợp trongcác bộ điều khiển cổng vào ra như: bộ tạo xung đồng hồ 8284, bộ chia tần8253/54 và sẽ không được trình bày ở đây
Trong chương 2, ta sẽ tổ chức các cổng giao tiếp cho hệ
2.1 CÁC MẠCH PHỐI GHÉP VÀO/RA
Hình 2.1 Mạch giải mã địa chỉ cổng
Trang 36Để hệ có thể trao đổi thông tin chính xác với các ngoại vi, ta cần tổchức các cổng giao tiếp của hệ Tuỳ theo phương thức truyền và dạng dữliệu, ta cần xây dựng một số cổng cơ bản sau:
Với sơ đồ giải mã như trên, địa chỉ các cổng ngoại vi như sau
* Cổng truyền thông nối tiếp chuẩn RS232, có địa chỉ cơ sở là 0200h
* Cổng chuyển đổi tương tự – số ADC, có địa chỉ cơ sở là 0210h
* Cổng vào/ra số (8255A), có địa chỉ cơ sở là 0220h
2.1.1 Cổng song song
2.1.1.1 Chức năng và tiêu chí cổng song song
Về chức năng, cổng song song cần đảm bảo cho hệ có thể truyền tinsong song với ngoại vi Do 8086 có thanh ghi dữ liệu 16 bit nên cần xâydựng cổng song song có thể truyền dữ liệu 16 bit hoặc 8 bit Phương thứctruyền dữ liệu song song được thể hiện trên hình 2.2
Tiêu chí cho cổng song song:
- Độ rộng kênh: 8 bit/16 bit
- Hướng truyền dữ liệu chính xác (hai chiều)
Trang 37Nguån §Ých
1 1
1
0 0
1 0
.
0 1 2 3 4
n-1 n
0 1 2 3 4
n-1 n n=8,16
Hình 2.2 Phương thức truyền thông tin song song
Với các yêu cầu về cổng song song, ta có thể triển khai cổng này theonhiều cách Ta có thể sử dụng các bộ chốt hoặc dùng vi mạch ghép nối cóthể lập trình 8255A [5, tr.146]
2.1.1.2 Các loại mạch cổng
Trên thực tế, để làm mạch cổng đơn giản, ta có thể dùng các mạchchốt 8 bit có đầu ra 3 trạng thái (LS373, LS374), các mạch khuếch đại đệmhai chiều 8 bit, đầu ra 3 trạng thái (LS245)… Chúng thường được dùng chocác phối ghép đơn giản để hệ vi xử lý và thiết bị ngoại vi hoạt động tươngthích với nhau, ví dụ như để đệm bus, các mạch cổng để tạo các tín hiệumóc nối…
Một lựa chọn khác khi thiết kế cổng song song cho hệ là vi mạch8255A Đây là vi mạch phối ghép vào/ra song song lập trình được(Progammable Peripheral Interface - PPI) Do tính mềm dẻo trong các ứngdụng thực tế, nó là mạch phối ghép được dùng rất phổ biến cho các hệ vi
xử lý 8 – 16 – 32 bit
Vi mạch 40 chân này có các chân bố trí như trên hình 2.3, trong đó có
24 đường dẫn lối vào/ra được xếp thành ba cổng song song (port A, port B,
Trang 38port C) Một nửa của port C (PC4…PC7) thuộc vào nhóm A, còn nửa kiathuộc vào nhóm B.
Hình 2.3 Tổ chức chân tín hiệu của 8255A
Cấu trúc và chức năng của 8255A được thể hiện trong sơ đồ khối chứcnăng hình 2.4
Bên trong 8255A có bốn thanh ghi:
- Một thanh ghi từ điều khiển (CWR: Control Word Register) cho hoạt
động của 8255A Có 2 loại từ điều khiển cho 8255A:
+ Từ điều khiển định nghĩa cấu hình cho các cổng PA, PB và PC+ Từ điều khiển lập/xoá từng bit ở đầu ra của PC
Tuỳ theo từ lệnh được ghi vào CWR của vi mạch khi khởi động, ta cócác cổng A, B và C hoạt động ở:
+ Các chế độ khác nhau (0, 1 hoặc 2)
Trang 39+ Chiều trao đổi số liệu khác nhau, tức là Port A, B, C là cửa ra haycửa vào
- Ba thanh ghi ứng với các cổng PA, PB và PC để ghi/đọc dữ liệu
§iÒu khiÓn nhãm B
Port A (8)
Port C nöa cao (4)
Port C nöa thÊp (4)
Port B (8)
Hình 2.4 Sơ đồ khối chức năng của 8255A [5]
Tính linh hoạt của vi mạch này thể hiện ở khả năng lập trình Với haibit địa chỉ A0A1 của 8255, ta có thể chọn để truy nhập một thanh ghi bất
kỳ trong bốn thanh ghi của PPI Qua CWR, người sử dụng có thể xác địnhMode hoạt động của 8255A và cổng nào cần được sử dụng như lối vào haylối ra Các chân ra D0 D7 tạo nên kênh dữ liệu hai hướng có độ rộng 8 bitgiữa 8255A và hệ vi xử lý Tất cả các dữ liệu khi truy nhập ghi hay đọc đềuđược dẫn qua kênh dữ liệu này
Trang 40Trên đây là những đặc điểm cơ bản về cấu trúc và hoạt động của PPI8255A Vì tính linh hoạt mà 8255A cung cấp cho người sử dụng, ta chọn vimạch này để thiết kế cổng vào/ra dữ liệu số song song cho hệ 16 bit đanăng.
2.1.1.3 Thiết kế cổng song song cho hệ vi xử lý
Do kênh dữ liệu hai hướng của 8255 với BVXL là 8 bit, ta cần sửdụng 2 chip 8255 cho hệ vi xử lý để có thể tạo ra đường dữ liệu (số) songsong 16 bit Với tín hiệu chọn PPI (PORT CS#) từ bộ giải mã địa chỉ, ta cóthể tạo được 2 kênh dữ liệu song song 8 bit, hoặc 1 kênh song song 16 bittheo sơ đồ mạch như hình 2.5
Với cách sắp xếp mạch như vậy, ta có cổng vào/ra số song song từcổng PA của 2 chip 8255 Địa chỉ cơ sở của PPI 8255 là 0220H Có thể lậptrình để chọn làm cổng vào hay cổng ra Trạng thái các bit cổng được hiểnthị bằng các LED điểm để tiện cho việc theo dõi, kiểm tra hệ thống Đểđảm bảo dòng ra tại các cổng đủ lớn để làm LED sáng, ta dùng ICULN2803 (bộ khuếch đại đảo) để khuếch đại tín hiệu cấp cho LED
Đồng thời, từ cổng ra của 8255, ta có thể tạo thành một cổng ra tương
tự bằng cách nối cổng ra 8 bit thấp với đầu vào bộ biến đổi số - tương tựDAC 0800 (nhiệm vụ và chức năng cụ thể của bộ biến đổi DAC được trìnhbày cụ thể trong phần 2.1.3 Cổng DAC)
Cổng vào 8 bit được dùng cho 8 nút bấm để chọn chức năng Func 0 –Func7 Chức năng cụ thể của các phím như sau:
F0: Test RAM
F1: Chế độ ngắt
F2: Chế độ vào/ra song song
F3: Chế độ phát tín hiệu nối tiếp sang PC
F4: Chế độ DAC
F5: Chế độ ADC