网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 证券投资论文
  • 金融研究论文
  • 期货市场论文
  • 债务市场论文
  • 银行管理论文
  • 公司研究论文
  • 保险学论文证
  • 您的位置:写论文网 > 证券金融 > 金融研究论文 > TVGA彩色视频模式论文:什么是论文 正文 2019-12-21 07:26:18

    TVGA彩色视频模式论文:什么是论文

    相关热词搜索:

    TVGA彩色视频模式论文

    TVGA彩色视频模式论文 摘要本文首先分析了TVGA的结构和其显示原理,然后进一步阐述了其 256彩色模式下的存储模式,并给出了的实用编程技术,还附了一个在TVGA显 示器上显示256色图像的源程序。

    关键词DAC彩色表 增强型视频图形阵列TVGA自从Trident公司开发出来,现在以成为IBM和 其他兼容机上普遍适用的图形显示器。TVGA提供与VGA寄存器级兼容能力,并 增强了几种显示模式,特别是它能很方便的显示256种颜色,为我们提供了丰富 多彩的照片式图像显示。为了让读者能对TVGA的256色模式有一个清楚而全面 的认识,文章将从结构显示原理以及存储模式等方面来介绍,最后并给出 TVGA256色模式下的编程技术。

    一、TVGA视频模式 TVGA提供了与VGA寄存器级兼容能力,而且大大增强了图形、文本模式, 支持256K×4DRAM、等离子体显示控制,它可以模拟VGA、EGA、CGA、MDA 和256色图形方式,有640×400、640×480、800×600和1024×768四种模式。

    TVGA除拥有VGA标准图形模式外,还有扩展VGA模式。在配置512K视 频缓冲区(DRAM)的系统中,256色的分辨率可达到800×600;
    若配置1MBDRAM, 还可以达到1024×768更高的分辨率。

    表1给出TVGA扩展图形模式的说明。

    @@T5S10600.GIF;表1@@ 由表1可知TVGA提供4种256色扩充模式:5CH(640×400)、5DH(640×480)、 5EH(800×600)和62H(1024×768)。在此后的文中,所谈及的TVGA256色的视频模 式就是上述四种模式。

    二、TVGA结构 TVGA主要由:定序器、CRT控制器、图形控制器、属性控制器、DAC支持 逻辑、主总线接口及显示寄存器接口等7部分组成,它们之间的逻辑关系如图1所示。

    @@T5S10601.GIF;图1@@ 1.定序器 定序器为DRAM接口提供基本的存储器时序,为CRT提供字符时钟,并执 行某些存储器地址解码。它通过5个可以读写的寄存器进行控制。它们有两个I/O 地址(3C4和3C5)。3C4是序号寄存器,用于选择工作寄存。数据输出到I/O地址为 3C5的寄存器。

    2.CRT控制器 CRT控制器通过产生显示器光栅的同步信号等来控制显示器,它也可以定 义屏幕上显示数据的格式。

    3.图形控制器 图形控制器位于存储器与系统处理器之间的数据通道中。在缺省状态下, 图形控制器是透明的:数据在处理器之间直接进行逻辑操作,为图形算法提 供硬件支持。同样,图形控制器有两个I/O地址:3CE和3CF,前者是序号寄 存器,用于选择图形控制器各工作寄存器来驱动TVGA模拟显示器 4.属性控制寄存器 属性控制寄存器把图形控制器接收的数据格式化后进行视频显示。它操作 调色板、屏幕边界(或过扫描区)和背景色彩。光标闪烁、下划线和显示逻辑地址 也由它控制。在图形模式下,属性控制器把内存中的数据转化成彩色查找表的地 址,并由视频DAC转换成模拟电平来驱动TVGA模拟显示器。

    5.数模转换器(DAC) 数模转换器,是TVGA系统中的可编程控制设备。它把TVGA产生的二进 制彩色信息转换成可由监视器显示的信号,DAC含有256个颜色数据寄存器,每 个含有可显示的每种颜色。每个数据寄存器保存18位彩色信息,红绿蓝各占6位。

    这些基色位控制三色模拟显示的驱动。TVGA256模式时,显示缓冲区的每一项 由18位组成,分成三部分,各6位,分别代表红绿蓝的值。查找表中每一项是可以设置的,因此可有256k种颜色可以设置,由于查找表最多只有256色,所以同 时显示的颜色只有256种。显示缓冲区、视频DAC和彩色查找表、显示屏的关系 可用图2来表示。

    @@T5S10602.GIF;图2@@ 用于访问视频DAC的寄存器有5个,见表2。

    @@T5S10603.GIF;表2@@ 选择查找表2中256个内部色彩寄存器,另有两个独立的寄存器,读序号寄 存器仅用于读DAC颜色查找表,写序号寄存器仅用于写DAC颜色表。彩色寄存 器宽18位,把8位序号写入3C8写序号寄存器,然后写6位数到数据寄存器(3C9), 那么8位序号彩色寄存器的3个分量就得到修改。每写3个字节,3C8写寄存器自 动加一,因此不必重复设置序号便可给一组寄存器赋值。同样,向读寄存器(3C7) 写入8位序号,然后从3C9中读3个6位值,便可得到该序号彩色寄存器值。每读3 个字节,序号寄存器就自动加一,因此不必设置序号就可读出一组彩色寄存 器值。

    读DAC状态寄存器(3C7)可以知道彩色查找表当前是读还是写。D0,D1 位上的00值表示处于读模式,01值表示处于写模式。

    三、TVGA256视频模式的存储模式 TVGA256图形模式,包括模式5C、5D、5E和62等。在这几种模式中,彩 色查找表(调色板)的设置都是通过对端口3C7、3C8、3C9的读写达到重置彩色查 找表的目的。这几种显示模式缓冲区的起始地址都是A0000,而所需缓存容量都 大于TVGA基本的64KB,因此TVGA在控制卡上增加了一部缓存,它是通过3C4, 3C5来存取。

    1.TVGA存储映射方式 显示存储器DRAM在系统主存储空间的映射方式有两种,也就是两种页模 式(PAGEMODE),第一种允许CPU访问DRAM的地址范围为A0000―BFFFF,即 128K模式;
    另一种地址范围为A0000―AFFFF,即64K模式。前一种模式,在使 用位平面存储方式下,一次可以访问128K的位平面;
    而后一种模式则需要另外 一个I/O端口位来选择读出的是哪一个64K。TVGA的视频BIOS缺省置为64K模式。可根据需要选择页模式,页模式由图形控制器中的辅助寄存器控制。图形控制器 有I/O地址3CE和3CF,3CE为索引端口地址,3CF为数据端口地址。而辅助寄存 器则为3CE的第6号索引寄存器。该寄存器中存放着可修改的单字节数据,各位 意义如下: 4,5,6,7位:保留: 2,3位:DRAM在主存储区内的地址范围 00―A0000~BFFFF(128K) 01―A0000~AFFFF(64K) 10―B0000~B7FFF(32K) 11―B8FFF~BFFFF(32K) 1位:置为0;

    0位:若为0,表文本方式;
    若为1,表图形方式。

    在64K页模式下,由于一幅640×480的256色图象至少需要240K缓存,这大 大的超过了64K页模式下的缓存,因此TVGA在VGA64K基础上,利用定序器控 制器的地址寄存器(索引号为0EH)来分别控制数据传送到不同的几个64KB缓存 中。定序器控制器的索引端口地址为3C4,数据端口地址为3C5。而地址寄存器 则为0E号索引,存放 着单字节数据,各位意义如下: 4,5,6,7位:保留;

    2,3位:0到3号存储块选择;

    1位:页选择:读DRAM时,若为1,表读第一页;

    若为0,表读第零页;
    特别注意,写DRAM时, 若为1,表写第零页;
    若为0,表写第一页;
    0位:段选择。

    2.TVGA像素寻址 图形显示模式下TVGA使用自然坐标系对其存储器进行寻址,各像素根据 坐标在屏幕上定位,原点位于屏幕左上角,坐标最大点(Xmax,Ymax)位于右下角。

    屏幕像素地址为20位(不包括0XA0000基地址),格式为: 16,17,18,19位:意义同定序器控制器的地址寄存器的4,5,6,7位;

    0..15位:表段内偏移地址。

    四、TVGA编程技术 在TVGA256色视频模式下,主要用于显示高质量照片式点阵式图像。原 图像可以从彩色图像扫描仪中或电视摄像机中获得,只要把原图像格式转换成 TVGA的256彩色显示格式,就可以直接把图像送TVGA显示存储器。本节所有例 程都是用TURBOC语言写成,并都在微机上调试通过。

    1.模式设置 用BIOS中的INT10H可完成模式设置,下面只讨论256色图形模式的设定。

    在每次模式设置前,还要设置缓冲区的存储模式。

    (1)缓冲区存储模式设置 ①128K模式 voidmode128K() {unsignedchari;
    outp(0x3ce,0x06);
    i=0x01;
    i=(i0x0f);
    outp(0x3cf,i);
    }②64K模式 voidmode64K() {unsignedchari;
    outp(0x3ce,0x06);
    i=0x05;
    i=(i0x0f);
    outp(0x3cf,i);
    (2)图形显示模式设置 set-mode(intmode) {unionREGSin,out;
    in.h.al=(unsignedchar)mode;
    in.h.ah=0;
    int86(0x10,in,out);
    } 2.画点程序和读点程序 不妨设当前模式下的横向和纵向的最大分辨率maxx,maxy已知。

    putpixel(intx,inty,unsignedcharcolor) {longaddress,offset;
    unsignedcharsegnumber;
    charfar*p;
    address=y*maxx+x;
    offset=(address0x0000ffff);
    segnumber=(address0x000f0000;) outp(0x3c4,0x0e);in.h.al=segnumber;
    in.h.al=(in.h.al0x0f)^0x02;
    outp(0x3c5,in.h.al);
    p=(charfar*)0xA0000000;
    *(offset+p)=color;
    } getpixel(intx,inty,unsignedcharcolor) {longaddress,offset;
    unsignedcharsegnumber;
    charfar*p;
    address=y*maxx+x;
    offset=(address0x0000ffff);
    segnumber=(address0x000f0000);
    outp(0x3c4,0x0e);
    outp(0x3c5,segnumber);
    p=(charfar*)0xA0000000;
    color=*(offset+p);
    } .调色板的读写 对于TVGA256色视频模式,BIOS中常用的是置调色板寄存器10H,其中 改写和读取DAC彩色寄 存器的功能如下。

    ①设置单个DAC彩色寄存器值 输入参数:AH=10H,AL=10HBX=DAC寄存器号(0~255) DH=红色分量值(6位) CH=绿色分量值(6位) CL=蓝色分量值(6位) 返回值:无 ②设置DAC彩色寄存器组 输入参数:AH=10H,AL=12H BX=寄存器组起始号(0~255) CX=寄存器数目(1~256) ES:DX=彩色表地址(每个彩色寄存器对应3个字节) 返回值:无 ③读单个DAC彩色寄存器值 输入参数:AH=10H,AL=15H BX=DAC寄存器号(0~255) 返回值:DH=红色分量值 CH=绿色分量值 CL=蓝色分量值 ④读DAC彩色寄存器组 输入参数:AH=10H,AL=17H BX=寄存器组起始号(0~255)CX=寄存器组数目(1~256) ES:DX=读取数据的存放地址 返回值:彩色寄存器的彩色值(每个寄存器3个字节) 为了讨论方便,先给出以下公共变量: unionREGSin,out;
    structSREGSsregs;
    unignedcharcolor-table[256][3];
    于是就可以编写出相应的程序。

    ①单个DAC寄存器写函数 voidwriteDAC(intregnumber,unsignedcharr,unsignedcharg, unsignedcharb) {in.x.ax=0x1010;
    in.x.bx=regnumber;
    in.h.dh=r;
    in.h.ch=g;
    in.h.cl=b;
    int86(0x10,in,out);
    } ②单个DAC寄存器读函数 voidreadDAC(intregnumber,unsignedcharr,unsignedcharg, unsignedcharb) {in.x.ax=0x1015;
    in.x.bx=regnumber;int86(0x10,in,out);
    out.h.dh=r;
    out.h.ch=g;
    out.h.cl=b;
    } ③写DAC寄存器组函数 voidwriteDACS(intregnumber,intregcount,unsignedcha r *color-tableb) {in.x.ax=0x1012;
    in.x.bx=regnumber;
    in.x.cx=regcount;
    sregs.es=FP-SEG(color-table);
    sregs.dx=FP-OFF(color-table);
    int86x(0x10,in,out,sregs);
    } ④读DAC寄存器组函数 voidreadDACS(intregnumber,intregcount,unsignedchar *color-table) {in.x.ax=0x1017;
    in.x.bx=regnumber;
    in.x.cx=regcount;
    sregs.es=FP-SEG(color-table);
    sregs.dx=FP-OFF(color-table);
    int86x(0x10,in,out,sregs);} 除了BIOS方式之外,访问调色板还可用寄存器访问方式。这里用到3个寄 存器I/O地址寄存器 3C7彩色查找表读操作索引号 3C8彩色查找表写操作索引号 3C9彩色查找表数据寄存器 ①获取当前调色板数据 voidreadcolors(unsignedcharcolor-table[256][3]) {inti,j;
    for(i=0;i256;i++) {outp(0x3c7,i);
    for(j=0;j3;j++) color-table[i][j]=(unsignedchar)inp(0x3c9);
    } } ②重新设置调色板 voidwritecolors(unsignedcharcolor-table[256][3]) {inti,j;
    outp(0x3c8,0);
    for(i=0;i256;i++) for(j=0;j3;j++) outp(0x3c9,color-table[i][j]2);
    }③读取单个DAC数据 readcolor(unsignedcharcolornum,unsignedr,unsignedc ha rg,unsignedcharb);
    {outp(0x3c7,colornum);
    r=inp(0x3c9);
    g=inp(0x3c9);
    b=inp(0x3c9);
    } ④改写单个DAC数据 writecolor(unsignedcharcolornum,unsignedr,unsigned ch arg,unsignedcharb);
    {outp(0x3c8,colornum);
    outp(0x3c9,r);
    outp(0x3c9,g);
    outp(0x3c9,b);
    } 最后需指出,TVGA256色视频模式是TVGA中最引人注目的模式,根据 VGA的标准,可选择多达256K种颜色,但一个显示页同时可显示的颜色最多只 有256色,对于模式62H,系统需配置1MBDRAM,而一般个人计算机上的TVGA 显示卡只有512KBDRAM,因而一般不能实现62H模式所提供的1024*768这种高 分辨率。所以,用户在使用TVGA256色视频模式时,最好使用5DH模式,即分 辨率为640*480的256色模式。为了让读者能尽快熟悉TVGA256色的编程技术, 笔者特给出一个在5DH模式下显示256彩色TIFF图像格式文件的程序,程序用C 语言写成,并在TURBOC2.0下编译,运行通过。程序中的TIFF文件的读取涉及到图像格式文件的知识,这里不再赘言。

    附:源程序showtif.c #includedos.h #includestdio.h #includealloc.h unsignedcharbuff[640],pal-buf[3*512],pal-buff[256][3];
    structHEAD { unsignedintbo;
    unsignedintver;
    unsignedlongnext;
    }head;/*定义TIFF格式文件头*/ structDIR { unsignedinttga;
    unsignedinttype;
    unsignedlonglen;
    unsignedlongval;
    }dir[20];/*定义TIFF格式文件目录项*/ main(intargc,char*argv[]) { unionREGSin,out;
    unsignedcharcur-mode,cur-page;
    in.h.ah=15;int86(0x10,in,out);
    cur-mode=out.h.al;
    cur-page=out.h.bh;/*存储当前显示模式*/ show(argv[1],atoi(argv[2],atoi(argv[3]));
    in.h.ah=0;
    in.h.al=cur-mode;
    in.h.bl=cur-page;
    int86(0x10,in,out);/*恢复成原显示模式*/ } show(char*filename,intx,inty) { unionREGSin,out;
    FILE*pcx;
    unsignedintlongcc=0,dd,star,palptr;
    registerintm,j;
    unsignedintnd,bitcount,with,hight,d;
    inti,k=-1;
    unsignedcharch,mode,seg-num=0;
    charfar*pvdieo=(charfar*)0xa0000000;
    if((pcx=fopen(filename,"rb+"))==NULL) {printf("openfileerror!");exit(0);} fread(head,8,1,pcx);
    fseek(pcx,head,next,SEEK-SET);
    fread(nd,2,1,pcx);fread(dir,12*nd,1,pcx);
    for(i=0;ind;i++) switch(dir[i].tga) { case0x100:with=dir[i].val;break;
    case0x101:hight=dir[i].val;break;
    case0x102:bitcount=dir[i].val;break;
    case0x111:star=dir[i].val;break;
    case0x140:palptr=dir[i].val;break;
    default:continue;
    } /* star=图像数据首地址with=图像宽度 hight=图像高度bitcount=图像像素位数 palptr=调色板首地址 */ in.h.ah=0;
    in.h.al=0x5d;
    int86(0x10,in,out);
    /*设置当前显示模式为5DH*/ fseek(pck,palptr,SEEK-SET);
    fread(pal-buf,512*3,1,pcx);
    /*读取调色板数据*/outp(0x3c8,0);
    for(j=0;j256;j++) for(i=0;i3;i++) outp(0x3c9,pal-buf[i*512+2*j+1]2);
    /*设置当前调色板*/ x=x%640;
    y=y%480;
    cc=(long)y*(long)640+(long)x;
    while(cc=65535){cc=cc-65535;seg-num++;} if(seg-num==0){if(x=254)k=-x-1;elsek=640-x-1;} if(seg-num==1){if(x=510)k=254-x;elsek=640-x+254;} if(seg-num==2){if(x=126)k=510-x;elsek=640-x+510;} if(seg-num==3){if(x=382)k=126-x;elsek=640-x+126;} if(seg-num==4){if(x=638)k=638-x;elsek=640-x+382;} pvdieo+=cc;
    outp(0x3c4,0x0e);
    in.h.al=seg-num++;
    in.h.al=(in.h.al0x0f)^0x02;
    outp(0x3c5,in.h.al);
    /*设置当前的存储模式*/ fseek(pcx,star,SEEK-SET);
    for(j=0;jhight;j++) { fread(buff,1,with,pcx);/*逐行读出像素数据*/ if((cc+640)65536) { for(m=0;mwith;m++) *pvdieo++=buff[m];
    pvdieo+=640-with;
    cc+=640;
    } else { k=(k+256)%640;
    if(kwith) { for(m=0;m=k;m++) *pvdieo++=buff[m];
    } else { for(m=0;mwith;m++) *pvdieo++=buff[m];
    pvdieo+=k-with;
    } outp(0x3c4,0x0e);
    in.h.al=seg-num++;in.h.al=(in.h.al0x0f)^0x02;
    outp(0x3c5,in.h.al);
    pvdieo=(charfar*)0xa0000000;
    if(kwith) { for(i=m;iwith;i++) *pvdieo++=buff[i];
    pvdieo+=640-with;
    co=640-k;
    } else { pvdieo+=639-k;
    co=640-k;
    } } } fclose(pcx);
    getch();

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    TVGA彩色视频模式论文:什么是论文》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.