理论:高手网友分析鼠标工作原理  我要评论 
           
更新时间:04年10月9日 作者:ITdoor.net/alfa  编辑:13
当前第1页: 本文共 1 页

编辑前言:今天在论坛闲逛的时候无意中发现一位网友e121771,在论坛里面发表了一篇通过对厂家的技术白皮书的研究和分析,对光学鼠标的一些悬念的解析。由于文章里面涉及的知识非常专业,并不是每个读者都能看明白,以下为了方便大家阅读,将比较有概括性的话加粗方便一般读者阅读。

注:以下内容为保留作者版权,均未曾做过修改!

  现在的有线光学鼠标中一般都有2块集成电路,一块是CMOS/DSP芯片,比如像安捷伦2051,一块是USB/PS2的接口转换芯片,比如像现在的IE4/MX510中使用的cy7c63743,RAZER VIPER中使用的GL603USB(廉价品,比cy7c63743功能更弱)。IE3/IO1.1/WMO1.1的情况比较特殊,这两块芯片是2合一的。

  2051的白皮书

  cy7c63743的白皮书

  CMOS/DSP芯片大家谈得比较多,好像它就决定了鼠标性能的一切,因此所以USB/PS2的接口转换芯片就成了盲点。那么现在就来谈谈这个东西。

  我曾经以为这种接口转换芯片只是一个把数据流转换成usb数据流的东西,是完全硬件操作的。但是如果真的这种情况的话,就有很多无法解释的现象。比如:为什么IE4/MX510用的是一个芯片,IE4在98下面却有问题?为什么几个鼠标都用同样的2051/cy7c63743,一个飞得厉害(指针乱跳),一个丢祯(指针有停顿),有得却用得挺好?为什么会有可以脱离软件自由切换cpi的鼠标,却找不到特殊的硬件(电路,透镜等)?…………

  前几个星期,抽空仔细研究了一下安捷伦2051和cy7c637xx的pdf白皮书,豁然开朗,突然一切都明白了。问题的关键是,cy7c637xx不是纯硬件的,而是一个可编程器件,完全就是一个单片机,可以通过编程来完成很多特殊的效果。

这里说几个由于这个结论而得到解释的悬念。

1、为什么IE4放弃了很成熟的IE3的一体化芯片,反而造成了现在的98下USB口的问题?

  答案是为了实现纵横滚轮的功能,不得不这么做。看过cy7c637xx或安捷伦2051白皮书,可以发现,所有的按键都是连接到接口转换芯片上的,通过对接口转换芯片的编程来识别,而且有几个按键就必须要有几根信号线。

  纵横滚轮实际是相当于增加了2个按键,而IE3的一体化芯片的按键输入信号线已经不够了,不得已只能放弃。相对于完全重新设计一个一体化芯片,保留原来的cmos/dsp,使用外部接口芯片是比较简单而且灵活性比较高的方案。结果就是现在的IE4的电路构成,使用了和MX系列一样的cy7c63743。由于是首次使用了cy7c63743,原有的芯片的软件无法流用,需要完全重新编程,从而造成了在98下USB有问题

2、IE4有9000次版?

  可能性还是有的,因为接口芯片原来的固化程序可能有不够完善,确实可以对其进行改善。但CMOS/DSP芯片从一开始就应该是9000次的,没有变化。具体的效果也无法确认。

3、IE4可以软件升级到9000次?

  做梦!cy7c63743要写片机才能改写,无法仅使用USB口来写入。而且在后面我会提到,接口芯片中固化的软件对鼠标性能有重大影响,应该是企业机密,固化后很难破解,而提供用户升级大大加大了被破解的可能性(因为用USB口传输时无法加密,完全可以截取)。9000次的是用了USB2.0?胡说八道!cy7c63743只支持USB1.1,只有12MHZ的内部晶振,如何上到480Mbps???

4、为什么几个鼠标都用同样的2051/cy7c63743,表现却不一样?

  这就看个厂家各自的软件功力了。看2051的白皮书,可以找到一个很基本的例程,编译固化后,鼠标可以有最基本的功能。但如果拿来就这么用的话,移动太快,超过2051的极限,指针绝对就飞了。就像很多山寨货一样。如果下点功夫,在程序里加点判断条件,如果两次读数差别太大(比如超过了2051的极限值),就可以认为从CMOS/DSP得到的信号已经不可靠。接下来怎么处理?想简单的话,可以把这次的读数废弃,计数直接清零。结果就是鼠标移动了指针没动,停顿丢祯了。丢祯比飞稍好,起码不用到处找鼠标指针了。如果再下点功夫,设计一个复杂的算法,对读数进行补偿,从而推算正确的移动方向,鼠标是实用性就能大大的提高。而这种算法的编程可不是那么容易的,其详细构成大概也是各大厂商的机密吧。双光头的极光飞貂也是使用了这个概念,只不过是用第2个光头的数据来对第1个的数据进行补偿。(以上纯属推测,可能和实际情况有出入)。

5、CPI可自由切换是如何实现的?

  标称800CPI的CMOS/DSP芯片每移动一英寸产生800个脉冲信号(请参考2051白皮书)。接口芯片实际是对CMOS/DSP产生的脉冲信号进行计数并处理后,转换成USB信号输出,如果在转换成USB信号输出前将结果再处理一下,加减乘除一番,就能获得不同的CPI值了。特别是乘2除2这样的计算在接口芯片这样的单片机上是很容易实现的。学过汇编的人应该记得,乘以2最简单的方法是把被乘数向左移动一位,除以2就是向右移一位就可以了。所以800CPI转200、400、1600以至于3200都是只要一两条汇编指令就可以完成的。而800CPI转1000CPI这种小数倍的乘法就要复杂得多。所以某个品牌的鼠标1000CPI的前代还是用硬件来实现的,1600CPI的这一代绝对是对接口编程来实现的,只要加一句移位指令就成了,太简单了。且慢,不是还有什么16位的数据传输吗?

6、16位数据传输是个什么玩意?

  先来看看这个微软的windows标准数据结构


http://www.microsoft.com/taiwan/whdc/hwdev/tech/input/5b_wheel.mspx#top

  我们可以发现,X,Y的位移值都是8位二进制数(8bit),换算成十进制每次最高能表示256个脉冲,125hz的最高usb口采样率,一秒能表示多少个脉冲?
256(脉冲/次)*125(次/秒)=32000(脉冲/秒)

那么800CPI表示800脉冲/英寸,40英寸/秒的鼠标一秒能产生多少个脉冲?

800(脉冲/英寸)*40(英寸/秒)=32000(脉冲/秒)

也就是说标准的数据结构最高只能使用于800CPI、40英寸/秒的鼠标。

而1600CPI、40英寸/秒的鼠标每秒产生

1600(脉冲/英寸)*40(英寸/秒)=64000(脉冲/秒)

用windows标准的数据结构根本无法表示,溢出了!怎么办?改数据结构,增加数据位长。实际上只需要加1bit也就是总共只要9bit就能够表示64000脉冲/秒了,为什么会有16bit的数据?因为从现在的驱动都是32bit的,从编程角度来看,加1byte比加1bit的程序来得简单,而且16bit比9bit要好看多了,何乐而不为呢?不过上面那个windows标准数据结构必须要遵守,不然标准驱动无法使用,鼠标插上必须马上装驱动,这样的话还要另接一个鼠标来操作,好傻!所以就算是16bit也是在标准数据结构的后面再加2个8bit,不能算真正的16bit数据。

e121771版权所有,转贴请保留,欢迎讨论指正。

全文完


本文内容导航
   · 第1页:
文章总页数:1 当前页数:1
出处:0
是否匿名
社区用户登陆
热门文章
·评测:WinXP SP1与SP2的性能对比
·音箱教学:看看侃侃之R1900T-III
·网络游戏利大于弊还是弊大于利?
·决战:两大顶级平台的碰撞
·惊人:电脑卖场你的暴利在哪里?
·绝对硬件:时尚流行,新奇实用!
·优派VP171 液晶显示器大降1000元
·月月评刊论网:天天上网月月看报
·惊喜399 台电512M闪存竟是USB2.0
·好事成双:显卡SLI技术全面探索

更多内容...

焦点新闻
·软件:显卡测试软件新品今日再出
·超强:美国陆军将在枪械上安装DC
·手机:儿童手机出现引起专家注意
·细看:哪些明星做品牌形象代言人
·强机:不关机也可更换电池的手机
·创新:新音箱市场开卖好象游戏机
·选择:入门级电脑处理器选什么好
·微软:强硬手法推销SP2 让人气愤
·华硕:献礼奉献最便宜的 nForce2
·华硕:成功破解Prescott P4 倍频

更多内容...

=相 关 内 容=
索尼:发表全新的机器娱乐型AIBO狗
奇怪:Intel主板也开始支持超频
威盛:宣布已经开发出64位处理器
创新:新音箱市场开卖好象游戏机
创新:发表笔记本专用的扩展声卡

=推 荐 评 测=
向往:让创新带你体验生活的自由
=推 荐 新 闻=
索尼:发表全新的机器娱乐型AIBO狗
创新:新音箱市场开卖好象游戏机
危险:戴尔要召回99万电源适配器
细看:哪些明星做品牌形象代言人
异形:索尼AIBO最新产品ERS-7M2
手机:儿童手机出现引起专家注意
=其 他 推 荐=
惊喜399 台电512M闪存竟是USB2.0
网络游戏利大于弊还是弊大于利?
绝对硬件:时尚流行,新奇实用!
侃侃论坛:泡尽论坛,知尽天下!
音箱教学:看看侃侃之R1900T-III
决战:两大顶级平台的碰撞
=倚天数码社=
=倚天社=
=技术论坛=
倚天硬件门户网络电脑杂志——时尚硬件融入生活!
广告业务 | 网站导航 | 关于我们 | 投稿信箱 | 联系合作 | 联系网管 | 隐私保护 | 版权所有 | 京广字第0436号
 
  北京捷羿天翔科技有限公司 Copyright (C) 1997-2004 ITdoor.net All Rights Reserved   |  京ICP证030778