I2C_Controller 是图像传感器配置设计的核心模块,主要完成了启停命令产生、字节发送和读取、应答信号采集等功能。同时,I2C_Controller 模块还产生I2C读写时序,由状态机严格按照I2C 协议实现,将Register Value 部分送出的24 位操作码I2C_DAT 转化成为正确的I2C 时序。一个寄存器的数据传输完成后,模块还将判断寄存器配置数据是否发送顺利,如果一切正常,LUT_INDEX 信号会自动加一,控制Register Value 查找表产生下一个寄存器的地址和数据。
3 I2C 接口的仿真及调试
为了验证MT9P031 配置过程中I2C时序的正确性,本设计在Modelsim Se10.1c 版软件平台中对整个模块进行了功能仿真,在Test bench 中模拟了50MHz 控制时钟以及复位信号,观察最终输出端的波形情况。图3 是对MT9P031 的寄存器地址0x00 进行读操作的仿真波形图,图4是对寄存器地址0x01 写入0x01EA 的仿真波形图。

图3 读取寄存器0x00 的波形仿真

图4 向寄存器0x01 写入数据0x01EA 的波形仿真
4 总结
基于I2C总线的图像传感器配置在视频图像采集处理系统中非常普遍,本设计结合了FPGA 的可编程特性,采用模块化的方法设计方法完成了I2C 配置电路的设计,详细介绍了各个模块的设计流程和实现方式,最后对整个设计进行了仿真,验证了设计的正确性。综合调试后占用资源极小,可靠性高,而且利用Verilog 硬件描述语言的设计使得可移植性很强,具有广泛的应用价值。 |