Profile - CN010


CN010

自主导航式智能小车

哈尔滨工程大学
自动化学院


Finals


[print]


Project

Name of Project:自主导航式智能小车

Contact Information

Name:孟祥臣
E-Mail:mxcdbetrue@163.com
Telephone:045182519064
Mobile Phone:15846614100
Mailing Address:黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学自动化学院31号楼305室

Contest Advisor

Name:孙华
E-Mail:sunhua@hrbeu.edu.cn
Telephone:15546465367

Members

No.NameE-MailEnglish Name
1孟祥臣mxcdbetrue@163.commengxiangchen
2李昊俊lhj@yahoo.comlihaojun
3梁勇liangyong221@126.comliangyong

Project Paper - view as Preliminary(2010/06/01), Final(2010/09/18), Draft, Latest

1. 设计概述 (Preliminary Paper)

 

1.1设计意图
机器人的出现极大的改善了人类的生活面貌,提高了人类社会的生产力。智能化探测小车是智能行走机器人的一种,在人类无法进入或生存的环境中完成人类无法完成的探测任务。随着计算机技术的不断发展,机器人制造技术已经取得了长足的进步,但其体积庞大、系统复杂、造价高昂的缺点不容忽视。因此作品正是为弥补上述诸多不足之处,旨在制作一款成本低、体积小、可靠性高、实用性强的智能小车,其中导航系统是作品的核心功能单元,导航系统的精度和可靠性对作品有最深刻的影响。
惯性导航系统(主要指捷联惯性导航系统,简称SINS)因完全自主、全天候、高可靠性等特点被广泛运用于各种军事装备上,但体积庞大、价格昂贵,制约着其在民用领域的应用。MEMS惯性器件的出现改变了这个现状,低成本的惯性导航系统越来越多的被运用到民用领域。但是误差随时间积累是惯性导航系统无法克服的缺点,因此惯性导航系统短期稳定性好,长期稳定性差。
全球卫星定位系统(Global Positioning System,简称GPS) 是由美国陆海空三军联合研制的新一代空间卫星导航定位系统。由于具有高精度、全天候、高效率、多功能、操作简便等特点,已融入了国民经济建设、国防建设和社会发展的各个应用领域。然而GPS的可靠性难以保证,市区内的高大建筑、桥梁等都会影响GPS的精度,因此GPS长期稳定性好,短期稳定性差。
电子罗盘(Electronic Compass EC),也叫数字罗盘,是利用地磁场来定北极的一种方法。他可以实现快速指北的功能,航向精度较高,是理想的航向测量装置,缺点是电子罗盘容易受外界环境的干扰。
基于以上几点,本系统将SINS / GPS /EC有机组合,发挥各自优势、取长补短。利用GPS较好的长期稳定性和适中精度,来弥补SINS误差随时间积累的缺点;利用SINS的短期稳定性来弥补GPS接收机在干扰或遮挡时暂时丢失信号的缺点;利用EC的快速指北特性对陀螺漂移进行补偿。通过以上三种子系统构成的微小型组合导航系统,有效的解决了各子系统存在的缺点,实现了作品的自主式导航,结合测距传感器、图像传感器等辅助设备实现了作品的自动壁障、自动驾驶和现场勘探的功能。
1.2适用范围及针对用户群
如图1.1所示,在起始地点输入小车要抵达的目的地点的经纬度,系统经过坐标转换,将球面坐标转换为平面坐标。在行走的过程中利用地磁给出的北方向与壁障系统结合判断小车前进方向,抵达目的地点后对现场进行勘察,然后返航。作品功能完善、价格低廉且执行任务准确率高,适合于对既定地点的勘察,如各种自然灾害的检测、现场搜救、军事监控等。
图1.1 小车功能示意图
1.3选用Altera器件来进行设计的原因
1.        系统中的主控芯片选用了Cyclone系列的EP3C40Q240,其丰富的I/O接口和片上逻辑资源,为构造复杂系统提供了保证。
2.        高性能、低成本的Nios嵌入式软核处理器,高度的灵活性以及可配置性,最大限度的优化我们的导航算法。
3.        内嵌的硬件乘法器,极大的加速了设计中滤波算法的执行效率。
4.        功能强大的EDA工具让我们轻松的应用各种先进技术,如构建双Nios处理器、自定义指令、自定义外设、I2C编译器等。
5.        在作品的设计中,使用硬件描述语言生成的模块可以方便的与Nios连接,帮助我们真正的实现软硬件协同设计,
6.         Altera公司向开发者提供丰富的开发资源和多种IP软核,极大的方便了我们的开发,缩短了开发周期。
7.        NiosII IDE开发环境提供的uc/OS-II操作系统有力的保证了系统的实时性和各任务的公平调度。
8.        采用ALTERA 公司的FPGA器件为作品的升级及扩展提供了广阔的空间。

 

(Revision: 12 / 2010-08-30 20:33:04)

2. 功能描述 (Final Project Paper)

2.1 作品功能

  •  自主导航:导航系统可以实时的感知小车的姿态角、航向角、经纬度、速度等关键导航信息。
  • 车体控制:作品可以前进、倒退、左/右转、加/减速。
  • 自动避障:小车在行驶的过程中探测到障碍物、躲避障碍物。
  •   现场勘探:小车能够对现场图像进行采集、存储。
  •  自动驾驶。作品可以在无人为参与的情况下,在复杂的地理环境下,自动行驶到任意一指定地点。

2.2作品关键功能实现详述

2.2.1 硬件实物图

2.1 硬件实物顶视图

2.2 硬件实物侧视图

2.2.2 基于EP3C40的FPGA最小系统

如图2.3所示,系统的主控芯片选用的是飓风Ⅲ系列的芯片EP3C40,电源电路、配置电路和片外RAM是设计FPGA最小系统的关键。板上使用的电源芯片可同时提供1.2V2.5V3.3V;配置电路可实现JTAGAS两种方式;选用32位的SDRAMFPGA的片外RAM 

2.3 FPGA最小系统实物图

2.2.3 基于Linear的开关电源

任何电子系统都需要高效、稳定的电源,因此作品选用了一款开关电源作为系统的首选电源,如图2.4所示,并且为提高系统稳定性,选用了另一款开关电源做为备用电源。

开关电源比线性电源的工作效率高很多,Linear公司的外部开关电源LT3742可接受4V~30V的输入电压,双通道输出,每通道输出电压0.8V~Vin、输出电流5A,适用于电池供电系统。因此作品选用了LT3742,为作品提供3.3V5V的电压,在设计中将该电源独立成单独模块,凭借其可接受大范围的输入电压,大功率的输出,可将此模块应用于其他的电路板上,以降低成本、简化设计。

如图2.52.6所示,将软启动(RUN/SS)信号分别与5V3.3V连接,将LT3742的电源好(POWER GOOD)信号与备用电源的开关信号(ON/OFF)连接。当LT3742在出现故障后会拉低电源好信号,即启动备用电源,实现了首选电源和备用电源的交接。

2.4 LT3742硬件实物图

2.5 外部开关电源

 

2.6 备用电源

2.2.4 基于SINS/GPS/EC的微小型组合导航系统

1 测姿功能的实现

如图2.7所示,测姿板通过三个单轴陀螺(ADXRS613)感知角速度,通过一个三轴加速度计(ADXL330)感知加速度,ARM(LPC2148)采集经过AD(MAX1167)转换后的传感器数据,然后通过串口传递数据到Nios,在FPGA中实现解算

2.7 测姿板实物图

2 定位功能的实现

本设计使用的GPSu-blox 公司的LEA-5H ,如下图所示,此GPS通过串口与Nios通信,将经度、纬度、速度等数据传递给Nios

2.8 GPS实物图

3 定向功能的实现

如下图所示,本设计采用的是PNI公司的微小型三轴地磁传感器模块(PNI MicroMag 3) 3.3V供电,采样频率可设,最高可到2000/秒,采用SPI方式与Nios通信

2.9 磁传感器实物图

4 关键算法流程图

1)捷联式惯性导航系统

捷联式惯导系统以复杂的软件算法为代价,从而简化了惯导的硬件系统,省略掉了复杂、昂贵的机械平台。尽管对处理器的要求较高,但随着计算机相关技术的不断发展,其应用前景十分广阔,该算法的基本原理如下图所示。

2.10 捷联惯导原理方框图

2) CORDIC算法

CORDIC算法可以分为旋转模式(rotation)和定向模式(vectoring),又可分为圆形坐标、双曲线坐标和线性坐标三种方式。假如将直角坐标平面上的向量(XiYi)旋转角度θ得到向量(XjYj),如下图所示,CORDIC算法的思想就是把旋转角度θ分成若干步骤,每步旋转一个θn,同时把θ减掉一个θn,然后判断θ的符号,根据θ的正负来决定下一步旋转角θn的正负。依次循环,直到θ趋于零,即该向量已旋转了θ角。根据硬件移位运算的特征,取这一系列θn值时,可令tan(θn)1/2n,即θn = arctan(1/2n)

2.11 圆周系统下的直角坐标旋转

CORDIC算法应用比较广泛,本文不对其原理做过多的阐述,这里直接给出在圆形坐标方式下的三个到迭代方程:

                                                             (1)

在旋转模式中,Zm的初始值为需要旋转的角度θ,迭代截止的条件为Zm0,经过n次迭代后,CORDIC公式输出为:

                                                        (2)

如果x0 =1/P=0.607253y0 =0z0 =θ,那么n次迭代后,CORDIC公式输出为:

                                                               (3)

由上式可知,在圆形坐标系统旋转模式下的Cordic算法可以用来计算一个角度的正弦、余弦和正切。

向量模式下的CORDIC算法与旋转模式下的基本相同,主要区别是旋转的方向不再依据变量Z的符号,而是依据y的符号。如果取x0 =Xy0 =Yz0 =0,那么n次迭代后,CORDIC公式的输出变为:

                              (4)

从上面的公式可以看出,圆形坐标系统向量模式下的CORDIC算法可以计算给定向量(X,Y)的长度和角度,即从平面坐标到极坐标的变换。

3)地磁北测量原理

假设载体处于水平位置的情况下,如下图所示X轴指向地磁北,Y轴与X轴正交,图中箭头方向为载体的航向,夹角为载体航向与地磁北的夹角。

2.12 磁北测量原理

如上图所示,有:,则可求得偏角为,在使用多点测量方法时,载体需在水平面旋转一周,两个轴的测量值的矢量和是一个定值,也就是其运动轨迹为一个规则的圆,且圆心位于原点。

最后得到的航向角为载体与地磁北的夹角,为了求得载体与真北的夹角,需要对所求得的航向角进行补偿,即加上或者减去地磁北与真北的夹角,这个夹角因地而异,哈尔滨的地磁北与真北的偏角如下图所示,我们使用磁偏角那列即可。

2.13 哈尔滨地磁北与真北的偏角

4)坐标系转换

GPS 测量得到的是WGS84 坐标系下的坐标,是用经纬度来表示的空间直角坐标系下的坐标,想要在实际中使用首先要先转换成平面坐标系下的坐标值。下面给出粗略的转换模型。

该模型有以下两个理论依据:

     1)根据经线、纬线的定义,可以得到:相隔的两条纬线间的经线长度不变,长度为R*π/180R为地球半径。

     2)相隔的两条经线间的纬线长度不变,赤道处为R*π/180,越往北 ( 或南 ) ,其长度越短,距离为:R*π*cosB /180B为测量点所在的纬度。

P(X1,Y1)点的国家大地坐标为:

X1=X0+R*π*cosB0(L1L0)/180                                                                                         (5)

Y1=Y0+R*π*(B1-B0)/180

考虑到地球的形状Y方向上必须考虑从向上翘的修正量,修正后的方程为:

X1=X0+R*π*cosB0(L1-L0)/180

Y1=Y0+R*π*(B1-B0)/180+R*π*π*sin2B1*(L1-L0)*(L1-L0)/(4*180*180)                     (6)

方程中参数意义如下:

X0Y0BJ54基准点A的坐标值

B0L0:基准点AWGS84坐标值

B1L1P点的WGS84坐标值

可以看出X轴是东西走向,Y轴是南北走向的,该模型的误差范围大约在5M-10M

5)卡尔曼滤波方程

卡尔曼滤波算法是一组递推算法,计算最优滤波值,只需要即时的观测值,无需存储以前的观测数据。

离散系统的卡尔曼滤波基本方程如下:

状态一步预测

                                                                  (7)

状态估计

                                             (8)

滤波增益矩阵

                                             (9)

一步预测误差方差阵

                                  (10)

估计误差方差阵

                          (11)

    其中式(13)还可写成

                                                                (12)

卡尔曼滤波的计算顺序为:先由式(10)计算出一步预测误差方差阵Pk,k-1,然后由式(9)计算出滤波增益矩阵Kk,最后由式(8)计算出最优估计值和估计误差方差阵Pk

在计算P(k)时,式(12)的算法可能会导致P(k)失去对称性和非负定性,从而使下一步的预测均方误差阵P(k+1|k)失去对称性和非负定性。式(11)能避免P(k)非负定阵的出现,但是计算量比式(12)大。在K(k)没有计算误差时,式(11)和式(12)是等效的。

2.2.5 基于超声波和红外的避障系统

1 超声波避障

超声波测距成本低廉,且耐脏污,由发射探头和接收探头两个部分组成。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为Cm/s,根据计时器记录的时间T,就可以计算出发射点距障碍物的距离(S),即:S=CT/2。作品中使用了六组超声波探头,其实物图如下图所示,分别位于前、左、右,测距范围为20-150cm,软件代码用Verilog实现,将在第五节中详细说明。

图2.14 超声波实物图

2 温度采集

要提高超声波测距的精度,就必须把超声波传播的环境温度考虑进去。例如当温度0℃时超声波速度是332m/s, 30℃时是350m/s,温度变化引起的超声波速度变化为18m/s。因此作品选用了一款常用的温度传感器DS18B20对超声波进行温度补偿,如图2.15所示全部传感元件及转换电路集成在形如一只三极管的电路内,电源供电范围为3.0V~5.5V;温度测量范围-55~+125℃;可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃;DS18B20仅需要一跟接口线与MCU进行双向通讯。

图2.15 DS18B20实物图

3 红外壁障

由于超声波测距在距离障碍物较近时存在盲区,因此有必要使用红外测距传感器进行辅助。作品选用的是Sharp 公司的GP2D02,如图2.16所示,它由一个红外发射管和一个PSD(Position Sensing Device 位置敏感检测装置)以及相应的计算电路构成, 它可以检测到光点落在它上面的微小位移,分辨率达微米,GP2D02正是利用这个特性实现了几何方式测距。如图2.17所示,红外发射管发出的光束,遇到障碍物反射回来,落在PSD上,构成了一个等腰三角形,借助于PSD可以测得三角形的底,而两个底角是固定的,由发射管确定,此时便可通过底边推算出高,也就是我们所要的距离。

图2.16 GP2D02实物图 

 

图2.17 GP2D02工作原理

作品中的GP2D02有效测距范围为3-60cm,为分担Nios的负担,本设计用Verilog实现GP2D02的测距功能,将在第五节中详细说明。

2.2.6 电机驱动

车体的运动由电机和舵机控制,而从FPGA的引脚出来的控制信号过于微弱,无法直接控制电机和舵机。电机驱动电路的功能就是接收FPGA的控制信号,并相应的驱动电机的运动。如图2.18所示,作品采用的是L298集成芯片,一片L298有两个电机驱动的H桥,在设计中将两个H桥并联使用以输出更大的电流。舵机的驱动则直接用FPGA的引脚输出一路PWM控制其转动的角度即可。

2.18 电机驱动实物图

如表2.1所示,通过L298集成芯片,FPGA可以方便的控制电机的运行状态。

2.1 电机控制

2.2.7 图像采集与存储

1 图像采集

如下图所示,作品中的图像采集装置选用的是OV7620OV7620是一款CMOS摄像头,总有效像素单元为664(水平方向)×492(垂直方向)像素;内置10位双通道A/D转换器,输出8位图像数据;具有自动增益和自动白平衡控制,能进行亮度、对比度、饱和度、γ校正等多种调节功能;其视频时序产生电路可产生行同步、场同步、混合视频同步等多种同步信号和像素时钟等多种时序信号;5V电源供电。

2.19 CMOS摄像头实物图

OV7620的访问使用SCCB总线协议,两线制SCCB I2C 总线类似,是一种双向二线制同步串行总线,它用于对摄像头的寄存器进行读写,以达到对摄像头输出图像的控制。本设计中通过设置CMOS摄像头内部的控制寄存器,使其输出图像的模式为:Zoom Video Port Format。即每个像素由8位数据组成,全部由Y通道输出,忽略U通道和V通道。

图像数据的输出由VSYNC (垂直同步信号)HREF(水平同步信号)PCLK(输出数据同步信号)同步。如图2.20所示,VSYNC 的上升沿表示一帧新的图像的到来,下降沿表示一帧图像数据采集的开始(CMOS图像传感器是按列采集图像的)HREF 是水平同步信号,其上升沿表示一列图像数据的开始。PCLK是输出数据同步信号。当 HREF 为高电平期间,才能开始有效的数据采集,PCLK下降沿的到来表明数据的产生,PCLK每出现一个下降沿传输一位数据。HREF 为高电平期间共传输 320位数据。在一帧图像中,即 VSYNC 为低电平期间,HREF 出现 240次高电平。 当下一个VSYNC信号的上升沿到来时, 就表明分辨率320*240的图像采集过程结束。另外需要通过设置11号寄存器,使PCLK信号降频,以使图像数据的输出速度与Nios匹配

2.20 输出同步信号时序图

2 图像存储

SD卡通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动的损坏。作品选用SD卡做为图像存储装置,工作在SPI模式。

2.21 SD卡实物图

SPI方式采用4线制,使用CS(从设备片选)CLK(SPI时钟)DataIn(主出从入)DataOut(主入从出)进行数据通信。下面将结合时序图阐述SD卡的操作流程,时序图中标注的含义如下所示:

8 = Number of clocks

8 = Number of “dummy” clocks

8 x = Multiples of 8 clocks

8 x = Multiples of 8 “dummy” clocks

8 x 4 = Fixed Multiple of 8 clocks

01h = Value of Hexadecimal Data

SD卡在上电后自动进入SD模式,如果CS标志在接受复位指令(CMD0)期间为低,它将进入SPI模式并且处于空闲状态。在初始化命令(CMD1)发送后,SD卡将会被激活,完全进入到SPI模式。在发送CMD0CMD1之前,要至少向SD卡发送74个时钟周期,以确保SD卡内部操作顺利完成,SD卡的复位时序和初始化时序如下图所示。

2.22 SD卡复位和初始化时序图

SD卡在成功进入SPI模式后,如果想读取扇区数据,则首先发送读SD卡命令CMD17,在得到响应后,就可以一次将某一个扇区内的512个字节全部读出,操作时序如图2.23所示。

2.23 SD卡读单块数据时序图

如图2.24所示,SD卡扇区写的过程与扇区读相似,只是数据的方向相反与写入命令不同而已。每次扇区写操作将向SD卡的某个扇区中一次性写入512个字节。

2.24 SD卡写单块数据时序图

3 BMP 文件头的添加

作品设计中将摄像头采集到的图像按BMP文件格式存储到SD卡中,BMP图像文件由四部分组成:

  位图文件头数据结构:它包含BMP图像文件的类型、显示内容等信息。

  位图信息数据结构:它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。

调色板:这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板。

位图数据:这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。

摄像头采集到的图像分辨率为320*240,每个像素占用一个字节(256),因此调色板中需要256个表项,最后生成的文件头数据(14字节)和信息数据(40)字节如下所示:

42 4D 36 30 00 00 00 00 00 00 36 04 00 00 28 00 00 00 F0 00 00 00 40 01 00 00 01 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00

2.2.8 上位机软件界面

以串口通讯的方式,上位机软件界面实时的显示导航信息,软件界面如下图所示。第一幅图中,第一列为滤波后数据,第二列为捷联结算后的姿态角,第三列为磁偏角,第四列为经纬度和速度;第二幅图为小车航向角的图形界面显示,第三幅图为小车姿态角的图形界面显示。

2.25 上位机软件界面

2.26 航向角图形界面 

2.27 姿态角图形界面 

(Revision: 52 / 2010-08-28 01:02:27)

3. 性能参数 (Final Project Paper)

3.1 系统资源利用情况

系统资源利用情况如下所示

3.1 工程编译报告

3.2 系统配置

SOPC Builder中的配置如下

3.2 SOPC Builder配置视图

QuartusⅡ中的顶层原理图设计如下

3.3 QuartusⅡ顶层模块视图

3.3 导航系统

3.4 纯惯导系统位置误差曲线

3.5 SINS/EC组合系统位置误差曲线

3.6 SINS/GPS/EC组合系统位置误差曲线

从以上三幅图中可以看出,单独的惯导系统在短时间内就开始发散,在SINS/EC系统中位置误差可以控制在40m左右,而SINS/GPS/EC系统中位置误差一直可以保持在10m以内,在实际使用中可以保持在15m以内。

3.4 避障系统

超声波测距精度:大约1cm

温度测量精度:小于1摄氏度

红外测距精度:小于1cm

3.5 图像采集系统

CMOS摄像头:320*240256

SD卡存储速度:400KB/S

 

(Draft / 2010-08-25 22:16:30)

4. 设计结构 (Preliminary Paper)

4.1 系统总体结构

SINSGPS和地磁三者组合,优势互补,扬长避短,实现小车的自主导航;利用超声波和红外组成的大范围测距系统,实现小车的自动避障;当小车行驶到目的地点后,会开启图像采集功能,并将采集到的图像存储在SD卡中,从而实现小车对目的地点进行勘察的功能;对车体的控制是通过电机、舵机以及驱动电路实现的。系统的核心微处理器选用了Cyclone系列芯片EP3C40Q240,其充足的I/O口和丰富的片上资源为构建高效、稳定的系统提供了有力保障。各模块的电源和模块间信号的传递的任务由系统底板提供。系统总体结构如图4.1所示。

4.1 系统总体结构框图

4.2 SOPC系统结构

在组合导航系统中,处理器一边要负责大量的数据采集、数据传输,一边又要做复杂的捷联解算、数据融合,单个处理器较难完成这么多繁杂的任务,系统的实时性难以得到保证。因此有必要构建双Nios系统。

如图4.2所示,以Nios处理器和Altera公司提供的IP核为基础,结合为系统量身定制的模块构建SOPC系统。Cpu1负责与FPGA的外围设备通信,通信模块和自定义外设用Verilog实现,采集传感器数据,进行小计算量运算,输出结果;Cpu2则只做捷联解算和数据融合,部分算法通过自定义指令的方式实现。

4.2 SOPC系统结构框图

4.3 软件流程图

CPU1中的软件执行流程如下图所示

4.3 CPU1中软件执行框图

CPU2中的软件执行流程如下图所示

4.4 CPU2中软件执行框图

(Revision: 15 / 2010-08-25 22:07:54)

5. 设计方法 (Final Project Paper)

1.构建双核系统

由于单个Nios II难以胜任本设计中繁多的任务和复杂的算法,因此有必要构建双Nios系统。

双核系统的关键技术在于双核的启动和双核间的通信。启动方案的具体配置为CPU1CPU2的程序映像都存放到EPCS中,CPU1Bootloader存放到EPCS中,启动代码由开发环境自动生成;CPU2BootloaderCPU1的应用程序来实现、CPU2的启动由CPU1来控制。如图5.1,在SOPC BuilderCPU1的复位地址指向EPCS Controller的基地址,异常地址指向RAM如图5.2所示,CPU2的复位地址和异常地址都指向RAM

5.1  CPU1SOPC Builder的基本配置

5.2  CPU2SOPC Builder的基本配置

双核间的通讯有多种方式,如:UART、并行PIOMailboxFIFO等,小组成员曾做过一项测试,测试双核间的通讯效率,测试结果显示各种通讯方案的通讯效率有一定的差别,但差别并不是很大。双核间通讯方式的选择,首先应当考虑的是数据传输的安全与可靠,因此本设计选择的通讯方案为硬件互斥核(Mutex)加共享RAM,通过Altera公司提供的互斥硬核可以有效的保护共享资源,提高数据访问的安全性。

2.自定义CORDIC指令

由第二章的介绍可知,CORDIC算法可以计算已知角度的正弦、余弦,也可以计算已知向量的幅值和反正切值。

32位流水线结构的CORDICSin/Cos过程的仿真图如下所示,仿真结果分析如5.1所示。

5.3 CORDICSin/Cos仿真图

 

5.1 CORDICSin/Cos精度分析

求幅值和反正切的仿真图如下所示,结果分析见表5.2

5.4 CORDIC求赋值/反正切仿真图

 

5.2 CORDIC求赋值/反正切仿真结果分析

    由以上分析可知,该算法可精确的求得小数点后六位的正弦、余弦、反正切值。我们可以在SOPC Builder中方便的完成自定义指令的添加,在Nios II中通过调用宏定义来使用自定义指令,该算法的性能测试如下图所示。

 

5.5 Nios II中测试CORDIC算法

由上图可知,在单精度浮点数范围内,该算法的误差为0,执行效率比软件高200倍。因此该算法的应用,大大的缩短了捷联算法的执行时间。

3.超声波测距模块

Verilog来实现超声波测距,不仅可以分担Nios II的负担,还可以获得精准的中心频率为40KHz的发射方波以及精确的定时。由第二章关于超声波的介绍可知,超声波测距的主要操作步骤是:发波、开始计时、接波、停止计时。这四个步骤反复的执行,可以用状态机来实现,如下表所示。

5.3 超声波测距状态表

测距模块的原理图如下所示:

5.6 声波测距模块原理图

图中:

clk1_100M,输入时钟

rst_n,复位信号

recv_f_1_intrecv_f_2_int,小车前面超声波中断信号

send_F,给Nios II的中断信号

send_count_F,传给Nios II的定时数据

clk1_40K,发射方波

4.温度测量模块

采用一线式串行总线结构的DS18B20操作时序比较复杂,如图5.7所示。

(a) 初始化时序

(b) 读时序

(c) 写时序

5.7 DS18B20操作时序

DS18B20的基本操作需要三个步骤:初始化、ROM操作命令、存储器操作命令。程序流程图如图5.8所示。

5.8 DS18B20操作流程

由于DS18B20操作时序复杂,在使用单片机或ARM与其进行通讯时,系统的实时性会受到影响,影响其他任务的运行。在嵌入式操作系统环境下应用DS18B20更加是一个挑战,即使可以实现对DS18B20的时序操作,也会使系统间各个任务的关系变的十分微妙。利用FPGA,则可以很好的解决这些问题,用Verilog语言与原理图结合的方式实现温度测量模块顶层设计文件。

5.8,可知对DS18B20的操作是反复的初始化、写ROM命令、写存储器命令的过程,因此可以利用状态机来实现,主程序中的各状态如表5.4所示。

5.4 主程序状态表

    主程序中调用的复位、写ROM命令、写存储器命令也分别用状态机来实现,仅以复位过程为例,来分析子程序的各状态。依据图5.7中的(a)复位时序图,可以得到复位过程中需要设置的状态,如图5.9所示。

5.9 复位子程序状态机

温度测量模块的顶层设计文件如图5.10所示。其中data[7..0]输出八位的温度值;clk有锁相环分频得到,为1MHzicdata为与DS18B20相连的I/O口。

5.10 温度采集原理图文件

5.红外测距模块

GP2D02共有两根数据线,一根输入信号线,接收Nios的命令和时序,进行运算与测量,然后NiosGP2D02的输出信号线接收数据,其操作时序如下图所示。

5.11 读取GP2D02数据时序图

可以在Nios中通过延时来实现上图所示的时序,但是这个功能的实现会单独的占用一个任务,增加了任务的数量,带来了不必要的任务切换,增加了Nios处理器的开销,降低了系统的实时性,因此在设计通过Verilog语言来实现该功能,软硬协同设计,优化系统性能。作品通过状态机实现GP2D02的测距功能,如下表所示,首先使状态机复位,然后通过发送70ms的低电平复位GP2D02,之后读取数据并送到模块的输出端口上,同时要保证两次数据读取之间的间隔大于1.5ms

5.5 红外测距模块状态表

红外测距模块的原理图文件如下所示,pinIn1/2/3/4分别是接收前、左、右的GP2D02数据输出的引脚,pinOut是它们的数据输入引脚,out1/2/3/4Nios处理器连接,将接收到得数据传送给Nios

5.12 红外测距模块原理图

6.自定义PWM外设

在设计中,我们将自定义的PWM外设添加到SOPC Builder中,通过输出占空比可调的PWM方波来控制电机的加/减速,以及舵机的左/右转。

7.SD卡控制器

作品中使用SPI方式访问SD卡,在SOPC Builder中添加一个SPI核和一个片选信号,在Nios中按照第二章所介绍的操作时序编写软件代码,实现访问SD卡的功能。

(Revision: 4 / 2010-08-27 23:17:35)

6. 设计特点 (Preliminary Paper)

1.作品功能

从第一代机器人的诞生开始,机器人领域一直是人类研究的热点与前沿技术。本作品以轮式机器人为载体,以智能化机器人的发展成果为基础,采用微小型组合导航、图像采集与处理、避障及控制等领域的经典技术,并结合SOPC系统软硬协同设计的先进理念,制作了一款成本低、体积小、可靠性高、实用性强的智能小车。

作品将完整的呈现出智能小车的自主导航、自动避障、自动驾驶、抵达目的地点后进行现场勘探,返航等功能。

2.硬件设计

小组成员设计与调试了FPGA核心板、陀螺/加速度计板、开关电源/备用电源模块、超声波电路、电机驱动电路、SD卡电路、底板。硬件电路都采用模块化设计,方便了系统的扩展和升级。

3.针对导航解算算法的多层次优化

捷联解算和数据融合会涉及到大量的矩阵、超越函数的运算,算法十分复杂,而且导航解算的精度会受到解算周期的影响,因此为保证系统的高精度和强实时性,系统进行了以下几个方面的优化:

  • 构建NiosⅡ处理器。一个做捷联解算和数据融合算法,另外一个负责数据的采集和车体的控制,两CPU通过片上RAM共享和传递数据,协同工作。
  • 自定义Cordic算法用户指令。针对解算过程中出现的大量三角函数,用Verilog实现了Cordic(坐标旋转数字计算机)算法,大大的加速了三角函数的求值周期。

4.编写特定模块优化系统

SOPC软硬协同的设计理念,为系统功能的实现带来了很多实惠,例如:

  • 超声波测距模块。超声波测距的精度主要取决于当前的环境温度和超声波往返时间,用此模块可以实现比其他任何处理器都精准的发射波频率和超声波定时周期。
  • 温度测量模块。DS18B20一线式数字温度传感器应用广泛,但操作时序复杂,如果用软件编程实现会影响其他任务的运行,在操作系统中使用就更加具有挑战,通过Verilog实现的此模块,在保证时序操作的同时给软件设计带来的方便,是其他任何处理器都无法比拟的。
  • 红外测距。依靠FPGA强大的时序功能满足严格时序操作的需求。
  • 自定义PWM外设。功能完善的开发工具可以将用户自定义外设轻松集成到系统中,充分体现了SOPC系统的灵活性,极大的方便了用户的使用。

5. uc/OS-II的使用保证了系统的实时性和公平的任务调度。

(Revision: 9 / 2010-08-28 13:37:17)

7. 总结 (Final Project Paper)

本次参赛作品“自主导航式智能小车”按照预期计划,基本上完成了所有的功能:自主导航,自动壁障,现场勘探,自动驾驶。作品实现的功能复杂,涉及领域多,然而Altera公司先进的FPGA技术以及完善的EDA开发软件给我们提供了强大的支持,使我们在几个月的时间内,不仅设计调试了作品中的各软硬子系统,也成功的完成了系统中各个模块的联合调试与集成。由此可见Altera公司的器件与技术,在复杂嵌入式系统的设计上,可以为用户带来最大的便利,缩短我们的开发周期;更为优越的是在单片芯片上定制系统,实现SOPC,减少作品的成本和体积,大大的降低开发难度。

在作品的设计过程中,结合作品的特点,我们最大限度的利用了各种先进的SOPC技术,以达到优化系统性能的目的,例如我们通过构建双Nios软核提高系统处理能力,自定义CORDIC指令优化导航算法,自定义与Nios互连的Verilog模块实现复杂、费时的时序控制,自定义外设控制电机和舵机。由此可见,SOPC系统最大的特点就是可定制性和灵活性,在实现作品功能的基础之上,我们可以更多的发挥自己对作品的理解去打造一个属于自己的SOPC系统,一个完善、稳定、高效的SOPC系统。

从比赛前对嵌入式相关技术了解甚少,到比赛完成时可以独立设计复杂的电子系统,这一切都要感谢Altera公司为我们提供的这次机会,把我们带进了SOPC领域的大门。我们一定会再接再厉,继续学习更先进的SOPC技术,继续我们的SOPC技术研发与应用之路。

(Revision: 3 / 2010-08-28 01:08:15)