<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
四川大学
参赛队员:冯进华、张志亮、贺孟
图2操作过程框图
执行写字功能时,控制程序首先对系统进行相应的初始化(包含清空输入字符缓冲区),然后等待用户输入。用户输入使用SW7(设定键)、SW6(确认键)、SW5(退格键)按键进行设置,并与SWl拨码开关的第8位有关,同时在液晶显示屏上显示输入结果。SW4为执行键显示时,以光标(底下一横)显示当前设置字符,该字符若为空,则显示“作标志。
图4 Nios智能机器人控制器
车的底部有一支笔,可以在程序的控制下提起或落下,从而写出英文字母。小车的核心控制部分是一块SOP(:的开发板,开发板选用美国ALTERA公司的。Nios Development Kit APEX Edition板。
2.设计思想
通常的电路板往往包括MC[J单元、外围逻辑单元及各种接口。与以往的设计不同,起核心控制作用的并不是以前所见到的嵌入式CP[J,而是一个嵌入到FPGA芯片中的CPU软核——Nios。通过对系统的配置生成处理器、存储器、I/O接口和其他各种所需的器件,以构成系统所需的硬件平台,所有生成的器件都嵌入在FPGA里。在硬件平台生成以后,就开始对软件进行编程。通过Nios专用的软件开发环境进行编程,最后调试通过,再将程序下载到片上,然后上电执行程序。
3.硬件平台的构建
硬件平台是搭建系统的基础。由于Nios处理器区别于传统意义上的CPU,所以创建Nios系统模块要有以下步骤:
(1)首先创建AL,TERA的工程设计文件(.bdf)。
(2)用SOPC Builder创建Nios嵌入式处理器,配置系统外设,并连接这些IP模块组成系统。在系统组建完成后,把Nios的各端口对应到。FPGA器件的引脚上,这些引脚再连接到开发板上的其他硬件。主要加入CPtJ和以下IP模块:
Nios 32_bit CP[J:Nios 32位CP[J。
Boot Monitor ROM:引导ROM。
Communication&Debugger’UART:通信和调试串口。
Timer:定时器。
Extetml RAM Bus:外部RAM总线。
Extelaaal Flash Interface:外部闪存接口。
(3)生成Nios模块。在完成以上的CP[J和功能模块构造后,就需要用SOPC Builder对Nios模块进行综合生成,这时,一块包含了CPIJ和其他外围电路的片上系统就生成了。
(4)将设计下载到FPGA里,至此SOPC系统的硬件平台已经完成。
4.编写/调试应用程序
在硬件平台搭建完成以后,剩下的工作就是应用软件的编写。这个程序包括一个主程序和26个字母的子程序。执行写字程序时,软件系统采用中断服务程序结构,对各按键的处理均安排在按键中断服务程序中。当按执行键执行写字功能时,使能写字信号并打开定时器中断,主程序检测到写字信号时便开始调用相应字符的写字子函数进行写字,写完字之后程序结束运行。写字子函数主要按该字母的书写笔画划分为多个操作段,小车在每个操作段中完成转弯调整角度(一个轮子正向走,另一个轮子反向走)、走直线(两个轮子朝一个方向走)、走弧线(两个轮子朝一个方向走,但速度不一样)等某一特定的操作,如果使笔杆落下则可在纸面上画出对应的笔画。软件系统的各流程框图如图5所示。
字母“A”子程序清单:
INT 8U wr_A()
(
ctrl="Ox00":
ldir="l":
rdir="l":
wr_en=1
OSTimeDIyHMSM(0,0,1 0,O);//小车从底线出发向上行走至顶点
ctrl="0x00";
ldir="l":
rdir="O":
wr_en=l:
OSTimeDIyHMSM(0,0,3,0);//小车右转90。
ctrl="0x00";
ldir="l":
rdir="1":
wr_en=1:
OSTimeDlyHMSM(0,0,5,0);//小车向右行走
ctrl="0x00";
ldir="l":
rdir="0":
wr_en=l:
OSTimeDIyHMSM(0,0,3,0);//小车右转90。
Ctrl=0x00:
ldir=0:
rdir=1:
wr_en=0:
OSTimeDIyHMSM(0,0,3,0);//小车左转90。
ctrl=0x00;
ldir=l:
rdir=1:
wr_en=O:
OSTimeDIyHMSM(0,0,5,0);//小车向下行驶到底线
ctrl=0x00:
ldir=0:
rdir=l:
wr_en=0:
OSTimeDIyHMSM(0,0,3,0);//小车左转90。
ctrl=0x00:
ldir=l:
rdir=l:
wr_en=1:
OSTimeDIyHMSM(0,0,5,0);//小车向右行走
ctrl=0x00;
ldir=0:
rdir=1:
wr_en=O:
OSTimeDIyHMSM(0,0,3,0);//小车左转90。回到初始位置
}
软件调试通过后,就可以下载到开发板上,上电即可执行,整个系统设计全部完成。
四、测试方法
(1) 在桌面或地面上平铺用于机器人小车写字的纸,纸的宽度最好不小于0.4 m,长度视所写字符个数而定,可按每个字符需要0.4 m的长度进行估算,例如要写“OK”,纸的长度应为0.8 m:如要写“ALTERA”,则纸的长度应为2.4 m纸应该用双面胶或透明胶粘在地上,防止纸移位并使纸面平整。
(2) 通过注射器为小车底部的海绵笔头加墨水,方法是将针头插进笔头的海绵并挤出针管内的墨水。
(3) 确认SWl拨码开关的第1位打在闭合位置,让小车执行写字的功能。
(4)给小车接卜蓄电池电源,方法是用连接电源线将小车上标明为“+”的接线端与蓄电池的红色正极连接起来,标明为“一”的接线端与蓄电池的另一负极连接起来。通电后.控制程序进行复位并初始化,初始化完成后等待用户输入。
(5)在这里,我们先测试让小车写“OK”字符串。按动SW7设定键,液晶显示屏上光标位置的当前字符将发生改变。未设置前该字符为空,显示为“六”标号,若SWl拨码开关的第8位为OPEN,则按动设定键时该字符首先被设置为“A”,否则被设置为SPACE(空格)。以后每按一次设定键,将根据SWl拨码开关第8位的状态按A—z—SPA(:E—A的递增顺序(该位为OPEN时)或SPACE—Z—A—SPACE的递减顺序进行切换。当切换到“0”时,按SW6确认键进行确认,并进入设定下一字符状态:按动设定键直至切换到字符“K”,并按动确认键对此字符进行确认。
(6)将小车摆放到待写字符串左下角的起点,并调整小车角度,让小车前端对着正卜方,小车与字符串水平方向垂直。
(7)按动SW4执行键,小车开始执行写设定的字符串的功能,将在所铺的字上写出刚才设定的“OK”两个字符。因为所附的电源线较短,需要提起蓄电池跟随小车移动。
(8)写完“OK”两个字符后,小车将在写下个字符的起点处调整好角度停F来,如图6所示。用户可以按动CPU复位键或FPGA复位键进行复位,并重新设定待写字符串,如“AL,TERA”。设定好后按执行键,小车将在新起点(可手动将其摆放到另一起点)上开始执行写该字符串功能。经测试,小车所写出的“ALTERA”比较工整
五、总结
SOPC是一种灵活高效的SoC解决方案,具有FPGA硬件可灵活编程和IP设计可重用等特点。利用该技术可人幅缩短产品研发周期,并能提高系统运行可靠性。
本系统用Nios软核取代了传统的CPU芯片,并成功地用于本校开设的“电子信息系统综合设汁”课程教学。该智能机器人具有结构简单、功能可扩展、测试简便直观等特点,激发了广人学生对SOPC:技术的浓厚兴趣,收到了较显著的教学效果。
在该系统上添加各类硬件(如传感器、收发器、执行器)及软件(如嵌入式操作系统、应用软件),可配合许多课程开展专业内容教学,达到提高学生的动手实践能力、综合设计能力、创新能力的目的。
文章评论(0条评论)
登录后参与讨论