FPGA学习笔记——超声波测距模块

周末终于闲下来有时间做一些有意思的模块,今天就使用FPGA来实现超声波测距模块的使用。

超声波测距模块

超声波测距模块选的是HC-SR04,测量范围是2cm-4M,由于担心FPGA输出电压不能稳定达到5V,所以我选的是有更宽工作电压的新版本(工作电压在3.3-5V之间)。
在这里插入图片描述

可以看到该模块仅有4个引脚:电源Vcc、地GND、触发信号Trig和回响信号Echo。输入电压范围在3.3-5v,至于触发信号trig和回响信号echo上个时序图就明白了。

时序图与距离计算

在这里插入图片描述触发信号就是FPGA输出给超声波测距模块的trig信号,每60ms发送一个触发信号,并且每个触发信号都维持10us的时间即可,使用一个计数器就可以搞定。模块在收到这个触发信号之后,内部会产生八个40KHz的脉冲,这个其实不用关心,只是在这8个脉冲过后,模块就会输出一个拉高的echo信号,而我们需要做的就是在echo信号的上升沿开始计数,计到下降沿为止,得到counter的值在乘以时钟的周期就可以得到一个时间了
在这里插入图片描述这个时间就是下图中的t,它是一来一回整个路程的时间,再乘以声速v,最后除以2就得到了实际的距离了。这里算的时候要注意一下单位,最好直接换算成厘米,并且提取出整数部分和小数部分。我是提取了整数部分3位,小数部分4位,然后将这两部分的数据送给下一个数码管显示模块即可。

模块框图

在这里插入图片描述上图是设计思路,下图是综合完成后的rtl图。
在这里插入图片描述再将整数部分和小数部分传给smg_disp模块后,在smg_disp模块内要对这两个数分别按位进行拆分,再显示到数码管上。
在这里插入图片描述上图是我的处理过程,大家如果有好的方法欢迎指正。

仿真

在这里插入图片描述这是echo模块的仿真波形,可以看到和上面给的时序图是符合的。
在这里插入图片描述放大波形看看数据处理有没有问题,30.2118cm,拆解正确。

上板验证

在这里插入图片描述在这里插入图片描述结果如图,应该是成功了。

后记

1、对于超声波模块的输入电压3.3-5V,由于没有现成的杜邦线,我是直接使用板子上的IO口输出高电平去驱动的,但需要在管脚分配时将用作Vcc的接口的电平设置设置为3.3V-LVCMOS,这样输出高电平的电压值会>=3.2V。
在这里插入图片描述
2、贴一张七段数码管的segment[6:0]对应阿拉伯数字的图(有共阴共阳之分),省的用的时候一直去翻了。
在这里插入图片描述

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值