超声波测距数码管显示 FPGA 设计 Verilog Vivado

名称:超声波测距数码管显示 FPGA 设计 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计实现基于 FPGA 的超声波测距与数码管显示功能,使用 Verilog 编写,在 Vivado 工程中完成综合、实现与比特流生成。系统通过超声波模块的 trig 信号发出触发脉冲,并接收 echo 回波高电平,根据回波持续时间换算距离值,输出单位为 mm 的测距数据。 为了提升显示稳定性,设计在原始测距数据后加入 8 点均值滤波处理,对连续有效距离数据进行平均,减小单次测量抖动对显示结果的影响。滤波后的距离值送入数码管显示模块,通过段选和位选信号完成多位数码管动态扫描显示。 整体功能适合用于 FPGA 入门实验、超声波传感器接口实验、数字测距课程设计和板级外设联调参考。工程结构清晰,顶层模块将测距、滤波和显示三个功能单元连接在一起,便于学习各模块之间的数据流和控制信号配合。

运行环境

开发语言:Verilog 开发软件:Vivado 顶层模块:SMDisplay 主要工程文件包括 Vivado 工程文件、Verilog 源码文件和 XDC 管脚约束文件。工程包含 SMDisplay、Ultrasonic、moving_average_8point、display 等模块,可在 Vivado 环境中打开工程进行综合、实现和下载验证。

设计思路

系统采用模块化设计思路,顶层 SMDisplay 负责连接超声波测距、数据滤波和数码管显示。外部输入包括系统时钟 clk、复位 rst 和超声波模块 echo 信号,输出包括 trig 触发信号、数码管段选 dataout 以及位选 en。顶层不直接处理复杂算法,而是将不同功能拆分到独立模块中,便于调试和复用。 Ultrasonic 模块负责完成超声波测距时序控制。该模块根据系统时钟产生约 15us 的 trig 触发脉冲,并对 echo 高电平持续时间进行计数,得到距离测量值 distance,同时通过 distance_vld 给出单周期数据有效标志。该结构使后级模块只在数据有效时更新,避免无效采样影响显示。 moving_average_8point 模块用于对测距结果做 8 点均值滤波。每当 distance_vld 有效时,将新的 distance 数据送入滤波模块,输出平均后的 distance_av。相比直接显示单次测量值,均值滤波可以使数码管读数更平稳,尤其适合超声波模块这类容易受环境反射、角度和瞬时干扰影响的传感器。 display 模块负责将滤波后的距离值转换为数码管显示信号。模块输出 8 位段选 dataout 和 6 位 COM 使能 en,通过动态扫描方式显示距离数据。测距、滤波、显示三部分之间通过明确的数据有效信号和距离总线连接,逻辑层次清楚,适合继续扩展报警、量程判断或串口输出等功能。

模块结构

模块结构如下: SMDisplay:顶层模块,连接时钟、复位、超声波 echo/trig 接口、数码管段选和位选信号。 Ultrasonic:超声波测距模块,产生 trig 触发脉冲,接收 echo 回波信号,输出 distance 和 distance_vld。 moving_average_8point:8 点均值滤波模块,对有效测距数据进行平均处理,输出稳定后的 distance_av。 display:数码管显示模块,根据滤波后的距离值输出 dataout 和 en,实现距离数值显示。 SMDisplay_vlg_tst:测试相关文件,可用于模块仿真参考。

开发板验证

工程配有 XDC 管脚约束文件,并提供开发板实物验证相关图片,可用于 Vivado 工程的板级下载和接口连接参考。顶层接口包含超声波模块的 trig、echo 信号以及数码管 dataout、en 输出,适合结合约束文件完成 FPGA 引脚分配、外设连线和开发板实测显示。

超声波测距数码管显示 FPGA 设计 Verilog Vivado 开发板验证图片 .jpg

超声波测距数码管显示 FPGA 设计 Verilog Vivado 开发板验证图片  (2).jpg

超声波测距数码管显示 FPGA 设计 Verilog Vivado 开发板验证图片  (1).jpg

演示视频

配有演示视频,可用于查看超声波测距与数码管显示的实际运行效果。

部分代码

以下展示顶层模块 SMDisplay 的部分代码,完整源码请下载压缩包查看。

module SMDisplay(clk,rst,echo,trig,dataout,en);

input clk,rst;//时钟和复位
input echo;//接收距离高电平
output trig;//发送15us脉冲
output[7:0] dataout;//数码管段选
output[5:0] en;//COM使能输出
wire distance_vld;
wire [15:0] distance;//测距值,单位mm
wire [15:0] distance_av;//测距值,单位mm
//超声波测距模块
Ultrasonic i_Ultrasonic (
. clk_50M(clk),
. reset_n(rst),
. echo(echo),//接收距离高电平
. trig(trig),//发送15us脉冲
. distance_vld(distance_vld),           // 数据有效信号,单周期脉冲   
. distance(distance)//输出距离,单位mm
);

//均值滤波
moving_average_8point i_moving_average_8point (
. clk(clk),          // 时钟信号
. rst_n(rst),        // 异步复位信号,低电平有效
. data(distance),  // 32位输入数据
. en(distance_vld),           // 数据有效信号,单周期脉冲    
. avg(distance_av),   // 32位平均值输出
. avg_valid()     // 平均值有效信号
);

//数码管显示模块
display i_display(
. clk(clk),
. rst(rst),
. dataout(dataout),//数码管段选
. en(en),//COM使能输出
. distance(distance_av)//输出距离,单位mm
);

endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 超声波测距数码管显示 FPGA 设计 Verilog Vivado

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员