Card giao tiếp đồ họa

Một phần của tài liệu Bài Giảng ghép nối máy tính (Trang 108 - 115)

Để hiện cỏc hỡnh ảnh, ký tự, hay hỡnh vẽ trờn màn hỡnh, PC phải thụng qua mạch ghộp nối màn hỡnh (graphics adapter). Board mạch này thường được cắm trờn khe cắm mở rộng của PC. Sơ đồ khối như hỡnh sau:

Hỡnh 7.15 Sơ đồ khối của bản mạch ghộp nối màn hỡnh Bus Interface: ghộp nối bus;

Video Ram: Ram Video

Character code: mó ký tự

Attribute information: thụng tin thuộc tớnh; Character rom: rom ký tự

Attribute decoder: bộ giải mó thuộc tớnh; Shift register: thanh ghi dịch

Character generator: mỏy phỏt ký tự; Synchronization information: thụng tin đồng bộ.

Phần trung tõm là chip điều khiển ống hỡnh CRTC (cathode ray tube controller). CPU thõm nhập RAM Video qua mạch ghộp nối bus để ghi thụng tin xỏc định ký tự hay hỡnh vẽ cần hiển thị. CRTC liờn tục phỏt ra cỏc địa chỉ để Ram video đọc cỏc ký tự trong đú và truyền chỳng tới mỏy phỏt ký tự (character generator).

Trong chế độ văn bản (text mode), cỏc ký tự được xỏc định bởi mó ASCII, trong đú cú cả cỏc thụng tin về thuộc tớnh của ký tự, thớ dụ ký tự được hiện o cỏch nhấp nhỏy hay đảo màu đen trắng ….ROM ký tự (character rom) lưu trữ cỏc hỡnh mẫu điểm ảnh của cỏc ký tự tương ứng để mỏy phỏt ký tự biến đổi cỏc mó ký tự đú thành 1 chuỗi cỏc bit điểm ảnh (pixel bit) và chuyển chỳng tới thanh ghi dịch (shift register). Mỏy phỏt tớn hiệu sẽ sử dụng cỏc bớt điểm ảnh này cựng với cỏc thụng tin thuộc tớnh từ Ram video và cỏc tớn hiệu đồng bộ từ CRTC để phỏt ra cỏc tớn hiệu cần thiết cho monitor.

Trong chế độ đồ họa (graphics mode), thụng tin trong RAM video được sử dụng trực tiếp cho việc phỏt ra cỏc ký tự. Lỳc này cỏc thụng tin về thuộc tớnh cũng khụng cần nữa. Chỉ từ cỏc giỏ trị bit trong thanh ghi dịch, mỏy phỏt tớn hiệu sẽ phỏt cỏc tớn hiệu về độ sỏng và màu cho monitor.

• Mỏy phỏt ký tự trong cỏc chế độ văn bản và đồ họa:

Mỗi ký tự được biểu diễn bởi 1 từ 2 byte trong RAM video. Byte thấp chứa mó ký tự, byte cao chứa thuộc tớnh. Cấu trỳc của một từ nhớ video như sau:

15 14 13 12 11 10 9 8

BLNK BAK2 BAK1 BAK0 INT FOR2 FOR1 FOR0

7 6 5 4 3 2 1 0

CHR7 CHR6 CHR5 CHR4 CHR3 CHR2 CHR1 CHR0 BLNK: Nhấp nhỏy; 1 = bật, 0 = tắt

BAK2 … BAK0: Màu nền; (từ bảng màu hiện tại) INT: Cường độ sỏng ; 1 = cao, 0 = bỡnh thường

FOR2 … FOR0: Màu nền trước (từ bảng màu hiện tại) CHR7…CHR0: Mó ký tự.

Trong chế độ văn bản, 6845 liờn tục xuất cỏc địa chỉ cho RAM video qua MA0- MA13. Ký tự ở gúc tận cựng phớa trờn bờn trỏi màn hỡnh cú địa chỉ thấp nhất mà 6845 sẽ cung cấp ngay sau khi quột dọc ngược. Logic ghộp nối định địa chỉ cho RAM video bằng việc lấy ra mó ký tự cựng với thuộc tớnh. Mó ký tự dựng cho mỏy phỏt ký

tự như là chỉ số thứ nhất trong ROM ký tự. Lỳc này, 6845 định địa chỉ hàng quột đầu tiờn của ma trận ký tự, địa chỉ hàng bằng 0. Cỏc bit của ma trận điểm ảnh bõy giờ sẽ được truyền đồng bộ với tần số video từ thanh ghi dịch tới mỏy phỏt tớn hiệu. Nếu mỏy phỏt tớn hiệu nhận được giỏ trị 1 từ thanh ghi dịch, nú sẽ phỏt tớn hiệu video tương ứng với màu của ký tự. Nếu nhận được 0 nú sẽ cấp tớn hiệu tương ứng với màu nền. Vậy dũng quột thứ nhất được hiện phự hợp với cỏc ma trận điểm ảnh của cỏc ký tự trong hàng ký tự thứ nhất. Khi tia điện tử đạt tới cuối dũng quột, 6845 kớch hoạt lối ra HS để tạo ra quỏ trỡnh quột ngược và đồng bộ ngang. Tia điện tử quay trở về bắt đầu quột dũng tiếp. Sau mỗi dũng quột, 6845 tăng giỏ trị RA0-RA4 lờn 1. Địa chỉ dũng này hỡnh thành một giỏ trị offset bờn trong ma trận điểm ảnh cho ký tự được hiện. Dựa trờn mỗi dũng quột như vậy, một dũng cỏc điểm ảnh của ký tự trong hàng ký tự được hiện ra. Điều này cú nghĩa là với ma trận 9x14 điểm ảnh cho 1 ký tự, hàng ký tự thứ nhất đó được hiện sau 14 dũng quột. Khi địa chỉ RA0-RA4 trở về giỏ trị 0, 6845 sẽ cấp 1 địa chỉ MA0-MA13 mới và hàng ký tự thứ hai sẽ được hiện ra cũng như vậy. Ở cuối dũng quột cuối cựng, 6845 sẽ reset địa chỉ MA0-MA13 và RA0- RA4 và cho phộp lối ra VS phỏt ra tớn hiệu quột ngược cựng tớn hiệu đồng bộ dọc.

Mỗi ký tự cú chiều cao cực đại ứng với 32 dũng vỡ cú 5 đường địa chỉ RA0-RA4, cũn bộ nhớ video trong trường hợp này được tới 16K từ vỡ cú địa chỉ MA0-MA13 là 14 bit. Trong chế độ đồ họa, chỳng kết hợp với nhau để tạo thành địa chỉ 19 bit, lỳc đú 6845 cú thể định địa chỉ cho bộ nhớ video lờn tới 512k từ. Trong trường hợp này, cỏc byte trong RAM video khụng được dịch thành mó ký tự và thuộc tớnh nữa mà trực tiếp xỏc định cường độ sỏng và màu của điểm ảnh. Đa số cỏc RAM video được chia thành vài băng được định địa chỉ bởi RA0-RA4. Cỏc đường MA0-MA13 sẽ định địa chỉ offset bờn trong mỗi băng. Số liệu trong RAM video lỳc này được trực tiếp truyền tới thanh ghi dịch và mỏy phỏt tớn hiệu. ROM ký tự và mỏy phỏt ký tự khụng làm việc.

• Tổ chức của RAM video

RAM video được tổ chức khỏc nhau tuỳ o chế độ hoạt động và bản mạch ghộp nối. Thớ dụ, với RAM video 128 KB, cú thể địa chỉ húa toàn bộ bộ nhớ màn hỡnh qua CPU như bộ nhớ chớnh. Nhưng nếu kớch thước RAM video lớn hơn thỡ làm như vậy sẽ đố lờn vựng ROM mở rộng ở điạ chỉ C0000h. Do đú, card EGA và VGA với trờn 128 KB nhớ được tăng cường thờm 1 chuyển mạch mềm (soft-switch) cho phộp thõm nhập cỏc cửa sổ 128 KB khỏc nhau vào RAM video lớn hơn nhiều. Cỏc chuyển mạch này được quy định bởi riờng cỏc nhà sản xuất board mạch.

Tổ chức trong chế độ văn bản

RAM video được coi như một dóy từ tuyến tớnh, từ đầu tiờn được gỏn cho ký tự gúc trờn tận cựng bờn trỏi màn hỡnh gọi là hàng 1 cột 1. Từ thứ 2 là hàng 1, cột 2, …. Số từ tuỳ thuộc vào độ phõn giải của kiểu hiện ký tự.

Thớ dụ: độ phõn giải chuẩn 25 hàng, 80 ký tự đũi hỏi 2000 từ nhớ 2 byte. Như vậy, tổng cộng cần 4 KB bộ nhớ RAM video. Trong khi đú với card cú độ phõn giải cao SVGA 60 hàng, 132 ký tự cần đến 15840 byte. Do đú RAM video thường được chia thành vài trang. Kớch thước của mỗi trang tuỳ thuộc vào chế độ hiện của màn hỡnh và số trang cực đại, phụ thuộc cả vào kớch thước của RAM video. 6845 cú thể được

chương trỡnh húa sao cho địa chỉ khởi phỏt của MA0-MA13 sau quột ngược dọc là khỏc 00h. Nếu địa chỉ khởi phỏt là bắt đầu của 1 trang thỡ cú thể quản lý RAM video o vài trang tỏch biệt nhau, nếu CPU thay đổi nội dung của 1 trang mà trang đú hiện đang khụng hiện thỡ màn hỡnh cũng khụng thay đổi. Do đú, cần phõn biệt trang nhớ đang được kớch hoạt (đang hiện) và trang đang được xử lý.

Đoạn chương trỡnh ghi ký tự 'A' cú cường độ sỏng cao vào gúc trờn bờn trỏi với màu số 7 và màu nền số 0. Trang thứ nhất và là duy nhất bắt đầu ở địa chỉ B0000h. MOV AX, 0B000h; nạp thanh ghi ax với địa chỉ đoạn của Ram video

MOV ES, AX; truyền địa chỉ đoạn vào ES

MOV AH, 0F8h; nạp byte thuộc tớnh 1111 1000 vào AH MOV AL, 41h; nạp mó ký tự của ‘A’ vào AL

MOV ES:[00H],AX; ghi byte thuộc tớnh và mó ký tự vào RAM video. Tổ chức trong chế độ đồ họa:

Tổ chức trong chế độ này phức tạp hơn. Vớ dụ: với bản mạch Hercules, RAM video được chia thành 4 băng trờn 1 trang . Băng thứ nhất: đảm bảo cỏc điểm ảnh cho cỏc dũng 0, 4, 8, …, 344; băng thứ hai cho cỏc dũng 1, 5, 9, …, 345; băng thứ 3 cho cỏc dũng 2, 6, 10, …., 346; và băng thứ 4 cho cỏc dũng 3, 7, 11, …, 347. 64 KB được chia thành 2 trang 32 KB. Độ phõn giải trong chế độ đồ họa là 720 x 348 điểm ảnh, mỗi điểm ảnh được biểu diễn bởi 1 bit. Do vậy, một dũng cần 90 byte (720 điểm ảnh / 8 điểm ảnh trờn 1 byte). Địa chỉ của byte chứa điểm ảnh thuộc đường i và cột j trong trang k là:

B0000h+8000h*k+2000h*(i mod 4)+ 90*int(i/4)+int(j/8)

B0000h là đoạn video, 8000h là kớch thước của trang, 2000h*(i mod 4) là offset của băng chứa byte đú, 90*int(i/4) là offset của dũng i trong băng và int(j/8) là offset của cột j trong băng.

Trong bản mạch CGA bộ nhớ video được chia thành 2 băng cũn với EGA và VGA thỡ phức tạp hơn.

• Truy xuất màn hỡnh qua DOS và BIOS Truy xuất qua DOS

Cỏc hàm của int 21h cú thể hiện cỏc ký tự trờn màn hỡnh nhưng khụng can thiệp được vào màu:

- Hàm 02h: ra màn hỡnh. - Hàm 06h: ra một ký tự. - Hàm 09h: ra một chuỗi. - Hàm 40h: ghi file/ thiết bị

Từ DOS 4.0 trở đi cú thể dựng lệnh mode để điều chỉnh số cột văn bản từ 40 đến 80 hay số dũng từ 25 đến 50.

Cỏc lệnh copy, type và print trong command.com cho phộp hiện text trờn màn hỡnh. DOS gộp chung bàn phớm và monitor thành 1 thiết bị mang tờn CON (console). Ghi CON là truyền số liệu tới monitor, cũn đọc CON là nhận ký tự từ bàn phớm. Vớ dụ: để hiện nội dung của file output.txt lờn màn hỡnh của monitor sẽ cú cỏc cỏch sau: - copy output.txt con

- type output.txt > con - print output.txt /D:con

Truy xuất qua BIOS

Bios thõm nhập monitor bằng int 10h với nhiều chức năng hơn DOS, như đặt chế độ hiện hỡnh, quản lý tự động cỏc trang, phõn biệt cỏc điểm trờn màn hỡnh nhờ cỏc tọa độ,…

Những thường trỡnh đồ họa:

BIOS trờn main board cú sẵn những hàm dựng cho thõm nhập MDA và CGA.

BIOS của riờng EGA và VGA cú những hàm mở rộng tương ứng trong khi vẫn giữ nguyờn định dạng gọi.

Một trong những hàm quan trọng nhất của int 10h là hàm 00h dựng để đặt chế độ hiện hỡnh. Để thay đổi chế độ hiện hỡnh cần phải làm rất nhiều bước chương trỡnh phức tạp để nạp cỏc thanh ghi của chip 6845. Trong khi đú, hàm 00h làm cho ta tất cả cỏc cụng việc này.

Thớ dụ: tạo kiểu 6 với độ phõn giải 640*200 trờn CGA. Mov ah, 00h ; hàm 00h

Mov al, 06h ; chế độ 6 Int 10h ; gọi ngắt

Cỏc board EGA/VGA cú riờng BIOS của chỳng. Trong quỏ trỡnh khởi động PC, nú sẽ chặn int 10h lại và chạy chương trỡnh BIOS của riờng board mạch. Thường trỡnh cũ (của BIOS trờn board mach chớnh ) được thay địa chỉ tới int 42h. Tất cả cỏc lệnh gọi int 10h sẽ được BIOS của EGA/VGA thay địa chỉ tới int 42h nếu board mạch EGA/VGA đang chạy cỏc kiểu hiện tương thớch với MDA hay CGA. Cú cỏc kiểu hoạt động từ 0 đến 7.

BIOS của EGA/VGA dựng vựng 40:84h tới 40:88h để lưu số liệu BIOS và cỏc thụng số của EGA/VGA. Nú cú cỏc hàm mới với cỏc hàm phụ sau:

- Hàm 10h: truy xuất cỏc thanh ghi màu và bảng màu - Hàm 11h: cài đặt cỏc bảng định nghĩa ký tự mới - Hàm 12h: đặt cấu hỡnh hệ con video

- Hàm 1Bh: thụng tin về trạng thỏi và chức năng của BIOS video (chỉ cú ở VGA)

- Hàm 1Ch: trạng thỏi save/restore của video (chỉ cú ở VGA) Sau đõy là chức năng của cỏc hàm và thớ dụ sử dụng chỳng:

- Hàm 10h, hàm phụ 03h – xoỏ/đặt thuộc tớnh Vớ dụ: Xoỏ thuộc tớnh nhấp nhỏy:

Mov ah, 10h ; dựng hàm 10h Mov al, 03h ; dựng hàm phụ 03h Mov bl, 00h ; xoỏ thuộc tớnh nhấp nhỏy Int 10h ; gọi ngắt

- Hàm 11h – ghộp nối với mỏy phỏt ký tự

Mov ah, 11h ; dựng hàm 11h

Mov al, 01h ; nạp bảng ký tự từ Rom Bios vào Ram mỏy phỏt ký tự. Mov bl, 03h ; gỏn số 3 cho bảng

Int 10h ; gọi ngắt

- Hàm 12h, hàm phụ 20h – chọn thường trỡnh in màn hỡnh. Dựng hàm phụ này cú thể thay thế thường trỡnh chuẩn cho INT 05h bằng thường trỡnh cú thể dựng cho cỏc độ phõn giải mới của EGA/VGA.

Vớ dụ: Cho phộp thường trỡnh mới in màn hỡnh: Mov ah, 12h ; dựng hàm 12h

Mov bl, 20h ; dựng hàm phụ 20h

Ấn PRINT hoặc SHIFT+PRINT để gọi thường trỡnh in đó được lắp đặt. • Truy xuất trực tiếp bộ nhớ video:

Để vẽ 1 điểm trờn màn hỡnh, BIOS phải làm nhiều thủ tục nhưng nếu muốn vẽ toàn bộ 1 cửa sổ hỡnh hay lư trữ thỡ phải truy xuất trực tiếp RAM video.

Với board đơn sắc MDA trong kiểu hiện văn bản số 7, 4 KB RAM đuợc tổ chức như 1 dóy (array) gốm 2000 từ nhớ kề nhau ( mỗi từ là mó thuộc tớnh: ký tự) tạo nờn 25 dũng, 80 cột. RAM video bắt đẩu ở đọan B0000h, trong đú ký tự gúc trờn cựng bờn trỏi là từ thứ nhất trong RAM video. Như vậy mỗi dũng cú 160 byte (A0h). Địa chỉ của từ nhớ ứng với ký tự ở dũng i, cột j (i = 0-24, j = 0-79) được tớnh o cụng thức sau:

Address (i,j) = B0000h +A0h*i +02h*j.

Với board EGA, ở kiểu hiện văn bản từ 0 đến 3 mó ký tự được lưu trữ trong lớp nhớ 0 cựng với thuộc tớnh trong lớp 1 của RAM video. Mạch logic chuyển địa chỉ trờn board thực hiện sự kết hợp nhất định nào đú sao cho tổ chức và cấu trỳc của RAM video cũng như cỏch tớnh địa chỉ vẫn tương đồng với cỏch của CPU. Trong chế độ đồ họa từ 13 đến 16, RAM video bắt đầu từ địa chỉ đoạn A000h. Cỏc điểm ảnh được xếp kề cận nhau trong bộ nhớ và mỗi điểm ảnh đũi hỏi 4 bit, cỏc bit này được phõn ra ở 4 lớp nhớ. Như vậy địa chỉ của 1 trong 4 bit này trờn 1 điểm ảnh khụng chỉ gồm đoạn video và offset mà cũn thờm vào số lớp nhớ nữa.

Hỡnh 7.16 Cỏc lớp nhỏ của RAM Video

Để hiện 1 điểm ảnh với 1 trong 16 màu, khụng phải chỉ tớnh địa chỉ bit mà cũn phải thõm nhập 4 lớp nhớ. Muốn vậy, phải dựng thanh ghi mặt nạ bản đồ (map mask register). Thanh ghi này được định địa chỉ qua cổng chỉ số 3C4h với địa chỉ 02h và cú thể được ghi qua cổng số liệu 3C5h. Cấu trỳc của thanh ghi mặt nạ bản đố như sau:

7 6 5 4 3 2 1 0

Res Res Res Res LY3 LY2 LY1 LY0 LY3-LY0: Thõm nhập ghi tới cỏc lớp từ 03;

1 = cho phộp; 0 = khụng cho phộp Res : Dự trữ

Vớ dụ: Đặt bit 0 của byte ở địa chỉ A000:0000h cho lớ 0, 1, 3. Mov AX, 0A000h ; nạp đọan video vào AX

Mov ES, AX ; truyền đọan video vào ES Mov BX, 0000h ; nạp offset 0000h vào BX

Out 3C4h, 02h ; chỉ số 2 thanh ghi mặt nạ bản đồ

Out 3C5h, 0Bh ; ghi 0000 1011b vào thanh ghi mặt nạ bản đồ (cho phộp lớp 0, 1, 3)

Mov 3C5h, 0Bh ; đặt bit 0 trong cỏc lớp 0, 1 và 3

Để lưu trữ nội dung màn hỡnh cần phải đọc cỏc giỏ trị bit của 4 lớp khi dựng thanh ghi chọn bản đồ đọc (read map select register). Nú được định địa chỉ với chỉ số 04h qua cổng chỉ số 3CEh, và cú thể được ghi qua cổng số liệu 3CFh. Cấu trỳc của thanh ghi này:

res res res res res res LY1 LY0 LY1-LY0: cho phộp thõm nhập đọc với:

00 = lớp 0 01 = lớp 1 10 = lớp 2 11 = lớp 3 res : dự trữ

Vớ dụ: đọc byte ở địa chỉ A000:0000h cho lớp 2: Mov AX, A000h ; nạp đọan video vào AX Mov ES, AX ; truyền đọan video vào ES Mov BX, 0000h ; nạp offset vào BX

Out 3Ceh, 04h ; chỉ số 4 thanh ghi chọn bản đồ đọc

Out 3CFh, 02h ; ghi 0000 0010b vào thanh ghi chọn bản đồ đọc

Một phần của tài liệu Bài Giảng ghép nối máy tính (Trang 108 - 115)

Tải bản đầy đủ (PDF)

(115 trang)