1 moduleRGB_init(2 //系统信号输入(时钟+复位)

3 input cmos_clk_i, //模块控制时钟

4 input rst_n_i, //系统复位信号5 //OV5640输出信号(从5640输入到FPGA)

6 input cmos_pclk_i, //摄像头时钟

7 input cmos_href_i, //帧输出行同步信号

8 input cmos_vsync_i, //场同步信号

9 input [7:0] cmos_data_i, //像素数据10 //模块的输出信号

11 output clk_ce, //摄像头帧数据输出/捕获使能信号(12Mhz),该信号的理解是最难的

12 output de_o, //数据有效信号

13 output [23:0] rgb_o, //输出的24bit像素数据

14 output vs_o, //输出的场同步信号

15 output hs_o, //输出的行同步信号16 //输出道5640模块的像素时钟

17 outputcmos_xclk18 );19

20 //为了保持系统稳定,需要丢弃前期一部分帧图像,此处选择丢弃15个,自行选择,也有10个的

21 parameter[3:0]CMOS_FRAME_WAITCNT=15;22

23 assign cmos_xclk=cmos_clk_i; //xclk为5640驱动时钟,为24/25Mhz24

25 //在米联客的对复位信号的处理中,复位信号延迟了5个时钟,好像不延迟也可以,可以在例程2中查看26 //个人认为复位信号的处理是为了使复位信号保持一个完整的信号周期

27 reg[4:0]rst_n_reg=5'd0;

28 always@(posedge cmos_clk_i) //同步于FPGA输入时钟

29 begin

30 rst_n_reg<={rst_n_reg[3:0],rst_n_i};31 end

32

33 reg cmos_href_r=1'b0; //将行同步信号进行缓存

34 reg [1:0]cmos_vsync_r; //将场同步信号进行缓存

35 reg[7:0]cmos_data_r; //将5640输出到FPGA的数据进行寄存,因为是处理输出16bit,就是将两个周期的输入信号进行拼接处理36 //进行行、场同步信号进行缓存,输入数据进行一级缓存

37 always@(posedgecmos_pclk_i)38 begin

39 cmos_vsync_r<=cmos_vsync_i;40 cmos_href_r<=cmos_href_i;41 cmos_data_r<=cmos_data_i;42 end

43

44 //为了判断一帧数据的开始&结束,同时对帧进行计数,对场同步信号进行寄存

45 reg [1:0]cmos_vsync_d;46 always@(posedge cmos_pclk_i) //同步于5640输出时钟

47 begin

48 cmos_vsync_d<={cmos_vsync_d[0],cmos_vsync_r};49 end

50 //场开始与结束信号

51 wirevs_start;52 assign vs_start=(!cmos_vsync_d[1])&(cmos_vsync_d[0]); //posedge mark the action

53 wirevs_end;54 assign vs_end=(cmos_vsync_d[1])&(!cmos_vsync_d[0]);55

56 //行同步信号缓存

57 reg [1:0]cmos_href_d=2'd0;

58 always@(posedgecmos_pclk_i)59 begin

60 cmos_href_d<={cmos_href_d[0],cmos_href_r};61 end

62

63 //前期丢弃部分帧

64 reg [4:0]frame_cnt=0; //帧计数器

65 reg out_en=0; //开始正常启动操作

66 always@(posedgecmos_pclk_i)67 if(!rst_n_reg[4])68 begin

69 frame_cnt<=5'd0;

70 out_en<=1'b0;

71 end

72 else begin

73 if(vs_start) begin

74 frame_cnt<=frame_cnt+1;75 out_en<=0;76 end

77 else if(frame_cnt>=CMOS_FRAME_WAITCNT)78 begin

79 out_en<=1;80 frame_cnt<=CMOS_FRAME_WAITCNT; //保持正常帧处理完毕

81 end

82 end

83 //由于输出的是24bit数据,是由16bit数据转化而来,将两个帧的RGB数据进行拼接

84 reg href_cnt=0;85 reg data_en=1'b0;

86 reg [15:0]RGBm=16'd0; //middle RGB data

87

88 always@(posedge cmos_pclk_i)begin

89 if(!rst_n_reg[4])begin

90 href_cnt<=0;91 data_en<=1'b0;

92 RGBm<=16'd0;

93 end

94 //两个数据拼接完毕之后将data_en置一,第0次拼接使低8位有效,第1次使得低八位有效(位移)

95 else begin

96 href_cnt<=(cmos_href_r)?href_cnt+1'b1:href_cnt;

97 data_en<=(href_cnt==1);98 if(href_cnt) RGBm<={RGBm[7:0],cmos_data_r}; //此处cmos_data_r lag 2 clocks,thus later all lag 2clks

99 end

100 end

101

102 assign rgb_o={RGBm[15:11],3'd0,RGBm[10:5],2'd0,RGBm[4:0],3'd0};

103 //模块行同步输出

104 assign hs_o=out_en?(cmos_href_d[0]):0; //为了与暑促信号同步,该同步信号是滞后两个pclk105 //模块场同步信号输出

106 assign vs_o=out_en?(cmos_vsync_r):0; //行同步结束之后开始场同步,场同步信号知乎一个pclk,觉得这个程序真的很nb,考虑的太全了107 //模块数据输出同步时钟信号,12M,

108 assign de_o=out_en?data_en:0;109 //输出时钟enable signal

110 assign clk_ce=out_en?((data_en&hs_o)||!hs_o):0; //其实好像1也行,没有边沿驱动111 //在init complete的情况下,d0是经过了2个pclk延迟的,该output信号同步(更准确地说是对齐)于这个数据输入时的时钟,112 //同步于12Mhz的data_en时钟113 //该模块每2个pclk输出一次rgb[23:0]的数据,需要听过clk_ce对时钟频率进行同步,该处理解决了模块接口之间的同步问题

114 /*

115 举例说明:116 在do==0时,clk_ce恒为高,没有时钟脉冲117 在do==1时,该时钟始终同步于12M时钟118 */

119 endmodule

ov5640帧率配置_OV5640摄像头的数据处理配置流程(一)相关推荐

  1. 使用OBS配置虚拟摄像头

    请先阅读 最近有同学问我怎么装虚拟摄像头,于是就写一篇博客大致说一下. 请合理合法地使用虚拟摄像头. 本文只适用于在OBS中设置虚拟摄像头,不适用于在OBS中通过推流设置直播等方式完成类似于虚拟摄像头 ...

  2. ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用

    ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用 1. 摄像头传感器与数据采集(Camera Sensor and Data Acquisition) 1.1 数字摄像头传感器 ...

  3. 怎样取消无线配置服务器,如何 去掉无线配置服务器

    如何 去掉无线配置服务器 内容精选 换一换 请您在购买前确保已完成注册和充值.详细操作请参见如何注册公有云管理控制台的用户?登录管理控制台.单击管理控制台左上角的,选择区域和项目.选择"计算 ...

  4. java定时增量同步,一种可配置的定时数据同步方法与流程

    本发明涉及数据交换技术,尤其涉及一种可配置的定时数据同步方法.解决企业内部异构系统之间的数据同步问题.主要利用计算机多线程技术.XML技术.数据库技术实现.具有简单配置.快速部署.灵活扩展的特点,并且 ...

  5. 计算机整机配置原则,电脑主机高端配置标准 电脑高端主机怎么配置

    现在的人们不管出于什么原因,反正对电脑主机的配置要求是越来越高了.怎样的电脑主机配置才能算高端配置呢?因为时代不同了,所以标准也会跟着变动.2017电脑高端主机又该怎么配置? 电脑主机高端配置标准 既 ...

  6. linux双显卡配置_Linux系统怎么配置双显卡?,linux配置显卡

    Linux系统怎么配置双显卡?,linux配置显卡 感谢帮客之家网友鸢一雨音 的投稿 众所周知,自从高性能独立图形处理器出现之后,很多便携式计算机就会采取一种双显卡的设计:节能的核心图形处理器用于渲染 ...

  7. linux内核优盘配置,mini2440建立交叉编译环境+配置linux内核

    mini2440建立交叉编译环境+配置linux内核 来源:IT165收集  发布日期:2014-09-22 20:37:16 (mini2440)建立交叉编译环境+配置linux内核 系统ubunt ...

  8. 锐捷交换机配置snmp版本_snmp交换机配置

    华为交换机 1.查询交换机当前是snmp配置命令 dis cur 2.进入全局模式 int ethernet1/0/7 shutdown 关 undoshutdown 激活 sys 3.进入SNMP配 ...

  9. 在web.xml文件中配置Servlet时,主要配置哪些信息?

    web前端的学习内容是比较多的,其中有一部分就是关于在web.xml文件中配置Servlet时的相关内容,在web.xml文件中配置Servlet时,主要配置哪些信息?来看看下面的详细介绍. 使用ID ...

  10. ASP.NET Core的配置(5):配置的同步[设计篇]

    本节所谓的"配置同步"主要体现在两个方面:其一,如何监控配置源并在其变化的时候自动加载其数据,其目的是让应用中通过Configuration对象承载的配置与配置源的数据同步:其二. ...

最新文章

  1. react中纯函数_如何在纯React中创建电子邮件芯片
  2. 一秒看遍10万神经元的「绚丽烟花」,AI究竟向大脑学什么?|北大陈良怡专访...
  3. C++中指针和引用的区别
  4. Django:视图和URL配置
  5. 润乾集算报表呈现输出之表头重复
  6. Mybatis多表模型
  7. Tecplot 安装记录
  8. CentOS8下安装配置Wireguard
  9. 产品配件类目税目分类_商品类别税率一览表
  10. OpenCV 单目摄像头(python版)
  11. 7-59 二元一次方程的解
  12. js获取h5链接中的参数(亲测可用)
  13. java软件工程师 英文简历_java工程师英文简历范文
  14. 拼多多2020届数据分析面试题合集
  15. 微信指数批量采集、导出
  16. 树根互联冲刺科创板上市:累计亏损超11亿元,和三一重工关系密切
  17. 第十九章 蚂蚁靠什么绊倒大象
  18. Autolisp no function definition
  19. 衡量企业网络广告效果的九个指标
  20. element-ui框架的el-dialog弹出框被遮罩层挡住了

热门文章

  1. G33/G31芯片最佳分辨率1440×900
  2. cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer Micro
  3. 紫光输入法终于有新版本了--紫光华宇拼音输入法V5P
  4. [1034]安装Xposed框架+JustTrustMe
  5. 手把手教你安装Xposed框架+JustTrustMe抓取手机APP数据
  6. linux下texlive的卸载,Linux 下 texlive 2018 的安装
  7. react 报错Assign arrow function to a variable before exporting as module default
  8. lcx 通过端口转发实现内网穿透
  9. 全球十大黑客(第一让你不敢想象)
  10. 英语测试用什么软件有哪些,学习英语的软件哪个好 什么比较好用