基于FPGA:运动目标检测(补充仿真结果,可用毕设)

1. 接上篇文章

     开发设计直接看这篇:基于FPGA:运动目标检测(原理图+源码+硬件选择,可用毕设) 这里补充一下仿真结果,不少朋友反应,论文没有仿真结果不好做。
     完整源码工程在这里下载:基于FPGA的运动目标检测(硬件+原理图+源码+仿真+设计文档) 同样,私信我可以半价,因为可以去掉平台手续费。[0][1]

二、进入正文(帧差法Modelsim仿真)

     搭建一个视频流Modelsim仿真,需要模拟一个视频时序,用来验证算法,并有效的利用Matlab工具把静态图片“打散”保存到txt文本里,供Modesim读取,然后通过Matalb“复现”处理后的文本。

     Test0.bmp 测试图片,matlab 产生的 rgb txt数据文本,
     image_r_data.txt image_g_data.txt image_b_data.txt

     Test1.bmp 测试图片
     image_r_data_o.txt image_g_data_o.txt image_b_data_o.txt

     Verilog实现侦查法,经过modelsim仿真得到,运行smy_image_show.m
     data_r_out.txt data_g_out.txt data_b_out.txt

Rgb2yuv 仿真波形,话不多说,看公式

Diff_frame 模块仿真波形:data_next – data_cur 得到的结果如post_img_Bit 当8’d130-8’D16
大于 设定阈值 15 则认为时目标区域,设置为255

腐蚀和膨胀仿真波形,如下得到的是*p11,p12 9个像素数据为3×3 图像模板,通过行缓存设计(缓存了2行图像数据),黄线后第3行,得到完整的3×3 图像模板

Find_box 模块仿真波形,灰度帧差法的得到二值图像,然后设计包围盒得到上下左右 4点像素坐标,框出目标区域。

数据采集​​模块:

为了直观的看到行场信号,模拟摄像头时序,一帧数据缩小为4行数据,如下图所示:

如下图所示,实现输出RGB565格式时,连续两个像素时钟的8bit数据的拼接成16bit的数据

I2C控制时序模块:



                                                                                 I2C时序仿真图

使用的I2C系统时钟为100MHz,由系统时钟分频可以得到i2c_sclk时钟是100KHz,但是其并不能直接作为Verilog设计的驱动时钟,所以这里使用使能时钟实现。i2c_capture_en在高电平中间点采样,i2c_transfer_en在低电平中间点传输数据,I2C配置的数据在第一个字节写入的是8’H42为写时序的摄像头ID地址,而寄存器地址数据会在第二个字节开始写入,然后寄存器数据的写入在第三个字节中进行。由于响应位ACK的存在,每发送完一个字节需要9个时钟周期。

二、VGA模块:

图2.17 I2C时序仿真图
如图2.17所示,I2C时序Modelsim仿真结果。本文设计使用的I2C系统时钟为100MHz,由系统时钟分频可以得到i2c_sclk时钟是100KHz,但是其并不能直接作为Verilog设计的驱动时钟,所以这里使用使能时钟实现。i2c_capture_en在高电平中间点采样,i2c_transfer_en在低电平中间点传输数据,I2C配置的数据在第一个字节写入的是8’H42为写时序的摄像头ID地址,而寄存器地址数据会在第二个字节开始写入,然后寄存器数据的写入在第三个字节中进行。由于响应位ACK的存在,每发送完一个字节需要9个时钟周期。

注:如需无水印图片,可私信我。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(1)
青葱年少的头像青葱年少普通用户
上一篇 2022年4月28日
下一篇 2022年4月28日

相关推荐