引言
E6x5C系列产品是Intel推出的面向嵌入式领域的SoC,其最大特点是在片内集成了一片基于开放接口(PCIExpress)的FPGA,进而改变了Intel嵌入式处理器外扩硬件电路的传统模式,为实现更紧凑、更可靠、更灵活且低成本的应用提供了一款高效的平台。采用该处理器平台开发高速视频采集处理系统,将CPU数据处理部分和FPGA数据采集部分整合到同一芯片内,可大大提高系统可靠性,降低外部电路复杂性,提高数据处理能力。本文详细介绍,用于FPGA系统配置ROM信息传输的I2C总线协议IP核设计。
Qsys系统集成工具是Altera公司提供的下一代SOPC Builder工具,在FPGA优化芯片网络(NoC)新技术支持下,能够自动生成互联逻辑,连接知识产权(IP)功能和子系统,从而显著缩短开发时间,提高FPGA设计效率,并增强了设计重用功能。
为提高开发效率和增强可靠性,同时降低成本,IP核重用技术在SoC中扮演着越来越重要的角色。Altera Qsys系统集成工具提供了NiosII处理器及一些常用外设接口IP核,但并没有提供I2C总线[1]接口及驱动。因此,本文基于Intel SoC平台,利用Qsys给出了I2C总线控制IP核的设计方法,以及对该IP核的仿真、验证,并对视频解码芯片SAA7113进行配置和初始化。该IP核作为Intel SoC视频采集系统的一部分,充分利用了该处理器高速连接和加速处理的优点,能够适用于E6x5C平台的包括数据采集、视频采集在内的多数芯片间通信的场合。
1E6x5C SoC凌动处理器简介
E6x5C是Intel凌动系列处理器内置了FPGA的SoC产品,采用多芯片封装(MCP),集成了Intel Atom处理器E6xx系列CPU和Altera Arria II GX FPGA,二者通过开放接口PCIe互联,这种封装形式可减少板上占用面积和组件数,并简化库存控制和制造。该芯片上的FPGA具有高性能、低功耗的特点,其收发器速率高达3.125 Gbps,带有SERDES的高速LVDS达到840 Mbps,支持DDR2、DDR SDRAM、QDR II和QDR II+ SRAM存储器接口,还提供适用于数字信号处理(DSP)应用的312个乘法器以及60K逻辑单元(LE),用户能够非常灵活地采用独特的I/O接口,加速实现各种嵌入式应用,提升特殊应用领域的价值。其硬件架构如图1所示。

图1 Intel Atom处理器E6x5C架构
基于此架构的凌动平台拥有6个关键特性:①优化了处理器的功效;②提高了空间利用率;③降低材料费用和总体拥有成本;④获得更多功能;⑤加快交付速度;⑥提高可靠性,延长使用寿命。因此,该处理器可在视频采集系统、车载信息系统、智能联网设备及IP电话等嵌入式领域有广泛的应用,尤其是在视频采集等高速处理场合有着较大优势。
2 I2C总线IP核结构设计
2.1 I2C总线介绍
I2C(InterIntegrated Circuit)集成电路总线是由NXP(原飞利浦)公司设计的双向两线串行传输总线,主要用于内部芯片的控制。I2C总线结构简单,仅需两条总线,即双向的串行数据线SDA、串行同步时钟线SCL;I2C总线协议支持多主机模式,总线上不仅可以有多个从器件,而且可以有多个主控制器。
2.2 功能描述
系统初始化时,由内核通过Avalon总线发送数据经过Avalon程序接口到I2C总线IP核内的寄存器,完成对它们的初始化之后,便可实现对I2C总线从器件的控制。数字IP核一般有三种系统设计方法:模块设计法、自顶向下设计法和自底向上设计法。本文采用自顶向下设计法,根据功能将其分为5个模块:字节传输控制模块、位传输控制模块、时钟产生模块、寄存器组和Avalon程序接口模块,如图2所示。

图2 I2C总线IP核设计框图
3 I2C总线IP核的设计实现
3.1 字节传输控制模块
字节传输控制模块完成以字节为单位的数据传输功能,并控制位传输控制模块的各种动作。它通过设置控制寄存器中的START、STOP、READ位来实现控制,并利用命令寄存器将数据传输寄存器中的内容传输到外部节点,或将外部节点的数据接收到数据接收寄存器中,其读写流程图如图3所示。

图3 字节传输控制模块流程图
3.2 位传输控制模块
位传输控制模块主要完成位传输的功能,它由两部分构成:数据按位传输的实现和I2C总线协议各个命令的实现。它通过控制SCL和SDA两根信号线,产生START、STOP、repeated START信号的电平序列,包括数据按位传输的实现和I2C总线协议各个命令的实现两部分,如开始、停止、重复开始等命令的操作。其中,读/写一个字节按照从高位到低位依次通过8次位操作实现。
3.3 时钟产生模块
I2C总线协议提供了3种速度模式:正常速度模式100 kb/s,快速模式400 kb/s,高速模式3.5 Mb/s。时钟产生模块主要是为位传输控制模块中的同步动作提供触发信号,产生内部时钟信号。
3.4 寄存器组
I2C总线中有较多寄存器,主要包括6个:时钟设置寄存器用来设置时钟产生模块所需要的时钟频率;命令寄存器共8位,它控制总线上各种时序信号、读写信号等;状态寄存器用来显示总线当前的状态;数据传输寄存器用于保存等待传输的数据,包括从器件地址和字节数据;数据接收寄存器主要保存接收到的最后一个字节内容;数据移位寄存器根据总线当前的状态来保存要接收或要发送的数据。
3.5 Avalon程序接口模块
Avalon程序接口模块完成对内部各个模块及寄存器的控制功能,并且提供外部程序的接口,根据Avalon总线时序发送或接收数据。
3.6 基于Qsys IP核的封装
将之前设计的I2C总线控制模块进行仿真,验证成功后通过Qsys集成工具把它封装成IP核的形式[2]。在Qsys下,整个I2C总线IP核设计流程如图4所示,封装完成后的I2C总线IP核如图5所示。

图4 I2C总线IP核设计流程

图5 I2C总线模块IP核
4 I2C总线IP核的应用
SAA7113[45]是NXP公司开发的一种视频解码系列芯片,它采用CMOS工艺,能通过I2C总线进行配置。它可以输入4路模拟视频信号,通过内部寄存器的不同配置可以对4路输入进行转换,输入可以为4路CVBS或8路S 视频(Y/C) 信号,输出8位“VPO”总线,为标准的ITU656、YUV 4:2:2格式。
SAA7113芯片的场同步信号、行同步信号、像素时钟信号以及其他状态信号均可直接由引脚引出,省去了时钟同步电路的设计,而且可靠性更高。该芯片内部具有一系列寄存器,可以通过对其值的不同配置,实现对色度、亮度等的控制,并且其寄存器的读写都需要通过I2C总线进行。由此可知,该芯片中的整个初始化过程,其实就是FPGA通过I2C总线IP核控制SAA7113的寄存器进行赋值的一个过程[67]。根据本设计的要求,其寄存器配置如表1所列,其他未更改的寄存器值均按官方默认值设置。
表1 SAA7113的寄存器配置

通过调用上一节的I2C总线IP核可以对SAA7113提供的控制字进行操作,直接控制SAA7113的运行,整个SAA7113配置的流程如图6所示。

图6 SAA7113初始化流程
5 仿真验证
IP核设计完成后,需要编写本设计的测试平台,如图7所示。测试平台由三部分组成:激励信号、数据接收、数据比较。
其中,激励信号输出IP核需要的时钟、复位信号和数据;数据接收模块解析I2C总线信号,得到I2C总线信号中的数据,并根据I2C总线的协议要求对SCL和SDATA信号做时序分析;数据比较模块用于对发送和接收的数据进行自动比较,验证IP核发送的数据是否正确。

图7 I2C总线IP核仿真测试平台
通过ModelSim对I2C总线控制模块的仿真结果如图8所示,该图是模拟对SAA7113芯片的写操作。
可以看到,SCL高电平期间,在SDA下降沿产生开始信号,随后发送7位地址信号和1位写信号,即“4AH”;应答位响应后发送内部寄存器地址“02H”,并等待应答位响应后发送数据C0H;接下来发送内部地址信号03H,并发送数据33H,依次配置各寄存器,便可实现对视频解码芯片SAA7113寄存器的初始化。

图8 I2C总线IP核仿真
结语
本文介绍了Intel新一代SoC处理器E6x5C及Altera最新集成开发工具Qsys,通过这两个平台,提出了一种新的SoC视频采集系统方案,实现了其内部I2C总线IP核的设计,并将其应用于视频解码芯片SAA7113的初始化配置;最后给出了ModelSim的仿真验证,达到了预期效果。
由于Altera官方提供了常用的IP核,但并没有提供I2C总线的IP核,所以本文针对Intel SoC平台的IP核设计能应用于较多需要I2C总线控制的场合。