高速低延时PCB

摘要

本文分两部分,第一部分对高速低延时PCB做了点介绍,第二部分是纯粹的自卖自夸。

  • USB 2.0 HS:USB 2.0 High Speed, USB 2.0 高速设备
  • USB 2.0 FS:USB 2.0 Full Speed, USB 2.0 全速设备
  • K:一般是指1024,文中为了简单,指的是1000
  • ms: 毫秒,0.001秒,千分之一秒
  • us: 微秒,0.000001秒,百万分之一秒
  • HZ:赫兹,频率单位,次数/秒,1 HZ的意义是1秒一次

高速低延时PCB

目前随便找一款量产的电竞级键盘,会反复被提到的两个指标是

  • 回报率
  • 扫描频率

那么,虽然很多人一提到这个指标就津津乐道,但是这玩意有啥用,玩键盘需要玩这个指标嘛? 说来话长,还是得先得从USB协议说起。对键盘来说,目前能用到的主流是USB2.0,由于USB3.0 以上标准的设计和实现过于复杂,无论是现在还是将来,基本不会有人在键盘上支持usb3.0协议, 当然,也没有必要,除非是想集成一个hub。

就USB2.0而言,标准里定义了:

  • 高速(HighSpeed):最高达480M BPS
  • 全速(FullSpeed):最高达12M BPS
  • 低速(LowSpeed):最高1.5M BPS

由于主控的限制,现在的客制化键盘,基本都属于全速(FS)USB 2.0 设备。

键盘归类于USB标准中的HID类设备,这个设备的特点是采用中断的方式传输按键信息。所谓的中断,在USB 这个标准中就是主机会定时向键盘查询按键信息。这个定时的频率其实最终决定了回报率的上限。对于USB 全速设备而言,主机的固定中断的是1K HZ,即1毫秒(ms)。所以对于只支持到USB2.0全速设备的键盘,回报 率的上限最多就是1K HZ。而对于USB高速设备(USB HS),主机的中断上限是8K HZ(125us),所以超过 1K HZ回报率的键盘必须要用上支持USB 高速接口的主控,比如海盗船 K70就用了一颗NXP的LPC43系列的芯片 来达到最高8K HZ的回报率。

所以,对于需要超过1K HZ回报率的键盘而言,首先你得使用一颗支持USB HS的主控芯片。当然,对于按键延时 还有很大的一个影响因素就是键盘的扫描频率,这个数值是具体含义是在多小的时间间隔内能对整个键盘的按键进行一 轮扫描。扫描的越快,就越能反应按键的变化情况,从而在整体上降低键盘的延时。

那么回报率和扫描频率是不是越高越好?这个问题其实有点复杂,单独的提升某项指标对键盘整体延时的提升并不一定是线性 关系。高速的回报率对键盘的主控性能有极大的影响,对键盘主控性能的影响又会影响到主控的扫描频率。从而可能会出现 强行提升某个指标后反而导致整体延时增大的情况。那么回报率和扫描频率可能存在什么关系吗?能不能有理论可以指导我们去 正确的实现(抄)。这时候就可以祭出伟大的香农老爷子的采样定律(采样频率需要是信号频率的2倍以上)了。香农采样定律是个非常有用的 东西,可以日常指导我们做出一些决策,对这个定律一个简单但不一定准确的解释就是当你要测量一个物体时,你手里的测量工具的 精度需要是你要测量的精度的两倍。举个例子:你想给你的键盘做个手托,一般我们只需要精确到毫米级,萌新 玩家会拿把毫米级的钢尺来测。但是等你测出来发给商家,等发货后一般会发现前高总会存在毫米级别的误差,有些时候甚至更大。 一般这时候就可以尽情的吐槽不良商家了。但是呢,有没有可能你的做法的根子就是错的呢?拿毫米级的测量工具,是测不准毫米级别的 精度的。老司机这时候就会掏出把游标卡尺,会对你进行一番教育。毕竟,显微镜,游标卡尺,电子秤是老司机们玩客制化键盘的三大必备配件。

拿回报率和按键扫描频率来看,按键扫描频率反应的是按键变化,而回报率呢,可以看作是对这个按键变化的采样, 所以按香农采样定律,回报率需要是按键扫描频率的2倍及以上,超过两倍当然也没问题,但是从理论上说,这纯粹 是在做无用功而已,不过问题不大,电费还是便宜的。

所以,要提升回报率(这个很简单,只要在USB描述符里填一个数字即可,但是,有没有用就不知道了), 首先你得提升按键扫描频率,这个就没这么简单了。所以呢,以后碰到号称1K HZ回报率的键盘,你可以问问:你的 按键扫描频率能到500HZ吗?为什么是500,嗯,香农老爷子在差不多百年前就说了:2倍关系。

这里还有一个小小的问题是按键的抖动,目前主流的是MX轴,我能查到的数据就是cherry的规范。非speed系列的,也就是红,青,茶,黑。 樱桃给的数据是小于5MS。这应该是主流轴厂都能支持到的数据。这个数据其实也在一定程度上决定了扫描频率的上限, 一颗轴按下到达稳定状态的保守时间是5ms,对应的也就是最多200HZ。因为在这5ms以内,你使劲扫描也没用欸,都是 无效数据。所以通常回报率在400HZ也就够用了,当然,标个1K也没问题,毕竟指标好,高大上。去抖也可以在算法层面进行一定的优化, 比如非对称去抖算法。但是轴的物理特性如此,很难有更大的扫描频率的提升,做事情还是需要符合事物的客观规律。 所以,追求高扫描频率的第一件事,就是换轴。cherry的speed轴,这个轴在规格书上的时间小于1ms,所以用 speed系列的轴,可以做到1K HZ的按键扫描频率,这时候,使用2K HZ的回报率就成为一件有意义的事情。

扯了这么多,其实这个事情还没说干净,但是剩下的事情就是过于复杂了。因为键盘的延时是人的感受,简单说这是一个 交互系统。人脑下发指令给手指,手指按压轴,键盘扫描变化,主机轮询变化,操作系统拿到按键数据,发送给当前激活的应用。 应用是个word的话,嗯,文档上会显示一个字,人眼看到这个字,传给大脑。大脑:MMP,我打的字出来了! 这一个过程才是人对延时的感受。这里有一个理论数据,对于一个交互系统而言,从输入到输出,能控制在100ms 以内就算赢。至于这个100ms哪里来的,我也忘记原始出处了。人在使用键盘处理应用的过程就是一个典型的交互系统。

目前,键盘能解决的只是里面一丢丢东西,手指按下,数据发送给电脑。剩下的基本无力回天。

好了,说了半天,广告时间到。

ME高速低延时热插拔PCB

最近做了几片ME的PCB,指标如下:

  • USB2.0 高速接口
  • 回报率 2K HZ
  • 扫描频率 1K HZ
  • 自动全键无冲模式
  • 热插拔,热插拔,热插拔

好吧,除了热插拔,其它反正看看就行了,但是呢,现在这个阶段,能做到2K HZ的不多。