超声波测距模块Pmod接口(VHDL实现)

逻辑主页

代码下载

版本1.1: pmod_ultrasonic_range_finder.vhd (3.6 KB)
消除部分综合警告,功能与v1.0完全一致

版本1.0: pmod_ultrasonic_range_finder_v1_0.vhd (3.2 KB)
首次公开发布

特性

  • Digilent超声波测距模块(MAXSONAR)Pmod的轻量化VHDL接口源码
  • 通过并行接口持续输出最新距离数据
  • 处理MAXSONAR Pmod所有数据采集任务
  • 将接收数据转换为英寸单位
  • 可配置系统时钟频率

引言

本方案详述了连接FPGA与Digilent超声波测距模块(URF)Pmod的VHDL组件,如图1所示。图2展示了该URF Pmod接口组件集成至系统的典型应用实例。如图所示,URF Pmod接口连接至模块的脉冲宽度(PW)端口以获取距离信息。其将距离值换算为英寸单位后,通过简易并行接口输出,可连接至用户逻辑或FPGA输出端口。

1. Digilent超声波测距模块Pmod

2. 示例实现

背景知识

该超声波测距模块采用Maxbotix公司MB1010 LV-MAXSONAR-EZ1超声波传感器进行测距。传感器提供3种输出方式传递相同距离信息:模拟电压、脉冲宽度及UART串口。本FPGA接口设计选用脉冲宽度模式,因其所需FPGA资源最少。脉冲宽度输出仅是一个可变宽度的脉冲,其持续时间对应所检测物体的距离。

工作原理

经过350毫秒的启动延迟后,URF Pmod每49毫秒在其脉冲宽度(PW)输出端发送一个脉冲。该脉冲的宽度(持续时间)范围为0.88毫秒 ≤ PW ≤ 37.5毫秒。每147微秒代表检测到物体的一英寸距离。

URF Pmod接口逻辑使用两个计数器来评估距离。当PW信号有效时,第一个计数器对系统时钟脉冲进行计数,直至达到147微秒的等效值。此时,第一个计数器清零,第二个计数器递增以记录英寸数。此过程重复进行,直到PW信号失效。

一旦PW信号失效,第二个计数器的值(即总英寸数)将被类型转换为标准逻辑向量,并以二进制数形式输出到距离端口。两个计数器均被清零,为下一次测量做准备。

时钟配置

通过为ENTITY中定义的GENERIC clk_freq赋值,可配置此URF Pmod接口的时钟。此通用参数必须设置为所提供系统时钟的频率(单位为MHz)。

端口描述

表1描述了URF Pmod接口的端口。

1. 端口描述

连接方式

该Pmod具有一个6针连接器。表2提供了此连接器的引脚排列。需将URF Pmod接口代码的端口分配至FPGA引脚,这些引脚按所列方式路由至该连接器。

2. URF Pmod引脚排列及与FPGA的URF Pmod接口组件的连接

复位

reset_n 输入端口必须保持逻辑高电平,URF Pmod接口才能正常工作。该端口上的低电平会异步复位该组件。复位期间,组件将中止当前读取并忽略URF Pmod输入。同时还会清除距离输出及其内部逻辑。一旦复位释放,URF Pmod接口将恢复运行。

结论

该URF Pmod接口是可编程逻辑组件,用于连接Digilent超声波测距模块Pmod。它处理与URF Pmod的所有通信,通过并行输出持续提供更新的距离数据流。