mingle
驱动牛犊
驱动牛犊
  • 注册日期2002-03-03
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2271回复:8

关于显卡硬件工作原理疑问(50分)

楼主#
更多 发布于:2003-02-21 00:33
这些疑问是从我的一个用单片机来实现把数据直接送显示器的想法引起的。我设想中,电路由单片机+存储器+外围数字电路组成。单片机把接收到的数据,变成ASCII码,通过查字库,产生图象数据,送显存,数字电路与电阻网络实现RGB H V 5个信号的输出。用640 X 480 X 64COLOR X 60HZ的固定模式输出。因此,我找了块ET4000的老显卡来琢磨一下。CHIPSET是ET4000AX,VRAM是两个普通的动态存储器(M514260B -7J)。ET4000AX通过EISA总线于CPU进行16位访问,与VRAM进行32位访问。因为DAC要不断地从VRAM中取数据来进行显示,那么在640 X 480 X 256COLOR X 60HZ的模式中,每个30US的行周期要取640个字节的数据,由于是32位访问,一次可以允许用187NS的时间来访问VRAM。但假如这时CPU要操作VRAM,显示是不能被中断的,CPU访问内存也不可能等待的,显卡是如何协调这些操作呢,如何让他们共享显存。大数据传送是不是通过软件询问,在场逆程的时候发送给显卡。望高手们指点。
我还需要VESA的协议,如果谁有,希望能发给我。
ming_le@163.net
我终于会使用签名档了
resou
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2008-11-10
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-21 10:50
CPU在行逆程时把数据写入显卡中
通过读取显卡的状态寄存器确定显卡的状态
mingle
驱动牛犊
驱动牛犊
  • 注册日期2002-03-03
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-21 19:32
行逆程才2到3US吧。如果数据很多,时间不够啊。
我们在DOS下用TC编程,直接就拷贝内存到视频地址,没经过询问啊。
哪里有这些硬件知识的资料呢?
我终于会使用签名档了
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-21 23:54
建议你完整地读1-2本关于显卡的书,不要看单个的学术文章或介绍文章。靠在这里问是不行的,因为内容太多。
ppl
ppl
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2006-05-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-25 19:22
这些疑问是从我的一个用单片机来实现把数据直接送显示器的想法引起的。我设想中,电路由单片机+存储器+外围数字电路组成。单片机把接收到的数据,变成ASCII码,通过查字库,产生图象数据,送显存,数字电路与电阻网络实现RGB H V 5个信号的输出。用640 X 480 X 64COLOR X 60HZ的固定模式输出。因此,我找了块ET4000的老显卡来琢磨一下。CHIPSET是ET4000AX,VRAM是两个普通的动态存储器(M514260B -7J)。ET4000AX通过EISA总线于CPU进行16位访问,与VRAM进行32位访问。因为DAC要不断地从VRAM中取数据来进行显示,那么在640 X 480 X 256COLOR X 60HZ的模式中,每个30US的行周期要取640个字节的数据,由于是32位访问,一次可以允许用187NS的时间来访问VRAM。但假如这时CPU要操作VRAM,显示是不能被中断的,CPU访问内存也不可能等待的,显卡是如何协调这些操作呢,如何让他们共享显存。大数据传送是不是通过软件询问,在场逆程的时候发送给显卡。望高手们指点。
我还需要VESA的协议,如果谁有,希望能发给我。
ming_le@163.net
 

看起来你应当学一些硬件方面的知识了。
  最简单的显卡的基本结构:
     1。VRAM,这个内存是双端ram.
     2.RAMDAC。
     3。外围借口电路。
 



Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-26 16:50
现在显卡的太复杂了,增加好多功能进去。

以前显卡的比较简单一点。
第一点:显卡的RAM是双口的,不存在主机这边写与显示刷新的问题。
第二点:显卡的内存组织有好几种,如平板模式,页模式等,需要你事先把显示芯片的工作模式指定好。

你想要的模式好象是页模式,我四年前做过一点,呵呵现在快忘乐。
堂堂正正做人,明明白白做事
mingle
驱动牛犊
驱动牛犊
  • 注册日期2002-03-03
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-26 17:51
感谢大家的回复!
现在假如VRAM是普通的,也就是只能有一个设备访问。在RAMDAC和CPU同时要访问VRAM时,利用硬件中断RAMDAC的访问,使RAMDAC输出为零。由于CPU足够快,在一帧是的时间内是足够完成显存更新的。那么从图象上看,就会是有些抖动。不知道这些抖动是不是让人难以忍受?
我终于会使用签名档了
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-02-27 11:01
你的专劲挺足.
CPU是不会直接写RAM,CPU只是写寄存器,再由寄存器在一定的时间写RAM,DAC也不是直接读RAM,DAC只是读寄存器,再由寄存器在一定的时间读RAM,所有的读写受到时序控制电路的控制.
mingle
驱动牛犊
驱动牛犊
  • 注册日期2002-03-03
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-02-28 19:19
今天又看了一个老显卡,Trident 9000C.
显存是4个HY534256ALS-60。没查到它的手册。但类似型号Hitachi的HM514256C/CL的资料上说是个普通的256K X 4Bit的动态存储器。不是双口的。看来这个9000访问显存是16位的。难怪当时市场上ET4000的卡比9000的好。
----------------------------------------------
CPU是不会直接写RAM,CPU只是写寄存器,再由寄存器在一定的时间写RAM,DAC也不是直接读RAM,DAC只是读寄存器,再由寄存器在一定的时间读RAM,所有的读写受到时序控制电路的控制.
---------------------------------------------
如果CPU把CHIPSET的寄存器做缓冲区,一次只发一个字节还可以,但要写上百K的字节,而寄存器还没在一定时间写到VRAM,那不数据丢了。DAC肯定不读VRAM了,而是9000芯片根据所设置的模式从VRAM读数据送输出缓冲区,再根据时序把输出缓冲区的内容送DAC。我估计DAC是3 X 6位的结构。虽然DAC不读VRAM,但整个CHIPSET总是要访问的。
现在我的观点是:CPU和CHIPSET同时访问显存时,CPU的级别高,中断掉CHIPSET的访问。虽然经过了CHIPSET才访问VRAM,但对CPU来说,就像是访问实实在在的内存一样。图象上会出现抖动的。如果想不抖动,只有在场逆程传送了。否则设置场行程状态的寄存器做什么。现在我没时间,为了几百块钱给人画电路板。有时间的话,我肯定在DOS下访问显存看看,当然是用以上的两种方法,证实我的猜想。在WINDOWS下就不知道是什么机制了,手头也没有VESA的协议。
我想不用还像DOS那样换64K的空间了。
我终于会使用签名档了
游客

返回顶部