首先先声明一下,本项目已经结题,可以放心根据我的设计进行二次开发和直接套用!!!
完整工程文件下载:基于FPGA的倒车雷达系统 提取码:8l29
引言:
本文详细阐述了基于FPGA的毫米波雷达安全监测系统的设计方案,包括硬件架以及软件编程等方面。在硬件架构方面,采用了高性能的FPGA芯片、摄像头和毫米波雷达传感器,实现了系统的快速响应和高效处理。在软件编程方面,利用FPGA的可编程性,实现了系统的灵活配置和功能扩展。适用于大学生FPGA课题设计,FPGA毕业设计,FPGA项目设计。
一、设计背景
随着科技的不断进步,新能源汽车的崛起,毫米波雷达技术在安全监测领域的应用逐渐广泛。毫米波雷达具有波长短、频带宽、穿透能力强、抗干扰性能好等优点,能够实现对目标的精确测量和定位,因此在汽车防撞、无人机避障、人员监测等多个领域具有广阔的应用前景。
然而,传统的毫米波雷达信号处理系统往往存在处理速度慢、功耗高、灵活性差等问题,难以满足现代安全监测系统对实时性、准确性和可靠性的要求。因此,研究基于FPGA(现场可编程门阵列)的毫米波雷达安全监测系统具有重要的现实意义和应用价值。
FPGA作为一种可编程逻辑器件,具有高速、灵活、低功耗等优点,能够实现对毫米波雷达信号的高效处理。通过将FPGA应用于毫米波雷达信号处理系统,可以大幅度提高系统的处理速度和准确性,降低功耗,增强系统的灵活性和可重构性。
二、设计实现功能
(1)毫米波雷达测距功能,数码管显示
(2)毫米波雷达测速度功能,数码管显示
(3)实时显示摄像头图像,HDMI显示
(4)最小距离警报系统,蜂鸣器+LED
三、设计选型
(1)FPGA芯片:Inter 公司 EP4CE10F17C8N 主芯片
(2)雷达模块:毫米波雷达 XW-HLR26-24G
(3)摄像头模块:CMOS 图像传感器OV5640
四、设计方案
本系统利用FPGA对毫米波雷达传感器和摄像头进行数据处理,存储在SDRAM存储器中,将摄像头采集图像数据通过HDMI显示在显示模块上;毫米波雷达传感器可通过上位机进行展示距离、速度,也可通过FPGA进行数据处理后,通过LED灯,数码管,蜂鸣器的形式展示。如下图系统设计框图。
五、硬件介绍
1、开发板介绍
本设计FPGA部分没有进行硬件画板子设计,因为搞比赛的时候买过一个正点原子的开发板,所以为了节约经费,就直接在这个开发板上进行实现了本次设计。型号为:新起点E10,芯片一样的开发板也可以。
2、雷达模块介绍
本设计的雷达模块,经过对比和结合设计需求,决定采用毫米波雷达 XW-HLR26-24G,具体实物图如下,没有的小伙伴,可以直接在某宝直接搜 XW-HLR26-24G同款即可。
3、摄像头模块
本设计摄像头模块采用OV5640,没有的小伙伴,可以单独在某宝搜同款即可
4、显示模块
本设计显示模块,采用HDMI外接显示屏进行显示,提前准备一个HDMI的连接线和一个HDMI显示屏
六、设计思路
1、了解雷达模块和FPGA的通信模式
通过阅读雷达模块的手册,和通信协议手册,可以了解到雷达模块XW-HLR26-24G,需要FPGA这边通过UART发送查询指令,然后雷达模块反馈一个数据,通过解析这个数据来得到距离、速度等雷达信息。
FPGA发送指令格式:
雷达模块反馈数据格式:
同时还需要对雷达模块的UART波特率进行设置:本设计采用9600,雷达模块初始化的波特率为115200,需要连接到电脑对其修改:下图为指令集合
2.测试雷达模块
把雷达模块通过串口转USB模块,连接到电脑,然后打开上位机软件,点击打开串口,即可检测雷达模块的距离、速度、信噪比示数,然后根据实际情况对比一下,与测量的值差不多即可,此时可以确定雷达模块没问题。
七、设计代码
1、雷达通信模块
主要通过UART实现雷达和FPGA之间的通信,并通过按键对雷达工作模式进行控制,通过译码模块雷达数据进行处理,然后传递给数码管等显示模块。
部分代码:
// 将UartRx逻辑功能单元输出的来自测距模块的数据进行译码
module RecDecode(
Clk,
RstN,
DataEn,
DataIn,
OutEn,
DistOut,
jl_data
);
input Clk;
input RstN;
input DataEn; // 待译码数据使能
input [103:0] DataIn; // 待译码数据输入
output reg OutEn; // 译码完成
output reg [19:0] DistOut; // 译码输出数据
output reg [15:0] jl_data;
reg [1:0] STATE;
reg [15:0] jl_data_r;
parameter IDLE = 2'b00,
READ = 2'b01,
SEND = 2'b10,
RETU = 2'b11;
/*****
字数太多省略
****/
endmodule
2、摄像头显示模块
摄像头显示主要通过IIC对图像数据进行搬运,然后缓存到SDRAM,然后提供HDMI传递到显示器,进行实时图像显示。
3、顶层连接
采用模块化设计,顶层只负责例化接线
部分代码:
module my_top(
input sys_clk , //系统时钟
input sys_rst_n , //系统复位,低电平有效
input key_hmjld ,
input [1:0] key_ctrl ,
//摄像头接口
input cam_pclk , //cmos 数据像素时钟
input cam_vsync , //cmos 场同步信号
input cam_href , //cmos 行同步信号
input [7:0] cam_data , //cmos 数据
output cam_rst_n , //cmos 复位信号,低电平有效
output cam_pwdn , //cmos 电源休眠模式选择信号
output cam_scl , //cmos SCCB_SCL线
inout cam_sda , //cmos SCCB_SDA线
//SDRAM接口
output sdram_clk , //SDRAM 时钟
output sdram_cke , //SDRAM 时钟有效
output sdram_cs_n , //SDRAM 片选
output sdram_ras_n , //SDRAM 行有效
output sdram_cas_n , //SDRAM 列有效
output sdram_we_n , //SDRAM 写有效
output [1:0] sdram_ba , //SDRAM Bank地址
output [1:0] sdram_dqm , //SDRAM 数据掩码
output [12:0] sdram_addr , //SDRAM 地址
inout [15:0] sdram_data , //SDRAM 数据
//HDMI接口
output tmds_clk_p , // TMDS 时钟通道
output tmds_clk_n ,
output [2:0] tmds_data_p , // TMDS 数据通道
output [2:0] tmds_data_n ,
//毫米波雷达
input i_hmbld1_uart_rxd ,
output o_hmbld1_uart_txd ,
input i_hmbld2_uart_rxd ,
output o_hmbld2_uart_txd ,
output o_bj_led1 ,
output o_bj_led2 ,
//数码管
output [5:0] o_sel,
output [7:0] o_seg
);
/************************************************/
// 摄像头+hdmi
/************************************************/
ov5640_hdmi ov5640_hdmi(
.sys_clk (sys_clk ), //系统时钟
.sys_rst_n (sys_rst_n ), //系统复位,低电平有效
//摄像头接口
.cam_pclk (cam_pclk ), //cmos 数据像素时钟
.cam_vsync (cam_vsync ), //cmos 场同步信号
.cam_href (cam_href ), //cmos 行同步信号
.cam_data (cam_data ), //cmos 数据
.cam_rst_n (cam_rst_n ), //cmos 复位信号,低电平有效
.cam_pwdn (cam_pwdn ), //cmos 电源休眠模式选择信号
.cam_scl (cam_scl ), //cmos SCCB_SCL线
.cam_sda (cam_sda ), //cmos SCCB_SDA线
//SDRAM接口
.sdram_clk (sdram_clk ), //SDRAM 时钟
.sdram_cke (sdram_cke ), //SDRAM 时钟有效
.sdram_cs_n (sdram_cs_n ), //SDRAM 片选
.sdram_ras_n (sdram_ras_n ), //SDRAM 行有效
.sdram_cas_n (sdram_cas_n ), //SDRAM 列有效
.sdram_we_n (sdram_we_n ), //SDRAM 写有效
/**
字数显示,此处省略
*/
always @ (posedge sys_clk or negedge sys_rst_n )
begin
if (~sys_rst_n)
show_data <= 0;
else if (show_crtl_en == 1)
show_data <= {4'd0,jl2_data};
else if (show_crtl_en == 0)
show_data <= {4'd0,jl1_data};
else
show_data <= show_data;
end
endmodule
八、下板调试
1.测试毫米波雷达
首先把FPGA程序固化到开发板,然后把雷达模块通过UART连接到FPGA开发板,通过移动雷达模块,数码管可显示雷达模块与桌面的距离,并且当距离达到预设值的时候LED会发出警告,并且蜂鸣器也会发出警报!!
2.测试摄像头显示
把摄像头模块插到开发板的,coms接口上,然后用HDMI连接线,连接FPGA开发板和显示屏,给开发板上电,通过移动开发板,模拟汽车倒车场景,摄像头实时采集图像,然后再显示屏进行显示,这样一套就完全模拟了,汽车的倒车影像和倒车雷达。
这样我们项目的完整功能就测试完毕,后期可根据需求在进行更新!!!
完整工程文件下载:基于FPGA的倒车雷达系统 提取码:8l29
如果感觉文章对您有用,麻烦三连支持一下,方便下次用到的时候,就可以快速找到我,非常感谢您的支持!!!