基于FPGA的超声波测距

一.实验目的
使用 DE2-115 开发板驱动 超声波检测模块(HC_SR04 ),并将所测得数据显示到开发板上的数码管上,或者通过用UART通信方式上传到笔记本串口助手上显示(可采用UART IP核)。

二.实验原理


从上图我们可以看到超声波模块的4个引脚,它们的作用罗列如下:

1. VCC: 电源引脚,超声波模块工作电压为5伏。

2. Trig: 是Trigger(触发)这个单词的缩写,该引脚用于触发超声波脉冲。

3. Echo: 该引脚会在高电平和低电平之间转换,当检测到障碍物时,在高电平保持的时间就表示信号发射出去并反射回来的时间。

4. GND: 接地引脚。

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

硬件模块时序图


三.RTL图和引脚配置

 

 

四.各模块实现
clk_div

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

module     hc_sr_echo(
    in

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值