Khái niệm về mạch PIC 8259AMỗi khi một thiết bị phần cứng hay một chương trình cần đến sự giúp đỡ của CPU nógửi đi một tín hiệu hoặc lệnh gọi là ngắt đến bộ vi xử lí chỉ định công việc c
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐAI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
- -BÀI TIỂU LUẬN KIẾN TRÚC MÁY TÍNH VÀ HỆ ĐIỀU HÀNH
Đề tài: Nghiên cứu tìm hiểu về vi mạch điều khiển ưu tiên ngắt PIC 8259A
( Priority Interrupt Controller)
Giáo viên hướng dẫn : Th.S Nguyễn Bá Nghiễn
Sinh viên thực hiện : Nguyễn Phương Tuấn Anh
Trang 2LỜI MỞ ĐẦU
V i m c đích tìm hi u v vi m ch đi u khi n u tiên ng t PIC 8259A (Priority ớ ụ ể ề ạ ề ể ư ắ
interrupt controller) Nhóm sinh viên chúng em đã tìm hi u v khái ni m và phân lo i m ch ể ề ệ ạ ạ
ng t, s đ chân và các ch c năng tín hi u, ch c năng c a các thanh ghi, nguyên t c ghép ắ ơ ồ ứ ệ ứ ủ ắ
n i và s đ ph i ghép c a vi m ch và h th ng ng t c ng PIC 8259Aố ơ ồ ố ủ ạ ệ ố ắ ứ , s đ ghép n i và l pơ ồ ố ậtrình vi m ch 8259A.ạ
Để hoàn thành được bài nghiên cứu này, chúng em xin chân thành cảm ơn thầy giáo
Nguyễn Bá Nghiễn người đã tận tình giúp đỡ, hỗ trợ và tạo điều kiện cho chúng em trong quá trình học tập, và là người trực tiếp giảng dạy bằng tất cả lòng nhiệt tình và sự quan tâm sâu sắc
M c dù đã c g ng h t s c nh ng bài ti u lu n c a chúng em không th tránh kh iặ ố ắ ế ứ ư ể ậ ủ ể ỏ
nh ng sai sót, r t mong s đóng góp ý ki n c a các b n và th y cô Nhóm tác gi xinữ ấ ự ế ủ ạ ầ ả chân thành c m n m i ngả ơ ọ ười đã đ c cu n bài ti u lu n này, cũng nh đóng góp ý ki n ọ ố ể ậ ư ế để bài
ti uể lu nậ c aủ chúng em được hoàn thi nệ h n.ơ
Chúng em xin chân thành cảm ơn
Downloaded by MON HOANG (monmon3@gmail.com)
Trang 3Nhóm 16
KẾ HOẠCH THỰC HIỆN BÀI TẬP LỚN
Tên l p:ớ 20231IT6067003 - Khóa: K17
Tên nhóm: Nhóm 16
Họ tên thành viên c aủ nhóm: Nguy nễ Phương Tu n Anh ấ
Tr n Th Kim Anh ầ ị Nguy n Thành Đ t ễ ạ
Ph m Đ c Duy ạ ứ
Tên chủ đ :ề Nghiên c u ứ tìm hiểu về vi mạch điều khiển ưu tiên ngắt PIC
8259A ( Priority Interrupt Controller)
vi cệ
Phương pháp
thi t l p n i quy ế ậ ộcho c nhóm, phânảchia công vi c.ệ
H p qua meet.ọ
2 Tr n Th Kim Anhầ ị Tìm hiểu khái niệm
về mạch PIC 8259A
H p qua meet.ọ
3 Nguy n Thành Đ tễ ạ Tìm hiểu về sơ đồ
chân và chức nắng các chân tín hiệu
H p qua meet.ọ
khối, chức năng cáckhối và các thanh ghi
H p qua meet.ọ
5
Nguy nễ Phương Tu n Anhấ Tìm Hiểu Sơ đồ
ghép nối, cơ chế hoạt động của vi
H p qua meetọ
Trang 4trình cho vi mạch 8259A
8 Tr n Th Kim Anhầ ị Ki m tra và hoàn ể
thi n báo cáoệ
Trang 5MỤC LỤC
I – Khái niệm và phân loại mạch ngắt 6
1 Khái niệm về mạch PIC 8259A… 6
2 Phân loại mach ngắt…7 1.1 Ngắt cứng 6
1.2 Ngắt mềm 7
1.3 Các ngắt địa chỉ 7
II- Sơ đồ chân và chức nắng các chân tín hiệu…7 1 Sơ đồ chân 7
2 Chức năng các chân tín hiệu 8
III- Sơ đồ khối, chức năng các khối và các thanh ghi…9 1 Sơ đồ khối 9
2 Chức năng các khối 10
2.1 Khối xử lý mức ưu tiên của ngắt 10
2.2 Khối đệm bus dữ liệu ( Data bus Buffer) 10
2.3 Khối logic điều khiển đọc/ghi (Read/Write control Logic) 10
2.4 Khối so sánh và xử lý song song (Cascade Buffer/Comparator)
………10
3 Chức năng các thanh ghi 11
IV- S ơ đồ ghép nối, cơ chế hoạt động của vi mạch hệ thống ngắt cứng PIC8259A 11 1 Sơ đồ ghép nối 11
2 Nguyên tắc ghép nối 12
3 Cơ chế hoạt động ……… 13
3.1 Hoạt động cơ bản của vi mạch 8259A 13
3.2 Các chế độ hoạt động khác 14
3.2.1 Chế độ hoạt động đầy đủ(Fully Nested Mode) 15
3.2.2 Chế độ hoán đổi thứ tự(Rotating Priority Mode) 15
3.2.3 Chế độ che đặc biệt(Special Mask Mode – SMM) 16
Trang 63.2.4 Chế độ xoay vòng(Polled Mode) 16
V- Lập trình cho vi mạch 8259A…17 1 Các từ điều khiển khởi tạo ICW 18
2 Các từ điều khiển hoạt động OCW 21
Phần kết luận 23
Tài liệu tham khảo 24
Downloaded by MON HOANG (monmon3@gmail.com)
Trang 7Khái niệm và phân loại mạch ngắt.
1 Khái niệm về mạch PIC 8259A
Mỗi khi một thiết bị phần cứng hay một chương trình cần đến sự giúp đỡ của CPU nó
gửi đi một tín hiệu hoặc lệnh gọi là ngắt đến bộ vi xử lí chỉ định công việc cụ thể nào
đó mà nó cần CPU thực hiện Khi bộ vi xử lí nhận được tín hiệu ngắt nó thường tạm
ngưng tất cả các hoạt động khác và kích hoạt một chương trình con đang có trong bộ
nhớ gọi là chương trình xử lí ngắt tương úng với từng số liệu ngắt cụ thể Sau khi
chương trình xử lí ngắt làm xong nhiệm vụ, các hoạt động của máy tính sẽ tiếp tục lại
từ nơi đã bị tạm dừng lúc xảy ra ngắt
2.Phân loại mạch ngắt
Có 3 loại ngắt chính
- Các ngắt được tạo ra bởi mạch điện của máy tính nhằm đáp lại một sự kiện
nào đó như nhấn phím trên bàn phím các ngắt này được bộ điều khiển ngắt
8259A quản lí, 8259A sẽ ấn định mức độ ưu tiên cho từng ngắt rồi gửi đến
CPU
- Các ngắt do CPU tạo ra khi gặp phải một kết quả bất thường sau khi thực
hiện chương trình như chia cho 0
- Các ngắt do chính chương trình tạo ra nhằm gọi các chương trình con ở xa
đang nằm trong ROM hoặc RAM, các ngắt này gọi là ngắt mềm chúng
thường là bộ phận của các chương trình con phục vụ của ROM –BIOS hoặc
của DOS
- Ngoài 3 loại ngắt trên còn có loại ngắt đặc biệt là ngắt không bị che NMI
đòi hỏi CPU phục vụ ngay khi có yêu cầu Loại ngắt này thường được dùng
để báo hiệu sự cố như: sụt điện áp hay lỗi bộ nhớ Như vậy, NMI là mức
ngắt có độ ưu tiên cao nhất
2.1 Ngắt cứng.
- Ngắt cứng là sự kiện CPU phải tạm dừng chương trình đang thực hiện để
chuyển sang thực hiện tiến trình phục vụ ngắt khi có yêu cầu ngắt từ phần
mạch bên ngoài gửi tới CPU và CPU chấp nhận ngắt được mô tả như sau:
Trang 82.2 Các ngắt mềm.
- Những ngắt này là một phần của các chương trình ROM -BIOS ,các số hiệu
dành cho các ngắt của ROM- BIOS là 5 ,từ 10h đến 1C hex và 48h -Ngoài ra còn
có các ngắt DOS và ngắt BASIC phục vụ hệ điều hành DOS và chương trình
BASIC
2.3 Các ngắt địa chỉ.
- Ba trong số các ngắt này trỏ đến ba bảng rất quan trọngđó là bảng khởi tạo
màn hình ,bảng cơ sở đĩa và bảng các ký tự đồ thị Các bảng này chứa các tham số
được ROM BIOS dùng khi khởi động hệ thống và tạo các ký tự đồ thị Các số
hiệu dành cho các ngắt này là từ 1Dhex đến 1Fhex
Trang 9Giải thích các chân tín hiệu: PIC 8259A gồm có 27 chân (như hình vẽ).
2 Chức năng các chân tín hiệu.
-D0 - D7 : Ðầu ghép nối dữ liệu hai chiều được nối với nửa cao hay thấp cuả bus dữ
liệu của 8088
- IR0 – IR7 : đầu vào yêu cầu ngắt nối với slave trong hệ thống có nhiều 8259A
- WR : nối với phần thấp hoặc phần cao của tín hiệu ghi
- RD :Ðầu vào nối với tín hiệu IORC
- INT -interrupt : nối với INTR của 8088 ở chế độ master và nối với các chân IR
trong chế độ slave
- INTA : đầu vào nối với tín hiệu INTA của hệ thống ,trong hệ thống có một
master và nhiều slave chỉ có INTA của master được nối
- A0 : đầu vào chọn các từ lệnh khác nhau trong 8259A
Trang 10- CS : Tín hiệu chọn mạch
- SP /EN Slave Program / Enable Buffer : Chân hai chức năng ,khi 8259A ở chế độ
đệm đây là đầu ra điều khiển quá trình trao đổi của bus dữ liệu Khi 8259A không
ở chế độ đệm chân này được lập trình thiết bị như là master hoặc slave
- CAS2 – CAS0 -Cascad line : đầu ra từ master tới slave khi sử dụng nhiều 8259A
Trang 112 Chức năng các khối.
2.1 Khối xử lý mức ưu tiên của ngắt.
Ðây là khối logic có chức năng quyết định mức độ ưu tiên của các bit trong
thanh ghi IRR Bit có độ ưu tiên cao nhất sẽ được chọn và được gửi đến bit tương
ứng trong thanh ghi ISR trong khoảng thời gian có xung INTA
-INT ( Interrupt) Tín hiệu ra này được đưa trực tiếp vào đầu vào INT của 8088
Mức cao của tín hiệu này luôn tương thích với mức tín hiệu vào của 8088
-INTA (Interrupt Acknowledge) Tín hiệuvào này được tạo ra bởi 8228
(System controler and Bus controler ) trong hệ thống 8228 sẽ gửi ba xung tín
hiệu riêng biệt INTA tới 8259A ,tín hiệu này sẽ điều khiển 825A gửi 3 byte lệnh
CALL lên bus dữ liệu
2.2 Khối đệm bus dữ liệu (Data bus Buffer)
Ðây là bộ đệm 8 bit ,3 trạng thái ,hai chiều được sử dụng để ghép nối 8259A
với bus dữ liệu của 8088 Các từ điều khiển , thông tin trạng thái được trao đổi
thông qua bộ đệm này
2.3 Khối logic điều khiển đọc/ghi (Read /Write control Logic )
Chức năng của khối này là nhận lệnh điều khiển từ 8088 Khối này bao gồm
thanh ghi từ lệnh khởi tạo ( ICWR- Initionlize Command Word) và thanh ghi lệnh
hoạt động (OCWR - Operation Command Word Register ) Các thanh ghi này
chứa các từ lệnh điều khiển hoạt động của 8259A
- RD (Read) Mức thấp của tín hiệu vào này cho phép 8259A gửi đi từ trạng
thái của thanh ghi IRR , thanh ghi ISR , thanh ghi IMR hoặc mức ngắt lên bus dữ
liệu
- WR ( Write) Mức thấp của tín hiệu vào này cho phép CPU ghi các từ lệnh
điều khiển (ICW ,OCW ) vào 8259A
- A0 Tín hiệu vào này được sử dụng kết hợp với WR ,và RD để ghi từ lệnh vào
các thanh ghi khác nhau ngay khi vừa đọc các thanh ghi trạng thái của vi mạch
- SP : (Slave program ): Khi có nhiều vi mạch 8259A cùng được sử dụng trong
hệ thống để tăng thêm mức ngắt ( ví dụ 64 mức ) Trong trường hợp này một vi
mạch 8259A đóng vai trò master còn các vi mạch khác đóng vai trò slave Mức
của đầu vào tín hiệu này xác định vi mạch nào là master ,còn mức thấp xác định
các vi mạch đóng vai trò slave
2.4 Khối so sánh và xử lý song song ( Cascade Buffer /Comparator ):
Khối này có chức năng lưu trữ và so sánh vai trò của tất cả các vi mạch 8259A
sử dụng trong hệ thống
Trang 12Các chân tín hiệu CAS0 –CAS2 là các đầu ra khi vi mạch 8259A đóng vai trò
master ( SP =1 ) và là các đầu vào khi các vi mạch này được sử dụng làm slave (
SP= 0 ) Khi hoạt động với vai trò master ,8259A gửi tín hiệu ngắt của thiết bị ra
các đường CAS0 – CAS2 Các vi mạch slave tương ứng được chọn sẽ gửi địa chỉ
của chương trình ngắt của chúng lên bus dữ liệu
3 Chức năng các thanh ghi.
Thanh ghi yêu cầu ngắt và thanh ghi phục vụ ngắt : Các tín hiệu yêu cầu ngắt được
điều khiển bởi hai thanh ghi đồng thời , đó là thanh ghi yêu cầu ngắt ( Interrupt
Request Register - IRR ) và thanh ghi phục vụ ngắt ( Interrupt Service Register-
ISR) Thanh ghi IRR được sử dụng để lưu các mức ngắt đang cần được sử lý và
thanh ghi ISR được sử dụng để lưu các mức ngắt đang được phục vụ Khi có bất
cứ sườn dương của xung tín hiệu được đưa vào các đầu vào yêu cầu ngắt IR ,các bit
của thanh ghi IRR được xác lập và tín hiệu INT được đặt ở mức cao Tuy vậy tín
hiệu vào yêu cầu ngắt -IR phải luôn được giữ ở mức cao cho đến khi có xung INTA
đầu tiên xuất hiện Thanh ghi IRR được khởi tạo bằng tín hiệu INTA Các bit của
thanh ghi được xác lập bằng xung tín hiệu INTA ( cũng trong thời điểm này bít
tương ứng của thanh ghi IRR được khởi tạo lại ) Bit này giữ nguyên trạng thái
trong suốt thời gian hoạt động của chương trình ngắt cho đến khi 8259A nhận
được lệnh EOI ( End Of Interrupt )
Trang 132 Nguyên tắc ghép nối.
Khi ghép vào CPU thì PIC 8259A được ghép như sau:
Trong máy tính thế hệ cũ chỉ sử dụng một IC 8259A thì thứ tự ưu tiên là
0,1,2,3,4,5,6,7.trong các máy tính hiện đại sử dụng hai IC 8259A thì thứ tự ưu tiên là
0,1,(8,9,10,11,12,13,14,15),3,4,5,6,7.Các IRQs từ 8 đến 15 thay thế IRQ2 Các IRQs
cách sử dụng được thể hiện trong bảng sau:
Mặc định sử dụngđiển hình
Sử dụng thông thườngkhác
port)
COM4(cổng nối tiếp thứ4),modem,card âm thanh,mạng lưới thẻ,accelerator thẻ
port) COM3(cổng nối tiếp thứ3),modem,card âm
thanh,mạng lưới thẻ,accelerator thẻ
controller LPT2( 2 cổng song song),LPT3( cổng song
song thứ 3),COM3(cổngnối tiếp thứ 3),
COM4(cổng nối tiếp thứ
Trang 144) ,modem,card mạng, bộđiều khiển đĩa cứng
port) LPT2( 2 cổng song song),LPT3( cổng song
song thứ 3),COM3(cổngnối tiếp thứ 3),
COM4(cổng nối tiếp thứ4) ,modem,card âm thanh,mạng lưới thẻ,accelerator thẻ
thanh, SCSI bộ thích ứngchủ, PCI thiết bị ấn địnhtuyến đường lai IRQ2 thiếtbị
thanh, SCSI bộ thích ứngchủ,trung kênh IDE,thiết
bị PCI
thanh, máy chủ SCSI,Card màn hình, quatemanykênh IDE, thiết bị PCI
thanh, máy chủ SCSI, Card màn hình, quatemanykênh IDE, thiết bị PCI
FPU/NPU/math Coprocessor)
None
channel
Card mạng, SCS
3 Cơ chế hoạt động.
3.1 Hoạt động cơ bản của vi mạch 8259A.
Quá trình hoạt động cơ bản của vi mạch diễn ra như sau :
+ Ðầu tiên tín hiệu vào một trong các chân yêu cầu ngắt (IR7 - IR0 ) được chuyển
về mức cao thông báo với 8259 là có yêu cầu phục vụ từ thiết bị ngoại vi
+ 8259 chấp nhận yêu cầu ngắt này , xử lý mức ưu tiên và sau đó gửi tín hiệu INT
tới bộ vi xử lý trung tâm CPU - 8088
+ CPU 8088 ghi nhận yêu cầu ngắt này và trả lời bằng cách phát đi một xung
INTA
Downloaded by MON HOANG (monmon3@gmail.com)
Trang 16+ Nhận được tín hiệu INTA từ CPU ,8259 gửi ra bus dữ liệu một lệnh CALL (
mã 11001101 ) dưới dạng mã nhị phân 8 bit qua các đường dây dữ liệu của nó (
D0-D7)
+ Lệnh CALL này sẽ yêu cầu CPU gửi thêm hai xung INTA tới 8259
+ Hai xung INTA này cho phép 8259 đưa địa chỉ chương trình ngắt của nó lên
bus dữ liệu 8 bit thấp của địa chỉ đó được gửi khi có xung INTA thứ nhất ,và 8 bit
cao còn lại được gửi khi có xung INTA thứ hai Kết thúc việc truyền các byte của
lệnh CALL lên bus dữ liệu
+ Thanh ghi phục vụ ngắt (ISR) sẽ được giữ nguyên trạng thái và không được
khởi tạo lại cho đến khi kết thúc chương trình ngắt ,khi có một lệnh EOI (End Of
Interrupt ) được gửi tới 8259
Bảng minh họa các hoạt động cơ bản của 8259
Level data bus(1)
Output Operation( Write)
ICW3Disable Function
(1) : Việc chọn lựa thanh ghi IRR ,ISR hoặc mức ưu tiên của ngắt dựa vào nội
dung của từ lệnh OCW3 được ghi trước quá trình đọc trong khoảng thời gian hai
xung INTA tiếp theo
3.2 Các chế độ hoạt động khác.
Downloaded by MON HOANG (monmon3@gmail.com)
Trang 173.2.1 Chế độ hoạt động đầy đủ ( Fully Nested Mode )
8259 hoạt động trong chế độ này ngay sau khi thực hiện quá trình khởi tạo mà
không cần đến các từ điều khiển hoạt động OCW Trong chế độ này ,các yêu cầu ngắt
được sắp xếp theo các mức ưu tiên từ 0 đến 7 Khi một yêu cầu ngắt được chấp nhận
,yêu cầu ngắt có mức ưu tiên cao nhất được thực hiện và vector địa chỉ của nó được
truyền lên bus dữ liệu Ngoài ra ,một bit của thanh ghi phục vụ ngắt được đặt bằng 1
Bit này giữ nguyên giá trị cho đến khi 8088 phát lệnh EOI ngay trước khi trở về từ
chu trình phục vụ Trong khi bit của thanh ghi ISR bằng 1 ,tất cả các ngắt có mức ưu
tiên thấp hơn ,những ngắt này chỉ được chấp nhận nếu được 8088 chấp nhận thông
qua điều khiển bằng phần mềm) bị loại bỏ
Sau khi thực hiện quá trình khởi tạo , tín hiệu yêu cầu ngắt vào IR0 có mức ưu
tiên cao nhất và vào IR7 sẽ có mức ưu tiên thấp nhất Thứ tự ưu tiên có thể thay đổi
trong chế độ hoán đổi thứ tự ưu tiên đợc đề cập sau đây
3.2.2 Chế độ hoán đổi thứ tự ưu tiên ( Rotating Priority Mode ):
8259 hoạt động trong chế độ này khi trong hệ thống có các thiết bị có các yêu
cầu ngắt có mức ưu tiên tương đương nhau như các kênh truyền thông Có hai chế độ
hoán đổi mức ưu tiên là chế độ hoán đổi tự động và chế độ hoán đổi đặc biệt :
+ Chế độ tự động : (Auto Mode )
Trong chế độ này ,thiết bị sau khi được phục vụ ,được gán cho mức ưu tiên
thấp nhất , vì vậy một thiết bị yêu cầu ngắt phải đợi thậm chí có thể phải đợi cho
đến khi 7 thiết bị khác được phục vụ xong
+ Chế độ không tự động :( Specific Mode )
Trong chế độ này người lập trình viên có thể thay đổi thứ tự ưu tiên ngắt bằng
cách lập trình mức ngắt có ưu tiên thấp nhất và bằng cách này xác lập mức ngắt
có ưu tiên cao nhất ví dụ néu IR5 được lập trình có mức ưu tiên thấp nhất thì IR6
sẽ có mức ưu tiên cao nhất
Lệnh điều khiển được xác định trong OCW2 , trong đó R =1 , SEOI =1 , các
bit L2,L1,L0 xác định mức ưu tiên ( tính theo hệ thập phân ) của thiết bị có mức
ưu tiên thấp nhất
Cần chú ý chế độ này hoạt động độc lập với lệnh EOI và quá trình hoán đổi
mức ưu tiên có thể thực hiện trong khi thực hiện lệnh EOI
EOI ( End Of Interupt ) và SEOI ( Specific EOI)
Một lệnh EOI luôn phải được đưa tới 8259 trước khi kết thúc chương trình
ngắt để khởi tạo bit tương ứng trong thanh ghi ISR EOI và SEOI là hai dạng của
lệnh EOI là non - specific ( không xác định ) và specific (xác định) Khi 8259
trong chế độ hoạt động đầy đủ ( Fully Neste Mode) nó có thể xác định bit nào
trong thanh ghi ISR cần khởi tạo bằng lệnh EOI Khi nhận được một lệnh