2.2 各模块实现原理 2.2.1 UART模块实现原理 本系统的UART模块是在EDK 10.1环境中开发完成,利用了开发环境所提供的uartns550_v1_00_b驱动程序,该驱动提供了发送函数void XuartNs550 SendByte (Xuint32 BaseAddress, Xuint8 Data)和接收函数unsigned int XuartNs550 RecvByte(Xuint32 BaseAddress)。从而使程序可以通过Uart每次发送接收一个字节的数据。 2.2.4 经纬度提取模块原理 如果设备和卫星的通讯正常,可以接收到如下格式的字符数据: $GPRMC,204700,A,3403.868,N,11709.432,W,001.9,336.9,170698,013.6,E*6En。 数据说明如下: $GPRMC 代表GPS推荐的最短数据,3403.868 代表纬度值,N表示北纬,S表示南纬;11709.432代表经度值,W表示西经,E表示东经。 在接收进程receive 中收到“n”之后,表示收到一条完整的信息。系统在void GPS_parse(GPS_INF度 *GPS) 方法中进行数据的解析,若信号有效则提取GPS信号中的经纬度信息。GPS信号的经度纬度是字符串类型,需要转化为double类型。 2.2.3 GSM模块实现原理 GSM控 制程序最基本的实现原理是通过Xuint8 XUartNs550_RecvByte(Xuint32 BaseAddress),void XuartNs550_SendByte uint32 BaseAddress,Xuint8 Data)两个函数实现的。这两个函数对数据的接受与发送都是阻塞的,该阻塞机制确保了发送与接受的数据不会丢失。综上所述,通过使用这两个基本的串口通 信函数,实现了FPGA对GSM模块的控制,从而实现了对短信息的接收与发送。AT命令是被广泛采用的调制解调器命令语言,它提供了计算机或终端对调制解调器的控制接口。在GSM模块的应用中,AT命令实现了对GSM大多数的操作控制,本系统即使用了AT指令集对GSM进行控制。 2.2.4 加密解密模块实现原理 本系统采用DES加密算法。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。首先,DES把输入的64位数 据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换(输入的第58位换到第一位,第50位换到第2位,依此类推,最后一 位是原来的第7位),最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算后,得到L16、R16,将此作为输入,进行与初始置换 相反的逆置换,即得到密文输出。本系统对加密模块以函数调用的方式加以实现。 3 系统测试 本系统基于GPS和GSM技术在FPGA开发板上实现了追踪和定位的功能,为了检测系统的的功能并找出其中的不足,我们制定了详细的测试方案,并对不同环境下系统的性能以及系统的容错性进行了测试,根据测试的数据对系统的性能做出了客观的评价,突出展现了系统的优点也找出了系统的不足。 3.1 系统自测试方案(部分) 考虑到两个终端的距离可能会影响到结果精确度(因为距离较短时,GPS发送的两终端的经纬度相差会很小,进而会造成较大误差),所以我们使两终 端的距离在20~7800m范围内变化,测量不同距离下的距离误差和方位角度误差。另外,我们还考虑到终端所在的环境(如地理环境、天气状况等)可能会对 GPS以及GSM的工作产生影响,所以我们也在不同的地理环境以及天气状况下对系统性能进行了测试。 |