明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 8812|回复: 0

【基于FPGA的图像处理工程】边缘检测工程:之摄像头配置指令模块代码解析

[复制链接]
发表于 2019-12-5 13:56:48 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

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

x
【基于FPGA的图像处理工程】
                                                                 —边缘检测工程:摄像头配置指令模块代码解析
作者:肖肖肖
        本文为明德扬原创文章,转载请注明出处!
        摄像头配置指令模块ov7670_para的功能:列出了配置ov7670的寄存器的配置方式,包括了配置寄存器的顺序、是否读寄存器、是否写寄存器以及寄存器的地址和写入寄存器的数据。
一、信号意义
  
信号
  
类型
意义
reg_cnt
内部信号
表示配置164个寄存器的顺序。
add_wdata
内部信号
拼接的18位指令信号。
  
最高位表示读使能:1读使能有效,0读使能无效;

次高位表示写使能:1写使能有效,0写使能无效;

  
中间8位表示需要操作的摄像头寄存器的地址;
  
低8位表示要在指定的寄存器中写入的数据。

二、举例说明
55555.png
        
        第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}。表示不产生任何写命令和读命令,跳过。

三、参考代码
下面展出本模块的设计,欢迎进一步交流,如果需要整个工程源代码,欢迎与本人联系。

  1. Parameter      REG_NUM =       164;
  2. always@(*) begin
  3.             case(reg_cnt)
  4. 0   : add_wdata ={2'b11,16'h1204};      
  5.                 1   : add_wdata ={2'b11,16'h40d0};
  6.                 2   : add_wdata ={2'b11,16'h3a04};   
  7.                 3   : add_wdata ={2'b11,16'h3dc8};
  8.                 4   : add_wdata ={2'b11,16'h1e31};
  9.                 5   : add_wdata ={2'b11,16'h6b00};
  10.                 6   : add_wdata ={2'b11,16'h32b6};
  11.                 7   : add_wdata ={2'b11,16'h1713};
  12.                 8   : add_wdata ={2'b11,16'h1801};
  13.                 9   : add_wdata ={2'b11,16'h1902};
  14.                 10  : add_wdata ={2'b11,16'h1a7a};
  15.                 11  : add_wdata ={2'b11,16'h030a};
  16.                 12  : add_wdata ={2'b11,16'h0c00};
  17.                 13  : add_wdata ={2'b11,16'h3e10};
  18.                 14  : add_wdata ={2'b11,16'h7000};     
  19.                 15  : add_wdata ={2'b11,16'h7100};   
  20.                 16  : add_wdata ={2'b11,16'h7211};         
  21.                 17  : add_wdata ={2'b11,16'h7300};   
  22.                 18  : add_wdata ={2'b11,16'ha202};
  23.                 19  : add_wdata ={2'b11,16'h1180};   
  24.                 20  : add_wdata ={2'b11,16'h7a20};
  25.                 21  : add_wdata ={2'b11,16'h7b1c};
  26.                 22  : add_wdata ={2'b11,16'h7c28};
  27.                 23  : add_wdata ={2'b11,16'h7d3c};
  28.                 24  : add_wdata ={2'b11,16'h7e55};
  29.                 25  : add_wdata = {2'b11,16'h7f68};
  30.                 26  : add_wdata ={2'b11,16'h8076};
  31.                 27  : add_wdata ={2'b11,16'h8180};
  32.                 28  : add_wdata ={2'b11,16'h8288};
  33.                 29  : add_wdata ={2'b11,16'h838f};
  34.                 30  : add_wdata ={2'b11,16'h8496};
  35.                 31  : add_wdata ={2'b11,16'h85a3};
  36.                 32  : add_wdata ={2'b11,16'h86af};
  37.                 33  : add_wdata ={2'b11,16'h87c4};
  38.                 34  : add_wdata ={2'b11,16'h88d7};
  39.                 35  : add_wdata ={2'b11,16'h89e8};
  40.                 36  : add_wdata ={2'b11,16'h13e0};
  41.                 37  : add_wdata ={2'b11,16'h0010};
  42.                 38  : add_wdata ={2'b11,16'h1000};
  43.                 39  : add_wdata ={2'b11,16'h0d00};
  44.                 40  : add_wdata ={2'b11,16'h1428};
  45.                 41  : add_wdata ={2'b11,16'ha505};
  46.                 42  : add_wdata = {2'b11,16'hab07};
  47.                 43  : add_wdata ={2'b11,16'h2475};
  48.                 44  : add_wdata ={2'b11,16'h2563};
  49.                 45  : add_wdata ={2'b11,16'h26a5};
  50.                 46  : add_wdata ={2'b11,16'h9f78};
  51.                 47  : add_wdata = {2'b11,16'ha068};
  52.                 48  : add_wdata ={2'b11,16'ha103};
  53.                 49  : add_wdata ={2'b11,16'ha6df};
  54.                 50  : add_wdata ={2'b11,16'ha7df};
  55.                 51  : add_wdata ={2'b11,16'ha8f0};
  56.                 52  : add_wdata ={2'b11,16'ha990};
  57.                 53  : add_wdata ={2'b11,16'haa94};
  58.                 54  : add_wdata ={2'b11,16'h13ef};  
  59.                 55  : add_wdata ={2'b11,16'h0e61};
  60.                 56  : add_wdata ={2'b11,16'h0f4b};
  61.                 57  : add_wdata ={2'b11,16'h1602};
  62.                 58  : add_wdata ={2'b11,16'h2102};
  63.                 59  : add_wdata = {2'b11,16'h2291};
  64.                 60  : add_wdata ={2'b11,16'h2907};
  65.                 61  : add_wdata ={2'b11,16'h330b};
  66.                 62  : add_wdata ={2'b11,16'h350b};
  67.                 63  : add_wdata ={2'b11,16'h371d};
  68.                 64  : add_wdata ={2'b11,16'h3871};
  69.                 65  : add_wdata ={2'b11,16'h392a};
  70.                 66  : add_wdata ={2'b11,16'h3c78};
  71.                 67  : add_wdata ={2'b11,16'h4d40};
  72.                 68  : add_wdata ={2'b11,16'h4e20};
  73.                 69  : add_wdata ={2'b11,16'h6900};
  74.                 70  : add_wdata ={2'b11,16'h7419};
  75.                 71  : add_wdata ={2'b11,16'h8d4f};
  76.                 72  : add_wdata ={2'b11,16'h8e00};
  77.                 73  : add_wdata ={2'b11,16'h8f00};
  78.                 74  : add_wdata ={2'b11,16'h9000};
  79.                 75  : add_wdata = {2'b11,16'h9100};
  80.                 76  : add_wdata ={2'b11,16'h9200};
  81.                 77  : add_wdata ={2'b11,16'h9600};
  82.                 78  : add_wdata ={2'b11,16'h9a80};
  83.                 79  : add_wdata ={2'b11,16'hb084};
  84.                 80  : add_wdata ={2'b11,16'hb10c};
  85.                 81  : add_wdata = {2'b11,16'hb20e};
  86.                 82  : add_wdata ={2'b11,16'hb382};
  87.                 83  : add_wdata ={2'b11,16'hb80a};
  88.                 84  : add_wdata ={2'b11,16'h4314};
  89.                 85  : add_wdata ={2'b11,16'h44f0};
  90.                 86  : add_wdata ={2'b11,16'h4534};
  91.                 87  : add_wdata ={2'b11,16'h4658};
  92.                 88  : add_wdata ={2'b11,16'h4728};
  93.                 89  : add_wdata ={2'b11,16'h483a};
  94.                 90  : add_wdata ={2'b11,16'h5988};
  95.                 91  : add_wdata ={2'b11,16'h5a88};
  96.                 92  : add_wdata ={2'b11,16'h5b44};
  97.                 93  : add_wdata ={2'b11,16'h5c67};
  98.                 94  : add_wdata ={2'b11,16'h5d49};
  99.                 95  : add_wdata ={2'b11,16'h5e0e};
  100.                 96  : add_wdata ={2'b11,16'h6404};
  101.                 97  : add_wdata ={2'b11,16'h6520};
  102.                 98  : add_wdata ={2'b11,16'h6605};
  103.                 99  : add_wdata ={2'b11,16'h9404};
  104.                 100 : add_wdata = {2'b11,16'h9508};
  105.                 101 : add_wdata = {2'b11,16'h6c0a};
  106.                 102 : add_wdata = {2'b11,16'h6d55};
  107.                 103 : add_wdata = {2'b11,16'h6e11};
  108.                 104 : add_wdata = {2'b11,16'h6f9f};
  109.                 105 : add_wdata = {2'b11,16'h6a40};
  110.                 106 : add_wdata = {2'b11,16'h0140};
  111.                 107 : add_wdata = {2'b11,16'h0240};
  112.                 108 : add_wdata = {2'b11,16'h13e7};
  113.                 109 : add_wdata = {2'b11,16'h1500};         
  114.                 110 : add_wdata = {2'b11,16'h4f80};
  115.                 111 : add_wdata = {2'b11,16'h5080};
  116.                 112 : add_wdata = {2'b11,16'h5100};
  117.                 113 : add_wdata = {2'b11,16'h5222};
  118.                 114 : add_wdata = {2'b11,16'h535e};
  119.                 115 : add_wdata ={2'b11,16'h5480};
  120.                 116 : add_wdata = {2'b11,16'h589e};         
  121.                 117 : add_wdata = {2'b11,16'h4108};
  122.                 118 : add_wdata = {2'b11,16'h3f00};
  123.                 119 : add_wdata = {2'b11,16'h7505};
  124.                 120 : add_wdata = {2'b11,16'h76e1};
  125.                 121 : add_wdata = {2'b11,16'h4c00};
  126.                 122 : add_wdata = {2'b11,16'h7701};
  127.                 123 : add_wdata = {2'b11,16'h4b09};
  128.                 124 : add_wdata = {2'b11,16'hc9F0};
  129.                 125 : add_wdata = {2'b11,16'h4138};
  130.                 126 : add_wdata = {2'b11,16'h5640};
  131.                 127 : add_wdata = {2'b11,16'h3411};
  132.                 128 : add_wdata = {2'b11,16'h3b02};
  133.                 129 : add_wdata = {2'b11,16'ha489};
  134.                 130 : add_wdata = {2'b11,16'h9600};
  135.                 131 : add_wdata = {2'b11,16'h9730};
  136.                 132 : add_wdata = {2'b11,16'h9820};
  137.                 133 : add_wdata = {2'b11,16'h9930};
  138.                 134 : add_wdata = {2'b11,16'h9a84};
  139.                 135 : add_wdata = {2'b11,16'h9b29};
  140.                 136 : add_wdata = {2'b11,16'h9c03};
  141.                 137 : add_wdata ={2'b11,16'h9d4c};
  142.                 138 : add_wdata = {2'b11,16'h9e3f};
  143.                 139 : add_wdata = {2'b11,16'h7804};
  144.                 140 :add_wdata = {2'b11,16'h7901};
  145.                  141 :add_wdata = {2'b11,16'hc8f0};
  146.                  142 :add_wdata =  {2'b11,16'h790f};
  147.                  143 :add_wdata = {2'b11,16'hc800};
  148.                  144 :add_wdata = {2'b11,16'h7910};
  149.                  145 :add_wdata = {2'b11,16'hc87e};
  150.                  146 :add_wdata = {2'b11,16'h790a};
  151.                  147 :add_wdata = {2'b11,16'hc880};
  152.                  148 :add_wdata = {2'b11,16'h790b};
  153.                  149 :add_wdata = {2'b11,16'hc801};
  154.                  150 :add_wdata = {2'b11,16'h790c};
  155.                  151 :add_wdata = {2'b11,16'hc80f};
  156.                  152 :add_wdata = {2'b11,16'h790d};
  157.                  153 :add_wdata =  {2'b11,16'hc820};
  158.                  154 :add_wdata = {2'b11,16'h7909};
  159.                  155 :add_wdata = {2'b11,16'hc880};
  160.                  156 :add_wdata = {2'b11,16'h7902};
  161.                  157 :add_wdata = {2'b11,16'hc8c0};
  162.                  158 :add_wdata =  {2'b11,16'h7903};
  163.                  159 :add_wdata = {2'b11,16'hc840};
  164.                  160 :add_wdata = {2'b11,16'h7905};
  165.                  161 :add_wdata = {2'b11,16'hc830};
  166.                  162 :add_wdata = {2'b11,16'h7926};
  167.                  163 : add_wdata = {2'b11,16'h0903};
  168.                  164 : add_wdata ={2'b11,16'h3b42};
  169.                   
  170.             default : add_wdata = 0;
  171.             endcase
  172.          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),有兴趣点击观看。也欢迎加入群(838209674),及时获取最新的文章信息,个性化问题也可以找我哦:Q1479512800(肖肖肖)。

加QQ:1744527324,获取更多FPGA资料!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-11-1 08:30 , Processed in 0.058756 second(s), 25 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

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