基于FPGA的多波形发生器的毕业论文5
发布网友
发布时间:2024-03-02 17:09
我来回答
共1个回答
热心网友
时间:2024-06-06 00:41
基于FPGA的智能玩具设计
摘要:本设计介绍了一种采用硬件描述语言描述并用FPGA实现LED拼图玩具控制软件及智能判断部分的设计方法。本设计结合了LED动态显示、无线通信、红外通信等相关知识,运用VHDL语言描述了一个具有智能型、趣味性和智力开发性的LED拼图玩具。设计平台为Altera公司的QuartusII5.0软件,采用Altera公司的Cyclone系列FPGA实现。本设计中的无线发射与接收部分采用集成模块来实现,以此来简化设计。
本文详细介绍了LED拼图玩具的设计过程,包括同步信息、无线串行发射与接收、同步时钟、地址信息、抗干扰能力、系统自动清零设计、红外数据传输、自主判断、随机等式部分的设计与实现。对深入研究电子玩具具有重大的意义。
关键词:FPGA;VHDL;无线通信;红外通信;随机等式
1 LED拼图玩具
经过玩具市场调查表明,智能型玩具是今后儿童玩具的一个重要发展方向,而将智力开发和趣味性加入智能型玩具将会受到更多家长们的厚爱。LED拼图玩具集合了趣味性、智力开发性、智能型。
趣味性:它的趣味运算包括了加、减、乘、除(还可以扩展为英文字母的识别和英文单词的拼接),它由5个子模块组成(可以做到更多个)。
智能型:LED拼图玩具分为系统主机和子模块,系统主机通过无线发射模块随机的发送一组等式到各子模块,各子模块通过自身的红外传感器将数据传送到系统主机进行判断。如果正确系统主机将再次通过无线发射模块发送“OK”字符到每个子模块,此时系统主机上的LED数码管显示“R”字符,标志着拼图正确;如果判断结果不正确则无动作。
智力开发性:按下系统主机的发送键后,所有子模块上所显示的为一个打乱了的等式,此时小孩子通过观察、比较、判断将子模块摆放成一个完整的等式。游戏的过程非常适合刚刚开始学习简单算术的儿童,游戏可以引导他们进行逻辑判断,改变他们的传统思维方式,有利于小孩子智力的开发的同时增强了大人与小孩子的情感交流,减少彼此之间的代沟,有利于小孩子的健康成长。
2 设计方案论证
一个好的设计少不了好的设计方案,一个好的设计方案少不了方案的多次选择与论证。
2.1基于51系列单片机的设计方案
51系列单片机体积小、成本低,但是对设计人员自身的编程水平要求较高,也不便于信号的数字处理实现,程序运行时串行处理,速度较慢,不便于高速环境中的应用。51系列单片机内部处理数据宽度为8位,对数据处理有一定的限制,给设计工作带来了不便。
2.2基于FPGA的设计方案
FPGA均支持VHDL语言,它不需要编程人员非常熟悉器件内部结构,只要熟悉VHDL语言即可对FPGA进行操作。VHDL程序采用并行处理,从现而提高了程序的处理速度,提高了器件的运行速度。VHDL语言语法严谨,描述的硬件电路稳定性好。故选用此方案进行LED拼图玩设计。
3 方案设计
LED拼图玩具的设计,采用载有ALTEAR公司的Cyclone系列芯片EP1C3T144C8N竞赛板(以下简称竞赛板)进行LED拼图玩具的设计[1][2]。异步串行无线发射与接收部分,采用集成芯片FS1000A和PCR1A实现。红外数据传输采用普通的红外发射管与红外一体化接收器HS0038实现,显示部分采用8×8点阵和七段数码管实现,发送按键用普通按键实现。软件部分均采用VHDL语言描述,软件描述平台为QuartusII5.0[3][4]。
3.1设计的总体框图
4 系统主机设计
系统主机工作流程:按下发送键后,系统随机的组合成一组等式,程序将这些数据加上同步信息和地址信息,并在数据中间加入隔离信息后进行并串转换,通过IO输出口直接驱动无线发射模块,将数据发射出去。子模块的数据信息通红外线传输到系统主机的红外接收器,接收器将数据送到系统主机,程序将其数据进行算术判断,判断正确时通过无线发射模块反馈到子模块。
4.1无线通信数据格式
在无线通信中,为了更好的区分数据信息与干扰信息,在发射过程中加入同步信息。为了保证同步信息的唯一性,特在地址信息和字符信息中加入了一个“0”。地址信息采用4位编码,共16个地址,一共可以做16个子模块,字符信息包括“0~9,+,-,×,÷,OK”一共16位,所以也采用4位编码,如果想扩展出英文字符,可以采用5位甚至更多位编码。
4.2无线发射电路
为了使电路在接收时更有效的识别数据,采用的帧格式为:7位开始位“0111110”加上9位数据位,由于传输数据位数少,故不设停止位。数据的无线发射采用无线发射模块来实现,不需外围电路,这样简化了设计过程,提高了设计效率。为了节约成本采用单工通信模式。
4.3红外数据传输格式
红外数据传输格式与无线发射过程中的数据格式相同,采用“0111110”信息作为同步信号。
4.4红外通信协议
采用单工通信模式。系统通过红外发射器将本机处理过的数据发送出去,采用“发—停—发”的发送形式,以方便系统的自主判断功能实现。红外接收器的工作方式为连续接收前一个子模块发送过来的红外数据。频率采用100Hz。
4.5红外数据发射
HS0038的工作频率为38KHz,那么必需将发射信号调制在38KHz的载波上,数据信息取反后经过与门电路实现红外数据调制,调制后的数据通过竞赛板的IO脚输出驱动红外发射电路[5]。
4.6系统主机控制原理
考虑子模块所显示的信息如果按运算规则直线摆放,红外线将20位(暂时只考虑5个子模块,每个子模块的显示数据为4位)显示数据信息不断的传送给系统主机。以“1+2=3”为例,这20位数据的0到3位存放的是数据信息“3”的代码,4到7位存放在是数据信息“=”代码,8到11位存放在是数据信息“2”代码,12到15位存放在是数据信息“+”代码,16到19位存放在是数据信息“1”代码,将这五个代码分别存放到不同的寄存器中。检测这些寄存的算术规律,如果正确系统主机发射出“OK”字符,让所有的子模块均显示出“OK”字符,自身LED数码管显示“R”字符,标致着本次游戏结束。反之,子模块处于不正确的运算规律下,不发出任何控制信息。
4.7 随机等式发生器
随机等式发生器的实现方法为:设置两个频率不同的高速计数器:一个为0到9的加法计数器,另一个为9到0的减法计数器,且计数速度非常高,当被控制停止时,比较两个计数值,较大的那个值作为和,另外一个值作为加数,从而可以计算出被加数,这样一个完整的等式就这样得到了,且随机得到[6]。
5 子模块设计
子模块工作流程:每个子模块上电后均时时检测系统主机的发射信息,检测到同步信息后,将其数据接收,程序接收到数据后,首先进行地址检测,符合自身地址信息时将地址信息位后面的数据信息转存到另一个寄存器,否则不转存地址信息后面的数据信息,在这其中必须去除无线发射帧格式中的隔离信息。程序根据数据信息寄存器中的值查找字符表,并显示出其字符。每个子模块的显示数据通过红外线传输给下一个子模块,最后一个子模块将数据传输给系统主机。每个子模块接收上前一个子模块传送过来的数据信息,将其串行数据进行串并转换后进行处理,处理完成后附加上自身的数据信息,经过转换后驱动红外发射电路。在此流程中需要解决的关键技术为:红外通信技术、无线接收技术。 5.1串行接收电路的设计
为提高接收数据的准确性,减少误码率,对数据的处理如同同步信息的检测采用 4次抽样,对4次抽样结果进行判决:如果4次抽样中至少有3次为高电平,则判决为高电平,否则为低电平[6]。
5.3 无线接收、红外数据流程框图
5.4 红外数据传输原理
红外数据在本机中之所以被采用是因为它具有近似直线的传播功能,不能穿透障碍物。LED拼图玩具是由5个以上的正方形盒子组成,将每个盒子的左右两则分别装上红外接收器与红外发射器(均向外安装),由于盒子本身对红外线具有隔离作用,防止了子模块子之间红外线的串扰问题,保证数据传输的正确性。如果将所有的子模块子并行摆设,那么正好从左到右第一个子模块的发射器对准第二个子模块的接收器,以此类推,最后一个子模块的发射器对着系统主机的红外接收器,这样就可能通过红外线直线性将每个子模块的显示数据按规定的顺序无线传送给系统主机。
6 结语
本设计利用VHDL语言描述了一个LED拼图玩具,并借助由美国Altera公司生产的Cyclone系列芯片中的EP1C3T144C8N(10万门)组建的竞赛板实现。能够实现一发多收的无线通信模式,能够一个方向判断等式的正确性,因此不能区分等号的相反摆放,同样也不能区分加号的四个方向摆放,有待进一步完善。
参考文献
[1]王诚,范丽珍等.Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005: 7-115-13500-5.
[2]王诚,范丽珍等.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005: 7-115-13500-2.
[3]李洪伟,袁斯华.基于QuartusII的FPGA/CPLD设计[M].北京:电子工业出版社,2006.
[4] Altera Corporation. Quartus II Version 5.0 Handbook [DB/OL].
http://www.altera.com.cn/support/software/quartus2/design_flow/des-qms-q21.html, 2005-04/2006-03.
[5]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2004: 7-5606-0534-6.
[6]Thomas L.Floyd.Digital Fundamentals[M].北京:科学出版社,2002: 7-03-010134-0.