明德扬小冉 发表于 2019-12-5 13:56:48

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

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

二、举例说明             第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),有兴趣点击观看。也欢迎加入群(838209674),及时获取最新的文章信息,个性化问题也可以找我哦:Q1479512800(肖肖肖)。
页: [1]
查看完整版本: 【基于FPGA的图像处理工程】边缘检测工程:之摄像头配置指令模块代码解析