作者:无锡工艺职业技术学院 郝家坤 鲍建 樊云云
指导教师:蒋伟 钱仁君
作品简介
1.开发背景:
随着社会科技的发展以及环保的需求,现在各行各业逐渐向无纸化时代进军,如办公无纸化,无纸实训室等等。所以现在美术专业的学生,小孩子的涂鸦学画画等,都转向了无纸环保的电子画图板。而现在市场上电子画图板都是在电脑上安装画图软件来实现的,而电脑一来昂贵,二来笨重不易携带,所以基于这种考虑,本作品设计了基于FPGA的电子画图板,弥补了电脑画图板的缺陷,特点是便携易带,成本低廉。由于是纯硬件设计,所以响应快,稳定性高。使用时只要接上鼠标和带VGA的显示器就可以工作了。
2.结构说明:
如图所示,本作品的硬件结构分为三大部分:FPGA开发板,带有VGA接口的显示器以及ps/2口的鼠标。
而FPGA的内部硬件VHDL语言编程分为四个部分:第一部分是鼠标驱动模块,FPGA来检测鼠标的位置以及左中右键的按键信息;第二部分是显示屏的VGA显示模块,此模块接收显示颜色的位置和信息,并通过VGA硬件接口用于显示。第三部分是存储模块:分为ROM和双口RAM两个部分。ROM用于显示初始界面的“无锡工艺学院”六个字;双口RAM用于实时记录画图的数据信息,并将其颜色信息传送给VGA接口显示模块。第四部分是控制和算法模块:此模块一方面协调各个逻辑程序的运行,另外通过巧妙的算法对读写存储地址的运算,解决了FPGA Spartan 3E-100的资源不足,基本满足了对整个屏幕的画画或写字。
3.功能与使用说明:
本作品是基于FPGA开发板,外围扩展了鼠标和显示器的基础上,设计了一款电子画图板。该系统分为两个模式,可由鼠标的中键进行切换。第一个模式为初始界面的展示,在显示屏幕上显示“无锡工艺学院”六个字,且可以跟随鼠标而移动,并通过鼠标右键进行颜色变换。第二模式为电子画图板功能,通过按住鼠标左键在显示屏上进行绘图或者写字,还可以通过FPGA开发板上的SW开关切换来随时进行擦除和修改。
平台选型说明
FPGA开发板(以Xilinx Spartan-3E 系列芯片为控制核心)
设计说明
1、原理图:
2、设计原理:
本作品的硬件结构分为三大部分:FPGA开发板,带有VGA接口的显示器以及ps/2口的鼠标。而FPGA的内部硬件VHDL语言编程分为四个部分:第一部分是鼠标驱动模块,FPGA来检测鼠标的位置以及左中右键的按键信息;第二部分是显示屏的VGA显示模块,此模块接收显示颜色的位置和信息,并通过VGA硬件接口用于显示。第三部分是存储模块:分为ROM和双口RAM两个部分。ROM用于显示初始界面的“无锡工艺学院”六个字;双口RAM用于实时记录画图的数据信息,并将其颜色信息传送给VGA接口显示模块。第四部分是控制和算法模块:此模块一方面协调各个逻辑程序的运行,另外通过巧妙的算法对读写存储地址的运算,解决了FPGA Spartan 3E-100的资源不足,基本满足了对整个屏幕的画画或写字。
本系统的设计从硬件上分为2个部分:分别是鼠标和显示器的硬件和驱动,下面分别来介绍:
2.1鼠标原理:
标准的PS/2鼠标,支持下面的输入X(左右)位移、Y(上下)位移、左键、中键和右键鼠标以一个固定的频率读取这些输入,并更新不同的计数器,然后标记出反映的移动和按键状态。标准的鼠标有两个计数器,保持位移的跟踪,X位移计数器和Y位移计数器。可存放9位的2进制补码,并且每个计数器都有相关的溢出标志,它们的内容连同三个鼠标按钮的状态一起以三字节移动数据包的形式发送给主机。位移计数器表示从最后一次位移数据包被送往主机后,有位移量发生。
当鼠标读取它的输入的时候,它记录按键的当前状态,然后检查位移,如果位移发生它就增加(对正位移)或减少(对负位移)X和/或Y位移计数器的值。如果有一个计数器溢出了就设置相应的溢出标志。
标准的PS/2鼠标,发送位移和按键信息给主机采用如表1的3字节数据包格式。
根据鼠标工作的模式来处理的数据报告有四种标准的工作模式。
●Reset——鼠标在上电或收到“Reset”(0xFF)命令后进入Reset 模式
●Stream——这是缺省模式在Reset执行完成后,也是多数软件使用鼠标的模式。如果主机先前把鼠标设置到了Remote模式,那它可以发送Set Stream Mode(0xEA)命令给鼠标,让鼠标重新进入Stream模式。
●Remote——在某些情况下Remote模式很有用可以通过发送Set Remote Mode(0xF0)命令进入。
●Wrap——除了为测试鼠标和它的主机之间的连接外这个模式不是特别地有用。
PS2通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把clock(时钟脚)拉到低电平。如果是PC机和PS2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS2键盘发送数据,而PS2键盘则不会抑制PC机发送数据, 也即主机总是在总线上有优先权。一般两设备间传输数据的最大时钟频率是33KHz,大多数PS2设备工作在10~20KHz。每一数据帧包含11~12个位,具体含义如表2所列。
表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。
下面给出设备到主机的通讯和主机到设备的通讯的时序图:
2.2 VGA显示接口原理
VGA显示图像原理:常见的彩色显示器,一般由CRT(阴极射线管)构成。彩色是有R,G.B(红:RED,绿:GREEN,蓝:BLUE)三基色组成。显示是用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有银光粉的荧光屏幕上,产生R,G,B三基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步,扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。
它的行场扫描时序如下面示意图所示。现以正极性为例,说明CRT的工作过程:R、G、B为正极性信号,即高电平有效。当VS=0,HS=0时,CRT显示的内容为亮的过程,即正向扫描过程约为26us。当一行扫描完毕,行同步HS=1,约需6us,期间,CRT扫描产生消隐,电子束回到CRT的左边下一行的起始位置(X=0,Y=1);当扫描完480行后,CRT的场同步VS=1,产生场同步是扫描线回到CRT的第一行第一列(C=0,Y=0处,约为两个行周期)。HS和VS的时序图。T1为行同步消隐(约为6us);T2为行显示时间
2.3 算法部分
由于如果要单色显示整个屏幕的话,需要640*480=307200的储存位数,而我们basys2上的spartan 3-100的FPGA是不够的。为了在整个屏幕上都可以画画,我们的解决方案是,通过算法,将相邻的四个点作为一个点来进行读和写:首先将鼠标发出的位置信息转化为坐标(Xpos,Ypos),然后将两个信号定义为整型,利用整型信号做除法运算之后只有整数没有小数的特性,将(Xpos,Ypos)都除以2,这样屏幕上的上下左右四个点的坐标都变为了同一个值,然后再转化为地址去写双口RAM,这样就节省了4倍的存储空间,大大的节约了FPGA的资源。
3、设计方案:
如原理图所示,DispCtrl是显示模块,用于接受鼠标的位置信号,并且从RAM和ROM读出数据通过RGB端口来在显示屏上进行正确的显示;MouseRefComp是鼠标控制模块,作用是将鼠标的位置信息,左中右键的按键信息接收过来,并且形成事件触发,传到显示模块以及整体模块。而在DispCtrl显示模块中,disprom_core是rom模块,里面存储的内容是用于在初始界面上显示“无锡工艺学院”六个大字。print_core是双口RAM模块:当工作在写字板模式是,当鼠标的左键按下时,负责将鼠标的位置翻译成RAM_A的地址,然后将对应的颜色数据对应实时写进RAM中。而显示模块实时读出RAM中的颜色数据,在屏幕上显示出来。而对于显示控制器来说,将存在存储器中的数据读出来在CRT显示器上显示。将图像控制模块分为这样几部分:二分频电路、VGA时序控制模块、存储器读出模块。其中二分频把50mhz时钟频率分成25mhz并提供给其它模块作为时钟;VGA时序控制模块用于产生640×480显示范围,并控制显示范围和消隐范围以及产生水平同步时序信号hs和垂直同步时序信号vs的值;存储器读出模块提供给ROM或双口RAM地址并按地址读出1位数据(颜色标识),然后得到R、G、B的值,并把R、G、B的值通过VGA接口传到CRT显示器。
作品特色
先进性:本作品内部实现完全由硬件搭建而成,使得系统对鼠标的响应非常快,并且以最快的速度在显示屏上显示出来。并且在FPGA系统中采用了非常巧妙的控制算法来计算对双口RAM的写地址,使得在给定的FPGA资源不足的情况下,基本可以在整个屏幕上画画或写字。
实用性:本作品功能为电子画图板,由于系统的主板体积小,功能强大,并且稳定性高,只要经过外壳包装后,可以取代昂贵而笨重的电脑做的画图板,完全可以做成满足市场需求的产品。消费对象可包括:艺术学校画图的学生,学画画的小孩等。
创新性:市场上的电子画图板都是基于单片机加上软件语言编程来设计的。本款作品是基于FPGA加上硬件设计语言VHDL来进行设计的,所以内部的全部是由硬件搭建而成,这样跟市场上的电子画图板比起来响应性更快,系统更加稳定。
系统演示视频:http://v.eepw.com.cn/video/play/id/2358