模拟智能扫地机的设计
学号:61010122
姓名:吴细老
1、 申请题目:模拟智能扫地机设计
n 题目,命题描述(5号宋体)
一. 扫地地图基本制作
1. 设定扫地范围地图,由键盘画图,随意画出一个任意形状图来作为扫地区域。画完图后,按下键后,扫描刚画出来的区域。将扫描所用的时间记录下来作为此次扫地的基本时间。这个时间可以用来自动的扫地机的关闭时间。
2. 测量环境湿度和温度,模拟方法是通过键盘直接设定环境温度和湿度,设定完成后自动形成一个系数,该系数用来控制扫地机的扫地速度,越脏扫描的时间越长。
3. 设定垃圾,障碍物和地上的污水。通过键盘方向随意摆放放置于地图中。。
二. 扫地控制(有人手动控制)
1. 由人控制键盘扫地机的运动,使扫地机驶向垃圾和水,避开障碍物,到达垃圾和污水时进行清扫。在这里机器是由人为控制方向的。其中清扫垃圾时,人为的设置清扫时间和强度。污水时,设置完成按开始清扫,在清扫的同时播放清扫画面。清扫完该垃圾后,继续逐行扫描。
2. 若在半路中卡到了死角,不能动弹时,扫地机自动报警。
3. 若半途中有事需要离开时,可以开启自动清扫功能,自动清扫有可以分为从当点开始扫描,也可以设置为从头开始清扫功能,这个依人而定
三. 自动扫地(无人控制时)
1. 自动记录扫地时间
2. 机器逐行扫描,若遇到障碍物,自动绕过去,若遇到垃圾和污水,能自动将其清除,并让扫地灯亮一次。
2、课题背景:
n 存在问题、应用背景
v 如何设计地图设置方案,并且将地图保存下来。
v 状态机的设计
v 通过控制键盘实现上下左右的移动.
v 动画的制作,用什么样的程序才能形成漂亮的动画。
v 扫描速度的控制的实现,利用本身所采集的数据来作用反馈与速度的控制
v 如何判断机器卡死
3、项目规划:
n 功能、指标、规模
功能:
1. 地图:利用键盘上下左右画地图
2 环境输入:利用上下键加减输入湿度以及温度
3 垃圾设置和污水设置:通过键盘方向控制移动动点放置垃圾以及污水的位置,并按下确认键确认垃圾摆放在该位置。
4 有人控制扫地模式:按下手动扫地键,并按上下左右键控制扫地机方向进行扫地
5 自动扫地模式:按下自动扫地键,开始出现自动扫地机的扫地亮点,并开始逐行开始扫描,并有着正确的轨迹
指标:
在8x8点阵板上显示扫地模块的大部分功能,并通过数码管显示温度及湿度的设置。数码管的显示和点阵板的显示能够及时准确的实现。
规模:
该程序的核心是利用了十多个二维矩阵进行存储点阵内容以及点阵的变化,各模块的独立操作以及相互衔接都是通过这种大容量矩阵实现的。程序基本将芯片所能的提供的门数量实用完,故再继续加功能不易实现。
n 面板(显示)、操作、规则
显示面板:8x8点阵板
操作面板:矩阵键盘
数码管:第一位表示键盘输入字,第二三位表示温度,第三四位表示湿度。
操作:
按下15键初始化键将上次模块记录继承过来,并将参考坐标初始化
|
n 输入、输出接口
键盘输入输出接口;
点阵板扫描、显示接口。
4、实现方案:
n 核心问题
v 如何设计地图设置方案,并且将地图保存下来。
v 状态机的设计
v 通过控制键盘实现上下左右的移动.
v 动画的制作,用什么样的程序才能形成漂亮的动画。
v 扫描速度的控制的实现,利用本身所采集的数据来作用反馈与速度的控制
n 解决方案
v 如何设计地图设置方案,并且将地图保存下来。利用多位寄存器来保存点阵式的方位坐标地图,以便后面能够自动识别。
v 状态机可以设计为单独的程序代码,利用外部的条件来控制该程序段代码的输出状态。
v 通过控制键盘实现上下左右的移动,这个算法利用的程序的精确上下左右的坐标计算。
v 动画的制作,可以预先设置动画程序进行按照始终的进行的自动运行动画功能的代码,一旦系统需要,就能发出命令来调用该程序段,进行动画的播放。
v 扫描速度的控制的实现,设计程序段,以搜集来的数据反馈作为条件,设置几个范围的数值判断语句,符合该条件就能发挥该程序段的作用。
5、系统结构:
n 系统框图
n 模块功能描述
1.分频器模块fenping:
对输入的2MHz信号进行不同的分频,分别产生2KHz、1Hz的时钟信号。
2.键盘模块keyboard:
外接键盘,当键盘按下键时,输出按下的键值(用4位二进制数表示)keyoutput和相应的按键脉冲keydown。
3.状态机state_changer:输出不同的控制状态
4.中心控制模块control:
利用状态机的状态控制以及KB-in的控制字来控制整个程序的中心模块。
能够输出点阵板所需的行扫描以及列扫描信号。以及动画播放控制信号。
5.动画播放模块:
当动画播放信号sweep_rubbish来临时,通过该模块播放动画。“扫垃圾(笑脸)”
6.温度及湿度设置模块:
当状态机处在温度以及湿度设置模块时,能够对数码管上的温度以及湿度显示进行设置。并且能形成八段码输出
n 模块接口标注(参数、协议)
键盘行列输入输出信号:
时钟输入信号:
矩阵键盘行列扫描信号输出与输入:
游戏关卡显示数码管:
点阵板列扫描信号输出:
点阵板行扫描信号:绿灯和红灯输出接口
6、状态流程图:
n 系统工作状态流程
n
v
7、各主要模块仿真结果波形
n 各模块的仿真波形,详细注释输入输出功能端口
1.键盘模块
v 输入:列信号row3 row2 row1 row0,
v 时钟CLK 100Hz
v 输出:四位二进制Q3 Q2 Q1 Q0,
v 行扫描信号col3 col2 col1 col0
v 按键反馈 KZout
v 波形意义:按下一个键,扫描停止,输出一个四位二进制信号。
v
v
2状态机波形:
3.温度及湿度设置模块
每次按下一个上键时温度加1
4.控制中心模块扫描波形:
注:其他剩下模块因波形仿真界面各信号的的周期幅度相差较大,仿真结果观察不明显故不列出。
8、课程设计总结
n 预期的目标与当前实现功能的差异详细注释
下面是编译后结果:
因程序算法以及所用的矩阵所需的门数量较大,故小部分功能未能实现
如下图:
。
n 可以进一步发挥提高的部分
1扫描速度的控制的实现,利用本身所采集的数据来作用反馈与速度的控制用于自动扫地时的速度控制以及使用不同的工具进行清除;
2 可以为游戏增加提示音乐,让程序更有动感。
这次数字系统的用VHDL语言设计因工作量较以前的小系统以及大系统的设计难度都大得多,故在将近半个学期的设计中,自己的体会非常深。
在刚拿到题目时,不能像设计大系统样立即就有思路,一开始想到的只有先将键盘上的16个键的信号给“译”出来,这样就能分别实现接下来的功能。在第一个星期,每天用一点琐碎的时间设计每一个小模块程序,几乎每个小模块程序的每个细节都需要认真考虑,不然会影响整个电路程序的结果。因智能扫地机需要实现的功能太多,故需要经常对几个信号输入和输出进行画状态机分析用什么程序代码实现。在考虑某几个信号作用效果时,时常能分析到功能相同的信号类似的代码。对于比较小的模块用波形比较容易分析结果,而对于扫描键盘最好是亲自到实验室将接线调试出来。其实在做该数字系统中,得到一个教训就是每做完一个模块都应该尽量用软件波形仿真测试,而不是到实验室全部烧制完后测试,那样的话,一旦有点小错误是需要查很久才能查到错误和不足的,所以得先用波形仿真再电路调试,来达到时间效率最大化。通过这次设计,自己对常用的集成块的功能用法已非常熟练。
另外一点就是心理上的,做VHDL程序设计特别是比较大的程序,必须沉着冷静,不然容易范粗心大意的错误,再找错误就可能重新调理思路会浪费很多时间。
就这次VHDL设计智能扫地机的程序设计,我觉得这是我数电设计水平发生质的飞跃,让自己无论碰到多难的电路设计都能游刃有余,心里非常有底。
。
9、参考文献