ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OV5640上电控制

2021-04-08 09:33:39  阅读:229  来源: 互联网

标签:ov5640 cnt power 控制 上电 clk rst OV5640


OV5640上电控制
在这里插入图片描述

module power_ctr1    (   //OV5640上电控制


input                  clk                     , // 50MHz
input                  rst_n                   ,

output                ov5640_pwdn             , // ov5640上电使能
output                 ov5640_rst_n            , // ov5640复位
output                 power_done             ,   // power_ctrl全面有效,相当于上电完成信号标志,SCCB可以开始工作

output reg     [18:0]              cnt_6ms                 ,
output reg     [16:0]              cnt_2ms                 ,
output reg     [20:0]              cnt_21ms                //1050000刚好可以用21位二进制表示
);

localparam T2_6MS           = 30_0000 ; // T2>5ms     300000刚好可以用19位二进制表示
localparam T3_2MS           = 10_0000   ; // T3>1ms
localparam T4_21MS          = 105_0000  ; // T4>20ms



//==    ov5640_pwdn         上电使能的设计

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) 
        cnt_6ms <= 0;
    else if(ov5640_pwdn == 1'b1) begin
		      cnt_6ms <= cnt_6ms + 1'b1;
    end
	 else
	    cnt_6ms <= cnt_6ms;
end


assign ov5640_pwdn = (cnt_6ms >= T2_6MS) ? 1'b0 : 1'b1;


//==    ov5640_rst_n    复位信号的设计

always  @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        cnt_2ms <= 'd0;
    end
    else if(ov5640_rst_n == 1'b0 && ov5640_pwdn == 1'b0) begin    //相当于从还没开始复位以及上电使能信号刚来的时候开始进行2ms的计数
        cnt_2ms <= cnt_2ms + 1'b1;
    end
end

assign ov5640_rst_n = (cnt_2ms >= T3_2MS) ? 1'b1 : 1'b0;

//==========================================================================
//==    power_done  上电完成的设计
//==========================================================================
always  @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        cnt_21ms <= 'd0;
    end
    else if(power_done == 1'b0 && ov5640_rst_n == 1'b1) begin    //上电还没完成且没有复位的时候,就开始进行一个21ms的计数
        cnt_21ms <= cnt_21ms + 1'b1;
    end
	 else 
	      cnt_21ms <= cnt_21ms ;
end


assign power_done = (cnt_21ms >= T4_21MS) ? 1'b1 : 1'b0;        //上电完成的标志:如果计数大于或者等于t4,21ms的时候就代表上电完成,否则的话还没完成
	
	endmodule






`timescale 1ns/1ps //时间精度
`define Clock 20 //时间周期
module power_ctr1_tb;

			reg     clk  ; // 50MHz
			reg     rst_n;

		   wire   ov5640_pwdn ; // ov5640上电使能
		   wire    ov5640_rst_n; // ov5640复位
		   wire    power_done ;
		   wire  [18:0]    cnt_6ms;  
         wire   [16:0]    cnt_2ms ;
		   wire      [20:0]   cnt_21ms;
		  
power_ctr1 u1(
         
			.clk(clk),         
			.rst_n(rst_n),       
			.ov5640_pwdn(ov5640_pwdn), 
			.ov5640_rst_n(ov5640_rst_n),
			.power_done (power_done),
			.cnt_6ms(cnt_6ms), 
         .cnt_2ms(cnt_2ms),
         .cnt_21ms(cnt_21ms)
);   
initial		
    clk = 0;
always #(`Clock/2) clk= ~clk;

initial begin
   rst_n=0; #(`Clock*5);
   rst_n=1;
end	

endmodule

在这里插入图片描述

标签:ov5640,cnt,power,控制,上电,clk,rst,OV5640
来源: https://blog.csdn.net/H19981118/article/details/115503184

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有