找回密码
 注册
关于网站域名变更的通知
查看: 377|回复: 0
打印 上一主题 下一主题

边缘检测项目:摄像头配置指令模块ov7670_para代码解析

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-17 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 明德扬FPGA科教 于 2019-12-17 10:17 编辑 , C- z  s1 x: g# C" a% J! Z( d. {; n* I
+ t% M3 b' o5 L. E/ [( g: q
边缘检测项目:摄像头配置指令模块ov7670_para代码解析
$ ]$ E$ P$ U) Y! v! _) j3 A
作者:肖肖肖
2 Z- l4 ]' n% c: v
本文为明德扬原创文章,转载请注明出处!5 }/ `5 q* Y/ q) m' a6 G

5 _; k0 l6 f6 H9 r% C/ Y6 P
摄像头配置指令模块ov7670_para的功能:列出了配置ov7670的寄存器的配置方式,包括了配置寄存器的顺序、是否读寄存器、是否写寄存器以及寄存器的地址和写入寄存器的数据。
, I: o( E& Q" j9 p+ r6 }2 `
一、信号意义
信号
类型
意义
reg_cnt
内部信号
表示配置164个寄存器的顺序。
add_wdata
内部信号
拼接的18位指令信号。
最高位表示读使能:1读使能有效,0读使能无效;
% c$ c% D, W$ K% S3 \# [1 ]次高位表示写使能:1写使能有效,0写使能无效;
中间8位表示需要操作的摄像头寄存器的地址;
低8位表示要在指定的寄存器中写入的数据。
& D6 X( J1 g: q( ?3 Q
二、举例说明
[img][/img]

4 G: |/ X3 Q9 T9 u
第1行,REG_NUM用来表示要配置的寄存器个数,164表示需要对164个寄存器进行操作。
reg_cnt中的01234等,则表示配置寄存器的顺序。第4行代码最先配置,然后是第5行至第8行。
add_wdata的结构如下表:
读写属性(2bit)
地址(8bit)
数据(8bit)
读写属性:0表示不操作;1表示写操作;2表示读操作;3表示先写后读操作。

- i& T6 O+ w4 W# ?4 y; _
例如第4行,add_wdata的值为{2’b11,16’h1204}。表示先产生写命令,写数据为8’h04,写地址为8’h12。然后再产生读命令,读地址为8’h12。
例如第5行,add_wdata的值为{2’b10,16’h40d0}。表示产生读命令,读地址为8’h40。
例如第6行,add_wdata的值为{2’b01,16’h3a04}。表示产生写命令,写数据为8’h04,写地址为8’h3a。
例如第7行,add_wdata的值为{2’b00,16’h3dc8}。表示不产生任何写命令和读命令,跳过。
& H% y6 l& b& G/ Q" V) \0 c
三、参考代码
下面展出本模块的设计,欢迎进一步交流,如果需要整个工程源代码,欢迎与本人联系。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

  s4 d- X: v  ^
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

2 B6 p) d  ~& y) [( Q
Parameter       REG_NUM =       164;
always@(*) begin
            case(reg_cnt)
                 0   :  add_wdata = {2'b11,16'h1204};        //复位,VGA,RGB565  (00:YUV,04:RGB)(8x全局复位)
                1    : add_wdata = {2'b11,16'h40d0};        //RGB565,  00-FF(d0)(YUV下要改01-FE(80))
                2    : add_wdata = {2'b11,16'h3a04};     //TSLB(TSLB[3], COM13[0])00:YUYV, 01:YVYU, 10:UYVY(CbYCrY), 11:VYUY
               3    : add_wdata = {2'b11,16'h3dc8};        //COM13(TSLB[3],  COM13[0])00:YUYV, 01:YVYU, 10:UYVY(CbYCrY), 11:VYUY
                4    : add_wdata = {2'b11,16'h1e31}; //默认01,Bit[5]水平镜像,Bit[4]竖直镜像
                5    : add_wdata = {2'b11,16'h6b00}; //旁路PLL倍频;0x0A:关闭内部LDO;0x00:打开LDO
                6    : add_wdata = {2'b11,16'h32b6};        //HREF  控制(80)
                7    : add_wdata = {2'b11,16'h1713};        //HSTART  输出格式-行频开始高8位(11)
                8    : add_wdata = {2'b11,16'h1801};        //HSTOP  输出格式-行频结束高8位(61)
                9    : add_wdata = {2'b11,16'h1902};        //VSTART  输出格式-场频开始高8位(03)
                10   : add_wdata = {2'b11,16'h1a7a};        //VSTOP  输出格式-场频结束高8位(7b)
                11   : add_wdata = {2'b11,16'h030a};        //VREF        帧竖直方向控制(00)
                12   : add_wdata = {2'b11,16'h0c00};        //DCW使能禁止(00)
                13   : add_wdata = {2'b11,16'h3e10};        //PCLK分频00  Normal,10(1分频),11(2分频),12(4分频),13(8分频)14(16分频)
                14   : add_wdata = {2'b11,16'h7000};        //00:Normal,  80:移位1, 00:彩条, 80:渐变彩条
                15   : add_wdata = {2'b11,16'h7100};        //00:Normal,  00:移位1, 80:彩条, 80:渐变彩条
                16   : add_wdata = {2'b11,16'h7211};        //默认水平,垂直8抽样(11)                 
                17   : add_wdata = {2'b11,16'h7300};        //DSP缩放时钟分频00  Normal,10(1分频),11(2分频),12(4分频),13(8分频)14(16分频)
                18   : add_wdata = {2'b11,16'ha202}; //默认像素始终延迟 (02)
                19   : add_wdata = {2'b11,16'h1180};        //内部工作时钟设置,直接使用外部时钟源(80)
                20   : add_wdata = {2'b11,16'h7a20};
                21   : add_wdata = {2'b11,16'h7b1c};
                22   : add_wdata = {2'b11,16'h7c28};
                23   : add_wdata = {2'b11,16'h7d3c};
                24   : add_wdata = {2'b11,16'h7e55};
                25   : add_wdata = {2'b11,16'h7f68};
                26   : add_wdata = {2'b11,16'h8076};
                27   : add_wdata = {2'b11,16'h8180};
                28   : add_wdata = {2'b11,16'h8288};
                29   : add_wdata = {2'b11,16'h838f};
                30   : add_wdata = {2'b11,16'h8496};
                31   : add_wdata = {2'b11,16'h85a3};
                32   : add_wdata = {2'b11,16'h86af};
                33   : add_wdata = {2'b11,16'h87c4};
                34   : add_wdata = {2'b11,16'h88d7};
                35   : add_wdata = {2'b11,16'h89e8};
                36   : add_wdata = {2'b11,16'h13e0};
                37   : add_wdata = {2'b11,16'h0010};//
                38   : add_wdata = {2'b11,16'h1000};
                39   : add_wdata = {2'b11,16'h0d00};
                40   : add_wdata = {2'b11,16'h1428};
                41   : add_wdata = {2'b11,16'ha505};
                42  :  add_wdata = {2'b11,16'hab07};
                43   : add_wdata = {2'b11,16'h2475};
                44   : add_wdata = {2'b11,16'h2563};
                45   : add_wdata = {2'b11,16'h26a5};
                46   : add_wdata = {2'b11,16'h9f78};
                47   : add_wdata = {2'b11,16'ha068};
                48   : add_wdata = {2'b11,16'ha103};
                49   : add_wdata = {2'b11,16'ha6df};
                50   : add_wdata = {2'b11,16'ha7df};
                51   : add_wdata = {2'b11,16'ha8f0};
                52   : add_wdata = {2'b11,16'ha990};
                53   : add_wdata = {2'b11,16'haa94};
                54   : add_wdata = {2'b11,16'h13ef};   
                55   : add_wdata = {2'b11,16'h0e61};
                56   : add_wdata = {2'b11,16'h0f4b};
                57   : add_wdata = {2'b11,16'h1602};
                58   : add_wdata = {2'b11,16'h2102};
                59  :  add_wdata = {2'b11,16'h2291};
                60   : add_wdata = {2'b11,16'h2907};
                61   : add_wdata = {2'b11,16'h330b};
                62   : add_wdata = {2'b11,16'h350b};
                63   : add_wdata = {2'b11,16'h371d};
                64   : add_wdata = {2'b11,16'h3871};
                65   : add_wdata = {2'b11,16'h392a};
                66   : add_wdata = {2'b11,16'h3c78};
                67   : add_wdata = {2'b11,16'h4d40};
                68   : add_wdata = {2'b11,16'h4e20};
                69   : add_wdata = {2'b11,16'h6900};
                70   : add_wdata = {2'b11,16'h7419};
                71   : add_wdata = {2'b11,16'h8d4f};
                72   : add_wdata = {2'b11,16'h8e00};
                73   : add_wdata = {2'b11,16'h8f00};
                74   : add_wdata = {2'b11,16'h9000};
                75   : add_wdata = {2'b11,16'h9100};
                76   : add_wdata = {2'b11,16'h9200};
                77   : add_wdata = {2'b11,16'h9600};
                78   : add_wdata = {2'b11,16'h9a80};
                79   : add_wdata = {2'b11,16'hb084};
                80   : add_wdata = {2'b11,16'hb10c};
                81   : add_wdata = {2'b11,16'hb20e};
                82   : add_wdata = {2'b11,16'hb382};
                83   : add_wdata = {2'b11,16'hb80a};
                84   : add_wdata = {2'b11,16'h4314};
                85   : add_wdata = {2'b11,16'h44f0};
                86   : add_wdata = {2'b11,16'h4534};
                87   : add_wdata = {2'b11,16'h4658};
                88   : add_wdata = {2'b11,16'h4728};
                89   : add_wdata = {2'b11,16'h483a};
                90   : add_wdata = {2'b11,16'h5988};
                91   : add_wdata = {2'b11,16'h5a88};
                92   : add_wdata = {2'b11,16'h5b44};
                93   : add_wdata = {2'b11,16'h5c67};
                94   : add_wdata = {2'b11,16'h5d49};
                95   : add_wdata = {2'b11,16'h5e0e};
                96   : add_wdata = {2'b11,16'h6404};
                97   : add_wdata = {2'b11,16'h6520};
                98   : add_wdata = {2'b11,16'h6605};
                99   : add_wdata = {2'b11,16'h9404};
                100 : add_wdata = {2'b11,16'h9508};
                101 : add_wdata = {2'b11,16'h6c0a};
                102 : add_wdata = {2'b11,16'h6d55};
                103 : add_wdata = {2'b11,16'h6e11};
                104 : add_wdata = {2'b11,16'h6f9f};
                105 : add_wdata = {2'b11,16'h6a40};
                106 : add_wdata = {2'b11,16'h0140};
                107 : add_wdata = {2'b11,16'h0240};
                108 : add_wdata = {2'b11,16'h13e7};
                109 : add_wdata = {2'b11,16'h1500};         
                110 : add_wdata = {2'b11,16'h4f80};
                111 : add_wdata = {2'b11,16'h5080};
                112 : add_wdata = {2'b11,16'h5100};
                113 : add_wdata = {2'b11,16'h5222};
                114 : add_wdata = {2'b11,16'h535e};
                115 : add_wdata = {2'b11,16'h5480};
                116 : add_wdata = {2'b11,16'h589e};         
                117 : add_wdata = {2'b11,16'h4108};
                118 : add_wdata = {2'b11,16'h3f00};
                119 : add_wdata = {2'b11,16'h7505};
                120 : add_wdata = {2'b11,16'h76e1};
                121 : add_wdata = {2'b11,16'h4c00};
                122 : add_wdata = {2'b11,16'h7701};  
                123 : add_wdata = {2'b11,16'h4b09};
                124 : add_wdata =  {2'b11,16'hc9F0};//16'hc960;
                125 : add_wdata = {2'b11,16'h4138};
                126 : add_wdata = {2'b11,16'h5640};
                127 : add_wdata = {2'b11,16'h3411};
                128 : add_wdata = {2'b11,16'h3b02};
                129 : add_wdata = {2'b11,16'ha489};
                130 : add_wdata = {2'b11,16'h9600};
                131 : add_wdata = {2'b11,16'h9730};
                132 : add_wdata = {2'b11,16'h9820};
                133 : add_wdata = {2'b11,16'h9930};
                134 : add_wdata = {2'b11,16'h9a84};
                135 : add_wdata = {2'b11,16'h9b29};
                136 : add_wdata = {2'b11,16'h9c03};
                137 : add_wdata = {2'b11,16'h9d4c};
                138 : add_wdata = {2'b11,16'h9e3f};
                139 : add_wdata = {2'b11,16'h7804};
                140 :add_wdata =  {2'b11,16'h7901};
                 141 :add_wdata =  {2'b11,16'hc8f0};
                 142 :add_wdata =  {2'b11,16'h790f};
                 143 :add_wdata =  {2'b11,16'hc800};
                 144 :add_wdata =  {2'b11,16'h7910};
                 145 :add_wdata =  {2'b11,16'hc87e};
                 146 :add_wdata =  {2'b11,16'h790a};
                 147 :add_wdata =  {2'b11,16'hc880};
                 148 :add_wdata =  {2'b11,16'h790b};
                 149 :add_wdata =  {2'b11,16'hc801};
                 150 :add_wdata =  {2'b11,16'h790c};
                 151 :add_wdata =  {2'b11,16'hc80f};
                 152 :add_wdata =  {2'b11,16'h790d};
                 153 :add_wdata =  {2'b11,16'hc820};
                 154 :add_wdata =  {2'b11,16'h7909};
                 155 :add_wdata =  {2'b11,16'hc880};
                 156 :add_wdata =  {2'b11,16'h7902};
                 157 :add_wdata =  {2'b11,16'hc8c0};
                 158 :add_wdata =  {2'b11,16'h7903};
                 159 :add_wdata =  {2'b11,16'hc840};
                 160 :add_wdata =  {2'b11,16'h7905};
                 161 :add_wdata =  {2'b11,16'hc830};
                 162 :add_wdata =  {2'b11,16'h7926};
                 163 : add_wdata = {2'b11,16'h0903};
                 164 : add_wdata = {2'b11,16'h3b42};
& T' y, U. V# S0 u
            default : add_wdata = 0;
            endcase
        end
: c/ H4 z( M5 w. B# ^' h

# m1 p# z6 z; a

% r4 x  `6 z6 m- {
/ G; z7 ^* ^+ I  W7 b  f
! T/ Z( r  A7 ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 07:36 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表