首页 | 新闻 | 评测 | 技术 | 专栏 | 访谈 | 论坛
音箱耳机 | 键盘鼠标 | 显示器 | 其他设备
  您现在的位置: 首页 > 技术  
 
转贴强文!对目前光电鼠标技术几个疑点的讨论!
类型:技术 作者:e121771 日期:2004-10-6 20:48:49 来自:



结要:……



    对鼠标技术颇有研究的e121771网友今天在几个相关论坛上发表了一篇技术性极强的文章,对目前光电鼠标技术几个悬而未决的疑点问题作了非常深入的探讨。虽然对其中的结论我们并不全部赞同,但这里的讨论的确为从事此项技术研究的网友提供了新的思路。全文转贴如下——

通过对厂家技术白皮书的研究而对光学鼠标的一些悬念的解释

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

    2051的白皮书 
   
http://cp.literature.agilent.com/litweb/pdf/5988-8477EN.pdf 
    cy7c63743的白皮书 
   
http://www.cypress.com/cfuploads/img/products/cy7c637xx.pdf 

    CMOS/DSP芯片大家谈得比较多,好像它就决定了鼠标性能的一切,因此所以USB/PS22的接口转换芯片就成了盲点。那么现在就来谈谈这个东西。 
    我曾经以为这种接口转换芯片只是一个把数据流转换成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次的,没有变化。具体的效果也无法确认。 

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

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

    4、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位的数据传输吗? 

    5、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数据。

    对以上文章的大部分内容我们深表赞同,但对部分内容如IE4为何适应性不如IE3等持一定的保留意见。本文在相关网站上也引发了多番的讨论,其中以小熊键盘鼠标论坛的讨论最为深入,有兴趣的朋友请参看原贴

     转载与讨论请与原文作者联系。

 
   
Google

最新文章
欧纬TL-1迷你音箱简评
中国多媒体音箱十五年(第二部分:辉煌的年代,噩梦的前夜)修订版
惠威M200MKIII豪华版,先听为快
漫步者R1600T 08版定性试听
我所知道的轻骑兵U6的历史
肾虚和伟哥——我所听过的漫步者R1600T 08
轻骑兵彩铃音响U6评析
聊聊索威“玻璃音箱”
麦博电器关于原北京代理发布虚假消息的声明
精准定位,稳健发展,麦博北京分公司在期待中成立
麦博精灵联姻抢楼活动圆满结束
奋达归来,曾老师藏品稀罕物一谈
抗震救灾献爱心,麦博公司向灾区人民捐建希望小学
时尚迷你音箱,麦博倾心精灵MD123
经典感觉,麦博08版B-73书架箱更时尚

 
Copyright © 2004 Inc. All rights reserved. 版权所有