当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]基于FPGA 的嵌入式图像检测系统因其快速的处理能力和灵活的编程设计使得它在工业现场的应用非常广泛,通常这些系统都是通过采集图像数据流并对它实时处理得到所需的特征信

基于FPGA 的嵌入式图像检测系统因其快速的处理能力和灵活的编程设计使得它在工业现场的应用非常广泛,通常这些系统都是通过采集图像数据流并对它实时处理得到所需的特征信息。图像数据的获取是整个系统的第一步,作为整个系统的最前端,它决定了原始数据的质量,是整个系统成功的关键。CMOS 图像传感器采用CMOS 工艺,可以将图像采集单元和信号处理单元集成到同一块芯片上,因而在集成度、功耗、成本上具有很大优势,这使得它在嵌入式图像处理领域的运用越来越多。CMOS 图像传感器芯片大都把 I2C 总线的一个子集作为控制接口,用户可以很方便地对芯片进行编程操作,根据设计要求的不同配置图像传感器内部寄存器数据,以获取期望的图像。本文以Aptina 公司的MT9P031 图像传感器为例,用Verilog 硬件描述语言设计了I2C 总线的接口电路,以FPGA 作为核心控制器实现了对MT9P031 初始化操作,不仅验证了I2C 总线的配置效果,得到了理想的图像数据,还为后续线结构光图像的处理系统奠定了基础。

1 I2C 总线协议及MT9P031 配置过程介绍

1.1 I2C 总线协议

I2C(Inter-Integrated Circuit Bus) 总线是由PHILIPS 公司开发的两线式用于芯片之间连接的总线,由于其接口线少,控制方式简单,通信速率较高等特点,在单片机、串行EEPROM 等器件中有着广泛的使用。I2C 总线用两根信号线来进行数据传输,一根为串行数据(SDA, Serial Data),另一根为串行时钟线(SCL, Serial Clock)。若干兼容器件(如存储器、A/D、D/A、LCD 驱动器等)可以共享I2C 总线。I2C 总线上所有器件依靠SDA 发送的地址信号寻址,不需要片选线。任何时刻总线只能由一个主器件控制,各从器件在总线空闲时启动数据传输。

1.2 MT9P031 配置时序分析

由于检测系统需求的不同,图像传感器可能要工作在不同的模式,因此需要通过外部控制器对其内部寄存器进行读写操作,完成具体的配置。典型的写MT9P031 寄存器时序如图1 所示,起始信号过后,FPGA 先写入设备(即MT9P031)的地址0xBA,然后释放SDATA 数据总线,随后MT9P031 返回一个应答信号ACK,FPGA 获取应答信号后,经过一个时钟周期再传送待配置的寄存器地址0x09,在获取应答信号后再传送16 位的寄存器数据,由于每次只能发送8 位数据,所以这16位的寄存器数据要分两次才能发送完毕,先发送的是高八位数据,后发送的为低八位数据,每发送完一个字节的数据,FPGA均会获取一位的应答信号,然后结束一个传送周期,完成一个寄存器的配置,即IDAddress+ SUB-Address + W-Data 总共32位的数据。重复上述过程可以对不同的寄存器进行不同的参数配置。

 

图1 写MT9P031 时序图

2 FPGA 模块设计

为了实现对图像传感器的正确配置,必须严格按照MT9P031 的配置时序完成设计,本设计中I2C 总线配置模块主要由三个小模块构成,它们分别是I2C_Clock_Generator、I2C_Controller 和Register_Value,各模块之间的连接如图2 所示。

 

图2 I2C 总线配置模块结构框图

I2C_Clock_Generator 主要产生负责产生I2C 串行时钟信号,根据协议数据传输有三种速度模式:正常模式100Kb/s、快速模式400Kb/s、高速模式3.4Mb/s,为了保证配置的准确性和成功率,设计中采用了100Kb/ 的速度模式,即SCLK 的频率为100KHz,因为FPGA 外部输入的时钟为50MHz,所以需要对其分频获得。同时该模块还负责产生数据传输有效信号,保证SDAT 的改变发生在SCLK 的低电平时段。

Register_Value 其实一个查找表,负责保存MT9P031 内部需要配置的寄存器地址和数据,查找表内数据的位数都是24bit,单独作为一个模块的目的是为了方便用户改变配置数据,决定图像传感器的不同工作状态。

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 硬件描述语言的设计使得可移植性很强,具有广泛的应用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭