文章采集接口(实现*敏*感*词*OV7670的配置及完成图像的采集(一))

优采云 发布时间: 2021-12-28 02:01

  文章采集接口(实现*敏*感*词*OV7670的配置及完成图像的采集(一))

  话题

  实现*敏*感*词*OV7670的配置,完成图像采集。请考虑需要哪些模块来实现这个功能?划分模块并给出端口定义,无需编写代码。

  模块划分

  根据需要配置外设交互架构,模块划分如图6-16所示:

  

  图6-16 初步模块划分

  进一步分析配置模块和接口模块。

  1. 配置模块

  从OV7670的datasheet可以看出,在配置了一些必要的寄存器之后,OV7670就可以正常工作了,可以配置不同的寄存器来实现不同的功能。配置模块根据配置需求生成对接口模块的读写命令、数据和地址。配置表收录

操作码、所有寄存器的地址和寄存器的配置值。

  下面是配置表的详细介绍,以下是OV7670配置表的一部分:

  1个参数REG_NUM= 164;

  2

  3 总是@(*)开始

  4个案例(reg_cnt)

  5 0 :add_wdata ={2'b11,16'h1204};

  6 1 :add_wdata ={2'b11,16'h40d0};

  7 2 :add_wdata ={2'b11,16'h3a04};

  8 3 :add_wdata ={2'b11,16'h3dc8};

  9 4 :add_wdata ={2'b11,16'h1e31};

  10 5 :add_wdata ={2'b11,16'h6b00};

  11 ……

  12 163:add_wdata ={2'b11,16'h0903};

  13 164:add_wdata ={2'b11,16'h3b42};

  14 默认:add_wdata =0;

  15 端壳

  16 结束

  17

  (1)REG_NUM 代表外设寄存器总数。

  (2)配置表的格式为:“操作码”+“地址”+“配置值”,例如:add_wdata = {2'b11,16'h1204},操作码为2'b11,地址是8'h12,配置值为8'h04。

  (3)操作码为2位,00表示无操作;01表示只读;10表示只写;11表示先写后读。

  (4)配置模块读取配置表,根据操作码向接口模块发送命令。如果操作码为00,则跳过该命令;如果操作码为01,则生成读命令以接口模块,读地址为配置表中给出的地址;如果操作码为10,则向接口模块生成写命令,写地址和数据由配置表给出;如果操作码为11 ,先给出写命令和写地址,写数据由配置表给出,执行完毕后,再次给出读命令,读地址与本次操作的写地址相同。

  采用外设交互架构的配置,在配置*敏*感*词*外设的寄存器时可以方便的调试。只能通过修改配置表来实现。因此,明德阳强烈推荐此类外设采用这种架构。. 调试过程一般是确认读操作,看是否可以读取一个寄存器的数据,从而保证读操作没问题;然后写一个寄存器再读出,确认读取的数据是否是写入的数据,这样才能保证读写操作没有问题;之后依次读写一组寄存器,保证每次读写都是正确的;最后,取消read函数,只保留write函数作为最终代码。

  2. 接口模块

  接口模块需要完成两个功能:一是完成OV7670的配置,即根据配置模块的读写命令和数据生成SCCB动作时序(参见OV7670的datasheet, OV7670的配置接口为SCCB);二是完成OV7670的图像采集。因此,模块划分的原则是一个,一个功能一个模块,接口模块又可以分为SCCB接口模块和采集模块。

  综上所述,模块划分的结果如图6-18所示。

  

  图6-18 模块划分框图

  模块端口和模块之间的数据流

  模块划分完成后,还需要进一步确认模块的端口以及模块之间的数据流向。请参考5.1.2 模块划分端口规范。模块划分的最终结果如图6-19所示:

  

  图6-19 模块划分最终框图

  技术交流QQ群:544453837

  更多FPGA技术资料:明德阳科教

  了解>>简单的设计方法

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线