基于FPGA的超声波测距倒车雷达防撞系统设计
2019-04-22夏景云吕兆承
李 营,夏景云,吕兆承,陈 帅
淮南师范学院电子工程学院,安徽淮南,232038
在日常车辆启动和停车及驾驶过程中,由于存在视线盲区,驾驶员对有些事物或小孩总会看不见,容易引起事故,而超声波测距仪作为一种常见的非接触式距离测量工具[1-2],因其具有定向性好、价格低廉、抗干扰能力强,便携性等优点,常用于工业测量、车辆避障、安全预警、车辆自动导航[3-4]以及机器人等领域。然而,目前市场上大多数超声波测距仪的控制器采用51 单片机,其测量精度受到定时器时钟频率的限制[5],效果较差。
FPGA 作为高密度可编程处理器,具有IO口多、并行运算、集成度高等特点,能够弥补单片机为控制核心的不足。鉴于此,本文根据回波检测原理,采用软硬件结合方法和自定义用户 IP 核技术,利用层次化建模思想将系统划分为高精度分频器、均值滤波处理和回波信号检测,数值转换,数码管显示及蜂鸣器发声驱动等模块,并使用硬件描述语言Verilog设计实现各功能模块。最终以Altera公司的Cyclone IV系列的EP4CE6E22C8 为核心控制芯片,实现了高精度倒车雷达防撞系统,达到了设计要求,且本系统具有可靠性高、集成度高、响应速度快和成本低廉等特点。
1 FPGA的超声波测距倒车雷达防撞系统工作原理
1.1 超声波测距原理
本系统采用回波检测法,如图1所示,FPGA产生一个大于10 μs的触发信号(trig)给超声波模块,超声波模块内部会产生一些脉冲信号,经内部的滤波处理,最终得到与FPGA连接的高脉冲回响信号(echo),根据脉冲信号的宽度换算后得到当前障碍物和模块间的距离(图2)。
图1 超声波模块驱动波形
图2 倒车雷达接口示意图
根据上面的原理且已知温度为25度时,声音在空气中的传播速度为346 m/s,若时钟周期数为T(单位:s)时,则取超声波传感器与障碍物间的距离S(单位:m)时,有
S=346*T/2
(1)
1.2 FPGA接口设计
系统设计的接口示意图如图2所示,FPGA产生周期性的trig脉冲信号,使超声波传感器发射探头周期性地向外发射超声波测距脉冲,同时计时器开始计数,脉冲发出后遇到障碍物返回,超声波模块将返回的脉冲echo返回给FPGA。由echo信号的高脉冲保持时间可确定超声波传感器与障碍物间的距离,并且针对不同的距离,产生不同的蜂鸣器发声频率和保持时间。
1.3 系统总体设计方案
本系统以 ALTERA 公司Cyclone IV 系 列 的EP4CE6E22C8 芯片为核心控制器,主要由FPGA芯片、时钟电路、系统电源、接口电路和收发一体的HC-SR04超声波测距模块构成。算法流程图如图3所示。为了程序的扩展性,采用层次化建模思想将系统分为各底层模块和顶层模块,其中底层模块包括:分频器模块(clkdiv),超声波回响信号计数模块(ultrasound),滤波模块(filter),距离换算模块,蜂鸣器发声驱动模块和数码管驱动模块,底层模块间的关系框图如图4所示。顶层模块(top.v)分为输入输出端口,并调用各底层模块构建倒车雷达防撞系统,最终完成系统功能。
图3 算法流程图
图4 系统底层模块关系框图
2 超声波测距倒车雷达防撞系统实现
系统采用 Altera 公司的Quartus软件对系统程序进行开发,各个子模块采用Verilog HDL编写,并分别对其进行仿真与调试以保证其功能,最后将各子模块集成为一个整体的系统,以下介绍各个模块的设计与实现。
2.1 分频器模块设计(clkdiv.v)
该模块的功能是每10 μs产生一个时钟脉冲即输出clk_100 KHz时钟,其核心代码如下:
always @(posedge clk or negedge rst_n)//1s定时计数
if(!rst_n) cnt <= 8′d0;
else if(cnt < 8′d249) cnt <= cnt+1′b1;
else cnt <= 8′d0;
assign clk_100 KHz = (cnt == 8′d249)1′b1:1′b0;//每25 μs产生一个40 ns的高脉冲
2.2 超声波回响信号计数模块(ultrasound.v)
该模块的功能是每秒定时产生超声波测距模块的激励信号ultrasound_trig,即10 μs的高脉冲,并对测距模块的高脉冲ultrasound_echo计数。其设计示意图如图5所示。其中,echo_pulse_en是回响信号计数值有效信号,echo_num是以10 μs为单位对超声波测距模块回响信号高脉冲进行计数的最终值。
图5 超声波回响信号计数模块
2.3 均值滤波处理模块(filter.v)及距离换算模块(distance.v)
均值滤波处理模块的主要功能是缓存最近采集到的8组超声波测距回响脉冲计数(echo_num),对其累加求平均(echo_filter_num),然后将该值传送到距离换算模块,距离换算模块将该数值转换为实际距离的十进制计数值(echo_pulse_f_mul_num),这两部分的示意图分别如图6和图7所示。
2.4 蜂鸣器发声驱动模块(beep.v)及数码管驱动模块(seg.v)
蜂鸣器发声驱动模块(beep.v)功能是根据距离换算模块的距离数值控制相应的蜂鸣器发出不同频率的响声提醒驾驶人,而数码管模块(seg.v)的功能是接收距离换算模块的距离数值进而驱动数码管显示。这两块功能较为简单,由于篇幅所限,此处不再详述。
图6 均值滤波模块示意图 图7 距离换算模块示意
2.5 顶层模块(top.bdf)
顶层模块的作用是进行各底层模块间数据信号和控制信号之间的连接,最终实现系统要求,该模块完成后系统的最终生成的原理图如图8所示,从图中可知,各底层模块间的连接关系与图4框图一致。
图8 系统顶层原理图
3 系统仿真实验
3.1 系统开发工具
(1) 仿真软件:QuartusⅡ13.1;
(2) 硬件描述语言:Verilog HDL;
(3) FPGA核心板:EP4CE6E22C8。
3.2 系统时序信号仿真
系统设计完成后采用Quartus内部的SignalTapII在线逻辑分析仪进行测试,经由SignalTapII的采集,可看到采样信号ultrasound_trig和ultrasound_echo不停地有采样波形产生,如果在超声波模块前放置障碍物(如书本),该障碍物距离超声波模块的远近,会让ultrasound_echo信号的波形高脉冲保持时间发生变化,图9为其中一段放置障碍物后的ultrasound_trig和ultrasound_echo的变换波形。
图9 系统采用signalTap II调试信号采集波形图
4 结 语
本文利用自顶向下层次化建模思想,设计出基于FPGA的超声波测距倒车雷达防撞系统,它是一种利用计算机软件和硬件组合的控制装置。可在车辆行驶中实时监测并分析判定,对构成危险的障碍物进行报警,降低了驾驶员的工作强度[6]。本系统的有效测试距离是2~400 cm,测距精度可达到2 mm,适当改进后也可用于智能车辆避障及其他短距离测距要求的相关系统中。