欢迎光临散文网 会员登陆 & 注册

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

2023-02-03 08:07 作者:明德扬易老师  | 我要投稿

【基于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}。表示不产生任何写命令和读命令,跳过。



三、参考代码

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

  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),有兴趣点击观看。


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

分享到微博请遵守国家法律