雁塔社区 >> 学术探讨 >> 浏览帖子 |
新帖 人气 热门 在线 帮助 关闭左侧栏 |
干货来袭,【明德扬】FPGA分享之边缘检测工程 | 浏览:1161 回复:0 |
mdykj | 2016/9/21 20:03:27 编辑 | 1 楼 |
一、 功能简述
PLL模块 本功能用到了两个PLL。 PLL1根据50M时钟,产生整个工程的主体时钟100M,以及送给OV7670的时钟25M。 PLL2根据OV7670过来的PCLK时钟,产生OV7670同频同相的时钟,这个时钟作为采集模块和VGA驱动模块的时钟。 矩阵键盘模块 矩阵键盘只用识别哪个按键按下。 控制模块 控制模块负责整个工程的控制信息,此项目主要是控制边缘检测结果水线。 OV7670配置模块 OV7670配置模块负责管理OV7670的寄存器的配置信号,决定了哪些寄存器要进行读、写操作。 本模块内部包括有一个配置表,用户通过该表就可以定义寄存器配置。该配置表可以定义配置的长度以及每个寄存器的读写属性,其格式如下: 读写属性(2bit) 地址(8bit) 数据(8bit) 读写属性:0表示不操作;1表示写操作;2表示读操作;3表示先写后读操作。 地址:要操作的寄存器地址 数据:要操作到寄存器的数据,只有写时有效,读时无用。 本模块根据配置表属性,产生相应的读写命令并发给下游模块。 SCCB接口模块 SCCB接口模块处理OV7670相连的配置接口时序。接收上游模块的写命令,就产生写时序;接收上游模块的读时序,就产生读时序,并将读到的数据返回给上游模块。 OV7670采集模块 OV7670采集模块负责采集图像数据。本工程采集的是640*480分辨率、RGB565格式的图像,图像速率是30帧/S。 1. 务必保证输出每一帧都是640*480的图像。 2. 务必能够自动从第一个像素开始采集。 3. 为了实现以上两点,当出错时,可以不用保证图像数据正确,但一定要满足以上两点。 滤波模块 滤波模块负责图像数据的噪声滤波,滤去高斯噪声。 边缘检测模块 边缘检测模块负责完成基于SOBEL算法的边缘检测,同时对结果做二值化处理,最后得到1个像素1比特的结果数据,数据送到存储控制模块。 存储控制模块 边缘检测后的图像数据,首先将保存到内部的两个RAM当中。每个RAM可以保存1幅320*200的图像。本模块的工作方式为: 1. 图像数据开始时保存到RAM0,同时VGA从RAM1中读取图像数据进行显示。 2. 如果将整个图像数据写到RAM0后,等待VGA读完RAM1的数据。在等待期间,新到的图像数据将丢弃。 3. 当VGA读完RAM1的数据后,如果RAM0的1幅图像数据已经写完,将开始读取RAM0的数据进行显示。同时模块准备将新的图像数据写到RAM1当中,需要注意的是,新的图像数据必须从一幅图像的第一个数据开始写。 4. RAM1和RAM0根据以上原则相互切换。也就是说:当写完一幅图像并且读完一幅图像时,才开始切换。 VGA驱动模块 读取存储模块的数据并驱动到外部显示器进行显示。 1680)this.width=1680' />1680)this.width=1680' /> |