关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 用于NIOS II 嵌入式处理器系统的鼠标控制器设计

用于NIOS II 嵌入式处理器系统的鼠标控制器设计

作者: 时间:2009-03-26 来源:网络 收藏

q是从鼠标收到的数据,它的q[0],q[11]等是起始位,应为逻辑0;q[10],q[21]等是停止位,应是逻辑1;q[9],q[20]等为奇偶校验位。在验证数据帧状态下根据测试得到的packet_good信号值确定是跳转到等待状态还是输出数据帧状态。

该鼠标控制器缺省状态为标准PS/2模式,要进入微软的Intellimouse只需向鼠标发送前文(见1.2)所提到的命令序列,并将msmode置为逻辑1即可。

2、鼠标控制器的验证

我们在一个使用Altera公司的Cyclone系列[5]的 EP1C6Q240C8 芯片的开发板上对该设计进行了验证。在NiosIDE集成开发环境[6]中我们编写了一个测试程序。其部分代码如下所示,它的作用是等待鼠标事件的发生并打印鼠标事件信息。

while (wait_rx_ready(0,PS2_READY,PS2_MOUSEDATA,data) 0);
if ((data PS2_RBUTTON)){
printf(RBUTTON......n);}
else if ((data PS2_LBUTTON)) {
printf(LBUTTON......n);}
else if((data PS2_MBUTTON)) {
printf(MBUTTON......n);}
else {
xdata = (data PS2_XMASK) >> PS2_XSHIFT;
ydata = (data PS2_YMASK) >> PS2_YSHIFT;
zdata = (data PS2_ZMASK) >> PS2_ZSHIFT;
printf(x: %d, y: %d, z: %dn, xdata, ydata, zdata);
}

我们测试了一个带滚轮的双飞燕光电鼠标和一个不带滚轮的飞利浦的机械鼠标。测试中,当我们分别按下鼠标左键,右键,及中键;或在水平方向,竖直方向移动鼠标;或者转动滚轮时,程序都会在NiosIDE的Console窗口连续的打印出相应的信息。满足了我们支持标准PS/2(IBM PS/2)和微软的Intellimouse两种模式的要求。结果证明,本文所提出的设计是成功的。

3、结束语

本文介绍了一个用于Nios的鼠标控制器的设计,支持标准PS/2 鼠标和微软的Intellimouse。相比于其他系统中采用另外增加一个单片机(如一般采用的Intel8042或AT89C51[7]等)作为鼠标控制器来说,减少了系统成本,也减少硬件布板布线的复杂性,可以在Nios II中广泛使用。

该设计最大的创新点在于增加了读取鼠标响应的功能,并实现了主机向鼠标发送命令,在此基础上实现了对微软的Intellimouse的支持,相比参考文献[8]中提到的2D鼠标控制器有较大的改进。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭