作者:FPGA Zone
该项目开源了一个基于FPGA的机械键盘,它可以并行地为每个按键实现输入和去抖动功能,使用STM32F723 MCU以8Khz的频率与主机进行480Mb/s的USB高速通信,以实现尽可能低的延迟。
Nyan Keys - 硬件
Nyan Keys的目的是设计出较低延迟的机械键盘,它可以使用任何Cherry兼容开关按键,例如Kailh和Gateron。
硬件灵感来自Wooting 60HE和Pok3r 60%机械键盘。具有Wooting的性能特征,同时可以自由使用Pok3r的任何现成按键。
超低延迟
Nyan keys按键响应速度很快为30us,FPGA和 MCU之间的SPI总线以12.25Mhz频率运行。
作者对延迟做了简单测试,这是从按键到设置下一个USB中断之间的总时间。在最坏的情况下,即在请求最后一帧并发送到主机后立即按下该键,这将增加30us延迟,然后将其加到USB中断传输的125us延迟中,得到最终延迟约为155us。这比任何基于USB 2.0 FS的键盘(当前市场)快6.5倍,后者的中断约为1ms,并且还必须加上按键矩阵扫描的延迟。
FPGA(Lattice Ice40HX4K)
Nyan Keys的亮点是使用FPGA来并行处理按键的去抖动逻辑和序列化。其优势在于能够将每个按键开关连接到IO引脚,这种设计大大增加了布线复杂性,但每个开关都不需要额外的元件,例如二极管。
同时,使用FPGA可以为每个按键(开关)提供单独控制模块,该模块由一个 8 位定时器组成。计时器总是计数到255的值,一旦计数器达到比较值,该键就可以更改其状态,计时器将重置为0。当计数器是非255的任何值时,无法更改开关状态,这就是其防抖机制。
STM32F723(ARM MCU - USB 2.0 HS)
为了方便主机和设备(键盘)之间的接口,选择了 STM32F723。主要原因是板载USB2.0 HS PHY,它允许通过适用于Windows、Mac 和 Linux 的内置c驱动程序从主机进行8Khz中断轮询。与目前市场上的任何类似产品相比,其主要优势是具有0.125 us的中断间隔。
USB 2.0 HS还具备另一个优势,即中断传输的帧数据量更大。这意味着不同操作系统之间可以没有兼容性问题,同时还兼容引导模式。
NyanOS(NOS)- 固件
基于Nyan Keys的硬件在NyanOS的系统上运行。这不基于任何RTOS,而是用C语言编写。主要是为了避免任何可能降低性能的不必要开销。NOS主要承担以下任务,大多数任务都作为中断和回调处理:
USB 2.0 HS设备;
USB 串行控制台;
EEPROM Master - FPGA bitstream存储;
FPGA bitstream 加载 - SPI Master;
LED状态指示等;
另外作者还设计了Nyan GUI(图形用户界面),以简单有效的方式配置和控制NyanOS。
项目链接
有关该项目的详细硬件设计文件和软件源代码已经在GitHub上开源:
本文转载自:FPGA Zone微信公众号