Tải bản đầy đủ (.pdf) (6 trang)

VIDEO CONTROLLER

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 (87.33 KB, 6 trang )

74
CHƯƠNG 11 : VIDEO CONTROLLER
Các Display Adapter ban đầu ( MDA và CGA ) của IBM PC/XT/AT dựa trên nguyên lý của chip
Motorolla 6845 . Các Display Adapter kế tiếp như EGA,MCGA,VGA... tuy hoạt động trên nguyên lý
khác, nhưng các adapter này vẫn duy trì phần lớn các tính chất của chip 6845 . Do đó, trong text mode,
các điều khiển của 6845 đều tương thích với tất cả các Display Adapter trên IBM PC/XT/AT.
11.1COLOR GRAPHICS ADAPTER
11.1.1Cấu trúc video buffer
11.1.1.1Trong text mode
Xem chương 10
11.1.1.2Trong graphics mode
Video buffer có kích thước 16 KB, cho phép thể hiện :
- Độ phân giải cao 640x200 với một màu thể hiện . Mỗi điểm sáng (pixel) cần một bit thông tin
==> một dòng cần 640/8 = 80 byte
- Độ phân giải trung bình 320x200 với 4 màu thể hiện . Mỗi điểm sáng cần hai bit thông
tin.==>một dòng cần 320*2/8 = 80 byte
- Thông tin về một dòng được ghi liên tiếp nhau trong một dãy 80 byte ( 640 bit ) theo thứ tự thể
hiện trên màn hình ( xem hình minh họa )
- Video buffer ( 16 KB ) được chia thành 2 trang nhỏ liên tiếp nhau đánh số từ 0-1, mỗi trang có
kích thước 1000h byte. Thông tin của các dòng được lưu trong các trang theo quy tắc: các dòng
chẵn ở trong trang 0, các dòng lẻ ở trong trang 1
Tức là :
- Trang 0 chứa thông tin các dòng 0,2,4,6,8,10...
- Trang 1 chứa thông tin các dòng 1,3,5,7,9,11...
Minh họa về cách lưu chứa thông tin trong video buffer
(1 bit/pixel)
Byte thứ 1 Byte thứ 2
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7
1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 1 1
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F


(2 bit/pixel)
Byte thứ 1 Byte thứ 2
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7
1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 1 1
00 01 02 03 04 05 06 07

(1): Số thứ tự của các byte trong dãy giá trò biểu diễn cho một dòng
(2): Thứ tự các bit trong byte và vò trí vật lý trong chuỗi giá trò
(3): Giá trò của các bit
(4): Thứ tự các điểm sáng tương ứng trên dòng .


11.1.2CGA I/O port
75
3D4 Output Address Register (Index register)
3D5 I/O Data register (18 internal registers)
3D8 Output Mode register
3D9 Output Color register
3DA Input Status register
3DB Output Clear Light Pen Latch
3DC Output Set Light Pen Latch

Mode register Color register Status register

B0 = 80x25 text B0 = Blue B0 = Horizontal Sync |
B1 = 320x200 graphics B1 = Green B1 = Light Pen Trig’d|
B2 = B&W mode B2 = Red B2 = Pen Switch off |
B3 = Enable video B3 = Intensity B3 = Vertical Sync |
B4 = 640x200 graphics B4 = Alt Back colors B4 = Not used |
B5 = Blinking B5 = Palette B5 = Not used |

B6 = Not used B6 = Not used B6 = Not used |
B7 = Not used B7 = Not used B7 = Not used |

11.1.3Mode register programming
Video mode Mode register value

40 x 25 Alpha B&W 2Ch 00101100
40 x 25 Alpha Color 28h 00101000
80 x 25 Alpha B&W 2Dh 00101101
80 x 25 Alpha Color 29h 00101001
320 x 200 Graphics B&W 0Eh 00001110
320 x 200 Graphics Color 0Ah 00001010
640 x 200 Graphics B&W 1Eh 00011110

11.1.4Color register programming :
Các bit 0-3 (tạo thành 16 màu) của Color register xác đònh :
- Trong text mode : màu của khung viền xung quanh màn hình (border)
- Trong graphics mode : màu nền (background color), dùng chọn màu hiển thò cho 640x200
graphics mode.
Bit 4 : khi bằng 1 sẽ làm màu nền trong text mode được xác đònh bởi các bit 4-7 ( bao gồm cả bit 7 )
. Kết quả là màu nền có thể có 16 màu khác nhau, và thuộc tính nhấp nháy (Blinking) không còn nữa
Bit 5 : Chọn bảng màu (color palette) cho 320 x 200 color graphics mode




Bit 5 = 1 Bit 5 = 0
Pixel value Color Pixel value Color
00 Background color 00 Background color
76

01 Cyan 01 Green
10 Magenta 10 Red
11 White 11 Brown

11.1.5Using Status register information :
Horizontal Sync : xung đồng bộ cho tín hiệu quét dòng của màn hình
Vertical Sync : xung đồng bộ cho tín hiệu quét mành của màn hình
Trong 1 giây có khoảng 50-70 (tùy loại màn hình) mành được thể hiện.
Mỗi mành lại có :
- 200 dòng (CGA)
- 348 dòng (Hercules graphics)
- 350 dòng (EGA,Hercules text mode)
- 480,600,768 .... dòng (VGA)
Khi bit tương ứng với Horizontal hay Vertical Sync bằng 1, màn hình đang trong tình trạng “quét
ngược” (retrace) .
Việc truy nhập video buffer cùng lúc với Display adapter đôi khi tạo nên tình trạng xuất hiện các
đốm sáng nhấp nháy (snow blinking) trong text mode . Để tránh tình trạng trên, tốt nhất là đừng truy nhập
video buffer đồng thời với display adapter . Đó là các thời điểm màn hình đang trong tình trạng quét
ngược.
11.1.6Internal registers
Address Register Register type I/O 40x25 80x25 Graph|
register Number Type Text| Text| mode|
00 R0 Horizontal Total W 38 71 38
01 R1 Horizontal Display W 28 50 28
02 R2 Horizontal Sync Position W 2D 5A 2D
03 R3 Horizontal Sync Width W 0A 0A 0A
04 R4 Vertical Total W 1F 1F 7F
05 R5 Vertical Total Adjust W 06 06 06
06 R6 Vertical Displayed W 19 19 64
07 R7 Vertical Sync Position W 1C 1C 70

08 R8 nterlace Mode W 02 02 02
09 R9 Maximum Scan Line Address W 07 07 01
0A R10 Cursor Start Scan Line W 06 06 06
0B R11 Cursor End Scan Line W 07 07 07
0C R12 Start address (Hi byte) W 00 00 00
0D R13 Start address (Lo byte) W 00 00 00
0E R14 Cursor address (Hi byte) R/W XX XX XX
0F R15 Cursor address (Lo byte) R/W XX XX XX
10 R16 Light pen (Hi byte) R XX XX XX |
11 R17 Light pen (Lo byte) R XX XX XX |

Start address là vò trí của trang màn hình hiện tại (tính từ đầu video buffer) . Cự ly này được đo bằng
word . Thực tế đó chính là số lượng các phần tử từ đầu buffer đến đầu trang hiện tại .
Thí dụ : Tăng giá trò của start address lên 80 thì màn hình sẽ có vẻ như trôi lên một dòng, giảm giá
trò của start address 80 thì màn hình có vẻ như trôi xuống một dòng . Nhưng kết quả của hai lần “trôi” lên
77
và xuống ấy là màn hình không hề bò thay đổi so với trước khi “trôi” . Thực chất ta chỉ thay đổi điểm bắt
đầu của trang màn hình mà thôi .
Chú ý : start address = begin offset/2
Cursor address là vò trí của con trỏ trong trang màn hình hiện tại. vò trí này tính theo số ký tự từ đầu
trang hiện tại đến vò trí của con trỏ
Thí dụ : cursor address = 130 trong text mode 80x25 tương ứng với dòng 1 cột 50 .
Để đọc (lấy giá trò) hoặc ghi (gán giá trò) một thanh ghi ta thực hiện :
- Đưa ra Index register (Bằng chỉ thò OUT) thứ tự của thanh ghi
- Đọc hoặc ghi từ Data register
Thí dụ : đọc vò trí con trỏ
mov dx,03D4h ; DX = port of Index register
mov al,14 ; Chọn R14
out dx,al
inc dx ; DX = port of Data register

in al,dx
mov ah,al ; AH = Hi byte
dec dx ; DX = port of Index register
mov al,15 ; Chọn R15
out dx,al
inc dx ; DX = port of Data register
in al,dx ; AL = Lo byte
; AX = currsor address
Thí dụ : đặt vò trí con trỏ (BX = vò trí con trỏ)
mov dx,03D4h ; DX = port of Index register
mov al,14 ; Chọn R14
mov ah,bh ; AH = Hi byte
out dx,ax
mov al,15 ; Chọn R15
mov ah,bl ; AH = Lo byte
out dx,ax
11.2HERCULE GRAPHICS ADAPTER
Đây là một display adapter được thiết kế để khắc phục khuyết điểm của MDA. Hearcule Graphics
Adapter cho phép thể hiện text mode hoàn toàn tương thích với MDA, đồng thời cung cấp khả năng hiển
thò graphics trên màn hình monochrome . Với video buffer 64KB,Hercule Graphics Adapter cho phép thể
hiện hai trang màn hình đồ họa với độ phân giải của mỗi trang là 720x348.
Hercule Graphics Adapter không do IBM thiết kế, do đó trong các thủ tục chuẩn của ROM BIOS
không có các chức năng dành riêng cho Hercule Graphics mode . Các phần mềm có khai thác đến khả
năng đồ thò trên Hercule Graphics Adapter đều phải điều khiển trực tiếp thông qua các port của Hercule
card.

11.2.1Cấu trúc video buffer
11.2.1.1Trong text mode
Giống như MDA, nhưng cho phép sử dụng hai trang màn hình : Trang 0 : bắt đầu từ B0000h
Trang 1 : bắt đầu từ B8000h

78
Mỗi trang chiếm 4 KB, ghi nhớ 2000 phần tử liên tiếp nhau, mỗi phần tử gồm hai byte, byte đầu là
ASCII code, byte kế là attrib .
Lưu ý : trong text mode, với các chức năng của BIOS dành cho MDA, chỉ có thể hiển thò trên trang
0.
11.2.1.2Trong graphics mode
Cho phép sử dụng hai trang màn hình đồ họa :
Trang 0 : từ B0000h - B7FFFh ( 32 KB )
Trang 1 : từ B8000h - BFFFFh ( 32 KB )
Mỗi trang chiếm 32 KB,lưu chứa thông tin về 720x348 điểm sáng (pixel) với các quy đònh :
Mỗi dòng trên màn hình được tạo thành từ 720 điểm sáng
Màn hình có tổng cộng 348 dòng
Mỗi điểm sáng chỉ có một trong hai thuộc tính : sáng hoặc tối > mỗi điểm được thể hiện bởi một bit.
Nếu bit = 1 -> sáng, bit = 0 -> tối
Thông tin về một dòng được ghi liên tiếp nhau trong một dãy 90 byte ( 720 bit ) theo thứ tự thể hiện
trên màn hình :
Bit thứ 7 ( bit cao nhất ) của byte đầu dãy biểu diễn cho điểm sáng thứ nhất của dòng Bit thứ 6 của
byte đầu dãy biểu diễn cho điểm sáng thứ hai của dòng .
...
Bit thứ 7 ( bit cao nhất ) của byte thứ hai trong dãy biểu diễn cho điểm sáng thứ chín của dòng .
Mỗi trang màn hình ( 32 KB ) được chia thành 4 trang nhỏ liên tiếp nhau đánh số từ 0-3, mỗi trang
có kích thước 2000h byte.
Thông tin của các dòng được lưu trong các trang theo quy tắc :
Các dòng có cùng số dư khi chia số thứ tự dòng cho 4 sẽ ở trong cùng một trang.Số dư cũng chính là
số thứ tự của buffer
Tức là :
Trang 0 chứa thông tin các dòng 0,4,8,12,16...
Trang 1 chứa thông tin các dòng 1,5,9,13,17...
Trang 2 chứa thông tin các dòng 2,6,10,14,18...
Trang 3 chứa thông tin các dòng 3,7,11,15,19...

11.2.2Hercule registers
Hercule Graphics Adapter cũng có các register giống như Color Graphics Adapter nhưng có một số
khác biệt như sau :
Không có Color register
Các port được đònh vò tại 3Bx thay vì 3Dx
Mode register được quy đònh :
- Bit 1 = 0 --> Text mode
- Bit 1 = 1 --> Graphics mode ( port 03BF bit 0 = 1 )
- Bit 3 : Video Enable
- Bit 5 : Blink Enable
- Bit 7 : Page Select ( port 03BF bit 1 = 1 )
( Trang 0 bắt đầu từ B000:0000 )
( Trang 1 bắt đầu từ B800:0000 )
Bit 0,2,4,6 not used
Sử dụng port 03BF để xác đònh cấu hình làm việc :
Bit 0 = 1 --> cho phép chuyển sang graphics mode (Thông qua bit 1 của mode register)
Bit 1 = 1 --> cho phép chọn trang màn hình

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×