超声波测距实验(1)

这篇博客介绍了基于HC-SR04的超声波测距实验,详细阐述了实验原理,包括模块介绍、系统设计,其中重点提到FPGA在超声波收发部分的角色,以及硬件时序图。接着,博主分享了代码设计,包括clk_div、hc_sr_echo、hc_sr_trig、hc_sr_driver等关键模块,以及如何整合到顶层文件hc_sr_top中。此外,还提到了数码管和报警模块的实现,并提及了卡尔曼滤波的应用。
摘要由CSDN通过智能技术生成

一、实验原理

1.模块介绍

HC-SR04超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。图1为HC-SR04外观,其基本工作原理为给予此超声波测距模块触发信号后模块发射超声波,当超声波投射到物体而反射回来时,模块输出回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。

 

 2.系统设计

图给出了系统软件设计的整体框架,实际上由于FPGA内的各个子进程都是并行执行的,且每个子进程都是是独立的模块,因此程序设计并不是按照顺序的方法设计的,而是分离成各个小的子模块进行设计综合的,需要严格控制时序。

超声波收发部分负责产生超声波驱动信号,要求频率为50MHz,占空比为50的方波信号以驱动超声波换能器,同时高速计数器开始计数,检测回波后,计数器停止计数,计算后控制显示输出。

 3.硬件时序图

 二,代码设计

  • clk_div模块
    /*================================================*\
    		  Filename ﹕
    			Author ﹕
    	  Description  ﹕产生周期为1us的时钟信号
    		 Called by ﹕
    Revision History   ﹕ mm/dd/202x
    		  			  Revision 1.0
      			  Email﹕ 
    			Company﹕ 
    \*================================================*/
    module 	clk_div(
    	input  wire			Clk		, //system clock 50MHz
    	input  wire 		Rst_n	, //reset ,low valid
    		   
    	output wire  		clk_us 	  //
    );
    //Parameter Declarations
    	parameter CNT_MAX = 19'd50;//1us的计数值为 50 * Tclk(20ns)
    
    //Interrnal wire/reg declarations
    	reg		[5:00]	cnt		; //Counter 
    	wire			add_cnt ; //Counter Enable
    	wire			end_cnt ; //Counter Reset 
    	
    //Logic Description
    	
    	always @(posedge Clk or negedge Rst_n)begin  
    		if(!Rst_n)begin  
    			cnt <= 'd0; 
    		end  
    		else if(add_cnt)begin  
    			if(end_cnt)begin  
    				cnt <= 'd0; 
    			end  
    			else begin  
    				cnt <= cnt + 1'b1; 
    			end  
    		end  
    		else begin  
    			cnt <= cnt;  
    		end  
    	end 
    	
    	assign add_cnt = 1'b1; 
    	assign end_cnt = add_cnt && cnt >= CNT_MAX - 19'd1;
    	
    	assign clk_us = end_cnt;
    	
    
    endmodule 
    

  • hc_sr_echo
    /*================================================*\
    		  Filename ﹕
    			Author ﹕
    	  Description  ﹕超声波检测距离模块
    					本模块理论测试距离 2cm~510cm
    						输出结果保留两位小数
    		 Called by ﹕
    Revision History   ﹕ mm/dd/202x
    		  			  Revision 1.0
      			  Email﹕ 
    			Company﹕ 
    \*==========
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值