【基于FPGA的图像处理工程】边缘检测工程:之摄像头配置指令模块代码解析
【基于FPGA的图像处理工程】
—边缘检测工程:摄像头配置指令模块代码解析
本文为明德扬原创文章,转载请注明出处!
摄像头配置指令模块ov7670_para的功能:列出了配置ov7670的寄存器的配置方式,包括了配置寄存器的顺序、是否读寄存器、是否写寄存器以及寄存器的地址和写入寄存器的数据。
一、信号意义

二、举例说明

第1行,REG_NUM用来表示要配置的寄存器个数,164表示需要对164个寄存器进行操作。
reg_cnt中的01234等,则表示配置寄存器的顺序。第4行代码最先配置,然后是第5行至第8行。add_wdata的结构如下表:
读写属性(2bit)
地址(8bit)
数据(8bit)
读写属性:0表示不操作;1表示写操作;2表示读操作;3表示先写后读操作。
例如第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}。表示不产生任何写命令和读命令,跳过。
三、参考代码
下面展出本模块的设计,欢迎进一步交流,如果需要整个工程源代码,欢迎与本人联系。
Parameter REG_NUM = 164;
always@(*) begin
case(reg_cnt)
0 : add_wdata ={2'b11,16'h1204};
1 : add_wdata ={2'b11,16'h40d0};
2 : add_wdata ={2'b11,16'h3a04};
3 : add_wdata ={2'b11,16'h3dc8};
4 : add_wdata ={2'b11,16'h1e31};
5 : add_wdata ={2'b11,16'h6b00};
6 : add_wdata ={2'b11,16'h32b6};
7 : add_wdata ={2'b11,16'h1713};
8 : add_wdata ={2'b11,16'h1801};
9 : add_wdata ={2'b11,16'h1902};
10 : add_wdata ={2'b11,16'h1a7a};
11 : add_wdata ={2'b11,16'h030a};
12 : add_wdata ={2'b11,16'h0c00};
13 : add_wdata ={2'b11,16'h3e10};
14 : add_wdata ={2'b11,16'h7000};
15 : add_wdata ={2'b11,16'h7100};
16 : add_wdata ={2'b11,16'h7211};
17 : add_wdata ={2'b11,16'h7300};
18 : add_wdata ={2'b11,16'ha202};
19 : add_wdata ={2'b11,16'h1180};
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};
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};
default : add_wdata = 0;
endcase
end
复制代码
明德扬专注FPGA研究,我司正在连载两本书籍:《基于FPGA至简设计法实现的图像边缘检测系统》(http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=691)、《ASIC和FPGA时序约束理论与应用》(http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=705),有兴趣点击观看。