基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

基于 FPGA 的头盔式辅助瞄准系统

图片[1]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

第一部分 设计概述

1.1 设计目的

该作品的设计灵感来自于科幻电影《星际特工》中的头盔控制攻击系统。在战斗场景中,作战人员通过特殊的头盔来直接控制武器对敌人进行准确而有效的打击。在传统战争中,无论是海战、陆战还是空战,作战人员亦或是作战设备几乎都采用的是人眼机瞄的方式进行瞄准打击,其精确度不高而且作战人员还会有不确定的战场意外。我们想要利用 FPGA 的速度优势和摄像头,舵机,MPU 等传感器实现人体姿态解算,全方位目标自动识别追踪以及人员和环境情况监控等功能,进而为作战人员提供一个智能、快捷、安全的作战环境。此系统可以安装在直升机,步兵战车或海军舰艇的武器平台上,以便于摆脱复杂的武器操作动作, 提高作战效率,提高作战安全性。

1.2 应用领域

该作品的应用领域丰富,主要有以下几个方面的应用:

(1)军事作战:

现代化战争都是信息化、智能化的战争,出现直接的大规模的直接短兵相接的场景并不多,所以在这种形式下就需要有一种能够保证作战人员安全, 可以给作战人员提供方便快捷的作战平台,此系统是佩戴在头上的辅助瞄准系统,作战人员可以直接以头和眼的朝向来控制武器进行作战,实现摆脱常规瞄准方式,迈入“眼睛看到哪儿,武器就指向哪儿”的高级形态。

(2)反恐侦察:

在很多反恐活动中,武警人员需要实时隐秘地进行现场侦察来获取情况, 从而制定有效的解决方案,但是,实际情况中侦察工作很难安全隐秘地进行,此系统可以由侦察人员佩戴以全地形小车为平台进行安全便捷的实时侦察。

(3)边境国防:

在传统的国防领域,士兵们必须持枪身处室外进行站岗站哨,这样的话会有不确定的意外因素导致士兵受伤,比如:敌方越境偷袭,国际贩毒等。此系统可以让边防士兵无需身处室外,直接在室内佩戴辅助瞄准系统,控制外围的边防武器,使边防变得更加安全,具有威慑。经过我们的实际了解和论证,我们认为将此攻击控制系统应用到军事作战、反恐侦察或者边境国防等领域会有着非常不错的效果。

1.3 主要技术特点

(1) 该系统使用 MPU9250 高精度姿态传感器,将头部的姿态数据实时解算为三维角度,然后经过控制模块精确控制舵机的转动,从而实现炮台的精确指向,以及头和炮台随动。

(2) 在头盔上使用大量的传感器,利用 UART 和 IIC 等通信方式进行传感器数据的读取与利用。

(3) 自动模式中利用颜色识别,精准识别目标,根据摄像头的可视角和舵 机的方位来建立一个准确的瞄准模型,实现目标和炮台随动。

1.4 关键性能指标

(1) 准确性:该系统采用了大扭力数字舵机和 MPU 模块以及目标自动识别追踪算法,来对目标进行精确的追踪与打击,准确率 95%以上,误差在 5cm 左右(距离 5m 之内)。

(2) 实时性:由于采用 FPGA 作为主控中心,利用 FPGA 的速度优势,可以以非常快的速度处理各种数据,从而可以在辅助模式和自动模式中以极低的延时控制舵机转动。

(3) 安全性:该系统为头盔式辅助瞄准系统,可以人枪分离,在作战环境中可以极大的保证作战人员的安全,提高战场存活率。

1.5 主要创新点

(1)整个控制系统运行稳定,具有实时性高、功耗低,准确性高的特点。

(2)该头盔瞄准系统摆脱了传统战争中人眼机瞄的方式,利用 FPGA 的速度优势和摄像头,舵机,MPU 等传感器实现人体姿态解算,全方位目标自动识别追踪以及人员和环境情况监控等功能,进而为作战人员提供一个智能、快捷、安全的作战环境

(3)该系统不仅可以应用在作战环境中,还可以应用在边防、反恐、救灾环境中。

第二部分 系统组成及功能说明

2.1 整体介绍

本系统主要由依元素科技的 FPGA 开发板—Artix-7 核心板作为主控, 黑金 spartan-6 开发板作为辅助组成。系统主体包括:头盔部分、炮台部分、 操作板部分,详细见下图:

图片[2]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[3]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[4]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

 

2.1.1 实现功能:

该系统为头盔式辅助瞄准系统,使用人员可以通过佩戴头盔与整个系统连为一体,通过不同的模式来切换使用方法,分别是摇杆模式,辅助模式,自动模式。摇杆模式下,使用人员可以通过摇杆手动控制炮台的朝向进行精确打击,辅助模式下使用人员可以通过头盔上的单目显示器瞄准目标,实现眼睛看到哪儿,武器就指向哪儿的高级形态,自动模式下使用人员可以以最高权限控制炮台发射,炮台则自动搜寻和瞄准目标。

2.2 各模块介绍

2.2.1 UART 通信协议

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter), 通常称作 UART,是一种异步收发传输器。将数据由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片 UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。其中每一位(Bit)的意义如下:

起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是 4、5、6、7、8 等,构成一个字符。通常采用 ASCII 码。从最低位开始传送,靠时钟定位。

奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。

停止位:它是一个字符数据的结束标志。可以是 1 位、1.5 位、2 位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束, 并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。UART 协议传输时序如图所示:

 

发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间 T,接着数据按低位到高位依次发送,数据发送完毕后, 接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。

接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路 电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。

由于 UART 是异步传输,没有传输同步时钟。为了能保证数据传输的正确性, UART 采用 16 倍数据波特率的时钟进行采样。每个数据有 16 个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般 UART 一帧的数据位数为 8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。

UART 的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输,这时计数器 CNT 开始计数,当计数器为 24=16+8 时,采样的值为第 0 位数据;当计数器的值为 40 时,采样的值为第 1 位数据,依此类推,进行后面 6 个数据的采样。如果需要进行奇偶校验,则当计数器的值为 152 时,采样的值即为奇偶位;当计数器的值为 168 时,采样的值为”1″表示停止位,一帧数据接收完成。

一个标准的 10 位异步串行通信协议(包含 1 个起始位、1 个停止位和 8 个数 据位)收发时序,如图所示

图片[5]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

图 2.2.2 串口通讯

波特率发生器:波特率是衡量数据传输速率的指标,表示每秒传送数据的字符数,单位为 Baud。UART 的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的 16 倍, 目的是为在接收时进行精确地采样,以提取出异步的串行数据。根据给定的晶振时钟和要求的波特率,可以算出波特率分频计数值。

2.2.2 IIC 通信协议

I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由 NXP(原 PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。是一种半双工通信方式。

IIC 的物理层

只要求两条总线线路,一条是串行数据线SDA,一条是串行时钟线SCL。每个连接到总线的器件都可以通过唯一的地址和其它器件通信,主机/从机角色和地址可配置,主机可以作为主机发送器和主机接收器。IIC 是真正的多主机总线,(而这个 SPI 在每次通信前都需要把主机定死,而 IIC 可以在通讯过程 中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。传输速率在标准模式下可以达到 100kb/s,快速模式下可以达到 400kb/s。连接到总线的 IC 数量只是受到总线的最大负载电容 400pf 限制。

图片[6]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

IIC 的协议层

数据的有效性:

在时钟的高电平周期内,SDA 线上的数据必须保持稳定,数据线仅可以在时钟 SCL 为低电平时改变。

图片[7]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

起始条件:当 SCL 为高电平的时候,SDA 线上由高到低的跳变被定义为起始条件,结束条件:当 SCL 为高电平的时候,SDA 线上由低到高的跳变被定义为停止条件,要注意起始和终止信号都是由主机发出的,连接到 I2C 总线上的器件,若具有 I2C 总线的硬件接口,则很容易检测到起始和终止信号。总线在起始条件之后,视为忙状态,在停止条件之后被视为空闲状态。

图片[8]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

应答:

每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个 应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成 8 个数据位传输后紧跟着的时钟周期,低电平 0 表示应答,1 表示非应答。

图片[9]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

I2C 总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7 位),第 8 位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。(这里小编在驱动 MPU6050 模块的时候,就犯过这样的错误,它写的 MPU6050 从机地址是0x68,因为发送从机地址的时候,要加一位读写方向位, 因为刚开始应该是向这个 MPU6050 里写从机里某个寄存器的地址,所以应该是 7 位地址 0x68(1101000)+二进制位 0=11010000)也就是 0xD0,表示要向该 IIC 设备里写东西,然后再紧接着写入 IIC 设备里的寄存器地址,而我直接写 入了 0x68,导致出错},每次数据传送总是由主机产生的终止信号结束。但是, 若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再 次发出起始信号对另一从机进行寻址。

图片[10]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.3 VGA 显示协议

VGA(Video Graphics Array)视频图形阵列是 IBM 于 1987 年提出的一个使 用模拟信号的电脑显示标准。VGA 接口即电脑采用 VGA 标准输出数据的专用接口。VGA 接口共有 15 针,分成 3 排,每排 5 个孔,显卡上应用最为广泛的接口类型, 绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及场与行的同步信号。

图片[11]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

VGA 协议简述

图片[12]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

VGA 中定义行时序和场时序都需要同步脉冲、显示后沿、显示时序段和显示前沿四部分。VGA 工业标准显示模式要求:行同步,场同步都为负极性,即同步脉冲要求是负脉冲。

由 VGA 的行时序可知:没一行都有一个负极性行同步脉冲,是数据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿,在显示时序段显示器为亮的过程,RGB 数据驱动一行上的每一个像素点,从而显示一行。在一 行的最后为显示前沿。在显示时间段之外没有图像投射到屏幕是插入消隐信号。同步脉冲、显示后沿和显示前沿都是在行消隐间隔内,当消隐有效时,RGB 信号无效,屏幕不显示数据。

2.2.4 JY901 姿态传感器

图片[13]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

模块概述:

1、 模块集成高精度的陀螺仪、加速度计、地磁场传感器,采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法,能够快速求解出模块当前的实时运动姿态。

2、 采用先进的数字滤波技术,能有效降低测量噪声,提高测量精度。

3、 模块内部集成了姿态解算器,配合动态卡尔曼滤波算法,能够在动态环境下准确输出模块的当前姿态,姿态测量精度静态 0.05 度,动 态 0.1 度,稳定性极高,性能甚至优于某些专业的倾角仪!

4、 模块内部自带电压稳定电路,工作电压 3.3v~5v,引脚电平兼容 3.3V/5V 的嵌入式系统,连接方便。

5、 支持串口和 IIC 两种数字接口。方便用户选择最佳的连接方式。串 口速率 2400bps~921600bps 可调,IIC 接口支持全速 400K 速率。最高 200Hz 数据输出速率。输入内容可以任意选择,输出速率 0.1~ 200HZ 可调节。

6、 保留 4 路扩展端口,可以分别配置为模拟输入,数字输入,数字输出,PWM 输出等功能。

7、 具备 GPS 连接能力。可接受符合 NMEA-0183 标准的串口 GPS 数据, 形成 GPS-IMU 组合导航单元。

8、 采用邮票孔镀金工艺,可嵌入用户的 PCB 板中。注意:要加底板或者嵌入到其他 PCB 板子上,MPU9250 芯片下方不能布线,以免干扰到磁力计。

9、 4 层 PCB 板工艺,更薄、更小、更可靠。

性能参数:

1、 电压:3.3V~5V

2、 电流:<25mA

3、 体积:15.24mm X 15.24mm X 2mm

4、 焊盘间距:上下 100mil(2.54mm),左右 600mil(15.24mm)

5、 测量维度:加速度:3 维,角速度:3 维,磁场:3 维,角度:3 维, 气压:1 维(JY-901B), GPS:3 维(接 GPS 模块)

6、 量程:加速度 :±2/4/8/16 g ( 可 选 ) , 角速度:±250/500/1000/2000 °/s(可选),角度±180°。

7、 量程:加速度 :±2/4/8/16 g ( 可 选 ) , 角速度:±250/500/1000/2000 °/s(可选),角度±180°。

8、 姿态测量稳定度:0.01°。

9、 数据输出内容:时间、加速度、角速度、角度、磁场、端口状态、气压(JY-901B)、高度 (JY-901B)、经纬度(需连接 GPS)、地速(需连接 GPS)。

10、 数据输出频率 0.1Hz~200Hz。

11、 数据接口:串口(TTL 电平,波特率支持 2400、4800、9600、19200、38400、 57600、115200、230400、460800、921600),I2C(最大支持高速 IIC 速率 400K)

12、 扩展口功能:模拟输入(0~VCC)、数字输入、数字输出、PWM 输出(周期 1us-65535us, 分辨率 1us)

2.2.5 指纹模块

图片[14]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

模块介绍:

1.外形尺寸(23.320.348.1)

2.模块通讯接口为 USB 和 UART 两种通信接口。

3.供电电压:DC3.3V,供电电流:<60mA,峰值电流:<60mA

4.指纹图像录入时间:<1.0 秒

5.窗口面积:15.3×18.2mm

6.分辨率:500dpi

7.模块工作原理

①指纹特征

指纹算法从获取的指纹图像中提取的特征,代表了指纹的信息。指纹的 存储、对比和搜索等都是通过操作指纹特征来完成的。

②指纹处理包含两个过程:指纹登陆过程和指纹匹配过程[其中指纹匹 配分为指纹比对(1:1)和指纹搜索(1:N)两种方式] 。

指纹登录时,对每一枚指纹录入 2 次,将 2 次录入的图像进行处理, 合成模板存储于模块中。

指纹匹配时,通过指纹传感器,录入要验证指纹图像并进行处理,然后 与模块中的指纹模板进行匹配比较(若与模块中指定的一个模板进行匹配,称为指纹比对方式,即 1:1 方式;若与多个模板进行匹配,称为指纹搜索 方式,即 1:N 方式),模块给出匹配结果(通过或失败)。

2.2.6 GPS 模块

图片[15]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

BLOX 6M GPS 模块,具有高灵敏度、低功耗、小型化、其极高追踪灵敏度大大扩大了其定位的覆盖面,在普通 GPS 接受模块不能定位的地方,如狭窄都市天空下、密集的丛林环境,UBLOX 6M 都能高精度定位。模块的高灵敏度、小静态漂移、低功耗及轻巧的体积,非常适用于车载、手持设备如 PDA,车辆监控、手机、摄像头及其他移动定位系统的应用,是 GPS 产品应用的最佳选择。

2.2.7 SYN6288 语音播模块

图片[16]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

模块介绍:

*清晰、自然、准确的中文语音合成效果;可合成任意的中文文本,支持英文字母的合成;

*具有智能的文本分析处理算法,可正确识别数值、号码、时间日期及常用的度量衡符号;

*具备很强的多音字处理和中文姓氏处理能力;

*支持多种文本控制标记,提升文本处理的正确率;

*每次合成的文本量最多可达 200 字节;

*支持多种控制命令,包括:合成、停止、暂停合成、继续合成、改变波特率等;

*支持休眠功能,在休眠状态下可降低功耗;支持多种方式查询芯片工作状态;

*支持串行数据通讯接口,支持三种通讯波特率:9600bps,19200bps、38400bps;

*支持 16 级音量调整;播放文本的前景音量和播放背景音乐的背景音量可分开控制;

*可通过发送控制标记调节词语语速,支持 6 级词语语速调整;

*芯片内固化有多首和弦音乐、提示音效和针对某些行业领域的常见语音提示音;

*内部集成 19 首声音提示音,23 首和弦提示音,15 首背景音乐;

*最终产品提供 SSOP 贴片封装形式;体积业内最小;

*芯片各项指标均满足室外严酷环境下的应用;

2.2.8 GY-26 指南针模块

图片[17]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[18]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.9 SIM900A 短信模块

图片[19]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

图 2.2.19 SIM900A 模块

模块介绍

物理尺寸: 50mm48mm28mm。

供电: 5V 1A 直流电源。

数据接口:1.85V、3.3V、5VTTL

电平接口;标准 232 接口。

正常工作温度: -30~80°C。

SIM900A 可实现发短信,接收短信,打电话,接听电话等功能。连接时,需将 SIM900A TXD 与开发板设置的 RXD I/O 相连接,SIM900A RXD 与开发板设置的 TXD I/O 相连接,GND 与开发板上的 GND 相连接。

图片[20]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

SIM900A 模块通过发送和接受国际电信联盟规定的 AT 指令集来进行控制和数据接收,本系统用到的 AT 指令集有:

图片[21]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.10GY-39 光强模块

图片[22]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v, 功耗小,安装方便。其工作原理是,MCU 收集各种传感器数据, 统一处理, 直接输出计算后的结果, 此模块,有两种方式读取数据,即串口 UART(TTL 电平)或者 IIC(2 线)。串口的波特率有 9600bps 与 115200bps,可配置, 有连续,询问输出两种方式,可掉电保存设置。可适应不同的工作环境,与单片机及电脑连接。模块另外可以设置单独传感器芯片工作模式,作为简单传感器模块,MCU 不参与数据处理工作。提供 arduino,51,stm32 单片机通讯程序,不提供原理图及内部单片机源码。此 GY39 模块另外赠送安卓手机软件 app 查看数据,且支持 wifi 局域内网连接, 手机及电脑同时显示数据。

串口协议:当 GY-39 模块硬件 PinA(S0)=1 时候使用

(1)、串口通信参数(默认波特率值 9600bps,可通过软件设定) 波特 率:9600 bps 校验位:N 数据位:8 停止位:1 波特率:115200 bps 校验 位:N 数据位:8 停止位:1

(2)、模块输出格式,每帧包含 8-13 个字节(十六进制):①.Byte0: 0x5A 帧头标志 ②.Byte1: 0x5A 帧头标志 ③.Byte2: 0x15 本帧数据类型 (参考含义说明) ④.Byte3: 0x04 数据量 ⑤.Byte4: 0x00~0xFF 数据前 高 8 位 ⑤.Byte5: 0x00~0xFF 数据前低 8 位 ⑥.Byte6: 0x00~0xFF 数据 后高 8 位 ⑦.Byte7: 0x00~0xFF 数据后低 8 位 ⑧.Byte8: 0x00~0xFF 校验和(前面数据累加和,仅留低 8 位)Byte2 代表的含义说明:Byte2 0x15 0x45 0x55 含义:光照强度温度、气压、湿度、海拔 IIC 地址

(3)、数据计算方法 ①光照强度计算方法(当 Byte2=0x15 时,数 据 :Byte4~Byte7 ) :Lux=( 前 高 8 位 T=(0x0B<<<24) (0x97<<16) (C4<<< IIC_ADD=0xB6 (8bit iic_add) 则 7bit iic_add 为 8bit iic_add 右移 1bit 得 0x5b (4)、命令字节,由外部控制器发送至 GY-39 模块(十六进制) 1、所 有串口指令格式,帧头:0xa5 指令格式:帧头+指令+校验和(8bit)

2、串口命令指令:①,串口输出配置寄存器:command Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 输出命令 AUTO 0 0 0 0 0 BME MAX AUTO(默 认 1)1:上电后按照上次的输出配置输出,0:上电后不自动输出 bit6-bit2 必需置零:00000 BME(默认 1) 1:连续输出温度、气压、湿度、海拔 0: 不输出;当 Auto 置 1,掉电保存 MAX(默认 1) 1:连续输出光照强度 0: 不输出;当 Auto 置 1,掉电保存 命令格式:0xA5+command+sum 例:bit7(Auto=1), bit0(MAX=1) 发送命令:0xA5+0x81+0x26,表示连续输出光照强度,掉电后保存该设置,重新上电后将 自动连续输出光照强度;

2.2.11红外测温模块

图片[23]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

图 2.2.22 红外测温模块

模块介绍:

GY-MCU90614 是一款低成本温度模块。工作电压 3-5v 功耗小,体积小。其工作原理,是通过单片机读取红外温度传感器数据,串口(TTL 电平) 通信方式输出。串口的波特率有 9600bps 与 115200bps 有连续输出与询问输出两种方式, 可设定 ID,如果应用在 485 总线时候, 可以挂多个传感器在总线上。

2.2.12气压高度模块

图片[24]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

模块介绍:

MP280 气压传感器是专为移动应用。该传感器模块是使用一个非常紧凑的封装。它的 小尺寸和低功耗允许在电池供电的移动电话等设备的使用。BMP280 已 探明的压阻式压力传感器技术具有精度高、线性度以及长期稳定性和鲁棒性高的电磁兼容。许多设备操作选项提供灵活性,优化的功耗的装置,分辨率和滤波器的性能。模块内部自带电压稳定电路,可以兼容 3.3V 的嵌入式系统,连接方便。采用先进的数字滤波技术,能有效降低测量噪声,提高测量精度。采用邮票孔镀金工艺,品质保证,可嵌入用户的 PCB 板中。

性能:

1、电压:2.1V~3.3V

2、电流:2.5mA(3.3V 10HZ) 1.0mA(3.3V 0.1HZ)

3、体积:15.24mm X 15.24mm X 2mm

4、焊盘间距:上下 100mil(2.54mm),左右 600mil(15.24mm)

5、输出内容:气压,高度。

6、波特率:115200

7、回传速率:10 5 2 1 0.5 0.2 0.1HZ 可选

8、量程:气压:300~1100HPa

9、测量精度:高度:0.5M

10、数据接口:串口(UART TTL 电平,)

11、数据格式:数字输出(ASCLL 码)

通信协议:

图片[25]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.13温湿度传感器

图片[26]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

AT 指令集:

图片[27]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

数据处理:

图片[28]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.14数字舵机

图片[29]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.15超声测距模块

图片[30]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

超声波是震动频率高于 20khz 的机械波。它具有频率高、波长短、绕射现象小、 方向性好、能够成为射线而定向传播等特点。

本模块的使用方法是:一个控制口发一个 10us 以上的高电平,就可以在接受口 等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读 定时器的值,此时就为此测距的时间,方可算出距离。如此不断的周期测,就可 以达到移动测量的值了。

模块参数:

使用电压:DC5V

静态电流:小于 2mA

电平输出:低 0V

感应角度:不大于 15 度

探测距离:2CM-450CM

高精度:可达 3MM

工作原理:

①采用(IO 触发测距、给至少 10us 的高电平信号)

②模块自动发送 8 个 40KHZ 的方波、自动检测是否有信号返回

③有信号返回、通过 IO 输出一高电平、高电平持续的时间就是超声波从发射到返回的时间、测试距离(高电平时间*声速(340M/S)12)

时序图:

图片[31]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

电气特性及注意事项:

①建议测量周期 60MS 以上,以防止发射信号对回响信号影响;

②测距时,被测物体面积要大于 0.5 平方米且平面尽量平整;

③电源供电不要低于 5V,否则会影响测试结果。

2.2.16烟雾检测模块

图片[32]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

MQ135 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化 锡(SnO2)。当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓 度相对应的输出信号。

MQ135 气体传感器对氨气、硫化物、苯系蒸汽的灵敏度高,对烟雾和其它有害气体的监测也很理想。这种传感器可检测多种有害气体,是一款适合多种应用的低成本传感器。

电气性能:

输入电压:DC5V

功耗(电流):150mA

DO 输出:TTL 数字量 0 和 1(0.1 和 5V)

AO 输出:0.1-0.3V(相对无污染),高浓度电压 4V 左右

特别提醒:传感器通电后,需要预热 20S 左右,测量的数据才稳定,传感器发热属于正常现象,因为内部有电热丝,烫手是属于不正常现象。

2.2.17语音识别模块

图片[33]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

YS-LDV7 模块为一体化语音识别模块,可对用户的语音进行识别。支持中文音素识别,可任意指定中文识别词条(最好小于 8 个字)。识别词条个数为 50 句。可对 0.2 秒至 3.2 秒的语音命令进行响应,响应时间约为 0.4 秒至 1.2 秒。安静环境下,标准普通话,识别率大于 95%。其与计算机或者单片机之间采用串口进行通讯,模块串口采用的是 3.3V/5.0V TTL 电平标准进行通信。模块参数如下图:

图片[34]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

2.2.18火焰检测模块

图片[35]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

该模块可以检测火焰或者波长在 760 纳米~1100 纳米范围内的光源,探测角度在 60 度左右,对火焰光谱特别灵敏(灵敏度可通过电位器调节),对火焰的探测距离:跟灵敏度和火焰强度有关,一般 1m 以内适用(以打火机 火焰测试,半米内能够触发传感器),工作电压 3.3V-5V。

2.2.19SDRAM 控制器

SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失。这里的随机指的是数据的存储不是线性依次存储,而是自由指定地址进行数据读写。SDRAM 具有空间存储量大、读写速度快、价格相对便宜等优点。然而由于 SDRAM 内部利用电容来存储数据,为保证数据不丢失,需要持续对各存储电容进行刷新操作;同时在读写过程中需要考虑行列管理、各种操作延时等,由此导致了其控制逻辑复杂的特点。因而在一般使用中,我们将其封装为 FIFO 接口,使用时只需要向操作 FIFO 那么简单,就可以操作 SDRAM。

图片[36]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

SDRAM 的内部是一个存储阵列。可以想象成一个表格,我们可以对每一个表格中的每一个单元格进行操作,单元格也是他的存储单元,向这样的一个单元格, 我们称其为“L-Bank”,一般 SDRAM 有四个 bank。

SDRAM 的存储容量计算:SDRAM 总存储容量 = L-Bank 的数量×行数×列数 ×存储单元的容量。

图片[37]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

在使用 SDRAM 时候,需要其不断地自刷新。来确保其数据不丢失,因此在读写模块正在工作的时候需要进行刷新的时候,必须退出读写进行刷新。由于 SDRAM 是电容存储的原件,所以在使用前需要上电初始化。

图片[38]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

100us 的延时需要在任何操作之前除过 NOP 和 INHIBIT 命令。这两个命令必须在 200us 期间应用并且持续在这个区间结束后。(这句话不懂什么意思)在满足上述条件后,precharge 命令应该被应用在 100us 延时以后。所有的 bank 必须预充电,这将使得所有的 bank 进入 idle 状态。在两个 auto refresh 命令之 后,SDRAM 准备进行模式寄存器配置。

就是说这里需要上电后进行(1)最少 100us 的延时。之后所有 bank 进入 idle 状态,然后进行(2)两次 auto refresh 状态。之后对其进行(3)模式寄存器配置。使用 TimeGen 辅助软件画出波形图。如下图。

图片[39]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

模式寄存器配置可以按照用户的需求进行配置,下图是数据手册中给出的官方解释

图片[40]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

这里的仿真后续和 SDRAM 的其他操作结合进行仿真。

SDRAM 的自刷新

SDRAM 是电容存储元件,所以使用过程必须通过刷新来保证数据的不丢 失。经计算得出 15us 刷新周期,所以代码使用 15us 计数器,每 15us 进行 一次刷新。在进行刷新的时候,同样需要根据时许进行命令的使用。

图片[41]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

SDRAM 的读写操作

SDRAM 的读写操作时序基本一致,这里对写模块进行分析,读模块只是在命令上有不同,在读命令收有一段时间的潜伏期,数据才会读出。这里的读写都使 用突发长度为 4,也就是一次写入 4 个数据。

图片[42]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

这里是一次的写操作。当然,在具体的应用中,我们不可能只写入 4 个数据, 所以将在后文的仲裁模块对写时序内部进行更好的处理,使其可以满足我们的应用需求。

在几个基本模块使用完成之后,需要对几个模块之间的状态跳转进行描述约束。

图片[43]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

这里使用 Visio 画出的状态跳转图,将所有的状态连接在一起。在任意状态,都可以保证刷新时间到来时进行刷新。这里的所有请求信号都是在使能信号到来。

2.2.20微型单目显示器

图片[44]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[45]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

第三部分 完成情况及性能参数

3.1 系统整体完成情况:

图片[46]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

系统主要由三部分组成,分别是:头盔部分、炮塔部分以及操控板部分。

1、头盔部分主要由各种传感器以及一个微型单目显示器组成,传感器负责采集当下的环境信息,微型单目显示器实时显示摄像头所拍到的画面。

2、炮塔部分主要由一个 2 度云台,一个波箱,一个旋转舵机,两个摄像头组成, 云台控制波箱的朝向,旋转舵机负责和摄像头负责目标的搜寻与预警。

3、操控板主要由一个串口屏,一个指纹模块,一个摇杆模块,一个语音识别模块以及语音播报模块组成,串口品为控制中心和显示中心,指纹模块负责解锁进 入系统,摇杆模块负责控制炮台朝向,语音识别以及语音播报模块辅助操作。

4、摇杆模式下,操作者通过摇杆和微型单目显示器控制炮台的转动从而精确打击 目标。

5、辅助模式下,操作者可以用头盔和微型单目显示器,通过头的摆动显示器的瞄准来瞄准目标实现精确打击同时还可以通过头盔上的各种传感器来检测人体和环境的信息

6、自动模式下,炮台自动预警搜寻目标,当识别到目标时语音报警并且炮台自动瞄准,通过操作人员决定击打,当目标消失时语音提醒,炮 台转为继搜寻状态。

3.2 部分模块介绍:

3.2.1 MPU 姿态检测模块

图片[47]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

角度输出格式

图片[48]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

实现方法:

MPU 自动将数据通过 UART 协议发送到 FPGA 开发板,FPGA 开发板将数据流接收并在众多数据流中检测到与角度匹配的数据,及那个角度数据存储并进行姿态角解算公式将姿态解算出来实现头部姿态的测量。

实现性能:

在实际使用中,MPU 的解算数据和头部运动的角度完全一致,误差不到 2 度, 同步率较高,延时在 300ms 左右,基本可以实现头部姿态数据的同步测量。

3.2.2 指纹解锁模块

图片[49]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

数据加密算法(DES)简介

密码的生成采用借鉴数据加密算法(DES)。DES 算法是一种分组加密算 法,他以 64 位的分组数据进行加密。密匙通常为 64 位,但每个第 8 位通常作为奇偶校验位,实际密匙为 56 位。

DES 算法的流程:输入明文通过初始置换,将其分为左右两段各 32 位 的两个部分,然后进行 16 轮完全相同的运算。经过 16 轮运算后左、右部分合并在一起经过一个末置数,算法结束。见下图 3.9。

在每一轮具体运算中,密匙位移位,然后从密匙的 56 位中选取 48 位。通过扩展置换,将数据的右半边扩展成 48 位,并通过一个异或操作与一个 48 位密匙结合,通过 8 个 S 盒将这 48 位替换成新的 3 位数据,再通过一次置换操作。

图片[50]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[51]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

将输入的 20 位数据扩展成 30 位的明文数据,该操作是为了产生与密匙长度一样的数据进行异或等操作。异或的结果进行 S 盒替代,将数据压缩至 18 位。密匙的产生通过用户打开天窗时随机输入产生。最后将 S 盒中所得数据经过 P 盒置换,得到最终密码。因为在整个监护系统中数据传输基本由 ASCII 码格式传输,就将最后产生的密码转换成 ASCII 码格式。

图片[52]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[53]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

安全性分析

DES 算法的安全性主要由非线性 S 盒模块和密匙模块决定。

1.非线性 S 盒模块是按照 DES 算法的要求设置的。可靠性很高。

2.因为密码只需要通过明文生成,而不需要通过密码翻译明文数据,故密匙采用时刻流动的数据,大大提高了安全性。

3.2.3 串口屏模块

图片[54]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

我们的项目主要是通过串口屏进行控制,当触摸到串口屏特定的热区时,它就会通过串口发送相应的键值到 FPGA 开发板上,我们采用 UART 通信协议的接受模块接收,根据发来的键值跳转到不同的状态,使 FPGA 中状态机的状态与串口 屏的显示界面一致。并且根据串口屏发来的键值进行发送相关的指令,同时在状态机检测到串口屏进入特定的页面时,会向串口屏发送相应的显示信息进行显示, 例如温度、海拔、指南针等。图 3.3.5 为串口屏指令接收发送模块 RTL 图,本模块负责接收串口屏发来的信息,并将接收的信息发送给指令控制模块进行处理。并根据指令控制模块传来的指令向串口屏发送对应的显示指令,包括各传感器的数据以及模式跳转指令等。

3.2.4 角度分析与控制

图片[55]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

该系统由三种模式,摇杆模式通过摇杆控制舵机的转动角度,辅助模式通过 MPU 姿态数据进行舵机的控制,自动模式通过摄像头的图像处理算法得出目标的位置信息控制舵机转动,本模块将所有控制信号进行处理并在相应模式下控制舵机二度云台进行精准的转动,经过实际使用测量,该模块的控制信息处理非常准确,有着较好的稳定性和通用性。

3.2.4 SIM9001A 短信模块

图片[56]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

SIM9001A 模块通过发送和接受国际电信联盟规定的 AT 指令集来进行控 制和数据接收,我们使用了 UART 通信协议的发送模块进行指令的发送。该模块会定时向用户发送信息,其中短信内容包括了由 GPS 定位模块所传送过来的数据 实时位置,经度、纬度等等,对于设备和使用者有一定的安全保障。

3.2.5 目标预警搜寻模块

图片[57]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug
图片[58]-基于 FPGA 的头盔式辅助瞄准系统-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

系统由 OV5640、SDRAM 两模块构成,通过配置 OV5640 不断提取 RGB 值并通过 FIFO 存放入 SDRAM 当中读取,后对数据进行实时逐帧处理,以达到动态捕捉目标的位置并输出其坐标值的功能。

首先将从 SDRAM 读出的数据从 RGB565 转换成 RGB888,然后将其从 RGB 转成 YCBCR 的格式,同时算出目标特征颜色的 CB,CR 的阈值,阈值是通过将目标的图片生成 mif 文件然后取出其中分布最多的最大和最小值,然后算出其 CBCR 的值,该范 围就是目标特征的阈值。然后通过该阈值将图象二值化,得到二值化图像后,由 于外部因素图象会出现一些噪点,然后通过开运算,即先腐蚀再膨胀来滤除多余 的图象噪点,但是由于非目标上也会出现目标颜色,所以需要对目标有效点进行计数,当大于一定的阈值后,认定该目标为有效目标,否则舍弃该目标,该阈值通过试验得到最佳阈值。为了得到目标物体的像素点坐标,由于有非目标颜色存在,所以最小包围盒算法不是很适合。所以我们用了另外一种算法,当检测出目标后,通过对有效点 x,y 坐标的累加以及有效点的计数,然后将累加后的坐标除以有效点的数量,来得到平均像素点坐标,然后将该像素点的坐标通过另一个的模块的运算输出给舵机,然后进行对目标的追踪。

第四部分 总结

4.1 可扩展之处

(1)在目标识别中,对目标的特征可以提取的更加充分,比如识别目标的形状,或者其他一些可以精准识别的特征,以此来对目标识别的更加准确。

(2)可以使用光流法或者其他方法对目标运动轨迹进行预测,以便于更精确的打击目标。

(3)可以增加一些对使用人员的生命特征检测,环境信息检测,以便于更好的保护使用人员的安全。

(4)可以将很多个该系统的数据通过无线传输到一个总系统中,以便于各个系统可以实时共享信息。

(5)可以将该系统搭载到一些小型机器人上,来实现一些反恐作战或者搜救任务。

 

请登录后发表评论